0
|
1 /* rename -- rename a file
|
|
2 This function is in the public domain. */
|
|
3
|
|
4 /*
|
|
5
|
|
6 @deftypefn Supplemental int rename (const char *@var{old}, const char *@var{new})
|
|
7
|
|
8 Renames a file from @var{old} to @var{new}. If @var{new} already
|
|
9 exists, it is removed.
|
|
10
|
|
11 @end deftypefn
|
|
12
|
|
13 */
|
|
14
|
|
15 #include "ansidecl.h"
|
|
16 #ifdef HAVE_CONFIG_H
|
|
17 #include "config.h"
|
|
18 #endif
|
|
19 #include <errno.h>
|
|
20 #ifdef HAVE_UNISTD_H
|
|
21 #include <unistd.h>
|
|
22 #endif
|
|
23
|
|
24 int
|
|
25 rename (const char *zfrom, const char *zto)
|
|
26 {
|
|
27 if (link (zfrom, zto) < 0)
|
|
28 {
|
|
29 if (errno != EEXIST)
|
|
30 return -1;
|
|
31 if (unlink (zto) < 0
|
|
32 || link (zfrom, zto) < 0)
|
|
33 return -1;
|
|
34 }
|
|
35 return unlink (zfrom);
|
|
36 }
|