]> Dogcows Code - chaz/tar/blobdiff - src/create.c
*** empty log message ***
[chaz/tar] / src / create.c
index 1bc82beb02be3e0412e9e6b2d9a711707cc91bcd..62b9c51178f485075fc6e2df2797b2c7c25d4d81 100644 (file)
@@ -253,7 +253,7 @@ dump_file (p, curdev, toplevel)
       && !S_ISDIR (hstat.st_mode)
       && (f_new_files > 1 || new_time > hstat.st_ctime))
     {
-      if (curdev < 0)
+      if (curdev == -1)
        {
          msg ("%s: is unchanged; not dumped", p);
        }
@@ -534,7 +534,7 @@ dump_file (p, curdev, toplevel)
          /*                    sum += i;
                        if (sum < upperbound)
                                goto extend;*/
-         if (index_offset + i < upperbound)
+         if (index_offset + i <= upperbound)
            {
              index_offset += i;
              exhdr->ext_hdr.isextended++;
@@ -1055,7 +1055,7 @@ deal_with_sparse (name, header, nulls_at_end)
                 * realloc the scratch area, since we've run out of room --
                 */
          sparsearray = (struct sp_array *)
-           realloc (sparsearray,
+           ck_realloc (sparsearray,
                     2 * sp_array_size * (sizeof (struct sp_array)));
          sp_array_size *= 2;
        }
@@ -1105,6 +1105,11 @@ deal_with_sparse (name, header, nulls_at_end)
     }
   if (amidst_data)
     sparsearray[sparse_ind++].numbytes = numbytes;
+  else
+    {
+      sparsearray[sparse_ind].offset = offset-1;
+      sparsearray[sparse_ind++].numbytes = 1;
+    }
   close (fd);
 
   return sparse_ind - 1;
@@ -1271,7 +1276,7 @@ start_header (name, st)
   strncpy (header->header.arch_name, name, NAMSIZ);
   header->header.arch_name[NAMSIZ - 1] = '\0';
 
-  to_oct ((long) (st->st_mode & 07777),
+  to_oct ((long) (f_oldarch ? (st->st_mode & 07777) : st->st_mode),
          8, header->header.mode);
   to_oct ((long) st->st_uid, 8, header->header.uid);
   to_oct ((long) st->st_gid, 8, header->header.gid);
This page took 0.023212 seconds and 4 git commands to generate.