This is hunt.c in view mode; [Download] [Up]
/* * Copyright (c) 1983 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that: (1) source distributions retain this entire copyright * notice and comment, and (2) distributions including binaries display * the following acknowledgement: ``This product includes software * developed by the University of California, Berkeley and its contributors'' * in the documentation or other materials provided with the distribution * and in all advertising materials mentioning features or use of this * software. Neither the name of the University nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include <sys/file.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> #include "tip.h" extern char *getremote(); extern char *rindex(); int uu_lock(); unsigned int alarm(); int uu_unlock(); int ioctl(); int open(const char *path, int flags, ...); static jmp_buf deadline; static int deadfl; #ifdef TIPX char opened_tty[128]; #endif void dead() { deadfl = 1; longjmp(deadline, 1); } int hunt(name) char *name; { register char *cp; void (*f)(); f = signal(SIGALRM, dead); while (cp = getremote(name)) { deadfl = 0; uucplock = rindex(cp, '/')+1; if (uu_lock(uucplock) < 0) 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; #ifdef TIPX strcpy(opened_tty,cp); #endif if (setjmp(deadline) == 0) { alarm(10); FD = open(cp, O_RDWR); } alarm(0); if (FD < 0) { perror(cp); deadfl = 1; } if (!deadfl) { ioctl(FD, TIOCEXCL, 0); ioctl(FD, TIOCHPCL, 0); signal(SIGALRM, SIG_DFL); return ((int)cp); } (void)uu_unlock(uucplock); } signal(SIGALRM, f); return (deadfl ? -1 : (int)cp); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.