/* 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
int found_end = 0;
name_gather ();
- if (subcommand_option == UPDATE_SUBCOMMAND)
- name_expand ();
open_archive (ACCESS_UPDATE);
while (!found_end)
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)
if (subcommand_option == CAT_SUBCOMMAND)
append_file (path);
else
- dump_file (path, (dev_t) -1, 1);
+ dump_file (path, (dev_t) 0, 1);
}
}