2013-09-26 17:14:40 +02:00

312 lines
7.6 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$NetBSD: patch-ae,v 1.2 2012/12/27 06:13:20 dholland Exp $
- use standard headers
- use some static
- initialize struct sigaction correctly
- declare own functions
- don't declare own errno
- restore missing close-comments
- declare void functions void
- use some c89
- don't index arrays with (signed) char
--- te_chario.c.orig 1993-08-05 22:29:33.000000000 +0000
+++ te_chario.c
@@ -28,6 +28,8 @@
#endif
#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
#if defined(USE_SELECT) && defined(_AIX)
#include <sys/select.h>
@@ -41,10 +43,10 @@
#include <fcntl.h>
#ifndef DEBUG
#include <signal.h>
-extern SHRET int_handler();
-extern SHRET stp_handler();
-extern SHRET hup_handler();
-extern SHRET winch_handler();
+static SHRET int_handler();
+static SHRET stp_handler();
+static SHRET hup_handler();
+static SHRET winch_handler();
#define SIGINTMASK 2
#endif
@@ -72,11 +74,11 @@ int bsdld;
/* this is really for linux */
#define SA_INTERRUPT 0
#endif
-struct sigaction intsigstruc = { int_handler, 0, SA_INTERRUPT } ; /* info structure for ^C interrupt */
-struct sigaction stpsigstruc = { stp_handler, 0, SA_INTERRUPT } ; /* info structure for "stop" signal */
-struct sigaction hupsigstruc = { hup_handler, 0, SA_INTERRUPT } ; /* info structure for "hangup" signal */
-struct sigaction nosigstr = { SIG_DFL, 0, 0 }; /* default structure for signal */
-struct sigaction sigwinchstruc = { winch_handler, 0, SA_INTERRUPT} ;
+struct sigaction intsigstruc; /* info structure for ^C interrupt */
+struct sigaction stpsigstruc; /* info structure for "stop" signal */
+struct sigaction hupsigstruc; /* info structure for "hangup" signal */
+struct sigaction nosigstr; /* default structure for signal */
+struct sigaction sigwinchstruc;
#else
struct sigvec intsigstruc = { int_handler, 0, 0 } ; /* info structure for ^C interrupt */
struct sigvec stpsigstruc = { stp_handler, 0, 0 } ; /* info structure for "stop" signal */
@@ -96,12 +98,13 @@ int out_noterm; /* nonzero if standar
char ldbuf[TTNAMEMAX];
#endif
+static void qio_char(char c);
+
#ifndef POSIX_TECO
setup_tty(arg)
int arg;
{
- extern int errno;
int ioerr;
struct sgttyb tmpbuf;
@@ -177,16 +180,15 @@ setup_tty(arg)
}
}
}
-#else /* POSIX_TECO
+#else /* POSIX_TECO */
/*
* set tty (stdin) mode. TECO mode is CBREAK, no ECHO, sep CR & LF
* operation; normal mode is none of the above. TTY_OFF and TTY_ON do this
* absolutely; TTY_SUSP and TTY_RESUME use saved signal status.
*/
-setup_tty(arg)
+VOID setup_tty(arg)
int arg;
{
- extern int errno;
int ioerr;
struct termios tmpbuf;
@@ -227,6 +229,22 @@ int arg;
tcdrain(fileno(stdin));
tcdrain(fileno(stdin)); tcsetattr(fileno(stdin), TCSANOW, &tty_new);
#ifndef DEBUG
+ intsigstruc.sa_sigaction = int_handler;
+ sigemptyset(&intsigstruc.sa_mask);
+ intsigstruc.sa_flags = SA_INTERRUPT;
+
+ stpsigstruc.sa_handler = stp_handler;
+ sigemptyset(&stpsigstruc.sa_mask);
+ stpsigstruc.sa_flags = SA_INTERRUPT;
+
+ hupsigstruc.sa_handler = hup_handler;
+ sigemptyset(&hupsigstruc.sa_mask);
+ hupsigstruc.sa_flags = SA_INTERRUPT;
+
+ sigwinchstruc.sa_handler = winch_handler;
+ sigemptyset(&sigwinchstruc.sa_mask);
+ sigwinchstruc.sa_flags = SA_INTERRUPT;
+
/* Handle signals */
if (sigaction(SIGTSTP, &stpsigstruc, NULL) < 0) {
fprintf(stderr, "could not install signal handler for SIGTSTP\n");
@@ -249,6 +267,10 @@ int arg;
/* Restore to original state */
tcdrain(fileno(stdin)); tcsetattr(fileno(stdin), TCSANOW, &tty_orig);
#ifndef DEBUG
+ nosigstr.sa_handler = SIG_DFL;
+ sigemptyset(&nosigstr.sa_mask);
+ nosigstr.sa_flags = 0;
+
sigaction(SIGTSTP, &nosigstr, 0);
sigaction(SIGINT, &nosigstr, 0);
sigaction(SIGHUP, &nosigstr, 0);
@@ -263,10 +285,10 @@ int arg;
/* if lf_sw is nonzero, return the LF; else use the FNDELAY fcntl to inquire of the input */
/* if input is not a terminal don't switch modes */
-unsigned short get_kbd_enh();
+static unsigned short get_kbd_enh(void);
#ifndef POSIX_TECO
-int gettty_nowait()
+int gettty_nowait(void)
{
int c;
@@ -289,7 +311,7 @@ int gettty_nowait()
* set if lf_sw is nonzero, return the LF; else use the FNDELAY fcntl to
* inquire of the input
*/
-gettty_nowait()
+int gettty_nowait(void)
{
char c;
int err, cnt;
@@ -424,7 +446,7 @@ static unsigned char ca[3] = {0,0,0};
#define c2 ca[1]
#define c3 ca[2]
-int zread(fd,c)
+static int zread(fd,c)
int fd;
char *c;
{
@@ -435,7 +457,7 @@ char *c;
}
#if defined(USE_SELECT)
-int timed_read(fd,c)
+static int timed_read(fd,c)
int fd;
char *c;
{
@@ -459,7 +481,7 @@ char *c;
#endif
#if defined(USE_POLL)
-int timed_read(fd,c)
+static int timed_read(fd,c)
int fd;
char *c;
{
@@ -479,7 +501,7 @@ char *c;
#endif
#if defined(USE_POSIX_C_CC)
-int timed_read(fd,c)
+static int timed_read(fd,c)
int fd;
char *c;
{
@@ -503,7 +525,7 @@ char *c;
}
#endif
-unsigned short get_kbd_enh()
+static unsigned short get_kbd_enh()
{
unsigned short retval;
struct trans_entry *pt;
@@ -555,7 +577,7 @@ unsigned short get_kbd_enh()
#ifndef DEBUG
-SHRET winch_handler()
+static SHRET winch_handler()
{
get_term_par();
window(WIN_INIT);
@@ -566,7 +588,7 @@ SHRET winch_handler()
}
}
-SHRET int_handler()
+static SHRET int_handler()
{
if (exitflag <= 0) /* if executing commands */
@@ -594,7 +616,7 @@ SHRET int_handler()
/* routine to disable (1), enable (0) ^C interrupt, used to block interrupts during display update */
#ifdef POSIX_TECO
-block_inter(func)
+VOID block_inter(func)
int func;
{
sigset_t ss;
@@ -608,7 +630,7 @@ int func;
#else
int old_mask; /* storage for previous signal mask */
#define INT_MASK 2
-block_inter(func)
+VOID block_inter(func)
int func;
{
#ifndef DEBUG
@@ -624,7 +646,7 @@ block_inter(func)
/* routine to handle "stop" signal (^Y) */
#ifdef POSIX_TECO
-SHRET stp_handler()
+static SHRET stp_handler()
{
sigset_t ss;
sigemptyset(&ss);
@@ -652,7 +674,7 @@ SHRET stp_handler()
#else /* BSD style signals */
-SHRET stp_handler()
+static SHRET stp_handler()
{
crlf();
window(WIN_SUSP); /* restore screen */
@@ -682,7 +704,7 @@ SHRET stp_handler()
/* simulate a character's having been typed on the keyboard */
-qio_char(c)
+static void qio_char(c)
char c;
{
#ifdef POSIX_TECO
@@ -694,7 +716,7 @@ qio_char(c)
/* routine to handle "hangup" signal */
#ifndef DEBUG
-SHRET hup_handler()
+static SHRET hup_handler()
{
if (!exitflag) exitflag = -3; /* if executing, set flag to terminate */
else
@@ -709,7 +731,7 @@ SHRET hup_handler()
/* type a crlf */
-crlf()
+void crlf(void)
{
type_char(CR);
type_char(LF);
@@ -721,7 +743,7 @@ crlf()
int lflusho = LFLUSHO;
int lfo;
-reset_ctlo()
+void reset_ctlo(void)
{
ioctl(fileno(stdin), TIOCLGET, &lfo); /* read flags */
if (lfo & LFLUSHO) /* if ^O was set */
@@ -731,18 +753,18 @@ reset_ctlo()
}
}
#else
-reset_ctlo()
+void reset_ctlo(void)
{
}
#endif
/* routine to type one character */
-type_char(c)
+VOID type_char(c)
char c;
{
- if ((char_count >= WN_width) && (c != CR) && !(spec_chars[c] & A_L)) /* spacing char beyond end of line */
+ if ((char_count >= WN_width) && (c != CR) && !(spec_chars[(unsigned char)c] & A_L)) /* spacing char beyond end of line */
{
if (et_val & ET_TRUNC) return; /* truncate output to line width */
else crlf(); /* otherwise do automatic new line (note recursive call to type_char) */
@@ -759,7 +781,7 @@ type_char(c)
case LF:
putchar(c);
-/* scroll_dly(); /* filler chars in case VT-100 scrolls */
+/* scroll_dly(); */ /* filler chars in case VT-100 scrolls */
break;
case ESC: