X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhl.c;h=2c1d907b775f23164135747b2ed8d6ddacca5789;hp=58c7d2b07bd2dd2c342f5af28680fb9cce920b96;hb=0e46503be3c855bddaeae3843e1b659279c35d70;hpb=a4197ea6ffc5c1550e8b52d5a654bcaaaee04a4e diff --git a/uip/mhl.c b/uip/mhl.c index 58c7d2b..2c1d907 100644 --- a/uip/mhl.c +++ b/uip/mhl.c @@ -172,10 +172,6 @@ static int issue = 0; static int exitstat = 0; static int mhldebug = 0; -#define PITTY (-1) -#define NOTTY 0 -static int ontty = NOTTY; - static unsigned int column; static int lm; @@ -230,13 +226,8 @@ static char *oneline(char *, long); static void putstr(char *); static void putch(char); static void intrser(int); -static void pipeser(int); -static void quitser(int); static void mhladios(char *, char *, ...); static void mhldone(int); -static void m_popen(char *); - -void m_pclose(void); int sc_width(void); /* from termsbr.c */ @@ -340,18 +331,6 @@ main(int argc, char **argv) files[vecp++] = cp; } - if (isatty(fileno(stdout))) { - if (mhl_action) { - SIGNAL(SIGINT, SIG_IGN); - SIGNAL2(SIGQUIT, quitser); - } - SIGNAL2(SIGPIPE, pipeser); - m_popen(defaultpager); - ontty = PITTY; - } else { - ontty = NOTTY; - } - mhl_format(form ? form : mhlformat, width); if (vecp == 0) { @@ -386,9 +365,6 @@ main(int argc, char **argv) adios("output", "error writing"); } - if (ontty == PITTY) - m_pclose(); - return exitstat; } @@ -677,13 +653,11 @@ process(char *fname, int ofilen, int ofilec) fname = "(stdin)"; fp = stdin; } - if (ontty != PITTY) - SIGNAL(SIGINT, intrser); + SIGNAL(SIGINT, intrser); mhlfile(fp, fname, ofilen, ofilec); /* FALL THROUGH! */ default: - if (ontty != PITTY) - SIGNAL(SIGINT, SIG_IGN); + SIGNAL(SIGINT, SIG_IGN); if (mhl_action == NULL && fp != stdin) fclose(fp); if (holder.c_text) { @@ -1219,22 +1193,6 @@ intrser(int i) } -static void -pipeser(int i) -{ - done(NOTOK); -} - - -static void -quitser(int i) -{ - putchar('\n'); - fflush(stdout); - done(NOTOK); -} - - #undef adios #undef done @@ -1259,68 +1217,3 @@ mhldone(int status) else done(exitstat); } - - -static int m_pid = NOTOK; -static int sd = NOTOK; - -static void -m_popen(char *name) -{ - int pd[2]; - - if (mhl_action && (sd = dup(fileno(stdout))) == NOTOK) - adios("standard output", "unable to dup()"); - - if (pipe(pd) == NOTOK) - adios("pipe", "unable to"); - - switch (m_pid = fork()) { - case NOTOK: - adios("fork", "unable to"); - - case OK: - SIGNAL(SIGINT, SIG_DFL); - SIGNAL(SIGQUIT, SIG_DFL); - - close(pd[1]); - if (pd[0] != fileno(stdin)) { - dup2(pd[0], fileno(stdin)); - close(pd[0]); - } - execlp(name, mhbasename(name), NULL); - fprintf(stderr, "unable to exec "); - perror(name); - _exit(-1); - - default: - close(pd[0]); - if (pd[1] != fileno(stdout)) { - dup2(pd[1], fileno(stdout)); - close(pd[1]); - } - } -} - - -void -m_pclose(void) -{ - if (m_pid == NOTOK) - return; - - if (sd != NOTOK) { - fflush(stdout); - if (dup2(sd, fileno(stdout)) == NOTOK) - adios("standard output", "unable to dup2()"); - - clearerr(stdout); - close(sd); - sd = NOTOK; - } - else - fclose(stdout); - - pidwait(m_pid, OK); - m_pid = NOTOK; -}