X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fcomp.c;h=29ca1b77d0dad824ad6cad078031dc66b3281362;hb=7946a8c713bd43a52229345ad0289aaa461acfb3;hp=6882372e6e2e316a49a6e047225068d51860ae7a;hpb=4877596410e850f2295f1015738bd8ca6e86ee0f;p=mmh diff --git a/uip/comp.c b/uip/comp.c index 6882372..29ca1b7 100644 --- a/uip/comp.c +++ b/uip/comp.c @@ -39,6 +39,18 @@ static struct swit switches[] = { { "version", 0 }, #define HELPSW 12 { "help", 0 }, +#define TOSW 13 + { "to address", 0 }, +#define CCSW 14 + { "cc address", 0 }, +#define FROMSW 15 + { "from address", 0 }, +#define FCCSW 16 + { "fcc mailbox", 0 }, +#define WIDTHSW 17 + { "width colums", 0 }, +#define SUBJECTSW 18 + { "subject text", 0 }, { NULL, 0 } }; @@ -67,16 +79,17 @@ static struct swit aqrul[] = { { NULL, 0 } }; - int main (int argc, char **argv) { int use = NOUSE, nedit = 0, nwhat = 0; - int i, in, isdf = 0, out, dat[5], ncomps, format_len; + int i, in = NOTOK, isdf = 0, out, dat[5], format_len = 0; int outputlinelen = OUTPUTLINELEN; char *cp, *cwd, *maildir, *dfolder = NULL; char *ed = NULL, *file = NULL, *form = NULL; char *folder = NULL, *msg = NULL, buf[BUFSIZ]; + char *to = NULL, *from = NULL, *cc = NULL, *fcc = NULL, *dp; + char *subject = NULL; char drft[BUFSIZ], **argp, **arguments; struct msgs *mp = NULL; struct format *fmt; @@ -106,10 +119,10 @@ main (int argc, char **argv) snprintf (buf, sizeof(buf), "%s [+folder] [msg] [switches]", invo_name); print_help (buf, switches, 1); - done (1); + done (0); case VERSIONSW: print_version(invo_name); - done (1); + done (0); case EDITRSW: if (!(ed = *argp++) || *ed == '-') @@ -167,6 +180,48 @@ main (int argc, char **argv) dfolder = NULL; isdf = NOTOK; continue; + + case TOSW: + if (!(cp = *argp++) || *cp == '-') + adios (NULL, "missing argument to %s", argp[-2]); + to = addlist(to, cp); + continue; + + case CCSW: + if (!(cp = *argp++) || *cp == '-') + adios (NULL, "missing argument to %s", argp[-2]); + cc = addlist(cc, cp); + continue; + + case FROMSW: + if (!(cp = *argp++) || *cp == '-') + adios (NULL, "missing argument to %s", argp[-2]); + from = addlist(from, cp); + continue; + + case FCCSW: + if (!(cp = *argp++) || *cp == '-') + adios (NULL, "missing argument to %s", argp[-2]); + dp = NULL; + if (*cp == '@') + cp = dp = path(cp + 1, TSUBCWF); + fcc = addlist(fcc, cp); + if (dp) + free(dp); + continue; + + case WIDTHSW: + if (!(cp = *argp++) || *cp == '-') + adios (NULL, "missing argument to %s", argp[-2]); + if ((outputlinelen = atoi(cp)) < 10) + adios (NULL, "impossible width %d", outputlinelen); + continue; + + case SUBJECTSW: + if (!(cp = *argp++) || *cp == '-') + adios (NULL, "missing argument to %s", argp[-2]); + subject = cp; + continue; } } if (*cp == '+' || *cp == '@') { @@ -232,14 +287,43 @@ main (int argc, char **argv) if ((in = open (form = getcpy (m_name (mp->lowsel)), O_RDONLY)) == NOTOK) adios (form, "unable to open message"); } else { + struct comp *cptr; + if (! form) form = components; cp = new_fs(form, NULL, NULL); format_len = strlen(cp); - ncomps = fmt_compile(cp, &fmt); - if (ncomps > 0) { - adios(NULL, "format components not supported when using comp"); + fmt_compile(cp, &fmt); + + /* + * Set up any components that were fed to us on the command line + */ + + if (from) { + FINDCOMP(cptr, "from"); + if (cptr) + cptr->c_text = from; + } + if (to) { + FINDCOMP(cptr, "to"); + if (cptr) + cptr->c_text = to; + } + if (cc) { + FINDCOMP(cptr, "cc"); + if (cptr) + cptr->c_text = cc; + } + if (fcc) { + FINDCOMP(cptr, "fcc"); + if (cptr) + cptr->c_text = fcc; + } + if (subject) { + FINDCOMP(cptr, "subject"); + if (cptr) + cptr->c_text = subject; } } @@ -322,7 +406,7 @@ edit_it: if (nwhat) done (0); - what_now (ed, nedit, use, drft, NULL, 0, NULLMP, NULL, 0, cwd); + what_now (ed, nedit, use, drft, NULL, 0, NULLMP, NULL, 0, cwd, 0); done (1); return 1; }