X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Flist.c;h=d6768d936687311d3208557e86a457caabc1cede;hb=586c684815d71063cb39670f2398b5261de91ed5;hp=33c1d533ef95577817b4451bb8ca7c51f6bd3046;hpb=ae7bd36423b55af53703069fde93e396fc262c7d;p=chaz%2Ftar diff --git a/src/list.c b/src/list.c index 33c1d53..d6768d9 100644 --- a/src/list.c +++ b/src/list.c @@ -107,7 +107,6 @@ read_and (void (*do_something) (void)) { case GNUTYPE_VOLHDR: case GNUTYPE_MULTIVOL: - case GNUTYPE_NAMES: break; case DIRTYPE: @@ -468,9 +467,11 @@ read_header (bool raw_extended_headers) } static char * -decode_xform (char *file_name) +decode_xform (char *file_name, void *data) { - file_name = safer_name_suffix (file_name, false, absolute_names_option); + bool link_target = *(bool*)data; + file_name = safer_name_suffix (file_name, link_target, + absolute_names_option); if (strip_name_components) { size_t prefix_len = stripped_prefix_len (file_name, @@ -482,6 +483,12 @@ decode_xform (char *file_name) return file_name; } +bool +transform_member_name (char **pinput, bool lnk) +{ + return transform_name_fp (pinput, decode_xform, &lnk); +} + #define ISOCTAL(c) ((c)>='0'&&(c)<='7') /* Decode things from a file HEADER block into STAT_INFO, also setting @@ -600,7 +607,7 @@ decode_header (union block *header, struct tar_stat_info *stat_info, stat_info->is_dumpdir = true; } - transform_name_fp (&stat_info->file_name, decode_xform); + transform_member_name (&stat_info->file_name, false); } /* Convert buffer at WHERE0 of size DIGS from external format to @@ -1047,10 +1054,6 @@ print_header (struct tar_stat_info *st, off_t block_ordinal) modes[0] = 'M'; break; - case GNUTYPE_NAMES: - modes[0] = 'N'; - break; - case GNUTYPE_LONGNAME: case GNUTYPE_LONGLINK: modes[0] = 'L'; @@ -1234,10 +1237,6 @@ print_header (struct tar_stat_info *st, off_t block_ordinal) uintbuf)); fprintf (stdlis, _("--Continued at byte %s--\n"), size); break; - - case GNUTYPE_NAMES: - fprintf (stdlis, _("--Mangled file names--\n")); - break; } } fflush (stdlis);