X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fcreate.c;h=1b31a3d319cdf92587970ec6c12b1bab9fb0d558;hb=6e98015774ed2e49f5d8843cd76be4275bfd4064;hp=4ff30542ba8fb27e0d7c268ce09c0f8163165f40;hpb=b9588c472262be876400e0804c529c57102d6f0d;p=chaz%2Ftar diff --git a/src/create.c b/src/create.c index 4ff3054..1b31a3d 100644 --- a/src/create.c +++ b/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)); @@ -1195,7 +1195,6 @@ dump_dir0 (char *directory, /* Now output all the files in the directory. */ /* FIXME: Should speed this up by cd-ing into the dir. */ - for (entry = directory; (entry_len = strlen (entry)) != 0; entry += entry_len + 1) { @@ -1270,7 +1269,7 @@ create_archive (void) const char *p; open_archive (ACCESS_WRITE); - xheader_write_global (); + buffer_write_global_xheader (); if (incremental_option) { @@ -1646,7 +1645,10 @@ dump_file0 (struct tar_stat_info *st, const char *p, if (ok) { - if (timespec_cmp (get_stat_ctime (&final_stat), original_ctime) != 0 + if ((timespec_cmp (get_stat_ctime (&final_stat), original_ctime) != 0 + /* Original ctime will change if the file is a directory and + --remove-files is given */ + && !(remove_files_option && is_dir)) || original_size < final_stat.st_size) { WARN ((0, 0, _("%s: file changed as we read it"),