/*
- * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved. The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
+ * Copyright (c) 1983 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that: (1) source distributions retain this entire copyright
+ * notice and comment, and (2) distributions including binaries display
+ * the following acknowledgement: ``This product includes software
+ * developed by the University of California, Berkeley and its contributors''
+ * in the documentation or other materials provided with the distribution
+ * and in all advertising materials mentioning features or use of this
+ * software. 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
#ifndef lint
char copyright[] =
-"@(#) Copyright (c) 1983 Regents of the University of California.\n\
+"@(#) Copyright (c) 1983 The Regents of the University of California.\n\
All rights reserved.\n";
-#endif not lint
+#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)tip.c 5.7 (Berkeley) %G%";
-#endif not lint
+static char sccsid[] = "@(#)tip.c 5.13 (Berkeley) 6/1/90";
+#endif /* not lint */
/*
* tip - UNIX link to other systems
* cu phone-number [-s speed] [-l line] [-a acu]
*/
#include "tip.h"
+#include "pathnames.h"
/*
* Baud rate mapping table
};
int disc = OTTYDISC; /* tip normally runs this way */
-int intprompt();
-int timeout();
-int cleanup();
+void intprompt();
+void timeout();
+void cleanup();
char *sname();
char PNbuf[256]; /* This limits the size of a number */
system = sbuf;
notnumber:
- signal(SIGINT, cleanup);
- signal(SIGQUIT, cleanup);
- signal(SIGHUP, cleanup);
- signal(SIGTERM, cleanup);
+ (void)signal(SIGINT, cleanup);
+ (void)signal(SIGQUIT, cleanup);
+ (void)signal(SIGHUP, cleanup);
+ (void)signal(SIGTERM, cleanup);
if ((i = hunt(system)) == 0) {
printf("all ports busy\n");
* in the right order, so force it here
*/
if ((PH = getenv("PHONES")) == NOSTR)
- PH = "/etc/phones";
+ PH = _PATH_PHONES;
vinit(); /* init variables */
setparity("even"); /* set the parity table */
if ((i = speed(number(value(BAUDRATE)))) == NULL) {
raw();
pipe(fildes); pipe(repdes);
- signal(SIGALRM, timeout);
+ (void)signal(SIGALRM, timeout);
/*
* Everything's set up now:
/*NOTREACHED*/
}
+void
cleanup()
{
register char *p;
{
register char *b = p;
- int (*oint)(), (*oquit)();
+ sig_t oint, oquit;
stoprompt = 0;
oint = signal(SIGINT, intprompt);
- oint = signal(SIGQUIT, SIG_IGN);
+ oquit = signal(SIGQUIT, SIG_IGN);
unraw();
printf("%s", s);
if (setjmp(promptbuf) == 0)
*p = '\0';
raw();
- signal(SIGINT, oint);
- signal(SIGQUIT, oint);
+ (void)signal(SIGINT, oint);
+ (void)signal(SIGQUIT, oquit);
return (stoprompt || p == b);
}
/*
* Interrupt service routine during prompting
*/
+void
intprompt()
{
- signal(SIGINT, SIG_IGN);
+ (void)signal(SIGINT, SIG_IGN);
stoprompt = 1;
printf("\r\n");
longjmp(promptbuf, 1);
}
static char partab[0200];
+static int bits8;
/*
* Do a write to the remote machine with the correct parity.
extern int errno;
bp = buf;
- for (i = 0; i < n; i++) {
- *bp = partab[(*bp) & 0177];
- bp++;
- }
+ if (bits8 == 0)
+ for (i = 0; i < n; i++) {
+ *bp = partab[(*bp) & 0177];
+ bp++;
+ }
if (write(fd, buf, n) < 0) {
if (errno == EIO)
abort("Lost carrier.");
if (value(PARITY) == NOSTR)
value(PARITY) = defparity;
parity = value(PARITY);
+ if (equal(parity, "none")) {
+ bits8 = 1;
+ return;
+ } else
+ bits8 = 0;
for (i = 0; i < 0200; i++)
partab[i] = evenpartab[i];
if (equal(parity, "even"))
partab[i] ^= 0200; /* reverse bit 7 */
return;
}
- if (equal(parity, "none") || equal(parity, "zero")) {
+ if (equal(parity, "zero")) {
for (i = 0; i < 0200; i++)
partab[i] &= ~0200; /* turn off bit 7 */
return;