{
struct stat st;
if (deref_stat (dereference_option, p, &st) != 0)
- stat_diag (name);
+ {
+ if (errno != ENOENT)
+ stat_diag (directory->name);
+ /* else: should have been already reported */
+ }
else
directory->mtime = get_stat_mtime (&st);
}
if (one_file_system_option && device != stat_data->st_dev
/* ... except if it was explicitely given in the command line */
&& !is_individual_file (name_buffer))
+ /* FIXME:
+ WARNOPT (WARN_XDEV,
+ (0, 0,
+ _("%s: directory is on a different filesystem; not dumped"),
+ quotearg_colon (directory->name)));
+ */
directory->children = NO_CHILDREN;
else if (flag & PD_FORCE_CHILDREN)
{
if (deref_stat (dereference_option, name_buffer, &stat_data))
{
- stat_diag (name_buffer);
+ dir_removed_diag (name_buffer, false, stat_diag);
/* FIXME: used to be
children = CHANGED_CHILDREN;
but changed to: */
return;
}
+ /* Consume the first name from the name list and reset the
+ list afterwards. This is done to change to the new
+ directory, if the first name is a chdir request (-C dir),
+ which is necessary to recreate absolute file names. */
+ name_from_list ();
+ blank_name_list ();
+
if (0 < getline (&buf, &bufsize, listed_incremental_stream))
{
char *ebuf;