112026Sdlw /* 2*12145Sdlw char id_rename[] = "@(#)rename_.c 1.2"; 312026Sdlw * 412026Sdlw * rename a file atomically 512026Sdlw * 612026Sdlw * synopsis: 712026Sdlw * integer function rename (from, to) 812026Sdlw * character*(*) from, to 912026Sdlw * 1012026Sdlw * where: 1112026Sdlw * return value will be zero normally, an error number otherwise. 1212026Sdlw */ 1312026Sdlw 1412026Sdlw #include "../libI77/f_errno.h" 15*12145Sdlw #include <sys/param.h> 16*12145Sdlw #ifndef MAXPATHLEN 17*12145Sdlw #define MAXPATHLEN 128 18*12145Sdlw #endif 1912026Sdlw 2012026Sdlw long 2112026Sdlw rename_ (from, to, frlen, tolen) 2212026Sdlw char *from, *to; 2312026Sdlw long frlen, tolen; 2412026Sdlw { 25*12145Sdlw char frbuf[MAXPATHLEN]; 26*12145Sdlw char tobuf[MAXPATHLEN]; 2712026Sdlw 2812026Sdlw if (frlen <= 0 || tolen <= 0 || *from == ' ' || *to == ' ') 2912026Sdlw return ((long)(errno = F_ERARG)); 3012026Sdlw if (frlen >= sizeof frbuf || tolen >= sizeof tobuf) 3112026Sdlw return ((long)(errno = F_ERARG)); 3212026Sdlw g_char (from, frlen, frbuf); 3312026Sdlw g_char (to, tolen, tobuf); 3412026Sdlw if (rename (from, to) != 0) 3512026Sdlw return ((long)errno); 3612026Sdlw return (0L); 3712026Sdlw } 38