X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fwhatnow.c;h=fbc85822a08e83611ec63f4d3ac61f54f1e3da05;hp=c60a11c6be67337baf5ffe8d37f7a5b64a69f97a;hb=fede6e42d81ce34fd5c1bbe7fb2757b281c2573a;hpb=5c86fbdc071e1c322ccf341855eaa813807776b4 diff --git a/uip/whatnow.c b/uip/whatnow.c index c60a11c..fbc8582 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,22 +161,22 @@ 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: /* display the msg being replied to or distributed */ if ((cp = getenv("mhaltmsg")) && *cp) { - snprintf(buf, sizeof buf, "%s '%s'", - listproc, cp); - system(buf); + execprogl(listproc, listproc, "-file", cp, + (char *)NULL); } else { advise(NULL, "no alternate message to display"); } @@ -191,8 +191,8 @@ main(int argc, char **argv) case LISTSW: /* display the draft file */ - snprintf(buf, sizeof buf, "%s '%s'", listproc, drft); - system(buf); + execprogl(listproc, listproc, "-file", drft, + (char *)NULL); break; case QUITSW: @@ -200,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 */ @@ -215,7 +215,7 @@ main(int argc, char **argv) case REFILEOPT: /* Refile the draft */ if (refile(++argp, drft) == 0) { - done(0); + exit(0); } break; @@ -269,9 +269,9 @@ main(int argc, char **argv) /* ** List attachments on current draft. */ - snprintf(buf, sizeof buf, "anno -list -comp '%s' " - "-number '%s'", attach_hdr, drft); - if (system(buf) != 0) { + if (execprogl("anno", "anno", "-list", "-comp", + attach_hdr, "-number", drft, + (char *)NULL) != 0) { advise(NULL, "Could not list attachment headers."); } break; @@ -303,34 +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"))) { - char buf[BUFSIZ]; + 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'; + while (fgets(shell, sizeof(shell), f)) { + *(strchr(shell, '\n')) = '\0'; - if (*shell == '/') - sprintf(file, "%s", shell); - else { - sprintf(file, "%s/%s", cwd, - shell); - } - snprintf(buf, sizeof buf, - "anno -nodate -append " - "-comp '%s' -text '%s'" - " '%s'", - attach_hdr, file, - drft); - if (system(buf) != 0) { - advise(NULL, "Could not add attachment header."); - } + 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 { - advise("popen", "could not get file from shell"); } - + pclose(f); break; case DETACHCMDSW: @@ -344,22 +338,20 @@ main(int argc, char **argv) ** that the numbering stays correct. */ for (arguments=argp+1; *arguments; arguments++) { - char buf[BUFSIZ]; int n; if (**arguments == '\0') { continue; } - n = atoi(*arguments); - snprintf(buf, sizeof buf, "anno -delete " - "-comp '%s' -number '%d' " - "'%s'", - attach_hdr, n, drft); - if (system(buf) != 0) { + if (execprogl("anno", "anno", "-delete", + "-comp", attach_hdr, + "-number", *arguments, drft, + (char *)NULL) != 0) { advise(NULL, "Could not delete attachment header."); } + n = atoi(*arguments); for (argp=arguments+1; *argp; argp++) { if (atoi(*argp) > n) { if (atoi(*argp) == 1) { @@ -374,8 +366,7 @@ main(int argc, char **argv) case WHOMSW: /* list recipients */ - snprintf(buf, sizeof buf, "%s '%s'", "whom", drft); - system(buf); + execprogl("whom", "whom", drft, (char *)NULL); break; default: @@ -602,7 +593,7 @@ sendfile(char **arg, char *file) default: if (pidwait(child_id, OK) == 0) - done(0); + exit(0); return 1; } }