]> Dogcows Code - chaz/tar/commitdiff
(print_header): Revised
authorSergey Poznyakoff <gray@gnu.org.ua>
Fri, 25 Jul 2003 15:05:41 +0000 (15:05 +0000)
committerSergey Poznyakoff <gray@gnu.org.ua>
Fri, 25 Jul 2003 15:05:41 +0000 (15:05 +0000)
src/list.c

index 0fdcc2e1406dba1d37455a682041b0906a4ec8dc..2cf3c1000aae33f9f09aec7f7629466275a99b12 100644 (file)
@@ -903,6 +903,8 @@ print_header (off_t block_ordinal)
 {
   char modes[11];
   char const *time_stamp;
+  char *temp_name;
+  
   /* These hold formatted ints.  */
   char uform[UINTMAX_STRSIZE_BOUND], gform[UINTMAX_STRSIZE_BOUND];
   char *user, *group;
@@ -922,13 +924,22 @@ print_header (off_t block_ordinal)
               STRINGIFY_BIGINT (block_ordinal, buf));
     }
 
+  if (current_trailing_slash)
+    {
+      temp_name = xmalloc (strlen (current_file_name) + 2);
+      strcpy (temp_name, current_file_name);
+      strcat (temp_name, "/");
+    }
+  else
+    {
+      temp_name = xmalloc (strlen (current_file_name) + 1);
+      strcpy (temp_name, current_file_name);
+    }
+  
   if (verbose_option <= 1)
     {
       /* Just the fax, mam.  */
-      fprintf (stdlis, "%s", quotearg (current_file_name));
-      if (current_trailing_slash)
-       fprintf (stdlis, "/");
-      fprintf (stdlis, "\n");
+      fprintf (stdlis, "%s\n", quotearg (temp_name));
     }
   else
     {
@@ -959,7 +970,7 @@ print_header (off_t block_ordinal)
        case REGTYPE:
        case AREGTYPE:
          modes[0] = '-';
-         if (current_file_name[strlen (current_file_name) - 1] == '/')
+         if (temp_name[strlen (temp_name) - 1] == '/')
            modes[0] = 'd';
          break;
        case LNKTYPE:
@@ -1073,7 +1084,7 @@ print_header (off_t block_ordinal)
       fprintf (stdlis, "%s %s/%s %*s%s %s",
               modes, user, group, ugswidth - pad, "", size, time_stamp);
 
-      fprintf (stdlis, " %s", quotearg (current_file_name));
+      fprintf (stdlis, " %s", quotearg (temp_name));
 
       switch (current_header->header.typeflag)
        {
@@ -1132,6 +1143,7 @@ print_header (off_t block_ordinal)
          break;
        }
     }
+  free (temp_name);
   fflush (stdlis);
 }
 
This page took 0.024698 seconds and 4 git commands to generate.