X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Frepl.c;h=4523365e78d069d1267869d31d8d55a418bbefd8;hb=01a3480928da485b4d6109d36d751dfa71799d58;hp=a36b2c74234bfef0f2c54e1580219d55dd664474;hpb=81744a46ac9f845d6c2b9908074d269275178d2e;p=mmh diff --git a/uip/repl.c b/uip/repl.c index a36b2c7..4523365 100644 --- a/uip/repl.c +++ b/uip/repl.c @@ -29,40 +29,32 @@ static struct swit switches[] = { { "nocc type", 0 }, #define EDITRSW 6 { "editor editor", 0 }, -#define NEDITSW 7 - { "noedit", 0 }, -#define FILTSW 8 +#define FILTSW 7 { "filter filterfile", 0 }, +#define NFILTSW 8 + { "nofilter", 0 }, #define FORMSW 9 { "form formfile", 0 }, -#define FRMTSW 10 - { "format", 5 }, -#define NFRMTSW 11 - { "noformat", 7 }, -#define MIMESW 12 +#define MIMESW 10 { "mime", 0 }, -#define NMIMESW 13 +#define NMIMESW 11 { "nomime", 0 }, -#define QURYSW 14 +#define QURYSW 12 { "query", 0 }, -#define NQURYSW 15 +#define NQURYSW 13 { "noquery", 0 }, -#define WHATSW 16 +#define WHATSW 14 { "whatnowproc program", 0 }, -#define NWHATSW 17 - { "nowhatnowproc", 0 }, -#define VERSIONSW 18 +#define VERSIONSW 15 { "version", 0 }, -#define HELPSW 19 +#define HELPSW 16 { "help", 0 }, -#define FILESW 20 +#define FILESW 17 { "file file", 4 }, /* interface from msh */ - #ifdef MHE -#define BILDSW 21 +# define BILDSW 18 { "build", 5 }, /* interface from mhe */ #endif - { NULL, 0 } }; @@ -103,7 +95,7 @@ static int dftype=0; static char *badaddrs = NULL; static char *dfhost = NULL; -static struct mailname mq = { NULL }; +static struct mailname mq; static struct format *fmt; @@ -135,7 +127,7 @@ static char *addrcomps[] = { static void docc(char *, int); static int insert(struct mailname *); static void replfilter(FILE *, FILE *, char *); -static void replout(FILE *, char *, char *, struct msgs *, int, +static void replout(FILE *, char *, struct msgs *, int, char *, char *); @@ -143,7 +135,6 @@ int main(int argc, char **argv) { int anot = 0; - int nedit = 0, nwhat = 0; char *cp, *cwd, *maildir, *file = NULL; char *folder = NULL, *msg = NULL; char *ed = NULL, drft[BUFSIZ], buf[BUFSIZ]; @@ -155,6 +146,8 @@ main(int argc, char **argv) int buildsw = 0; #endif /* MHE */ + filter = getcpy(etcpath(mhlreply)); + #ifdef LOCALE setlocale(LC_ALL, ""); #endif @@ -214,10 +207,6 @@ main(int argc, char **argv) if (!(ed = *argp++) || *ed == '-') adios(NULL, "missing argument to %s", argp[-2]); - nedit = 0; - continue; - case NEDITSW: - nedit++; continue; case WHATSW: @@ -225,15 +214,12 @@ main(int argc, char **argv) *whatnowproc == '-') adios(NULL, "missing argument to %s", argp[-2]); - nwhat = 0; continue; #ifdef MHE case BILDSW: buildsw++; /* fall... */ -#endif /* MHE */ - case NWHATSW: - nwhat++; continue; +#endif /* MHE */ case FILESW: if (file) @@ -243,30 +229,24 @@ main(int argc, char **argv) argp[-2]); file = getcpy(expanddir(cp)); continue; - case FILTSW: - if (!(cp = *argp++) || *cp == '-') - adios(NULL, "missing argument to %s", - argp[-2]); - filter = getcpy(etcpath(cp)); - mime = 0; - continue; case FORMSW: if (!(form = *argp++) || *form == '-') adios(NULL, "missing argument to %s", argp[-2]); continue; - case FRMTSW: - filter = getcpy(etcpath(mhlreply)); - mime = 0; + case FILTSW: + if (!(cp = *argp++) || *cp == '-') + adios(NULL, "missing argument to %s", + argp[-2]); + filter = getcpy(etcpath(cp)); continue; - case NFRMTSW: + case NFILTSW: filter = NULL; continue; case MIMESW: mime++; - filter = NULL; continue; case NMIMESW: mime = 0; @@ -366,13 +346,12 @@ main(int argc, char **argv) form = etcpath(replcomps); } - replout(in, msg, drft, mp, mime, form, filter); + replout(in, drft, mp, mime, form, filter); fclose(in); - if (nwhat) + if (buildsw) done(0); - what_now(ed, nedit, NOUSE, drft, msg, 0, mp, anot ? "Replied" : NULL, - cwd); + what_now(ed, NOUSE, drft, msg, 0, mp, anot ? "Replied" : NULL, cwd); done(1); return 1; } @@ -409,7 +388,7 @@ docc(char *cp, int ccflag) static void -replout(FILE *inb, char *msg, char *drft, struct msgs *mp, +replout(FILE *inb, char *drft, struct msgs *mp, int mime, char *form, char *filter) { register int state, i; @@ -430,7 +409,7 @@ replout(FILE *inb, char *msg, char *drft, struct msgs *mp, umask(mask); /* get new format string */ - cp = new_fs(form, NULL, NULL); + cp = new_fs(form, NULL); format_len = strlen(cp); /* compile format string */ @@ -596,13 +575,17 @@ finished: adios(drft, "error writing"); fclose(out); - /* if we want mime, then add an attachment header */ - if (!filter && mime && mp) { + if (mime && mp) { + /* add an attachment header */ char buffer[BUFSIZ]; - snprintf(buffer, sizeof buffer, "+%s %s", - mp->foldpath, m_name(mp->lowsel)); - annotate(drft, attach_hdr, buffer, 0, -2, 1); + snprintf(buffer, sizeof buffer, "anno -append -nodate '%s' " + "-comp '%s' -text '+%s %s'", + drft, + attach_hdr, mp->foldpath, m_name(mp->lowsel)); + if (system(buffer) != 0) { + advise(NULL, "unable to add attachment header"); + } } /* return dynamically allocated buffers */ @@ -747,30 +730,22 @@ insert(struct mailname *np) snprintf(buffer, sizeof(buffer), "Reply to %s? ", adrformat(np)); if (!gans(buffer, anoyes)) - return 0; + return 0; } mp->m_next = np; - -#ifdef ISI - if (ismymbox(np)) - ccme = 0; -#endif - return 1; } /* -** Call the mhlproc +** Call mhl ** ** This function expects that argument out has been fflushed by the caller. */ - static void replfilter(FILE *in, FILE *out, char *filter) { - int pid; - char *mhl; + int pid, n; char *errstr; if (filter == NULL) @@ -779,8 +754,6 @@ replfilter(FILE *in, FILE *out, char *filter) if (access(filter, R_OK) == NOTOK) adios(filter, "unable to read"); - mhl = mhbasename(mhlproc); - rewind(in); lseek(fileno(in), (off_t) 0, SEEK_SET); @@ -791,19 +764,19 @@ replfilter(FILE *in, FILE *out, char *filter) case OK: dup2(fileno(in), fileno(stdin)); dup2(fileno(out), fileno(stdout)); - closefds(3); + for (n=3; n