}
static void
-overwrite_prompt (char const *dst_name, struct stat const *dst_sb)
+overwrite_prompt (struct cp_options const *x, char const *dst_name,
+ struct stat const *dst_sb)
{
if (! writable_destination (dst_name, dst_sb->st_mode))
{
strmode (dst_sb->st_mode, perms);
perms[10] = '\0';
fprintf (stderr,
- _("%s: try to overwrite %s, overriding mode %04lo (%s)? "),
+ _((x->unlink_dest_before_opening
+ || x->unlink_dest_after_failed_open)
+ ? "%s: replace %s, overriding mode %04lo (%s)? "
+ : "%s: unwritable %s (mode %04lo, %s); try anyway? "),
program_name, quote (dst_name),
(unsigned long int) (dst_sb->st_mode & CHMOD_MODE_BITS),
&perms[1]);
|| (x->interactive == I_UNSPECIFIED
&& x->stdin_tty
&& ! writable_destination (dst_name, dst_sb->st_mode)))
- && (overwrite_prompt (dst_name, dst_sb), 1)
+ && (overwrite_prompt (x, dst_name, dst_sb), 1)
&& ! yesno ()));
}
if (! S_ISDIR (src_mode)
&& (x->interactive == I_ALWAYS_NO
|| (x->interactive == I_ASK_USER
- && (overwrite_prompt (dst_name, &dst_sb), 1)
+ && (overwrite_prompt (x, dst_name, &dst_sb), 1)
&& ! yesno ())))
return true;
}