summaryrefslogtreecommitdiff
path: root/archivers/libarchive/files/libarchive/test/test_tar_filenames.c
diff options
context:
space:
mode:
Diffstat (limited to 'archivers/libarchive/files/libarchive/test/test_tar_filenames.c')
-rw-r--r--archivers/libarchive/files/libarchive/test/test_tar_filenames.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/archivers/libarchive/files/libarchive/test/test_tar_filenames.c b/archivers/libarchive/files/libarchive/test/test_tar_filenames.c
index 8b83b527733..9b98448e4a7 100644
--- a/archivers/libarchive/files/libarchive/test/test_tar_filenames.c
+++ b/archivers/libarchive/files/libarchive/test/test_tar_filenames.c
@@ -40,19 +40,22 @@ test_filename(const char *prefix, int dlen, int flen)
struct archive_entry *ae;
struct archive *a;
size_t used;
- size_t prefix_length = 0;
- unsigned i = 0;
+ char *p;
+ int i;
+ p = filename;
if (prefix) {
strcpy(filename, prefix);
- i = prefix_length = strlen(prefix);
+ p += strlen(p);
}
- for (; i < prefix_length + dlen; i++)
- filename[i] = 'a';
- filename[i++] = '/';
- for (; i < prefix_length + dlen + flen + 1; i++)
- filename[i] = 'b';
- filename[i++] = '\0';
+ if (dlen > 0) {
+ for (i = 0; i < dlen; i++)
+ *p++ = 'a';
+ *p++ = '/';
+ }
+ for (i = 0; i < flen; i++)
+ *p++ = 'b';
+ *p = '\0';
strcpy(dirname, filename);
@@ -160,15 +163,22 @@ DEFINE_TEST(test_tar_filenames)
int dlen, flen;
/* Repeat the following for a variety of dir/file lengths. */
- for (dlen = 40; dlen < 60; dlen++) {
- for (flen = 40; flen < 60; flen++) {
+ for (dlen = 45; dlen < 55; dlen++) {
+ for (flen = 45; flen < 55; flen++) {
+ test_filename(NULL, dlen, flen);
+ test_filename("/", dlen, flen);
+ }
+ }
+
+ for (dlen = 0; dlen < 140; dlen += 10) {
+ for (flen = 98; flen < 102; flen++) {
test_filename(NULL, dlen, flen);
test_filename("/", dlen, flen);
}
}
for (dlen = 140; dlen < 160; dlen++) {
- for (flen = 90; flen < 110; flen++) {
+ for (flen = 95; flen < 105; flen++) {
test_filename(NULL, dlen, flen);
test_filename("/", dlen, flen);
}