X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fcreate.c;h=b6a4f52624291baf03cb996a39b3b2d3d8471536;hb=f7ce5a4ec57028be0bdea6d45dce8fe1c23ec668;hp=7cecd4f9e290839c43f0ccf530009088af4c3a34;hpb=3cdbeffe307bad27a2f947f3527db4f27041e8b4;p=chaz%2Ftar diff --git a/src/create.c b/src/create.c index 7cecd4f..b6a4f52 100644 --- a/src/create.c +++ b/src/create.c @@ -413,6 +413,7 @@ write_gnu_long_link (struct tar_stat_info *st, const char *p, char type) union block *header; header = start_private_header ("././@LongLink", size); + strcpy (header->header.magic, OLDGNU_MAGIC); header->header.typeflag = type; finish_header (st, header, -1); @@ -486,7 +487,7 @@ write_long_link (struct tar_stat_info *st) switch (archive_format) { case POSIX_FORMAT: - xheader_store ("linkpath", st); + xheader_store ("linkpath", st, NULL); break; case V7_FORMAT: /* old V7 tar format */ @@ -513,7 +514,7 @@ write_long_name (struct tar_stat_info *st) switch (archive_format) { case POSIX_FORMAT: - xheader_store ("path", st); + xheader_store ("path", st, NULL); break; case V7_FORMAT: @@ -640,17 +641,17 @@ start_header (struct tar_stat_info *st) MODE_TO_CHARS (st->stat.st_mode, header->header.mode); if (st->stat.st_uid > MAXOCTAL7 && archive_format == POSIX_FORMAT) - xheader_store ("uid", st); + xheader_store ("uid", st, NULL); else UID_TO_CHARS (st->stat.st_uid, header->header.uid); if (st->stat.st_gid > MAXOCTAL7 && archive_format == POSIX_FORMAT) - xheader_store ("gid", st); + xheader_store ("gid", st, NULL); else GID_TO_CHARS (st->stat.st_gid, header->header.gid); if (st->stat.st_size > MAXOCTAL11 && archive_format == POSIX_FORMAT) - xheader_store ("size", st); + xheader_store ("size", st, NULL); else OFF_TO_CHARS (st->stat.st_size, header->header.size); @@ -664,12 +665,12 @@ start_header (struct tar_stat_info *st) st->devminor = minor (st->stat.st_rdev); if (st->devmajor > MAXOCTAL7 && archive_format == POSIX_FORMAT) - xheader_store ("devmajor", st); + xheader_store ("devmajor", st, NULL); else MAJOR_TO_CHARS (st->devmajor, header->header.devmajor); if (st->devminor > MAXOCTAL7 && archive_format == POSIX_FORMAT) - xheader_store ("devminor", st); + xheader_store ("devminor", st, NULL); else MAJOR_TO_CHARS (st->devminor, header->header.devminor); } @@ -681,8 +682,8 @@ start_header (struct tar_stat_info *st) if (archive_format == POSIX_FORMAT) { - xheader_store ("atime", st); - xheader_store ("ctime", st); + xheader_store ("atime", st, NULL); + xheader_store ("ctime", st, NULL); } else if (incremental_option) if (archive_format == OLDGNU_FORMAT) @@ -725,13 +726,13 @@ start_header (struct tar_stat_info *st) if (archive_format == POSIX_FORMAT && strlen (st->uname) > UNAME_FIELD_SIZE) - xheader_store ("uname", st); + xheader_store ("uname", st, NULL); else UNAME_TO_CHARS (st->uname, header->header.uname); if (archive_format == POSIX_FORMAT && strlen (st->gname) > GNAME_FIELD_SIZE) - xheader_store ("gname", st); + xheader_store ("gname", st, NULL); else GNAME_TO_CHARS (st->gname, header->header.gname); } @@ -1282,7 +1283,7 @@ dump_file0 (struct tar_stat_info *stat, char *p, return; } stat->archive_file_size = stat->stat.st_size; - + sys_stat_nanoseconds(stat); original_ctime = stat->stat.st_ctime; restore_times.actime = stat->stat.st_atime; restore_times.modtime = stat->stat.st_mtime;