]> Dogcows Code - chaz/tar/blobdiff - src/list.c
Update FSF postal mail address.
[chaz/tar] / src / list.c
index e0f5080876c623e25e11f945c4b06c606be2b0c0..65e73a5662133e12e47fe0e92fbf68952ffebfe9 100644 (file)
@@ -17,7 +17,7 @@
 
    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
-   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 
 /* Define to non-zero for forcing old ctime format instead of ISO format.  */
 #undef USE_OLD_CTIME
@@ -222,7 +222,7 @@ list_archive (void)
       set_next_block_after (current_header);
       if (multi_volume_option)
        {
-         assign_string (&save_name, current_stat_info.file_name);
+         assign_string (&save_name, current_stat_info.orig_file_name);
          save_totsize = current_stat_info.stat.st_size;
        }
       for (size = current_stat_info.stat.st_size; size > 0; size -= written)
@@ -258,7 +258,7 @@ list_archive (void)
     }
 
   if (multi_volume_option)
-    assign_string (&save_name, current_stat_info.file_name);
+    assign_string (&save_name, current_stat_info.orig_file_name);
 
   skip_member ();
 
@@ -369,7 +369,8 @@ read_header (bool raw_extended_headers)
       if (header->header.typeflag == GNUTYPE_LONGNAME
          || header->header.typeflag == GNUTYPE_LONGLINK
          || header->header.typeflag == XHDTYPE
-         || header->header.typeflag == XGLTYPE)
+         || header->header.typeflag == XGLTYPE
+         || header->header.typeflag == SOLARIS_XHDTYPE)
        {
          if (raw_extended_headers)
            return HEADER_SUCCESS_EXTENDED;
@@ -427,7 +428,8 @@ read_header (bool raw_extended_headers)
 
              *bp = '\0';
            }
-         else if (header->header.typeflag == XHDTYPE)
+         else if (header->header.typeflag == XHDTYPE
+                  || header->header.typeflag == SOLARIS_XHDTYPE)
            xheader_read (header, OFF_FROM_HEADER (header->header.size));
          else if (header->header.typeflag == XGLTYPE)
            {
@@ -465,11 +467,6 @@ read_header (bool raw_extended_headers)
                  np[sizeof h->prefix] = '\0';
                  np += strlen (np);
                  *np++ = '/';
-
-                 /* Prevent later references to current_header from
-                    mistakenly treating this as an old GNU header.
-                    This assignment invalidates h->prefix.  */
-                 current_header->oldgnu_header.isextended = 0;
                }
              memcpy (np, h->name, sizeof h->name);
              np[sizeof h->name] = '\0';
@@ -1103,7 +1100,9 @@ print_header (struct tar_stat_info *st, off_t block_ordinal)
 
       /* User and group names.  */
 
-      if (st->uname && current_format != V7_FORMAT
+      if (st->uname
+         && st->uname[0]
+         && current_format != V7_FORMAT
          && !numeric_owner_option)
        user = st->uname;
       else
@@ -1126,7 +1125,9 @@ print_header (struct tar_stat_info *st, off_t block_ordinal)
            }
        }
 
-      if (st->gname && current_format != V7_FORMAT
+      if (st->gname
+         && st->gname[0]
+         && current_format != V7_FORMAT
          && !numeric_owner_option)
        group = st->gname;
       else
@@ -1310,7 +1311,7 @@ skip_member (void)
   char save_typeflag = current_header->header.typeflag;
   set_next_block_after (current_header);
 
-  assign_string (&save_name, current_stat_info.file_name);
+  assign_string (&save_name, current_stat_info.orig_file_name);
 
   if (current_stat_info.is_sparse)
     sparse_skip_file (&current_stat_info);
This page took 0.024856 seconds and 4 git commands to generate.