From: Sergey Poznyakoff Date: Wed, 19 May 2004 14:27:41 +0000 (+0000) Subject: Determine type of the archive before appending to it. X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=ebdf1bc7a622b7783ade3ba541c4f187fb97e565;p=chaz%2Ftar Determine type of the archive before appending to it. --- diff --git a/src/update.c b/src/update.c index b9987af..6db902b 100644 --- a/src/update.c +++ b/src/update.c @@ -106,7 +106,7 @@ void update_archive (void) { enum read_header previous_status = HEADER_STILL_UNREAD; - int found_end = 0; + bool found_end = false; name_gather (); open_archive (ACCESS_UPDATE); @@ -126,30 +126,33 @@ update_archive (void) { struct name *name; + decode_header (current_header, ¤t_stat_info, + ¤t_format, 0); + archive_format = current_format; + if (subcommand_option == UPDATE_SUBCOMMAND && (name = name_scan (current_stat_info.file_name)) != NULL) { struct stat s; - enum archive_format unused; - decode_header (current_header, ¤t_stat_info, &unused, 0); chdir_do (name->change_dir); if (deref_stat (dereference_option, current_stat_info.file_name, &s) == 0 && s.st_mtime <= current_stat_info.stat.st_mtime) add_avoided_name (current_stat_info.file_name); } + skip_member (); break; } case HEADER_ZERO_BLOCK: current_block = current_header; - found_end = 1; + found_end = true; break; case HEADER_END_OF_FILE: - found_end = 1; + found_end = true; break; case HEADER_FAILURE: @@ -175,6 +178,8 @@ update_archive (void) break; } + tar_stat_destroy (¤t_stat_info); + xheader_destroy (&extended_header); previous_status = status; }