}
/* Check if PATH already exists and make a backup of it right now.
- Return success (nonzero) only if the backup in either unneeded, or
+ Return success (nonzero) only if the backup is either unneeded, or
successful. For now, directories are considered to never need
backup. If ARCHIVE is nonzero, this is the archive and so, we do
not have to backup block or character devices, nor remote entities. */
-int
+bool
maybe_backup_file (const char *path, int archive)
{
struct stat file_stat;
/* Check if we really need to backup the file. */
if (archive && _remdev (path))
- return 1;
+ return true;
if (stat (path, &file_stat))
{
if (errno == ENOENT)
- return 1;
+ return true;
stat_error (path);
- return 0;
+ return false;
}
if (S_ISDIR (file_stat.st_mode))
- return 1;
+ return true;
if (archive && (S_ISBLK (file_stat.st_mode) || S_ISCHR (file_stat.st_mode)))
- return 1;
+ return true;
assign_string (&before_backup_name, path);
fprintf (stdlis, _("Renaming %s to %s\n"),
quote_n (0, before_backup_name),
quote_n (1, after_backup_name));
- return 1;
+ return true;
}
else
{
quotearg_colon (before_backup_name),
quote_n (1, after_backup_name)));
assign_string (&after_backup_name, 0);
- return 0;
+ return false;
}
}
call_arg_warn ("close", name);
}
+void
+close_diag (char const *name)
+{
+ if (ignore_failed_read_option)
+ close_warn (name);
+ else
+ close_error (name);
+}
+
void
exec_fatal (char const *name)
{
call_arg_warn ("open", name);
}
+void
+open_diag (char const *name)
+{
+ if (ignore_failed_read_option)
+ open_warn (name);
+ else
+ open_error (name);
+}
+
void
read_error (char const *name)
{
(unsigned long) size));
}
+void
+read_diag_details (char const *name, off_t offset, size_t size)
+{
+ if (ignore_failed_read_option)
+ read_warn_details (name, offset, size);
+ else
+ read_error_details (name, offset, size);
+}
+
void
read_fatal (char const *name)
{
call_arg_warn ("readlink", name);
}
+void
+readlink_diag (char const *name)
+{
+ if (ignore_failed_read_option)
+ readlink_warn (name);
+ else
+ readlink_error (name);
+}
+
void
savedir_error (char const *name)
{
call_arg_warn ("savedir", name);
}
+void
+savedir_diag (char const *name)
+{
+ if (ignore_failed_read_option)
+ savedir_warn (name);
+ else
+ savedir_error (name);
+}
+
void
seek_error (char const *name)
{
STRINGIFY_BIGINT (offset, buf)));
}
+void
+seek_diag_details (char const *name, off_t offset)
+{
+ if (ignore_failed_read_option)
+ seek_warn_details (name, offset);
+ else
+ seek_error_details (name, offset);
+}
+
void
symlink_error (char const *contents, char const *name)
{
call_arg_warn ("stat", name);
}
+void
+stat_diag (char const *name)
+{
+ if (ignore_failed_read_option)
+ stat_warn (name);
+ else
+ stat_error (name);
+}
+
void
truncate_error (char const *name)
{