X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fwhatnow.c;h=29693973946b2e509f4baa29c6603325da6cb178;hb=8ab7ca4f2b4caa1f1ed2859d7d911513a7b2b2a2;hp=ff9d84ce8322e301d565870d3ff80705a180da63;hpb=8bf8e1e29df17658c3d77629e17f88bf9159e21b;p=mmh diff --git a/uip/whatnow.c b/uip/whatnow.c index ff9d84c..2969397 100644 --- a/uip/whatnow.c +++ b/uip/whatnow.c @@ -110,7 +110,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 +119,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 +161,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 +200,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 +215,7 @@ main(int argc, char **argv) case REFILEOPT: /* Refile the draft */ if (refile(++argp, drft) == 0) { - done(0); + exit(0); } break; @@ -302,32 +303,28 @@ main(int argc, char **argv) ** working directory to relative path names. ** Add the attachment annotation to the draft. */ - if ((f = popen_in_dir(cwd, buf, "r"))) { - while (fgets(shell, sizeof(shell), f)) { - *(strchr(shell, '\n')) = '\0'; - - if (*shell == '/') - sprintf(file, "%s", shell); - else { - sprintf(file, "%s/%s", cwd, - shell); - } - if (execprogl("anno", "anno", - "-nodate", - "-append", "-comp", - attach_hdr, "-text", - file, drft, - (char *)NULL) - != 0) { - advise(NULL, "Could not add attachment header."); - } - } - - pclose(f); - } else { + if (!(f = popen_in_dir(cwd, buf, "r"))) { advise("popen", "could not get file from shell"); + break; } + while (fgets(shell, sizeof(shell), f)) { + *(strchr(shell, '\n')) = '\0'; + + if (*shell == '/') + sprintf(file, "%s", shell); + else { + sprintf(file, "%s/%s", cwd, shell); + } + if (execprogl("anno", "anno", + "-nodate", "-append", + "-comp", attach_hdr, + "-text", file, + drft, (char *)NULL) != 0) { + advise(NULL, "Could not add attachment header."); + } + } + pclose(f); break; case DETACHCMDSW: @@ -521,9 +518,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; @@ -569,36 +566,22 @@ editfile(char **ed, char **arg, char *file, int use) static int sendfile(char **arg, char *file) { - pid_t child_id; - int vecp; + int vecp = 0; char *vec[MAXARGS]; - context_save(); /* save the context file */ + context_save(); fflush(stdout); - switch (child_id = fork()) { - case NOTOK: - advise(NULL, "unable to fork, so sending directly..."); - /* fall */ - case OK: - vecp = 0; - vec[vecp++] = "send"; - if (arg) - while (*arg) - vec[vecp++] = *arg++; - vec[vecp++] = file; - vec[vecp] = NULL; - - execvp("send", vec); - fprintf(stderr, "%s: unable to exec ", invo_name); - perror("send"); - _exit(-1); - - default: - if (pidwait(child_id, OK) == 0) - done(0); - return 1; + vec[vecp++] = "send"; + while (arg && *arg) { + vec[vecp++] = *arg++; } + vec[vecp++] = file; + vec[vecp] = NULL; + execvp(*vec, vec); + fprintf(stderr, "%s: unable to exec ", invo_name); + perror("send"); + _exit(-1); } @@ -608,11 +591,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"; @@ -623,23 +604,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); }