]> Dogcows Code - chaz/tar/blobdiff - src/list.c
(decode_header): Call xheader_decode before the assignment to current_stat_info...
[chaz/tar] / src / list.c
index fdc8fa9975b14cb7b81e4d0e72fa9323f4076d18..3e2d127c606f87704e4a49073004b96b98c4fa33 100644 (file)
@@ -395,9 +395,13 @@ read_header (bool raw_extended_headers)
 
              *bp = '\0';
            }
-         else if (header->header.typeflag == XHDTYPE
-                  || header->header.typeflag == XGLTYPE)
+         else if (header->header.typeflag == XHDTYPE)
            xheader_read (header, OFF_FROM_HEADER (header->header.size));
+         else if (header->header.typeflag == XGLTYPE)
+           {
+             xheader_read (header, OFF_FROM_HEADER (header->header.size));
+             xheader_decode_global ();
+           }
       
          /* Loop!  */
 
@@ -559,7 +563,8 @@ decode_header (union block *header, struct tar_stat_info *stat_info,
        {
        case BLKTYPE:
        case CHRTYPE:
-         stat_info->stat.st_rdev = makedev (stat_info->devmajor, stat_info->devminor);
+         stat_info->stat.st_rdev = makedev (stat_info->devmajor,
+                                            stat_info->devminor);
          break;
 
        default:
@@ -567,8 +572,8 @@ decode_header (union block *header, struct tar_stat_info *stat_info,
        }
     }
 
-  current_stat_info.archive_file_size = current_stat_info.stat.st_size;
   xheader_decode (stat_info);
+  current_stat_info.archive_file_size = current_stat_info.stat.st_size;
 }
 
 /* Convert buffer at WHERE0 of size DIGS from external format to
This page took 0.020029 seconds and 4 git commands to generate.