|
|
1.1 root 1: #ifndef lint
2: static char sccsid[] = "@(#)hunt.c 4.8 (Berkeley) 10/20/83";
3: #endif
4:
5: #include "tip.h"
6:
7: extern char *getremote();
8: extern char *rindex();
9:
10: static jmp_buf deadline;
11: static int deadfl;
12:
13: dead()
14: {
15:
16: deadfl = 1;
17: longjmp(deadline, 1);
18: }
19:
20: hunt(name)
21: char *name;
22: {
23: register char *cp;
24: int (*f)();
25:
26: f = signal(SIGALRM, dead);
27: deadfl = 0;
28: while (cp = getremote(name)) {
29: uucplock = rindex(cp, '/')+1;
30: if (mlock(uucplock) < 0) {
31: delock(uucplock);
32: continue;
33: }
34: /*
35: * Straight through call units, such as the BIZCOMP,
36: * VADIC and the DF, must indicate they're hardwired in
37: * order to get an open file descriptor placed in FD.
38: * Otherwise, as for a DN-11, the open will have to
39: * be done in the "open" routine.
40: */
41: if (!HW)
42: break;
43: if (setjmp(deadline) == 0) {
44: alarm(10);
45: FD = open(cp, O_RDWR);
46: }
47: alarm(0);
48: if (FD < 0) {
49: perror(cp);
50: deadfl = 1;
51: }
52: if (!deadfl) {
53: ioctl(FD, TIOCEXCL, 0);
54: ioctl(FD, TIOCHPCL, 0);
55: signal(SIGALRM, SIG_DFL);
56: return ((int)cp);
57: }
58: delock(uucplock);
59: }
60: signal(SIGALRM, f);
61: return (deadfl ? -1 : (int)cp);
62: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.