projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
binutils: spaces -> tabs in CTF parts of objdump and readelf
[deliverable/binutils-gdb.git]
/
binutils
/
rename.c
diff --git
a/binutils/rename.c
b/binutils/rename.c
index 99561c47bcfc5369e78dc9fde1ef24f536e75fd1..592d961d49699dc77d01baa632529f71569bf0e6 100644
(file)
--- a/
binutils/rename.c
+++ b/
binutils/rename.c
@@
-1,11
+1,11
@@
/* rename.c -- rename a file, preserving symlinks.
/* rename.c -- rename a file, preserving symlinks.
- Copyright
1999, 2002, 2003
Free Software Foundation, Inc.
+ Copyright
(C) 1999-2019
Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This file is part of GNU Binutils.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version
2
of the License, or
+ the Free Software Foundation; either version
3
of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@@
-15,14
+15,13
@@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 5
9 Temple Place - Suite 330
, Boston, MA
- 0211
1-1307
, USA. */
+ Foundation, Inc., 5
1 Franklin Street - Fifth Floor
, Boston, MA
+ 0211
0-1301
, USA. */
+#include "sysdep.h"
#include "bfd.h"
#include "bucomm.h"
#include "bfd.h"
#include "bucomm.h"
-#include <sys/stat.h>
-
#ifdef HAVE_GOOD_UTIME_H
#include <utime.h>
#else /* ! HAVE_GOOD_UTIME_H */
#ifdef HAVE_GOOD_UTIME_H
#include <utime.h>
#else /* ! HAVE_GOOD_UTIME_H */
@@
-31,12
+30,7
@@
#endif /* HAVE_UTIMES */
#endif /* ! HAVE_GOOD_UTIME_H */
#endif /* HAVE_UTIMES */
#endif /* ! HAVE_GOOD_UTIME_H */
-/* We need to open the file in binary modes on system where that makes
- a difference. */
-#ifndef O_BINARY
-#define O_BINARY 0
-#endif
-
+#if ! defined (_WIN32) || defined (__CYGWIN32__)
static int simple_copy (const char *, const char *);
/* The number of bytes to copy at once. */
static int simple_copy (const char *, const char *);
/* The number of bytes to copy at once. */
@@
-88,6
+82,7
@@
simple_copy (const char *from, const char *to)
}
return 0;
}
}
return 0;
}
+#endif /* __CYGWIN32__ or not _WIN32 */
/* Set the times of the file DESTINATION to be the same as those in
STATBUF. */
/* Set the times of the file DESTINATION to be the same as those in
STATBUF. */
@@
-140,7
+135,7
@@
set_times (const char *destination, const struct stat *statbuf)
Return 0 if ok, -1 if error. */
int
Return 0 if ok, -1 if error. */
int
-smart_rename (const char *from, const char *to, int preserve_dates)
+smart_rename (const char *from, const char *to, int preserve_dates
ATTRIBUTE_UNUSED
)
{
bfd_boolean exists;
struct stat s;
{
bfd_boolean exists;
struct stat s;
@@
-159,14
+154,18
@@
smart_rename (const char *from, const char *to, int preserve_dates)
if (ret != 0)
{
/* We have to clean up here. */
if (ret != 0)
{
/* We have to clean up here. */
-
- non_fatal (_("%s: rename: %s"), to, strerror (errno));
+ non_fatal (_("unable to rename '%s'; reason: %s"), to, strerror (errno));
unlink (from);
}
#else
/* Use rename only if TO is not a symbolic link and has
unlink (from);
}
#else
/* Use rename only if TO is not a symbolic link and has
- only one hard link. */
- if (! exists || (!S_ISLNK (s.st_mode) && s.st_nlink == 1))
+ only one hard link, and we have permission to write to it. */
+ if (! exists
+ || (!S_ISLNK (s.st_mode)
+ && S_ISREG (s.st_mode)
+ && (s.st_mode & S_IWUSR)
+ && s.st_nlink == 1)
+ )
{
ret = rename (from, to);
if (ret == 0)
{
ret = rename (from, to);
if (ret == 0)
@@
-193,7
+192,7
@@
smart_rename (const char *from, const char *to, int preserve_dates)
else
{
/* We have to clean up here. */
else
{
/* We have to clean up here. */
- non_fatal (_("
%s: rename
: %s"), to, strerror (errno));
+ non_fatal (_("
unable to rename '%s'; reason
: %s"), to, strerror (errno));
unlink (from);
}
}
unlink (from);
}
}
@@
-201,7
+200,7
@@
smart_rename (const char *from, const char *to, int preserve_dates)
{
ret = simple_copy (from, to);
if (ret != 0)
{
ret = simple_copy (from, to);
if (ret != 0)
- non_fatal (_("
%s: simple_copy
: %s"), to, strerror (errno));
+ non_fatal (_("
unable to copy file '%s'; reason
: %s"), to, strerror (errno));
if (preserve_dates)
set_times (to, &s);
if (preserve_dates)
set_times (to, &s);
This page took
0.028797 seconds
and
4
git commands to generate.