summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binutils/ChangeLog4
-rw-r--r--binutils/rename.c8
2 files changed, 8 insertions, 4 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 6f19b862c6..b61c92128a 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,7 @@
+1999-05-06 Ian Lance Taylor <ian@zembu.com>
+
+ * rename.c (smart_rename): Fix test of whether file exists.
+
1999-05-06 Nick Clifton <nickc@cygnus.com>
* objdump.c (disassemble_data): Set display_endian based on target
diff --git a/binutils/rename.c b/binutils/rename.c
index fdc7263d1f..f8314fbd09 100644
--- a/binutils/rename.c
+++ b/binutils/rename.c
@@ -139,17 +139,17 @@ smart_rename (from, to, preserve_dates)
const char *to;
int preserve_dates;
{
- int exists;
+ boolean exists;
struct stat s;
int ret = 0;
- exists = lstat (to, &s);
+ exists = lstat (to, &s) == 0;
#if defined (_WIN32) && !defined (__CYGWIN32__)
/* Win32, unlike unix, will not erase `to' in `rename(from, to)' but
fail instead. Also, chown is not present. */
- if (exists == 0)
+ if (exists)
remove (to);
ret = rename (from, to);
@@ -163,7 +163,7 @@ smart_rename (from, to, preserve_dates)
#else
/* Use rename only if TO is not a symbolic link and has
only one hard link. */
- if (exists < 0 || (!S_ISLNK (s.st_mode) && s.st_nlink == 1))
+ if (! exists || (!S_ISLNK (s.st_mode) && s.st_nlink == 1))
{
ret = rename (from, to);
if (ret == 0)