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