xref: /csrg-svn/usr.bin/f77/libU77/rename_.c (revision 12145)
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