#include <h/mts.h>
#include <h/utils.h>
-#ifdef HAVE_TERMIOS_H
-# include <termios.h>
-#else
-# ifdef HAVE_TERMIO_H
-# include <termio.h>
-# else
-# include <sgtty.h>
-# endif
-#endif
+#include <termios.h>
#include <pwd.h>
#include <setjmp.h>
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
*/
-int SOprintf (char *, ...); /* from termsbr.c */
-int sc_width (void); /* from termsbr.c */
void fsetup (char *);
void setup (char *);
-FILE *msh_ready (int, int);
void readids (int);
int readid (int);
void display_info (int);
static int read_file (long, int);
static void m_gMsgs (int);
-FILE *msh_ready (int, int);
static int check_folder (int);
static void scanrange (int, int);
static void scanstring (char *);
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);
ioctl (pfd, FIOCLEX, NULL);
#endif /* FIOCLEX */
-#ifdef BSD42
- should_intr = 0;
-#endif /* BSD42 */
istat = SIGNAL2 (SIGINT, intrser);
qstat = SIGNAL2 (SIGQUIT, quitser);
register int msgp;
int fd;
char *cp;
+ NMH_UNUSED (full);
if (yp) {
fclose (yp);
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");
}
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');
#endif
return EOF;
}
-#else /* BSD42 */
- if (i == EOF)
- longjmp (sigenv, DONE);
-#endif /* BSD42 */
if (cp < &buffer[sizeof buffer - 2])
*cp++ = i;
}
cmdp->args[0]);
continue;
default:
-#ifdef BSD42
- should_intr = 0;
-#endif /* BSD42 */
return i;
}
}
-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);
}
static int
pQRY (char *str, int scansw)
{
+ NMH_UNUSED (str);
if (pQRY1 (scansw) == NOTOK || pQRY2 () == NOTOK)
return NOTOK;