/* Create a tar archive.
- Copyright (C) 1985, 1992 Free Software Foundation
+ Copyright (C) 1985, 1992, 1993 Free Software Foundation
This file is part of GNU Tar.
}
else
{
- p = name_next (1);
- do
+ while (p = name_next (1))
dump_file (p, -1, 1);
- while (p = name_next (1));
}
write_eot ();
&& !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);
}
}
/* Not found. Add it to the list of possible links. */
- lp = (struct link *) malloc ((unsigned) (sizeof (struct link) + strlen (p)));
+ lp = (struct link *) ck_malloc ((unsigned) (sizeof (struct link) + strlen (p)));
if (!lp)
{
if (!nolinks)
/* sum += i;
if (sum < upperbound)
goto extend;*/
- if (index_offset + i < upperbound)
+ if (index_offset + i <= upperbound)
{
index_offset += i;
exhdr->ext_hdr.isextended++;
/*
* Make room for our scratch space -- initially is 10 elts long
*/
- sparsearray = (struct sp_array *) malloc (sp_array_size * sizeof (struct sp_array));
+ sparsearray = (struct sp_array *) ck_malloc (sp_array_size * sizeof (struct sp_array));
for (i = 0; i < sp_array_size; i++)
{
sparsearray[i].offset = 0;
* 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;
}
}
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;
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);