projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
date and time created 85/04/11 16:55:44 by miriam
[unix-history]
/
usr
/
src
/
usr.bin
/
tip
/
aculib
/
biz31.c
diff --git
a/usr/src/usr.bin/tip/aculib/biz31.c
b/usr/src/usr.bin/tip/aculib/biz31.c
index
d573cf6
..
bb5e277
100644
(file)
--- a/
usr/src/usr.bin/tip/aculib/biz31.c
+++ b/
usr/src/usr.bin/tip/aculib/biz31.c
@@
-1,12
+1,15
@@
-/* biz31.c 4.3 81/11/20 */
+#ifndef lint
+static char sccsid[] = "@(#)biz31.c 4.7 (Berkeley) %G%";
+#endif
+
#include "tip.h"
#include "tip.h"
-#if BIZ1031
#define MAXRETRY 3 /* sync up retry count */
#define MAXRETRY 3 /* sync up retry count */
-#define DISCONNECT
"\21\25\11\24" /* disconnection string */
+#define DISCONNECT
_CMD
"\21\25\11\24" /* disconnection string */
-static int sigALRM();
-static int timeout = 0;
+static int sigALRM();
+static int timeout = 0;
+static jmp_buf timeoutbuf;
/*
* Dial up on a BIZCOMP Model 1031 with either
/*
* Dial up on a BIZCOMP Model 1031 with either
@@
-32,7
+35,7
@@
biz_dialer(num, mod)
echo(mod);
echo("$\r$\n");
echo("$>$.$ #\re$ "); /* disconnection sequence */
echo(mod);
echo("$\r$\n");
echo("$>$.$ #\re$ "); /* disconnection sequence */
- echo(DISCONNECT);
+ echo(DISCONNECT
_CMD
);
echo("\r$\n$\r$\n");
echo("$>$.$ #\rr$ "); /* repeat dial */
echo(num);
echo("\r$\n$\r$\n");
echo("$>$.$ #\rr$ "); /* repeat dial */
echo(num);
@@
-60,32
+63,35
@@
biz_dialer(num, mod)
flush("CONNECTION\r\n\07");
if (timeout)
biz31_disconnect(); /* insurance */
flush("CONNECTION\r\n\07");
if (timeout)
biz31_disconnect(); /* insurance */
- return(connected);
+ return
(connected);
}
biz31w_dialer(num, acu)
char *num, *acu;
{
}
biz31w_dialer(num, acu)
char *num, *acu;
{
- return(biz_dialer(num, "w"));
+
+ return (biz_dialer(num, "w"));
}
biz31f_dialer(num, acu)
char *num, *acu;
{
}
biz31f_dialer(num, acu)
char *num, *acu;
{
- return(biz_dialer(num, "f"));
+
+ return (biz_dialer(num, "f"));
}
biz31_disconnect()
{
}
biz31_disconnect()
{
- write(FD, DISCONNECT, 4);
+
+ write(FD, DISCONNECT_CMD, 4);
sleep(2);
ioctl(FD, TIOCFLUSH);
}
biz31_abort()
{
sleep(2);
ioctl(FD, TIOCFLUSH);
}
biz31_abort()
{
+
write(FD, "\33", 1);
write(FD, "\33", 1);
- timeout = 1;
}
static int
}
static int
@@
-94,29
+100,30
@@
echo(s)
{
char c;
{
char c;
- while (c = *s++)
- switch(c)
- {
- case '$':
- read(FD, &c, 1);
- s++;
- break;
- case '#':
- c = *s++;
- write(FD, &c, 1);
- break;
- default:
- write(FD, &c, 1);
- read(FD, &c, 1);
- }
+ while (c = *s++) switch (c) {
+
+ case '$':
+ read(FD, &c, 1);
+ s++;
+ break;
+
+ case '#':
+ c = *s++;
+ write(FD, &c, 1);
+ break;
+
+ default:
+ write(FD, &c, 1);
+ read(FD, &c, 1);
+ }
}
static int
sigALRM()
{
}
static int
sigALRM()
{
- signal(SIGALRM, SIG_IGN);
- printf("\07timeout waiting for reply\n");
+
timeout = 1;
timeout = 1;
+ longjmp(timeoutbuf, 1);
}
static int
}
static int
@@
-124,21
+131,24
@@
detect(s)
register char *s;
{
char c;
register char *s;
{
char c;
+ int (*f)();
-
signal(SIGALRM, biz31_abort
);
+
f = signal(SIGALRM, sigALRM
);
timeout = 0;
timeout = 0;
- while (*s)
- {
+ while (*s) {
+ if (setjmp(timeoutbuf)) {
+ printf("\07timeout waiting for reply\n");
+ biz31_abort();
+ break;
+ }
alarm(number(value(DIALTIMEOUT)));
read(FD, &c, 1);
alarm(0);
alarm(number(value(DIALTIMEOUT)));
read(FD, &c, 1);
alarm(0);
- if (timeout)
- return(0);
if (c != *s++)
if (c != *s++)
-
return(0)
;
+
break
;
}
}
- signal(SIGALRM,
SIG_DFL
);
- return
(1
);
+ signal(SIGALRM,
f
);
+ return
(timeout == 0
);
}
static int
}
static int
@@
-146,20
+156,18
@@
flush(s)
register char *s;
{
char c;
register char *s;
{
char c;
+ int (*f)();
- signal(SIGALRM, sigALRM);
- timeout = 0;
-
while (*s++
)
- {
+
f =
signal(SIGALRM, sigALRM);
+ while (*s++) {
+
if (setjmp(timeoutbuf)
)
+ break;
alarm(10);
read(FD, &c, 1);
alarm(0);
alarm(10);
read(FD, &c, 1);
alarm(0);
- if (timeout)
- break;
}
}
- signal(SIGALRM,
SIG_DFL
);
+ signal(SIGALRM,
f
);
timeout = 0; /* guard against disconnection */
timeout = 0; /* guard against disconnection */
- return(1);
}
/*
}
/*
@@
-192,8
+200,8
@@
retry:
if (chars(b) != 10) {
nono:
if (already > MAXRETRY)
if (chars(b) != 10) {
nono:
if (already > MAXRETRY)
- return(0);
- write(fd, DISCONNECT, 4);
+ return
(0);
+ write(fd, DISCONNECT
_CMD
, 4);
sleep(2);
already++;
goto retry;
sleep(2);
already++;
goto retry;
@@
-203,6
+211,5
@@
retry:
goto nono;
}
}
goto nono;
}
}
- return(1);
+ return
(1);
}
}
-#endif