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