* Copyright (c) 1983 The Regents of the University of California.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. 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 BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
static char sccsid
[] = "@(#)biz31.c 5.4 (Berkeley) 6/1/90";
#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))