GNU file utilities
[gnulib.git] / lib / rename.c
index 593cf31..3788e90 100644 (file)
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <errno.h>
-#ifndef STDC_HEADERS
+#ifndef errno
 extern int errno;
 #endif
 
-#ifdef STAT_MACROS_BROKEN
-#ifdef S_ISDIR
+#ifdef STAT_MACROS_BROKEN
 #undef S_ISDIR
-#endif
-#endif /* STAT_MACROS_BROKEN.  */
+#endif /* STAT_MACROS_BROKEN.  */
 
 #if !defined(S_ISDIR) && defined(S_IFDIR)
 #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
 #endif
 
+#include "safe-stat.h"
+
 /* Rename file FROM to file TO.
    Return 0 if successful, -1 if not. */
 
@@ -43,13 +47,13 @@ rename (from, to)
   struct stat from_stats, to_stats;
   int pid, status;
 
-  if (stat (from, &from_stats))
+  if (SAFE_STAT (from, &from_stats))
     return -1;
 
   /* Be careful not to unlink `from' if it happens to be equal to `to' or
      (on filesystems that silently truncate filenames after 14 characters)
      if `from' and `to' share the significant characters. */
-  if (stat (to, &to_stats))
+  if (SAFE_STAT (to, &to_stats))
     {
       if (errno != ENOENT)
         return -1;