X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fupdate.c;h=fa161935aee190e20a34b29d4e9d9dd0c54f6a56;hb=2c56ca0e7fabb1dfcc4290426b0252d717ef936f;hp=0db091de9a809d1b3b2d5c103b45dd7977f10307;hpb=120e96c480fbfc5fa31fba0f59ba1a45953b838e;p=chaz%2Ftar diff --git a/src/update.c b/src/update.c index 0db091d..fa16193 100644 --- a/src/update.c +++ b/src/update.c @@ -1,11 +1,11 @@ /* Update a tar archive. Copyright (C) 1988, 1992, 1994, 1996, 1997, 1999, 2000, 2001, 2003, - 2004 Free Software Foundation, Inc. + 2004, 2005, 2007 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any later + Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but @@ -110,7 +110,7 @@ update_archive (void) name_gather (); open_archive (ACCESS_UPDATE); - xheader_write_global (); + buffer_write_global_xheader (); while (!found_end) { @@ -129,7 +129,7 @@ update_archive (void) 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) { @@ -138,7 +138,9 @@ update_archive (void) 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) + && (tar_timespec_cmp (get_stat_mtime (&s), + current_stat_info.mtime) + <= 0)) add_avoided_name (current_stat_info.file_name); } @@ -179,7 +181,6 @@ update_archive (void) } tar_stat_destroy (¤t_stat_info); - xheader_destroy (&extended_header); previous_status = status; }