xref: /original-bsd/usr.bin/f77/libU77/rename_.c (revision 4f485440)
1 /*
2 char	id_rename[] = "@(#)rename_.c	1.2";
3  *
4  * rename a file atomically
5  *
6  * synopsis:
7  *	integer function rename (from, to)
8  *	character*(*) from, to
9  *
10  * where:
11  *	return value will be zero normally, an error number otherwise.
12  */
13 
14 #include "../libI77/f_errno.h"
15 #include <sys/param.h>
16 #ifndef	MAXPATHLEN
17 #define MAXPATHLEN	128
18 #endif
19 
20 long
21 rename_ (from, to, frlen, tolen)
22 char	*from, *to;
23 long	frlen, tolen;
24 {
25 	char	frbuf[MAXPATHLEN];
26 	char	tobuf[MAXPATHLEN];
27 
28 	if (frlen <= 0 || tolen <= 0 || *from == ' ' || *to == ' ')
29 		return ((long)(errno = F_ERARG));
30 	if (frlen >= sizeof frbuf || tolen >= sizeof tobuf)
31 		return ((long)(errno = F_ERARG));
32 	g_char (from, frlen, frbuf);
33 	g_char (to, tolen, tobuf);
34 	if (rename (from, to) != 0)
35 		return ((long)errno);
36 	return (0L);
37 }
38