X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Flist.c;h=7e1319c79ce67d94218e24203120d0e212a85987;hb=03858cf583ce299b836d8a848967ce290a6bf303;hp=e1e06caa9e25ef3e173d7c30504beb2bfcc69623;hpb=28e91b48f680a6fab90ee39145123647345f385f;p=chaz%2Ftar diff --git a/src/list.c b/src/list.c index e1e06ca..7e1319c 100644 --- a/src/list.c +++ b/src/list.c @@ -116,13 +116,13 @@ transform_member_name (char **pinput, int type) return transform_name_fp (pinput, type, decode_xform, &type); } -static void +void transform_stat_info (int typeflag, struct tar_stat_info *stat_info) { if (typeflag == GNUTYPE_VOLHDR) /* Name transformations don't apply to volume headers. */ return; - + transform_member_name (&stat_info->file_name, XFORM_REGFILE); switch (typeflag) { @@ -433,15 +433,13 @@ read_header (union block **return_block, struct tar_stat_info *info, if (header->header.typeflag == GNUTYPE_LONGNAME) { - if (next_long_name) - free (next_long_name); + free (next_long_name); next_long_name = header_copy; next_long_name_blocks = size / BLOCKSIZE; } else { - if (next_long_link) - free (next_long_link); + free (next_long_link); next_long_link = header_copy; next_long_link_blocks = size / BLOCKSIZE; } @@ -500,8 +498,7 @@ read_header (union block **return_block, struct tar_stat_info *info, struct posix_header const *h = &header->header; char namebuf[sizeof h->prefix + 1 + NAME_FIELD_SIZE + 1]; - if (recent_long_name) - free (recent_long_name); + free (recent_long_name); if (next_long_name) { @@ -532,8 +529,7 @@ read_header (union block **return_block, struct tar_stat_info *info, assign_string (&info->file_name, name); info->had_trailing_slash = strip_trailing_slashes (info->file_name); - if (recent_long_link) - free (recent_long_link); + free (recent_long_link); if (next_long_link) { @@ -592,7 +588,9 @@ decode_header (union block *header, struct tar_stat_info *stat_info, else format = USTAR_FORMAT; } - else if (strcmp (header->header.magic, OLDGNU_MAGIC) == 0) + else if (strcmp (header->buffer + offsetof (struct posix_header, magic), + OLDGNU_MAGIC) + == 0) format = hbits ? OLDGNU_FORMAT : GNU_FORMAT; else format = V7_FORMAT; @@ -1359,8 +1357,8 @@ print_for_mkdir (char *dirname, int length, mode_t mode) STRINGIFY_BIGINT (current_block_ordinal (), buf)); } - fprintf (stdlis, "%s %*s %.*s\n", modes, ugswidth + 1 + datewidth, - _("Creating directory:"), length, quotearg (dirname)); + fprintf (stdlis, "%s %*s %s\n", modes, ugswidth + 1 + datewidth, + _("Creating directory:"), quotearg (dirname)); } }