浏览代码

Global extended_header removed, use new xheader calls instead.

Sergey Poznyakoff 18 年之前
父节点
当前提交
250db35f17
共有 7 个文件被更改,包括 27 次插入22 次删除
  1. 0 1
      src/compare.c
  2. 4 4
      src/create.c
  3. 3 3
      src/delete.c
  4. 9 6
      src/list.c
  5. 9 6
      src/sparse.c
  6. 1 0
      src/tar.c
  7. 1 2
      src/update.c

+ 0 - 1
src/compare.c

@@ -602,7 +602,6 @@ verify_volume (void)
 
       diff_archive ();
       tar_stat_destroy (&current_stat_info);
-      xheader_destroy (&extended_header);
     }
 
   access_mode = ACCESS_WRITE;

+ 4 - 4
src/create.c

@@ -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)
     {

+ 3 - 3
src/delete.c

@@ -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
 	    {

+ 9 - 6
src/list.c

@@ -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;

+ 9 - 6
src/sparse.c

@@ -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;

+ 1 - 0
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));
 }
 

+ 1 - 2
src/update.c

@@ -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;
     }