X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fforw.c;h=140136a9abf8651d17786b96e6d76c886f02063a;hb=31dc797eb5178970d68962ca8939da3fd9a8efda;hp=031c191b5d87f2fe8a44b8108ea88f137bb1d757;hpb=43ea5347b6b445d926082d6e3c1ddec376e8692d;p=mmh diff --git a/uip/forw.c b/uip/forw.c index 031c191..140136a 100644 --- a/uip/forw.c +++ b/uip/forw.c @@ -226,11 +226,12 @@ 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); @@ -238,7 +239,7 @@ main(int argc, char **argv) close(in); } else { fmtstr = new_fs(form, forwcomps); - if (write(out, fmtstr, strlen(fmtstr)) != strlen(fmtstr)) { + if (write(out, fmtstr, strlen(fmtstr)) != (int)strlen(fmtstr)) { adios(drft, "error writing"); } } @@ -278,17 +279,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); } @@ -317,7 +326,7 @@ build_form(char *form, char *digest, int volume, int issue) 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;