xref: /original-bsd/usr.bin/f77/libU77/rename_.c (revision dd61ec61)
1*dd61ec61Sbostic /*-
2*dd61ec61Sbostic  * Copyright (c) 1980 The Regents of the University of California.
3*dd61ec61Sbostic  * All rights reserved.
4782abaf7Sdlw  *
5*dd61ec61Sbostic  * %sccs.include.proprietary.c%
6cb092b7bSkre  */
7cb092b7bSkre 
8*dd61ec61Sbostic #ifndef lint
9*dd61ec61Sbostic static char sccsid[] = "@(#)rename_.c	5.2 (Berkeley) 04/12/91";
10*dd61ec61Sbostic #endif /* not lint */
11*dd61ec61Sbostic 
12cb092b7bSkre /*
13782abaf7Sdlw  * rename a file atomically
14782abaf7Sdlw  *
15782abaf7Sdlw  * synopsis:
16782abaf7Sdlw  *	integer function rename (from, to)
17782abaf7Sdlw  *	character*(*) from, to
18782abaf7Sdlw  *
19782abaf7Sdlw  * where:
20782abaf7Sdlw  *	return value will be zero normally, an error number otherwise.
21782abaf7Sdlw  */
22782abaf7Sdlw 
23782abaf7Sdlw #include "../libI77/f_errno.h"
24e123bcecSdlw #include <sys/param.h>
25e123bcecSdlw #ifndef	MAXPATHLEN
26e123bcecSdlw #define MAXPATHLEN	128
27e123bcecSdlw #endif
28782abaf7Sdlw 
29782abaf7Sdlw long
rename_(from,to,frlen,tolen)30782abaf7Sdlw rename_ (from, to, frlen, tolen)
31782abaf7Sdlw char	*from, *to;
32782abaf7Sdlw long	frlen, tolen;
33782abaf7Sdlw {
34e123bcecSdlw 	char	frbuf[MAXPATHLEN];
35e123bcecSdlw 	char	tobuf[MAXPATHLEN];
36782abaf7Sdlw 
37782abaf7Sdlw 	if (frlen <= 0 || tolen <= 0 || *from == ' ' || *to == ' ')
38782abaf7Sdlw 		return ((long)(errno = F_ERARG));
39782abaf7Sdlw 	if (frlen >= sizeof frbuf || tolen >= sizeof tobuf)
40782abaf7Sdlw 		return ((long)(errno = F_ERARG));
41782abaf7Sdlw 	g_char (from, frlen, frbuf);
42782abaf7Sdlw 	g_char (to, tolen, tobuf);
43782abaf7Sdlw 	if (rename (from, to) != 0)
44782abaf7Sdlw 		return ((long)errno);
45782abaf7Sdlw 	return (0L);
46782abaf7Sdlw }
47