X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fwhatnow.c;h=ff9d84ce8322e301d565870d3ff80705a180da63;hp=63a60f3049c4e63e6337c39d930ea1be2f5893d5;hb=8bf8e1e29df17658c3d77629e17f88bf9159e21b;hpb=f2a6db98791abab22db95b9a4a01516859d92103 diff --git a/uip/whatnow.c b/uip/whatnow.c index 63a60f3..ff9d84c 100644 --- a/uip/whatnow.c +++ b/uip/whatnow.c @@ -4,35 +4,6 @@ ** This code is Copyright (c) 2002, by the authors of nmh. See the ** COPYRIGHT file in the root directory of the nmh distribution for ** complete copyright information. -** -** The inclusion of attachments is eased by -** using the header field name mechanism added to anno and send. -** The header field name for attachments is predefined. -** -** Several commands have been added at the whatnow prompt: -** -** cd [ directory ] This option works just like the shell's -** cd command and lets the user change the -** directory from which attachments are -** taken so that long path names are not -** needed with every file. -** -** ls [ ls-options ] This option works just like the normal -** ls command and exists to allow the user -** to verify file names in the directory. -** -** pwd This option works just like the normal -** pwd command and exists to allow the user -** to verify the directory. -** -** attach files This option attaches the named files to -** the draft. -** -** alist This option lists the attachments on the -** draft. -** -** detach numbers This option removes attachments by -** attachment number from the draft. */ #include @@ -63,25 +34,27 @@ static struct swit aleqs[] = { { "list", 0 }, #define DISPSW 2 { "display", 0 }, -#define SENDSW 3 +#define WHOMSW 3 + { "whom", 0 }, +#define SENDSW 4 { "send", 0 }, -#define REFILEOPT 4 +#define REFILEOPT 5 { "refile +folder", 0 }, -#define DELETESW 5 +#define DELETESW 6 { "delete", 0 }, -#define QUITSW 6 +#define QUITSW 7 { "quit", 0 }, -#define CDCMDSW 7 +#define CDCMDSW 8 { "cd [directory]", 0 }, -#define PWDCMDSW 8 +#define PWDCMDSW 9 { "pwd", 0 }, -#define LSCMDSW 9 +#define LSCMDSW 10 { "ls", 0 }, -#define ALISTCMDSW 10 +#define ALISTCMDSW 11 { "alist", 0 }, -#define ATTACHCMDSW 11 +#define ATTACHCMDSW 12 { "attach files", 0 }, -#define DETACHCMDSW 12 +#define DETACHCMDSW 13 { "detach numbers", 0 }, { NULL, 0 } }; @@ -96,9 +69,9 @@ static int sendfile(char **, char *); static int refile(char **, char *); static int removefile(char *); static void writelscmd(char *, int, char **); -static void writesomecmd(char *buf, int bufsz, char *cmd, char *trailcmd, char **argp); -static FILE* popen_in_dir(const char *dir, const char *cmd, const char *type); -static int system_in_dir(const char *dir, const char *cmd); +static void writesomecmd(char *, int, char *, char *, char **); +static FILE* popen_in_dir(const char *, const char *, const char *); +static int system_in_dir(const char *, const char *); int @@ -201,9 +174,8 @@ main(int argc, char **argv) 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"); } @@ -218,8 +190,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: @@ -296,9 +268,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; @@ -331,8 +303,6 @@ main(int argc, char **argv) ** Add the attachment annotation to the draft. */ if ((f = popen_in_dir(cwd, buf, "r"))) { - char buf[BUFSIZ]; - while (fgets(shell, sizeof(shell), f)) { *(strchr(shell, '\n')) = '\0'; @@ -342,13 +312,13 @@ main(int argc, char **argv) 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) { + if (execprogl("anno", "anno", + "-nodate", + "-append", "-comp", + attach_hdr, "-text", + file, drft, + (char *)NULL) + != 0) { advise(NULL, "Could not add attachment header."); } } @@ -371,22 +341,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) { @@ -399,6 +367,11 @@ main(int argc, char **argv) } break; + case WHOMSW: + /* list recipients */ + execprogl("whom", "whom", drft, (char *)NULL); + break; + default: /* Unknown command */ advise(NULL, "say what?");