1169695Skan/* rename -- rename a file 2169695Skan This function is in the public domain. */ 3169695Skan 4169695Skan/* 5169695Skan 6169695Skan@deftypefn Supplemental int rename (const char *@var{old}, const char *@var{new}) 7169695Skan 8169695SkanRenames a file from @var{old} to @var{new}. If @var{new} already 9169695Skanexists, it is removed. 10169695Skan 11169695Skan@end deftypefn 12169695Skan 13169695Skan*/ 14169695Skan 15169695Skan#include "ansidecl.h" 16169695Skan#ifdef HAVE_CONFIG_H 17169695Skan#include "config.h" 18169695Skan#endif 19169695Skan#include <errno.h> 20169695Skan#ifdef HAVE_UNISTD_H 21169695Skan#include <unistd.h> 22169695Skan#endif 23169695Skan 24169695Skanint 25169695Skanrename (const char *zfrom, const char *zto) 26169695Skan{ 27169695Skan if (link (zfrom, zto) < 0) 28169695Skan { 29169695Skan if (errno != EEXIST) 30169695Skan return -1; 31169695Skan if (unlink (zto) < 0 32169695Skan || link (zfrom, zto) < 0) 33169695Skan return -1; 34169695Skan } 35169695Skan return unlink (zfrom); 36169695Skan} 37