diff options
author | Heikki Korpela <heko@cvs.openbsd.org> | 2001-08-25 19:52:06 +0000 |
---|---|---|
committer | Heikki Korpela <heko@cvs.openbsd.org> | 2001-08-25 19:52:06 +0000 |
commit | e6a70557c835aa6f17ca521395e547126f13152c (patch) | |
tree | 4cb0e68be8f10a9ccef67c13281558ee28be145d /usr.bin/xinstall | |
parent | 163c6f94ed9908760f05b0fa1702cda394b632bf (diff) |
It is ok for the target file not to exist even if -b was specified
to install(1), so silently ignore rename(2) ENOENT.
Closes PR 2028.
ok millert@
Diffstat (limited to 'usr.bin/xinstall')
-rw-r--r-- | usr.bin/xinstall/xinstall.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/usr.bin/xinstall/xinstall.c b/usr.bin/xinstall/xinstall.c index e298cd9dcae..0ad53a0d0cb 100644 --- a/usr.bin/xinstall/xinstall.c +++ b/usr.bin/xinstall/xinstall.c @@ -1,4 +1,4 @@ -/* $OpenBSD: xinstall.c,v 1.27 2001/07/09 07:04:58 deraadt Exp $ */ +/* $OpenBSD: xinstall.c,v 1.28 2001/08/25 19:52:05 heko Exp $ */ /* $NetBSD: xinstall.c,v 1.9 1995/12/20 10:25:17 jonathan Exp $ */ /* @@ -44,7 +44,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)xinstall.c 8.1 (Berkeley) 7/21/93"; #endif -static char rcsid[] = "$OpenBSD: xinstall.c,v 1.27 2001/07/09 07:04:58 deraadt Exp $"; +static char rcsid[] = "$OpenBSD: xinstall.c,v 1.28 2001/08/25 19:52:05 heko Exp $"; #endif /* not lint */ #include <sys/param.h> @@ -354,7 +354,8 @@ install(from_name, to_name, fset, flags) char backup[MAXPATHLEN]; (void)snprintf(backup, MAXPATHLEN, "%s%s", to_name, suffix); - if (rename(to_name, backup) < 0) { + /* It is ok for the target file not to exist. */ + if (rename(to_name, backup) < 0 && errno != ENOENT) { serrno = errno; unlink(tempfile); errx(EX_OSERR, "rename: %s to %s: %s", to_name, @@ -662,8 +663,9 @@ create_newfile(path, sbp) if (dobackup) { (void)snprintf(backup, MAXPATHLEN, "%s%s", path, suffix); - if (rename(path, backup) < 0) - err(EX_OSERR, "rename: %s to %s", path, backup); + /* It is ok for the target file not to exist. */ + if (rename(path, backup) < 0 && errno != ENOENT) + err(EX_OSERR, "rename: %s to %s (errno %d)", path, backup, errno); } else (void)unlink(path); |