36 atf_tc_set_md_var(tc,
"descr",
"Test xbps_path_clean");
44 xbps_strlcpy(buf, a, sizeof (buf)); \
45 len = xbps_path_clean(buf); \
46 ATF_CHECK_EQ(len, sizeof (b)-1); \
47 ATF_CHECK_STREQ(buf, b)
51 CLEAN(
"abc/def",
"abc/def");
52 CLEAN(
"a/b/c",
"a/b/c");
55 CLEAN(
"../..",
"../..");
56 CLEAN(
"../../abc",
"../../abc");
57 CLEAN(
"/abc",
"/abc");
65 CLEAN(
"abc/def/",
"abc/def");
66 CLEAN(
"a/b/c/",
"a/b/c");
69 CLEAN(
"../../",
"../..");
70 CLEAN(
"/abc/",
"/abc");
73 CLEAN(
"abc//def//ghi",
"abc/def/ghi");
74 CLEAN(
"//abc",
"/abc");
75 CLEAN(
"///abc",
"/abc");
76 CLEAN(
"//abc//",
"/abc");
77 CLEAN(
"abc//",
"abc");
80 CLEAN(
"abc/./def",
"abc/def");
81 CLEAN(
"/./abc/def",
"/abc/def");
82 CLEAN(
"abc/.",
"abc");
85 CLEAN(
"abc/def/ghi/../jkl",
"abc/def/jkl");
86 CLEAN(
"abc/def/../ghi/../jkl",
"abc/jkl");
87 CLEAN(
"abc/def/..",
"abc");
88 CLEAN(
"abc/def/../..",
".");
89 CLEAN(
"/abc/def/../..",
"/");
90 CLEAN(
"abc/def/../../..",
"..");
91 CLEAN(
"/abc/def/../../..",
"/");
92 CLEAN(
"abc/def/../../../ghi/jkl/../../../mno",
"../../mno");
93 CLEAN(
"/../abc",
"/abc");
96 CLEAN(
"abc/./../def",
"def");
97 CLEAN(
"abc//./../def",
"def");
98 CLEAN(
"abc/../../././../def",
"../../def");
101 CLEAN(
"foo//bar/.fizz/buzz",
"foo/bar/.fizz/buzz");
102 CLEAN(
".fizz/buzz",
".fizz/buzz");
103 CLEAN(
".fizz",
".fizz");
110 atf_tc_set_md_var(tc,
"descr",
"Test xbps_path_rel");
118#define REL(a, b, c) \
119 len = xbps_path_rel(buf, sizeof buf, a, b); \
120 ATF_CHECK_EQ(len, sizeof (c)-1); \
121 ATF_CHECK_STREQ(buf, c)
123 REL(
"/root/usr/bin/tar",
"/root/usr/bin/gtar",
"gtar");
125 REL(
"/root/usr/bin/java",
"/root/usr/lib/jvm/jdk1.8.0_202/bin/java",
126 "../lib/jvm/jdk1.8.0_202/bin/java");
128 REL(
"/root/usr/..",
"/root/usr/lib/..",
"root/usr");
129 REL(
"/root/usr/../bin",
"/root/usr/lib/..",
"usr");
130 REL(
"/root/usr/../bin",
"/root/usr/",
"usr");
132 REL(
"/root/usr/bin/tar",
"/root/usr/libexec/gtar",
"../libexec/gtar");
133 REL(
"/root/usr/bin//tar",
"/root/usr/libexec/gtar",
"../libexec/gtar");
134 REL(
"/root/usr/bin//tar",
"/root/usr/libexec//gtar",
"../libexec/gtar");
135 REL(
"/usr/bin/file",
"/usr/bin/fileA",
"fileA");
142 atf_tc_set_md_var(tc,
"descr",
"Test xbps_path_join");
150 len =
xbps_path_join(buf,
sizeof buf,
"a",
"b",
"c", (
char *)NULL);
151 ATF_CHECK_EQ(len, 5);
152 ATF_CHECK_STREQ(buf,
"a/b/c");
154 len =
xbps_path_join(buf,
sizeof buf,
"a/",
"/b/",
"/c", (
char *)NULL);
155 ATF_CHECK_EQ(len, 5);
156 ATF_CHECK_STREQ(buf,
"a/b/c");
158 len =
xbps_path_join(buf,
sizeof buf,
"abc",
"def", (
char *)NULL);
159 ATF_CHECK_EQ(len, -1);
161 len =
xbps_path_join(buf,
sizeof buf,
"abcd",
"ef", (
char *)NULL);
162 ATF_CHECK_EQ(len, -1);
165 ATF_CHECK_EQ(len, 4);
166 ATF_CHECK_STREQ(buf,
"ab/c");
169 ATF_CHECK_EQ(len, 4);
170 ATF_CHECK_STREQ(buf,
"ab/c");
172 len =
xbps_path_join(buf,
sizeof buf,
"/ab/",
"/c", (
char *)NULL);
173 ATF_CHECK_EQ(len,
sizeof (
"/ab/c") - 1);
174 ATF_CHECK_STREQ(buf,
"/ab/c");
176 len =
xbps_path_join(buf,
sizeof buf,
"/a/",
"/b/", (
char *)NULL);
177 ATF_CHECK_EQ(len,
sizeof (
"/a/b/") - 1);
178 ATF_CHECK_STREQ(buf,
"/a/b/");
181 ATF_CHECK_EQ(len,
sizeof (
"/a/") - 1);
182 ATF_CHECK_STREQ(buf,
"/a/");
185 ATF_CHECK_EQ(len,
sizeof (
"a/b/") - 1);
186 ATF_CHECK_STREQ(buf,
"a/b/");
189 ATF_CHECK_EQ(len,
sizeof (
"/a/") - 1);
190 ATF_CHECK_STREQ(buf,
"/a/");
193 ATF_CHECK_EQ(len,
sizeof (
"/a") - 1);
194 ATF_CHECK_STREQ(buf,
"/a");
201 atf_tc_set_md_var(tc,
"descr",
"Test xbps_path_append");
212 ATF_CHECK_EQ(len,
sizeof (
"fizz") - 1);
213 ATF_CHECK_STREQ(buf,
"fizz");
218 ATF_CHECK_EQ(len,
sizeof (
"buzz") - 1);
219 ATF_CHECK_STREQ(buf,
"buzz");
224 ATF_CHECK_EQ(len,
sizeof (
"fizz/buzz") - 1);
225 ATF_CHECK_STREQ(buf,
"fizz/buzz");
230 ATF_CHECK_EQ(len,
sizeof (
"fizz/buzz") - 1);
231 ATF_CHECK_STREQ(buf,
"fizz/buzz");
236 ATF_CHECK_EQ(len,
sizeof (
"fizz/buzz") - 1);
237 ATF_CHECK_STREQ(buf,
"fizz/buzz");
242 ATF_CHECK_EQ(len,
sizeof (
"fizz/buzz") - 1);
243 ATF_CHECK_STREQ(buf,
"fizz/buzz");
247 ATF_CHECK_EQ(len, -1);
251 ATF_CHECK_EQ(len, -1);
255 ATF_CHECK_EQ(len, -1);
259 ATF_CHECK_EQ(len, -1);
263 ATF_CHECK_EQ(len, -1);
267 ATF_CHECK_EQ(len, -1);
271 ATF_CHECK_EQ(len,
sizeof (
"abcdefghijklmno") - 1);
272 ATF_CHECK_STREQ(buf,
"abcdefghijklmno");
276 ATF_CHECK_EQ(len,
sizeof (
"abcdefghijklmn/") - 1);
277 ATF_CHECK_STREQ(buf,
"abcdefghijklmn/");
281 ATF_CHECK_EQ(len,
sizeof (
"abcdefghijklmno") - 1);
282 ATF_CHECK_STREQ(buf,
"abcdefghijklmno");
286 ATF_CHECK_EQ(len,
sizeof (
"abcdefghijklmn/") - 1);
287 ATF_CHECK_STREQ(buf,
"abcdefghijklmn/");
294 atf_tc_set_md_var(tc,
"descr",
"Test xbps_path_prepend");
305 ATF_CHECK_EQ(len,
sizeof (
"buzz") - 1);
306 ATF_CHECK_STREQ(buf,
"buzz");
311 ATF_CHECK_EQ(len,
sizeof (
"buzz") - 1);
312 ATF_CHECK_STREQ(buf,
"buzz");
317 ATF_CHECK_EQ(len,
sizeof (
"fizz/buzz") - 1);
318 ATF_CHECK_STREQ(buf,
"fizz/buzz");
323 ATF_CHECK_EQ(len,
sizeof (
"fizz/buzz") - 1);
324 ATF_CHECK_STREQ(buf,
"fizz/buzz");
329 ATF_CHECK_EQ(len,
sizeof (
"fizz/buzz") - 1);
330 ATF_CHECK_STREQ(buf,
"fizz/buzz");
335 ATF_CHECK_EQ(len,
sizeof (
"fizz/buzz") - 1);
336 ATF_CHECK_STREQ(buf,
"fizz/buzz");
341 ATF_CHECK_EQ(len, -1);
346 ATF_CHECK_EQ(len, -1);
351 ATF_CHECK_EQ(len, -1);
356 ATF_CHECK_EQ(len, -1);
361 ATF_CHECK_EQ(len, -1);
365 ATF_CHECK_EQ(len, -1);
369 ATF_CHECK_EQ(len, -1);
373 ATF_CHECK_EQ(len, -1);
377 ATF_CHECK_EQ(len, -1);
381 ATF_CHECK_EQ(len,
sizeof (
"abcdefghijklmno") - 1);
382 ATF_CHECK_STREQ(buf,
"abcdefghijklmno");
386 ATF_CHECK_EQ(len,
sizeof (
"abcdefghijklm/") - 1);
387 ATF_CHECK_STREQ(buf,
"abcdefghijklm/");
397 return atf_no_error();
ssize_t xbps_path_append(char *dst, size_t len, const char *suffix)
size_t xbps_strlcpy(char *dst, const char *src, size_t dstsize)
ssize_t xbps_path_clean(char *path)
ssize_t xbps_path_prepend(char *dst, size_t len, const char *prefix)
ssize_t xbps_path_join(char *dst, size_t len,...)
ssize_t xbps_path_rel(char *dst, size_t len, const char *from, const char *to)