X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fmsh.c;h=43530db3946bcfbc23937d5c395d294a25455732;hb=c16dc1b7987ffd6e7dde224192862691515a09ec;hp=c2d4e1a64b197c2801acf00d5e3e989909d7816b;hpb=c05210483d82bf5f3786725ff80e12444088a701;p=mmh diff --git a/uip/msh.c b/uip/msh.c index c2d4e1a..43530db 100644 --- a/uip/msh.c +++ b/uip/msh.c @@ -22,18 +22,10 @@ #include #include -#ifdef HAVE_TERMIOS_H -# include -#else -# ifdef HAVE_TERMIO_H -# include -# else -# include -# endif -#endif +#include #include -#include +#include #include #include #include @@ -158,11 +150,6 @@ int interrupted; /* SIGINT detected */ int broken_pipe; /* SIGPIPE detected */ int told_to_quit; /* SIGQUIT detected */ -#ifdef BSD42 -int should_intr; /* signal handler should interrupt call */ -jmp_buf sigenv; /* the environment pointer */ -#endif - /* * prototypes */ @@ -203,10 +190,10 @@ static int initaux_io (struct Cmd *); static void fin_io (struct Cmd *, int); static void finaux_io (struct Cmd *); static void m_init (void); -static RETSIGTYPE intrser (int); -static RETSIGTYPE pipeser (int); -static RETSIGTYPE quitser (int); -static RETSIGTYPE alrmser (int); +static void intrser (int); +static void pipeser (int); +static void quitser (int); +static void alrmser (int); static int pINI (void); static int pQRY (char *, int); static int pQRY1 (int); @@ -344,9 +331,6 @@ main (int argc, char **argv) ioctl (pfd, FIOCLEX, NULL); #endif /* FIOCLEX */ -#ifdef BSD42 - should_intr = 0; -#endif /* BSD42 */ istat = SIGNAL2 (SIGINT, intrser); qstat = SIGNAL2 (SIGQUIT, quitser); @@ -821,6 +805,7 @@ m_gMsgs (int n) FILE * msh_ready (int msgnum, int full) { + NMH_UNUSED (full); register int msgp; int fd; char *cp; @@ -1062,11 +1047,9 @@ display_info (int scansw) if (sp == NULL) { if ((sd = dup (fileno (stdout))) == NOTOK) padios ("standard output", "unable to dup"); -#ifndef BSD42 /* XXX */ #ifdef FIOCLEX ioctl (sd, FIOCLEX, NULL); #endif /* FIOCLEX */ -#endif /* not BSD42 */ if ((sp = fdopen (sd, "w")) == NULL) padios ("standard output", "unable to fdopen"); } @@ -1224,33 +1207,11 @@ getargs (char *prompt, struct swit *sw, struct Cmd *cmdp) told_to_quit = 0; for (;;) { interrupted = 0; -#ifdef BSD42 - switch (setjmp (sigenv)) { - case OK: - should_intr = 1; - break; - - default: - should_intr = 0; - if (interrupted && !told_to_quit) { - putchar ('\n'); - continue; - } - if (ppid > 0) -#ifdef SIGEMT - kill (ppid, SIGEMT); -#else - kill (ppid, SIGTERM); -#endif - return EOF; - } -#endif /* BSD42 */ if (interactive) { printf ("%s", prompt); fflush (stdout); } for (cp = buffer; (i = getchar ()) != '\n';) { -#ifndef BSD42 if (interrupted && !told_to_quit) { buffer[0] = '\0'; putchar ('\n'); @@ -1265,10 +1226,6 @@ getargs (char *prompt, struct swit *sw, struct Cmd *cmdp) #endif return EOF; } -#else /* BSD42 */ - if (i == EOF) - longjmp (sigenv, DONE); -#endif /* BSD42 */ if (cp < &buffer[sizeof buffer - 2]) *cp++ = i; } @@ -1296,9 +1253,6 @@ getargs (char *prompt, struct swit *sw, struct Cmd *cmdp) cmdp->args[0]); continue; default: -#ifdef BSD42 - should_intr = 0; -#endif /* BSD42 */ return i; } } @@ -1626,62 +1580,39 @@ seq_setcur (struct msgs *mp, int msgnum) -static RETSIGTYPE +static void intrser (int i) { -#ifndef RELIABLE_SIGNALS - SIGNAL (SIGINT, intrser); -#endif - + NMH_UNUSED (i); discard (stdout); interrupted++; - -#ifdef BSD42 - if (should_intr) - longjmp (sigenv, NOTOK); -#endif } -static RETSIGTYPE +static void pipeser (int i) { -#ifndef RELIABLE_SIGNALS - SIGNAL (SIGPIPE, pipeser); -#endif - + NMH_UNUSED (i); if (broken_pipe++ == 0) fprintf (stderr, "broken pipe\n"); told_to_quit++; interrupted++; - -#ifdef BSD42 - if (should_intr) - longjmp (sigenv, NOTOK); -#endif } -static RETSIGTYPE +static void quitser (int i) { -#ifndef RELIABLE_SIGNALS - SIGNAL (SIGQUIT, quitser); -#endif - + NMH_UNUSED (i); told_to_quit++; interrupted++; - -#ifdef BSD42 - if (should_intr) - longjmp (sigenv, NOTOK); -#endif } -static RETSIGTYPE +static void alrmser (int i) { + NMH_UNUSED (i); longjmp (peerenv, DONE); } @@ -1746,6 +1677,7 @@ pINI (void) static int pQRY (char *str, int scansw) { + NMH_UNUSED (str); if (pQRY1 (scansw) == NOTOK || pQRY2 () == NOTOK) return NOTOK; @@ -1987,7 +1919,7 @@ pFIN (void) { int status; - switch (setjmp (peerenv)) { + switch (m_setjmp (peerenv)) { case OK: SIGNAL (SIGALRM, alrmser); alarm (ALARM);