X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fforw.c;h=4fbd45f38966fa4be055bfa9879ad01b2e01170c;hp=b9c3c144ceac283f05c8146d7ca4f33ee5e16b7e;hb=ee4f43cf2ef0084ec698e4e87159a94c01940622;hpb=f51956be123db66b00138f80464d06f030dbb88d diff --git a/uip/forw.c b/uip/forw.c index b9c3c14..4fbd45f 100644 --- a/uip/forw.c +++ b/uip/forw.c @@ -35,11 +35,9 @@ static struct swit switches[] = { { "volume number", 0 }, #define WHATSW 8 { "whatnowproc program", 0 }, -#define NWHATSW 9 - { "nowhatnowproc", 0 }, -#define VERSIONSW 10 +#define VERSIONSW 9 { "version", 0 }, -#define HELPSW 11 +#define HELPSW 10 { "help", 0 }, #ifdef MHE @@ -66,14 +64,14 @@ main(int argc, char **argv) { int msgp = 0, anot = 0; int issue = 0, volume = 0; - int nedit = 0, nwhat = 0, in; + int nedit = 0, in; int out, msgnum; char *cp, *cwd, *maildir; char *digest = NULL, *ed = NULL; char *folder = NULL; char *form = NULL, buf[BUFSIZ], value[10]; char **argp, **arguments, *msgs[MAXARGS]; - char *nfs; + char *fmtstr; #ifdef MHE int buildsw = 0; @@ -129,15 +127,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 FORMSW: if (!(form = *argp++) || *form == '-') @@ -226,19 +221,20 @@ main(int argc, char **argv) issue = 0; issue++; } - if (volume == 0) + if (volume == 0) { snprintf(buf, sizeof(buf), VFORMAT, digest); - if ((cp = context_find(buf)) == NULL || - (volume = atoi(cp)) <= 0) - volume = 1; + if ((cp = context_find(buf)) == NULL || + (volume = atoi(cp)) <= 0) + volume = 1; + } if (!form) form = digestcomps; in = build_form(form, digest, volume, issue); cpydata(in, out, form, drft); close(in); } else { - nfs = new_fs(form, forwcomps); - if (write(out, nfs, strlen(nfs)) != strlen(nfs)) { + fmtstr = new_fs(form, forwcomps); + if (write(out, fmtstr, strlen(fmtstr)) != (int)strlen(fmtstr)) { adios(drft, "error writing"); } } @@ -260,7 +256,7 @@ main(int argc, char **argv) seq_save(mp); /* synchronize sequences */ context_save(); /* save the context file */ - if (nwhat) + if (buildsw) done(0); what_now(ed, nedit, NOUSE, drft, NULL, 0, mp, anot ? "Forwarded" : NULL, cwd); @@ -278,17 +274,25 @@ add_forw_hdr(char *draft) int msgnum; char buffer[BUFSIZ]; - snprintf(buffer, sizeof(buffer), "+%s", mp->foldpath); + snprintf(buffer, sizeof buffer, "anno -append -nodate '%s' " + "-comp '%s' -text '+%s", + draft, attach_hdr, mp->foldpath); for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) { if (!is_selected(mp, msgnum)) { continue; } - /* TODO: improve the code */ - strncat(buffer, " ", sizeof(buffer)-strlen(buffer)-1); - strncat(buffer, m_name(msgnum), - sizeof(buffer)-strlen(buffer)-1); + /* TODO: Check for buffer length! */ + strcat(buffer, " "); + strcat(buffer, m_name(msgnum)); + } + strcat(buffer, "'"); + /* TODO: This check is bad, but better than nothing */ + if (strlen(buffer) > BUFSIZ) { + adios(NULL, "Too long attachment header line. Forward less messages."); + } + if (system(buffer) != 0) { + advise(NULL, "unable to add attachment header"); } - annotate(draft, attach_hdr, buffer, 0, -2, 1); } @@ -297,7 +301,7 @@ build_form(char *form, char *digest, int volume, int issue) { int in; int fmtsize; - register char *nfs; + register char *fmtstr; char *line, tmpfil[BUFSIZ]; FILE *tmp; register struct comp *cptr; @@ -306,18 +310,18 @@ build_form(char *form, char *digest, int volume, int issue) char *cp = NULL; /* Get new format string */ - nfs = new_fs(form, NULL); - fmtsize = strlen(nfs) + 256; + fmtstr = new_fs(form, NULL); + fmtsize = strlen(fmtstr) + 256; /* Compile format string */ - fmt_compile(nfs, &fmt); + fmt_compile(fmtstr, &fmt); FINDCOMP(cptr, "digest"); if (cptr) cptr->c_text = digest; FINDCOMP(cptr, "date"); if (cptr) - cptr->c_text = getcpy(dtimenow(0)); + cptr->c_text = getcpy(dtimenow()); dat[0] = issue; dat[1] = volume;