static int detect(char *s) { char c; sig_handler_t f; f = signal(SIGALRM, (sig_handler_t)sigALRM); timeout = 0; while (*s) { if (sigsetjmp(timeoutbuf, 1)) { (void) printf("\07timeout waiting for reply\n"); biz31_abort(); break; } (void) alarm(number(value(DIALTIMEOUT))); (void) read(FD, &c, 1); (void) alarm(0); if (c != *s++) break; } (void) signal(SIGALRM, f); return (timeout == 0); }
static int detect(char *s) { sig_t f; char c; f = signal(SIGALRM, sigALRM); timeout = 0; while (*s) { if (setjmp(timeoutbuf)) { printf("\07timeout waiting for reply\n"); biz31_abort(); break; } alarm(number(value(DIALTIMEOUT))); read(FD, &c, 1); alarm(0); if (c != *s++) break; } signal(SIGALRM, f); return (timeout == 0); }