Explorar el Código

Fix tar -c -l file file

When the same file is added several times to the archive, count
correctly the number of hard links.  See also 37ddfb0b.

* src/create.c (dump_hard_link): Don't decrease nlink if it is 0.
* tests/link04.at: Test -cl options.
Sergey Poznyakoff hace 10 años
padre
commit
1209e0ebff
Se han modificado 2 ficheros con 7 adiciones y 2 borrados
  1. 2 2
      src/create.c
  2. 5 0
      tests/link04.at

+ 2 - 2
src/create.c

@@ -1472,8 +1472,8 @@ dump_hard_link (struct tar_stat_info *st)
 	  /* We found a link.  */
 	  char const *link_name = safer_name_suffix (duplicate->name, true,
 	                                             absolute_names_option);
-
-	  duplicate->nlink--;
+	  if (duplicate->nlink)
+	    duplicate->nlink--;
 
 	  block_ordinal = current_block_ordinal ();
 	  assign_string (&st->link_name, link_name);

+ 5 - 0
tests/link04.at

@@ -39,6 +39,10 @@ tar tvf archive | sed '
   s,.*[[0-9]] dir/,dir/,
 ' | sort
 
+echo --
+
+tar cfl archive dir dir
+
 echo ==
 
 tar chf archive dir
@@ -55,6 +59,7 @@ dir/file
 dir/file link to dir/file
 dir/symlink -> file
 dir/symlink link to dir/symlink
+--
 ==
 dir/
 dir/FOO