xref: /csrg-svn/usr.bin/f77/libU77/link_.c (revision 12144)
12532Sdlw /*
2*12144Sdlw char id_link[] = "@(#)link_.c	1.2";
32532Sdlw  *
42532Sdlw  * make a link to an existing file
52532Sdlw  *
62532Sdlw  * calling sequence:
72532Sdlw  *	ierror = link(name1, name2)
82532Sdlw  * where:
92532Sdlw  *	name1 is the pathname of an existing file
102532Sdlw  *	name2 is a pathname to be linked to file name1
112532Sdlw  *	ierror will be 0 if successful; a system error code otherwise.
122532Sdlw  */
132532Sdlw 
142532Sdlw #include "../libI77/f_errno.h"
15*12144Sdlw #include <sys/param.h>
16*12144Sdlw #ifndef	MAXPATHLEN
17*12144Sdlw #define MAXPATHLEN	128
18*12144Sdlw #endif
192532Sdlw 
202532Sdlw long link_(name1, name2, n1len, n2len)
212532Sdlw char *name1, *name2;
222532Sdlw long n1len, n2len;
232532Sdlw {
24*12144Sdlw 	char buf1[MAXPATHLEN];
25*12144Sdlw 	char buf2[MAXPATHLEN];
262532Sdlw 
272532Sdlw 	if (n1len >= sizeof buf1 || n2len >= sizeof buf2)
282532Sdlw 		return((long)(errno=F_ERARG));
292532Sdlw 	g_char(name1, n1len, buf1);
302532Sdlw 	g_char(name2, n2len, buf2);
31*12144Sdlw 	if (buf1[0] == '\0' || buf2[0] == '\0')
322532Sdlw 		return((long)(errno=F_ERARG));
332532Sdlw 	if (link(buf1, buf2) != 0)
342532Sdlw 		return((long)errno);
352532Sdlw 	return(0L);
362532Sdlw }
37