Annotation of 43BSD/usr.bin/tip/hunt.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1983 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  */
                      6: 
                      7: #ifndef lint
                      8: static char sccsid[] = "@(#)hunt.c     5.1 (Berkeley) 4/30/85";
                      9: #endif not lint
                     10: 
                     11: #include "tip.h"
                     12: 
                     13: extern char *getremote();
                     14: extern char *rindex();
                     15: 
                     16: static jmp_buf deadline;
                     17: static int deadfl;
                     18: 
                     19: dead()
                     20: {
                     21: 
                     22:        deadfl = 1;
                     23:        longjmp(deadline, 1);
                     24: }
                     25: 
                     26: hunt(name)
                     27:        char *name;
                     28: {
                     29:        register char *cp;
                     30:        int (*f)();
                     31: 
                     32:        f = signal(SIGALRM, dead);
                     33:        deadfl = 0;
                     34:        while (cp = getremote(name)) {
                     35:                uucplock = rindex(cp, '/')+1;
                     36:                if (mlock(uucplock) < 0) {
                     37:                        delock(uucplock);
                     38:                        continue;
                     39:                }
                     40:                /*
                     41:                 * Straight through call units, such as the BIZCOMP,
                     42:                 * VADIC and the DF, must indicate they're hardwired in
                     43:                 *  order to get an open file descriptor placed in FD.
                     44:                 * Otherwise, as for a DN-11, the open will have to
                     45:                 *  be done in the "open" routine.
                     46:                 */
                     47:                if (!HW)
                     48:                        break;
                     49:                if (setjmp(deadline) == 0) {
                     50:                        alarm(10);
                     51:                        FD = open(cp, O_RDWR);
                     52:                }
                     53:                alarm(0);
                     54:                if (FD < 0) {
                     55:                        perror(cp);
                     56:                        deadfl = 1;
                     57:                }
                     58:                if (!deadfl) {
                     59:                        ioctl(FD, TIOCEXCL, 0);
                     60:                        ioctl(FD, TIOCHPCL, 0);
                     61:                        signal(SIGALRM, SIG_DFL);
                     62:                        return ((int)cp);
                     63:                }
                     64:                delock(uucplock);
                     65:        }
                     66:        signal(SIGALRM, f);
                     67:        return (deadfl ? -1 : (int)cp);
                     68: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.