* Copyright (c) 1983 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
static char sccsid
[] = "@(#)biz31.c 5.1 (Berkeley) %G%";
#define MAXRETRY 3 /* sync up retry count */
#define DISCONNECT_CMD "\21\25\11\24" /* disconnection string */
static jmp_buf timeoutbuf
;
* Dial up on a BIZCOMP Model 1031 with either
* tone dialing (mod = "f")
* pulse dialing (mod = "w")
register int connected
= 0;
logent(value(HOST
), "", "biz", "out of sync");
printf("bizcomp out of sync\n");
if (boolean(value(VERBOSE
)))
printf("\nstarting call...");
echo("#\rk$\r$\n"); /* disable auto-answer */
echo("$>$.$ #\r"); /* tone/pulse dialing */
echo("$>$.$ #\re$ "); /* disconnection sequence */
echo("$>$.$ #\rr$ "); /* repeat dial */
if (boolean(value(VERBOSE
)))
* The reply from the BIZCOMP should be:
* `^G NO CONNECTION\r\n^G\r\n' failure
* ` CONNECTION\r\n^G' success
sprintf(line
, "%d second dial timeout",
number(value(DIALTIMEOUT
)));
logent(value(HOST
), num
, "biz", line
);
flush(" NO CONNECTION\r\n\07\r\n");
flush("CONNECTION\r\n\07");
biz31_disconnect(); /* insurance */
return (biz_dialer(num
, "w"));
return (biz_dialer(num
, "f"));
write(FD
, DISCONNECT_CMD
, 4);
while (c
= *s
++) switch (c
) {
f
= signal(SIGALRM
, sigALRM
);
if (setjmp(timeoutbuf
)) {
printf("\07timeout waiting for reply\n");
alarm(number(value(DIALTIMEOUT
)));
f
= signal(SIGALRM
, sigALRM
);
timeout
= 0; /* guard against disconnection */
* This convoluted piece of code attempts to get
* the bizcomp in sync. If you don't have the capacity or nread
* call there are gory ways to simulate this.
# define chars(b) ((b).cp_nbytes)
# define IOCTL FIOCAPACITY
register int already
= 0;
if (ioctl(fd
, IOCTL
, (caddr_t
)&b
) >= 0 && chars(b
) > 0)
if (ioctl(fd
, IOCTL
, (caddr_t
)&b
) >= 0) {
write(fd
, DISCONNECT_CMD
, 4);
if (strncmp(buf
, "p >\r\n\r\n>", 8))