]> Dogcows Code - chaz/tar/blobdiff - src/list.c
(transform_member_name): New function
[chaz/tar] / src / list.c
index 33c1d533ef95577817b4451bb8ca7c51f6bd3046..d6768d936687311d3208557e86a457caabc1cede 100644 (file)
@@ -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);
This page took 0.023293 seconds and 4 git commands to generate.