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 83/02/24 12:55:54 by mckusick
[unix-history]
/
usr
/
src
/
usr.bin
/
tip
/
aculib
/
dn11.c
diff --git
a/usr/src/usr.bin/tip/aculib/dn11.c
b/usr/src/usr.bin/tip/aculib/dn11.c
index
7562e3b
..
8f7dcc7
100644
(file)
--- a/
usr/src/usr.bin/tip/aculib/dn11.c
+++ b/
usr/src/usr.bin/tip/aculib/dn11.c
@@
-1,4
+1,4
@@
-/* dn11.c 4.
3 81/06/16
*/
+/* dn11.c 4.
11 81/11/29
*/
#if DN11
/*
#if DN11
/*
@@
-13,44
+13,48
@@
int dn_abort();
int alarmtr();
static jmp_buf jmpbuf;
int alarmtr();
static jmp_buf jmpbuf;
+static int child = -1, dn;
dn_dialer(num, acu)
dn_dialer(num, acu)
-char *num, *acu;
+
char *num, *acu;
{
extern errno;
char *p, *q, phone[40];
{
extern errno;
char *p, *q, phone[40];
- int
child = -1, dn,
lt, nw, connected = 1;
+ int lt, nw, connected = 1;
register int timelim;
register int timelim;
+ if (boolean(value(VERBOSE)))
+ printf("\nstarting call...");
if ((dn = open(acu, 1)) < 0) {
if ((dn = open(acu, 1)) < 0) {
- if (errno == E
NXIO
)
- printf("line busy
\n
");
+ if (errno == E
BUSY
)
+ printf("line busy
...
");
else
else
- printf("acu open error
\n
");
- return(0);
+ printf("acu open error
...
");
+ return
(0);
}
if (setjmp(jmpbuf)) {
}
if (setjmp(jmpbuf)) {
- printf("dn11 write error...");
kill(child, SIGKILL);
close(dn);
kill(child, SIGKILL);
close(dn);
- return(0);
+ return
(0);
}
signal(SIGALRM, alarmtr);
timelim = 5 * strlen(num);
alarm(timelim < 30 ? 30 : timelim);
if ((child = fork()) == 0) {
}
signal(SIGALRM, alarmtr);
timelim = 5 * strlen(num);
alarm(timelim < 30 ? 30 : timelim);
if ((child = fork()) == 0) {
+ /*
+ * ignore this stuff for aborts
+ */
signal(SIGALRM, SIG_IGN);
signal(SIGALRM, SIG_IGN);
+ signal(SIGINT, SIG_IGN);
+ signal(SIGQUIT, SIG_IGN);
sleep(2);
nw = write(dn, num, lt = strlen(num));
sleep(2);
nw = write(dn, num, lt = strlen(num));
- if (nw != lt) {
- printf("dn11 write failed...");
- exit(1);
- }
- exit(0);
+ exit(nw != lt);
}
}
- /* open line - will return on carrier */
- FD = open(DV, 2);
- if (FD < 0) {
+ /*
+ * open line - will return on carrier
+ */
+ if ((FD = open(DV, 2)) < 0) {
if (errno == EIO)
printf("lost carrier...");
else
if (errno == EIO)
printf("lost carrier...");
else
@@
-58,27
+62,25
@@
char *num, *acu;
alarm(0);
kill(child, SIGKILL);
close(dn);
alarm(0);
kill(child, SIGKILL);
close(dn);
- return(0);
+ return
(0);
}
}
+ alarm(0);
ioctl(dn, TIOCHPCL, 0);
signal(SIGALRM, SIG_DFL);
while ((nw = wait(<)) != child && nw != -1)
;
ioctl(dn, TIOCHPCL, 0);
signal(SIGALRM, SIG_DFL);
while ((nw = wait(<)) != child && nw != -1)
;
- alarm(0);
fflush(stdout);
fflush(stdout);
+ close(dn);
if (lt != 0) {
close(FD);
if (lt != 0) {
close(FD);
- close(dn);
- return(0);
+ return (0);
}
}
- return(1);
+ return
(1);
}
alarmtr()
{
alarm(0);
}
alarmtr()
{
alarm(0);
- signal(SIGINT, SIG_IGN);
- signal(SIGQUIT, SIG_IGN);
longjmp(jmpbuf, 1);
}
longjmp(jmpbuf, 1);
}
@@
-88,6
+90,7
@@
alarmtr()
*/
dn_disconnect()
{
*/
dn_disconnect()
{
+ sleep(2);
#ifdef VMUNIX
if (FD > 0)
ioctl(FD, TIOCCDTR, 0);
#ifdef VMUNIX
if (FD > 0)
ioctl(FD, TIOCCDTR, 0);
@@
-97,6
+100,11
@@
dn_disconnect()
dn_abort()
{
dn_abort()
{
+ sleep(2);
+ if (child > 0)
+ kill(child, SIGKILL);
+ if (dn > 0)
+ close(dn);
#ifdef VMUNIX
if (FD > 0)
ioctl(FD, TIOCCDTR, 0);
#ifdef VMUNIX
if (FD > 0)
ioctl(FD, TIOCCDTR, 0);