X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fwhatnow.c;h=cd72e446483564434de42f6951bad5e7e3c3f1bd;hb=d254c5e2ad008f26d5fda43c3f24f0a711c7e851;hp=163a02ecb2106991e086144183741b7934a1d28e;hpb=edfe67020b9039e59e318cfc7831e033bd3e2615;p=mmh diff --git a/uip/whatnow.c b/uip/whatnow.c index 163a02e..cd72e44 100644 --- a/uip/whatnow.c +++ b/uip/whatnow.c @@ -11,6 +11,13 @@ #include #include #include +#include +#include +#include + +#ifdef HAVE_SYS_PARAM_H +# include +#endif static struct swit switches[] = { #define EDITRSW 0 @@ -110,7 +117,7 @@ main(int argc, char **argv) switch (smatch(++cp, switches)) { case AMBIGSW: ambigsw(cp, switches); - done(1); + exit(1); case UNKWNSW: adios(NULL, "-%s unknown", cp); @@ -119,10 +126,10 @@ main(int argc, char **argv) "%s [switches] [file]", invo_name); print_help(buf, switches, 1); - done(1); + exit(0); case VERSIONSW: print_version(invo_name); - done(1); + exit(0); case EDITRSW: if (!(ed = *argp++) || *ed == '-') @@ -161,14 +168,15 @@ main(int argc, char **argv) unlink(drft); } advise(NULL, "Try again."); - done(1); + /* sysexits.h EX_SOFTWARE */ + exit(1); } } snprintf(prompt, sizeof(prompt), myprompt, invo_name); for (;;) { if (!(argp = getans(prompt, aleqs))) { - done(1); + exit(1); } switch (smatch(*argp, aleqs)) { case DISPSW: @@ -199,12 +207,12 @@ main(int argc, char **argv) if (stat(drft, &st) != NOTOK) { advise(NULL, "draft left on %s", drft); } - done(1); + exit(1); case DELETESW: /* Delete draft and exit */ removefile(drft); - done(1); + exit(1); case SENDSW: /* Send draft */ @@ -214,7 +222,7 @@ main(int argc, char **argv) case REFILEOPT: /* Refile the draft */ if (refile(++argp, drft) == 0) { - done(0); + exit(0); } break; @@ -517,9 +525,9 @@ editfile(char **ed, char **arg, char *file, int use) case OK: vecp = 0; vec[vecp++] = mhbasename(*ed); - if (arg) - while (*arg) - vec[vecp++] = *arg++; + while (arg && *arg) { + vec[vecp++] = *arg++; + } vec[vecp++] = file; vec[vecp] = NULL; @@ -590,11 +598,9 @@ sendfile(char **arg, char *file) static int refile(char **arg, char *file) { - pid_t pid; - register int vecp; + int vecp = 0; char *vec[MAXARGS]; - vecp = 0; vec[vecp++] = "refile"; vec[vecp++] = "-nolink"; /* override bad .mh_profile defaults */ vec[vecp++] = "-file"; @@ -605,23 +611,10 @@ refile(char **arg, char *file) } vec[vecp] = NULL; - context_save(); /* save the context file */ + context_save(); fflush(stdout); - switch (pid = fork()) { - case -1: - advise("fork", "unable to"); - return -1; - - case 0: - execvp(*vec, vec); - fprintf(stderr, "%s: unable to exec ", invo_name); - perror(*vec); - _exit(-1); - - default: - return (pidwait(pid, -1)); - } + return execprog(*vec, vec); }