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 rename(const char * zfrom,const char * zto)25rename (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 } 37