summary |
tags |
clone url |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
9e97b6c)
SCCS-vsn: usr.bin/tip/acu.c 4.11
SCCS-vsn: usr.bin/tip/cmds.c 4.13
SCCS-vsn: usr.bin/tip/tip.c 4.17
SCCS-vsn: usr.bin/tip/tipout.c 4.9
-static char sccsid[] = "@(#)acu.c 4.10 (Berkeley) %G%";
+static char sccsid[] = "@(#)acu.c 4.11 (Berkeley) %G%";
if (acu != NOACU) {
boolean(value(VERBOSE)) = FALSE;
if (conflag)
if (acu != NOACU) {
boolean(value(VERBOSE)) = FALSE;
if (conflag)
else
(*acu->acu_abort)();
}
else
(*acu->acu_abort)();
}
return (tried ? "call failed" : "missing phone number");
}
return (tried ? "call failed" : "missing phone number");
}
+disconnect(reason)
+ char *reason;
- logent(value(HOST), "", acu->acu_name, "call terminated");
- if (boolean(value(VERBOSE)))
- printf("\r\ndisconnecting...");
+ if (reason != NOSTR) {
+ logent(value(HOST), "", acu->acu_name, "call terminated");
+ if (boolean(value(VERBOSE)))
+ printf("\r\ndisconnecting...");
+ } else
+ logent(value(HOST), "", acu->acu_name, reason);
(*acu->acu_disconnect)();
}
(*acu->acu_disconnect)();
}
-static char sccsid[] = "@(#)cmds.c 4.12 (Berkeley) %G%";
+static char sccsid[] = "@(#)cmds.c 4.13 (Berkeley) %G%";
- if ((dismsg = value(DISCONNECT)) != NOSTR) {
- write(FD,dismsg,strlen(dismsg));
- sleep(5);
- }
+ disconnect(msg);
+ if (msg != NOSTR)
+ printf("\r\n%s", msg);
printf("\r\n[EOT]\r\n");
delock(uucplock);
unraw();
exit(0);
}
printf("\r\n[EOT]\r\n");
delock(uucplock);
unraw();
exit(0);
}
+finish()
+{
+ char *dismsg;
+
+ if ((dismsg = value(DISCONNECT)) != NOSTR) {
+ write(FD, dismsg, strlen(dismsg));
+ sleep(5);
+ }
+ abort(NOSTR);
+}
+
-static char sccsid[] = "@(#)tip.c 4.16 (Berkeley) %G%";
+static char sccsid[] = "@(#)tip.c 4.17 (Berkeley) %G%";
{
register int i;
register char *bp;
{
register int i;
register char *bp;
bp = buf;
for (i = 0; i < n; i++) {
*bp = partab[(*bp) & 0177];
bp++;
}
bp = buf;
for (i = 0; i < n; i++) {
*bp = partab[(*bp) & 0177];
bp++;
}
+ if (write(fd, buf, n) < 0) {
+ if (errno == EIO)
+ abort("Lost carrier.");
+ /* this is questionable */
+ perror("write");
+ }
-static char sccsid[] = "@(#)tipout.c 4.8 (Berkeley) %G%";
+static char sccsid[] = "@(#)tipout.c 4.9 (Berkeley) %G%";
char buf[BUFSIZ];
register char *cp;
register int cnt;
char buf[BUFSIZ];
register char *cp;
register int cnt;
int omask;
signal(SIGINT, SIG_IGN);
int omask;
signal(SIGINT, SIG_IGN);
(void) setjmp(sigbuf);
for (omask = 0;; sigsetmask(omask)) {
cnt = read(FD, buf, BUFSIZ);
(void) setjmp(sigbuf);
for (omask = 0;; sigsetmask(omask)) {
cnt = read(FD, buf, BUFSIZ);
- if (cnt <= 0)
- continue;
+ if (cnt <= 0) {
+ /* lost carrier */
+ if (cnt < 0 && errno == EIO) {
#define mask(s) (1 << ((s) - 1))
#define mask(s) (1 << ((s) - 1))
+ sigblock(mask(SIGTERM));
+ intTERM();
+ /*NOTREACHED*/
+ }
+ continue;
+ }
#define ALLSIGS mask(SIGEMT)|mask(SIGTERM)|mask(SIGIOT)|mask(SIGSYS)
omask = sigblock(ALLSIGS);
for (cp = buf; cp < buf + cnt; cp++)
#define ALLSIGS mask(SIGEMT)|mask(SIGTERM)|mask(SIGIOT)|mask(SIGSYS)
omask = sigblock(ALLSIGS);
for (cp = buf; cp < buf + cnt; cp++)