Make objcopy -p work when an output file is specified

More fallout from the PR27456 fixes.

	PR 27456
	* rename.c (smart_rename): When TO and FROM are equal, just set
	file timestamp.
	* objcopy.c (strip_main, copy_main): Always call smart_rename.
This commit is contained in:
Alan Modra
2021-04-15 01:33:13 +09:30
parent ddfe525f28
commit d0ecdcddc3
3 changed files with 22 additions and 13 deletions

View File

@ -129,16 +129,19 @@ int
smart_rename (const char *from, const char *to, int fromfd,
struct stat *target_stat, bool preserve_dates)
{
int ret;
int ret = 0;
ret = simple_copy (fromfd, to, target_stat);
if (ret != 0)
non_fatal (_("unable to copy file '%s'; reason: %s"),
to, strerror (errno));
if (to != from)
{
ret = simple_copy (fromfd, to, target_stat);
if (ret != 0)
non_fatal (_("unable to copy file '%s'; reason: %s"),
to, strerror (errno));
unlink (from);
}
if (preserve_dates)
set_times (to, target_stat);
unlink (from);
return ret;
}