112026Sdlw /* 2*23045Skre * Copyright (c) 1980 Regents of the University of California. 3*23045Skre * All rights reserved. The Berkeley software License Agreement 4*23045Skre * specifies the terms and conditions for redistribution. 512026Sdlw * 6*23045Skre * @(#)rename_.c 5.1 06/07/85 7*23045Skre */ 8*23045Skre 9*23045Skre /* 1012026Sdlw * rename a file atomically 1112026Sdlw * 1212026Sdlw * synopsis: 1312026Sdlw * integer function rename (from, to) 1412026Sdlw * character*(*) from, to 1512026Sdlw * 1612026Sdlw * where: 1712026Sdlw * return value will be zero normally, an error number otherwise. 1812026Sdlw */ 1912026Sdlw 2012026Sdlw #include "../libI77/f_errno.h" 2112145Sdlw #include <sys/param.h> 2212145Sdlw #ifndef MAXPATHLEN 2312145Sdlw #define MAXPATHLEN 128 2412145Sdlw #endif 2512026Sdlw 2612026Sdlw long 2712026Sdlw rename_ (from, to, frlen, tolen) 2812026Sdlw char *from, *to; 2912026Sdlw long frlen, tolen; 3012026Sdlw { 3112145Sdlw char frbuf[MAXPATHLEN]; 3212145Sdlw char tobuf[MAXPATHLEN]; 3312026Sdlw 3412026Sdlw if (frlen <= 0 || tolen <= 0 || *from == ' ' || *to == ' ') 3512026Sdlw return ((long)(errno = F_ERARG)); 3612026Sdlw if (frlen >= sizeof frbuf || tolen >= sizeof tobuf) 3712026Sdlw return ((long)(errno = F_ERARG)); 3812026Sdlw g_char (from, frlen, frbuf); 3912026Sdlw g_char (to, tolen, tobuf); 4012026Sdlw if (rename (from, to) != 0) 4112026Sdlw return ((long)errno); 4212026Sdlw return (0L); 4312026Sdlw } 44