]> Dogcows Code - chaz/tar/blobdiff - src/create.c
Use mv_.* functions uniformly instead of fiddling with the global variables.
[chaz/tar] / src / create.c
index 645bcb65428634659bd36f54490ce291f43dbd07..6f553fe1077a280778658b2f22092942041456b1 100644 (file)
@@ -452,7 +452,7 @@ write_gnu_long_link (struct tar_stat_info *st, const char *p, char type)
   finish_header (st, header, -1);
 
   header = find_next_block ();
-
+  
   bufsize = available_space_after (header);
 
   while (bufsize < size)
@@ -576,8 +576,8 @@ write_long_name (struct tar_stat_info *st)
   return write_short_name (st);
 }
 
-static union block *
-write_extended (struct tar_stat_info *st, union block *old_header)
+union block *
+write_extended (char type, struct tar_stat_info *st, union block *old_header)
 {
   union block *header, hp;
   char *p;
@@ -588,7 +588,7 @@ write_extended (struct tar_stat_info *st, union block *old_header)
   xheader_finish (&extended_header);
   memcpy (hp.buffer, old_header, sizeof (hp));
   p = xheader_xhdr_name (st);
-  xheader_write (XHDTYPE, p, &extended_header);
+  xheader_write (type, p, &extended_header);
   free (p);
   header = find_next_block ();
   memcpy (header, &hp.buffer, sizeof (hp.buffer));
@@ -852,7 +852,7 @@ finish_header (struct tar_stat_info *st,
       print_header (st, block_ordinal);
     }
 
-  header = write_extended (st, header);
+  header = write_extended (XHDTYPE, st, header);
   simple_finish_header (header);
 }
 \f
@@ -863,7 +863,7 @@ pad_archive (off_t size_left)
   union block *blk;
   while (size_left > 0)
     {
-      save_sizeleft = size_left;
+      mv_size_left (size_left);
       blk = find_next_block ();
       memset (blk->buffer, 0, BLOCKSIZE);
       set_next_block_after (blk);
@@ -889,16 +889,13 @@ dump_regular_file (int fd, struct tar_stat_info *st)
 
   finish_header (st, blk, block_ordinal);
 
+  mv_begin (st);
   while (size_left > 0)
     {
       size_t bufsize, count;
 
-      if (multi_volume_option)
-       {
-         assign_string (&save_name, st->orig_file_name);
-         save_sizeleft = size_left;
-         save_totsize = st->stat.st_size;
-       }
+      mv_size_left (size_left);
+
       blk = find_next_block ();
 
       bufsize = available_space_after (blk);
@@ -1054,7 +1051,7 @@ dump_dir0 (char *directory,
              const char *buffer, *p_buffer;
              
              block_ordinal = current_block_ordinal ();
-             buffer = gnu_list_name->dir_contents; /* FOO */
+             buffer = gnu_list_name->dir_contents; 
              if (buffer)
                totsize = dumpdir_size (buffer);
              else
@@ -1063,14 +1060,12 @@ dump_dir0 (char *directory,
              finish_header (st, blk, block_ordinal);
              p_buffer = buffer;
              size_left = totsize;
+             
+             mv_begin (st);
+             mv_total_size (totsize);
              while (size_left > 0)
                {
-                 if (multi_volume_option)
-                   {
-                     assign_string (&save_name, st->orig_file_name);
-                     save_sizeleft = size_left;
-                     save_totsize = totsize;
-                   }
+                 mv_size_left (size_left);
                  blk = find_next_block ();
                  bufsize = available_space_after (blk);
                  if (size_left < bufsize)
@@ -1085,8 +1080,7 @@ dump_dir0 (char *directory,
                  p_buffer += bufsize;
                  set_next_block_after (blk + (bufsize - 1) / BLOCKSIZE);
                }
-             if (multi_volume_option)
-               assign_string (&save_name, 0);
+             mv_end ();
            }
          return;
        }
@@ -1504,14 +1498,12 @@ dump_file0 (struct tar_stat_info *st, char *p,
          switch (status)
            {
            case dump_status_ok:
-             if (multi_volume_option)
-               assign_string (&save_name, 0);
+             mv_end ();
              dump_regular_finish (fd, st, original_ctime);
              break;
 
            case dump_status_short:
-             if (multi_volume_option)
-               assign_string (&save_name, 0);
+             mv_end ();
              close (fd);
              break;
 
This page took 0.023757 seconds and 4 git commands to generate.