(update_archive): Remove call to name_expand; had no effect.
Use chdir_do to change into directory. Use deref_stat instead of stat. Use add_avoided_name to mark names to be avoided; the old method of setting a bit with the name caused all descendants of that name to be avoided, in some circumstances.
This commit is contained in:
16
src/update.c
16
src/update.c
@@ -1,5 +1,5 @@
|
||||
/* Update a tar archive.
|
||||
Copyright (C) 1988, 1992, 1994, 1996, 1997 Free Software Foundation, Inc.
|
||||
Copyright 1988, 1992, 1994, 1996, 1997, 1999 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
|
||||
@@ -108,8 +108,6 @@ update_archive (void)
|
||||
int found_end = 0;
|
||||
|
||||
name_gather ();
|
||||
if (subcommand_option == UPDATE_SUBCOMMAND)
|
||||
name_expand ();
|
||||
open_archive (ACCESS_UPDATE);
|
||||
|
||||
while (!found_end)
|
||||
@@ -128,14 +126,14 @@ update_archive (void)
|
||||
if (subcommand_option == UPDATE_SUBCOMMAND
|
||||
&& (name = name_scan (current_file_name), name))
|
||||
{
|
||||
struct stat stat_data;
|
||||
struct stat s;
|
||||
enum archive_format unused;
|
||||
|
||||
decode_header (current_header, ¤t_stat, &unused, 0);
|
||||
if (stat (current_file_name, &stat_data) < 0)
|
||||
ERROR ((0, errno, _("Cannot stat %s"), current_file_name));
|
||||
else if (current_stat.st_mtime >= stat_data.st_mtime)
|
||||
name->found = 1;
|
||||
chdir_do (name->change_dir);
|
||||
if (deref_stat (dereference_option, current_file_name, &s) == 0
|
||||
&& s.st_mtime <= current_stat.st_mtime)
|
||||
add_avoided_name (current_file_name);
|
||||
}
|
||||
set_next_block_after (current_header);
|
||||
if (current_header->oldgnu_header.isextended)
|
||||
@@ -194,7 +192,7 @@ update_archive (void)
|
||||
if (subcommand_option == CAT_SUBCOMMAND)
|
||||
append_file (path);
|
||||
else
|
||||
dump_file (path, (dev_t) -1, 1);
|
||||
dump_file (path, (dev_t) 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user