]> git.seodisparate.com - SimpleArchiver/commitdiff
Test/fix symlink test/extract in v1 file format
authorStephen Seo <seo.disparate@gmail.com>
Mon, 30 Sep 2024 08:53:39 +0000 (17:53 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Wed, 2 Oct 2024 06:11:23 +0000 (15:11 +0900)
file_format_1_example_1
src/archiver.c

index 044ca9465cbb0e4a714c868a06a6003f1c728ad7..3b384a86296f886667d14908e3a8a3f1cf54b0bd 100644 (file)
Binary files a/file_format_1_example_1 and b/file_format_1_example_1 differ
index e8804892ce6c818d9bbdc770ae239eb6d749f124..18eefbaef3633ea608f62ab499d91b2e0fbea78f 100644 (file)
@@ -2428,11 +2428,17 @@ int simple_archiver_parse_archive_version_1(FILE *in_f, int_fast8_t do_extract,
         read_buf_full_from_fd(in_f, (char *)buf, 1024, u16 + 1, link_name);
     if (ret != SDAS_SUCCESS) {
       return ret;
-    } else if (working_files_map &&
-               simple_archiver_hash_map_get(working_files_map, link_name,
-                                            u16 + 1) == NULL) {
+    }
+
+    if (!do_extract) {
+      fprintf(stderr, "  Link name: %s\n", link_name);
+    }
+
+    if (working_files_map &&
+        simple_archiver_hash_map_get(working_files_map, link_name, u16 + 1) ==
+            NULL) {
       skip_due_to_map = 1;
-      fprintf(stderr, "Skipping not specified in args...\n");
+      fprintf(stderr, "  Skipping not specified in args...\n");
     }
 
     if (fread(buf, 1, 2, in_f) != 2) {
@@ -2461,7 +2467,11 @@ int simple_archiver_parse_archive_version_1(FILE *in_f, int_fast8_t do_extract,
         link_extracted = 1;
         fprintf(stderr, "  %s -> %s\n", link_name, path);
 #endif
+      } else {
+        fprintf(stderr, "  Abs path: %s\n", path);
       }
+    } else if (!do_extract) {
+      fprintf(stderr, "  No Absolute path.\n");
     }
 
     if (fread(buf, 1, 2, in_f) != 2) {
@@ -2490,10 +2500,14 @@ int simple_archiver_parse_archive_version_1(FILE *in_f, int_fast8_t do_extract,
         link_extracted = 1;
         fprintf(stderr, "  %s -> %s\n", link_name, path);
 #endif
+      } else {
+        fprintf(stderr, "  Rel path: %s\n", path);
       }
+    } else if (!do_extract) {
+      fprintf(stderr, "  No Relative path.\n");
     }
 
-    if (!link_extracted && !skip_due_to_map) {
+    if (do_extract && !link_extracted && !skip_due_to_map) {
       fprintf(stderr, "WARNING Symlink \"%s\" was not created!\n", link_name);
     }
   }