X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Flist.c;h=d6768d936687311d3208557e86a457caabc1cede;hb=ccdbafb2769c16a55565b387acea44a247001f6a;hp=4bf302e6d629fbc57726ea9ac071483c009ad3a5;hpb=49ea4c50575f66e8f0450e463e1d882eed6255ec;p=chaz%2Ftar diff --git a/src/list.c b/src/list.c index 4bf302e..d6768d9 100644 --- a/src/list.c +++ b/src/list.c @@ -467,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, @@ -481,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 @@ -599,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