From: Sergey Poznyakoff Date: Fri, 25 Jul 2003 15:05:41 +0000 (+0000) Subject: (print_header): Revised X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=7219c538eb9ff67c0a80fbedac2bf55c9d15e899;p=chaz%2Ftar (print_header): Revised --- diff --git a/src/list.c b/src/list.c index 0fdcc2e..2cf3c10 100644 --- a/src/list.c +++ b/src/list.c @@ -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); }