X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fmhl.c;h=540367356acc7c5d0d80268d0e28e76f4f43441a;hb=11f38fca55972832ee09a3b1ac8693050500545b;hp=fedf78fa9f00a7b9fce00eaf75566dd34f730f98;hpb=921908704b980c90c3c68545be7f4d42718bfba4;p=mmh diff --git a/uip/mhl.c b/uip/mhl.c index fedf78f..5403673 100644 --- a/uip/mhl.c +++ b/uip/mhl.c @@ -175,17 +175,11 @@ static int num_ignores = 0; static char *ignores[MAXARGS]; static jmp_buf env; -static jmp_buf mhlenv; - -static FILE *(*mhl_action) () = (FILE *(*) ()) 0; - /* ** Redefine a couple of functions. ** These are undefined later in the code. */ -#define adios mhladios -#define done mhldone /* ** prototypes @@ -208,8 +202,6 @@ static char *oneline(char *, long); static void putstr(char *); static void putch(char); static void intrser(int); -static void mhladios(char *, char *, ...); -static void mhldone(int); int sc_width(void); /* from termsbr.c */ @@ -239,17 +231,17 @@ main(int argc, char **argv) switch (smatch(++cp, switches)) { case AMBIGSW: ambigsw(cp, switches); - done(1); + exit(1); case UNKWNSW: adios(NULL, "-%s unknown\n", cp); case HELPSW: snprintf(buf, sizeof(buf), "%s [switches] [files ...]", invo_name); print_help(buf, switches, 1); - done(1); + exit(0); case VERSIONSW: print_version(invo_name); - done(1); + exit(0); case FORMSW: if (!(form = *argp++) || *form == '-') @@ -573,11 +565,9 @@ process(char *fname, int ofilen, int ofilec) FILE *fp = NULL; struct mcomp *c1; - switch (setjmp(env)) { - case OK: + if (setjmp(env) == 0) { if (fname) { - fp = mhl_action ? (*mhl_action) (fname) : - fopen(fname, "r"); + fp = fopen(fname, "r"); if (fp == NULL) { advise(fname, "unable to open"); exitstat++; @@ -589,20 +579,18 @@ process(char *fname, int ofilen, int ofilec) } SIGNAL(SIGINT, intrser); mhlfile(fp, fname, ofilen, ofilec); - /* FALL THROUGH! */ - default: - SIGNAL(SIGINT, SIG_IGN); - if (mhl_action == NULL && fp != stdin) - fclose(fp); - if (holder.c_text) { - free(holder.c_text); - holder.c_text = NULL; - } - free_queue(&msghd, &msgtl); - for (c1 = fmthd; c1; c1 = c1->c_next) - c1->c_flags &= ~HDROUTPUT; - break; } + + SIGNAL(SIGINT, SIG_IGN); + if (fp != stdin) + fclose(fp); + if (holder.c_text) { + free(holder.c_text); + holder.c_text = NULL; + } + free_queue(&msghd, &msgtl); + for (c1 = fmthd; c1; c1 = c1->c_next) + c1->c_flags &= ~HDROUTPUT; } @@ -1120,29 +1108,3 @@ intrser(int i) putchar('\n'); longjmp(env, DONE); } - - -#undef adios -#undef done - -static void -mhladios(char *what, char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - advertise(what, NULL, fmt, ap); - va_end(ap); - mhldone(1); -} - - -static void -mhldone(int status) -{ - exitstat = status; - if (mhl_action) - longjmp(mhlenv, DONE); - else - done(exitstat); -}