Ultrix-3.1/src/cmd/tip/hunt.c
/**********************************************************************
* Copyright (c) Digital Equipment Corporation 1984, 1985, 1986. *
* All Rights Reserved. *
* Reference "/usr/src/COPYRIGHT" for applicable restrictions. *
**********************************************************************/
#ifndef lint
static char sccsid[] = "@(#)hunt.c 3.0 4/22/86";
#endif
#include "tip.h"
extern char *getremote();
extern char *rindex();
static jmp_buf deadline;
static int deadfl;
dead()
{
deadfl = 1;
longjmp(deadline, 1);
}
hunt(name)
char *name;
{
register char *cp;
int (*f)();
f = signal(SIGALRM, dead);
deadfl = 0;
while (cp = getremote(name)) {
uucplock = rindex(cp, '/')+1;
if (mlock(uucplock) < 0) {
delock(uucplock);
continue;
}
/*
* Straight through call units, such as the BIZCOMP,
* VADIC and the DF, must indicate they're hardwired in
* order to get an open file descriptor placed in FD.
* Otherwise, as for a DN-11, the open will have to
* be done in the "open" routine.
*/
if (!HW)
break;
if (setjmp(deadline) == 0) {
alarm(10);
FD = open(cp, O_RDWR);
}
alarm(0);
if (!deadfl) {
#ifdef V7M-11
ioctl(FD, TIOCSDTR, (struct sgttyb *)NULL);
#endif V7M-11
ioctl(FD, TIOCEXCL, 0);
ioctl(FD, TIOCHPCL, 0);
signal(SIGALRM, SIG_DFL);
return ((int)cp);
}
delock(uucplock);
}
signal(SIGALRM, f);
return (deadfl ? -1 : (int)cp);
}