Commit | Line | Data |
---|---|---|
60d5f7dd BJ |
1 | /* hunt.c 4.1 81/05/09 */ |
2 | #include "tip.h" | |
3 | ||
4 | #define RD 04 | |
5 | ||
6 | extern char *getremote(); | |
7 | extern char *rindex(); | |
8 | ||
9 | int deadfl; | |
10 | ||
11 | dead() | |
12 | { | |
13 | deadfl = 1; | |
14 | } | |
15 | ||
16 | hunt(name) | |
17 | char *name; | |
18 | { | |
19 | register char *cp; | |
20 | ||
21 | deadfl = 0; | |
22 | signal(SIGALRM, dead); | |
23 | while(cp = getremote(name)){ | |
24 | if (access(cp, RD)) | |
25 | continue; | |
26 | uucplock = rindex(cp, '/')+1; | |
27 | if (mlock(uucplock) < 0) { | |
28 | delock(uucplock); | |
29 | continue; | |
30 | } | |
31 | alarm(10); | |
32 | if((FD = open(cp, 2)) >= 0){ | |
33 | alarm(0); | |
34 | if(deadfl) | |
35 | continue; | |
36 | ioctl(FD, TIOCEXCL, 0); | |
37 | break; | |
38 | } | |
39 | alarm(0); | |
40 | signal(SIGALRM, dead); | |
41 | } | |
42 | alarm(0); | |
43 | signal(SIGALRM, SIG_DFL); | |
44 | if(deadfl) | |
45 | return(-1); | |
46 | return((int)cp); | |
47 | } |