]> Dogcows Code - chaz/tar/commitdiff
Global extended_header removed, use new xheader calls instead.
authorSergey Poznyakoff <gray@gnu.org.ua>
Sat, 19 May 2007 17:03:28 +0000 (17:03 +0000)
committerSergey Poznyakoff <gray@gnu.org.ua>
Sat, 19 May 2007 17:03:28 +0000 (17:03 +0000)
src/compare.c
src/create.c
src/delete.c
src/list.c
src/sparse.c
src/tar.c
src/update.c

index 2163a29421770af2b50918d4a0f22fdf802b4676..7df3d9853d9dc7ed4b0f15308213e84c8e26ab42 100644 (file)
@@ -602,7 +602,6 @@ verify_volume (void)
 
       diff_archive ();
       tar_stat_destroy (&current_stat_info);
-      xheader_destroy (&extended_header);
     }
 
   access_mode = ACCESS_WRITE;
index eaaf8a75af5b3894f686e9b000395864b379abc8..1b31a3d319cdf92587970ec6c12b1bab9fb0d558 100644 (file)
@@ -711,10 +711,10 @@ write_extended (bool global, struct tar_stat_info *st, union block *old_header)
   char *p;
   int type;
 
-  if (extended_header.buffer || extended_header.stk == NULL)
+  if (st->xhdr.buffer || st->xhdr.stk == NULL)
     return old_header;
 
-  xheader_finish (&extended_header);
+  xheader_finish (&st->xhdr);
   memcpy (hp.buffer, old_header, sizeof (hp));
   if (global)
     {
@@ -726,7 +726,7 @@ write_extended (bool global, struct tar_stat_info *st, union block *old_header)
       type = XHDTYPE;
       p = xheader_xhdr_name (st);
     }
-  xheader_write (type, p, &extended_header);
+  xheader_write (type, p, &st->xhdr);
   free (p);
   header = find_next_block ();
   memcpy (header, &hp.buffer, sizeof (hp.buffer));
@@ -1269,7 +1269,7 @@ create_archive (void)
   const char *p;
 
   open_archive (ACCESS_WRITE);
-  xheader_write_global ();
+  buffer_write_global_xheader ();
 
   if (incremental_option)
     {
index 160d5ba6ad61ee602441fff417847bfcc90775ac..e6497399353c1a3ef5c3f4a971751f57febeadde 100644 (file)
@@ -307,10 +307,10 @@ delete_archive_members (void)
            }
          /* Copy header.  */
 
-         if (extended_header.size)
+         if (current_stat_info.xhdr.size)
            {
-             write_recent_bytes (extended_header.buffer,
-                                 extended_header.size);
+             write_recent_bytes (current_stat_info.xhdr.buffer,
+                                 current_stat_info.xhdr.size);
            }
          else
            {
index d6768d936687311d3208557e86a457caabc1cede..8a97b03786aa532f5f7ea12cccbe563ff1e6c91f 100644 (file)
@@ -76,7 +76,6 @@ read_and (void (*do_something) (void))
     {
       prev_status = status;
       tar_stat_destroy (&current_stat_info);
-      xheader_destroy (&extended_header);
 
       status = read_header (false);
       switch (status)
@@ -387,12 +386,16 @@ read_header_primitive (bool raw_extended_headers, struct tar_stat_info *info)
            }
          else if (header->header.typeflag == XHDTYPE
                   || header->header.typeflag == SOLARIS_XHDTYPE)
-           xheader_read (header, OFF_FROM_HEADER (header->header.size));
+           xheader_read (&info->xhdr, 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 ();
-             xheader_destroy (&extended_header);
+             struct xheader xhdr;
+             memset (&xhdr, 0, sizeof xhdr);
+             xheader_read (&xhdr, header,
+                           OFF_FROM_HEADER (header->header.size));
+             xheader_decode_global (&xhdr);
+             xheader_destroy (&xhdr);
            }
 
          /* Loop!  */
@@ -518,7 +521,7 @@ decode_header (union block *header, struct tar_stat_info *stat_info,
          && ISOCTAL (header->star_header.ctime[0])
          && header->star_header.ctime[11] == ' ')
        format = STAR_FORMAT;
-      else if (extended_header.size)
+      else if (stat_info->xhdr.size)
        format = POSIX_FORMAT;
       else
        format = USTAR_FORMAT;
index 93aee99ed63ae49a3301aa2b4ea17fdff512a6cb..aa76c61c2ab232401d533005ae016fcee1bebd04 100644 (file)
@@ -945,16 +945,19 @@ pax_dump_header_0 (struct tar_sparse_file *file)
       file->stat_info->file_name = xheader_format_name (file->stat_info,
                                               "%d/GNUSparseFile.%p/%f", 0);
 
-      xheader_string_begin ();
+      xheader_string_begin (&file->stat_info->xhdr);
       for (i = 0; i < file->stat_info->sparse_map_avail; i++)
        {
          if (i)
-           xheader_string_add (",");
-         xheader_string_add (umaxtostr (map[i].offset, nbuf));
-         xheader_string_add (",");
-         xheader_string_add (umaxtostr (map[i].numbytes, nbuf));
+           xheader_string_add (&file->stat_info->xhdr, ",");
+         xheader_string_add (&file->stat_info->xhdr,
+                             umaxtostr (map[i].offset, nbuf));
+         xheader_string_add (&file->stat_info->xhdr, ",");
+         xheader_string_add (&file->stat_info->xhdr,
+                             umaxtostr (map[i].numbytes, nbuf));
        }
-      if (!xheader_string_end ("GNU.sparse.map"))
+      if (!xheader_string_end (&file->stat_info->xhdr,
+                              "GNU.sparse.map"))
        {
          free (file->stat_info->file_name);
          file->stat_info->file_name = save_file_name;
index e21a6466f40249ff530ffed978ebc053d43f6b8e..1b95ccfdc6e0d16c29e69f37d1639b63ef7bbad3 100644 (file)
--- a/src/tar.c
+++ b/src/tar.c
@@ -2408,6 +2408,7 @@ tar_stat_destroy (struct tar_stat_info *st)
   free (st->gname);
   free (st->sparse_map);
   free (st->dumpdir);
+  xheader_destroy (&st->xhdr);
   memset (st, 0, sizeof (*st));
 }
 
index 6546b03169eaa55497cb40f12dda9cd45b374388..fa18c1d67a5e33ab43ad22b14b9ed7a2fa37e369 100644 (file)
@@ -110,7 +110,7 @@ update_archive (void)
 
   name_gather ();
   open_archive (ACCESS_UPDATE);
-  xheader_write_global ();
+  buffer_write_global_xheader ();
 
   while (!found_end)
     {
@@ -181,7 +181,6 @@ update_archive (void)
        }
 
       tar_stat_destroy (&current_stat_info);
-      xheader_destroy (&extended_header);
       previous_status = status;
     }
 
This page took 0.030131 seconds and 4 git commands to generate.