X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fsend.c;h=c1665b233a974c8d7c9d78625c88d269cacb181f;hp=df8134017dd73e6d76c2d9a521420c651c46f02d;hb=718f854205f71294706def6688efcb1967cdc34c;hpb=a1a744d898ec8842871dca302e6ae54d9233413f diff --git a/uip/send.c b/uip/send.c index df81340..c1665b2 100644 --- a/uip/send.c +++ b/uip/send.c @@ -81,7 +81,7 @@ main(int argc, char **argv) int msgnum, status; int in, out; int n; - char *cp, *maildir = NULL; + char *cp, *maildir = NULL, *folder = NULL; char buf[BUFSIZ], **argp, **arguments; char *msgs[MAXARGS], *vec[MAXARGS]; char *files[MAXARGS]; @@ -125,6 +125,12 @@ main(int argc, char **argv) vec[vecp++] = --cp; continue; } + } else if (*cp == '+' || *cp == '@') { + if (folder) { + adios(EX_USAGE, NULL, "only one folder at a time!"); + } else { + folder = mh_xstrdup(expandfol(cp)); + } } else { if (*cp == '/') { files[nfiles++] = cp; @@ -139,17 +145,18 @@ main(int argc, char **argv) } if (nmsgs) { - maildir = toabsdir(draftfolder); + folder = folder ? folder : draftfolder; + maildir = toabsdir(folder); if (chdir(maildir) == NOTOK) { adios(EX_OSERR, maildir, "unable to change directory to"); } - if (!(mp = folder_read(draftfolder))) { - adios(EX_IOERR, NULL, "unable to read draft folder %s", - draftfolder); + if (!(mp = folder_read(folder))) { + adios(EX_IOERR, NULL, "unable to read folder %s", + folder); } if (mp->nummsg == 0) { - adios(EX_DATAERR, NULL, "no messages in draft folder %s", - draftfolder); + adios(EX_DATAERR, NULL, "no messages in folder %s", + folder); } /* parse all the msgranges/sequences and set SELECTED */ for (msgnum = 0; msgnum < nmsgs; msgnum++) { @@ -162,7 +169,7 @@ main(int argc, char **argv) for (nmsgs = 0, msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) { if (is_selected(mp, msgnum)) { - files[nfiles++] = getcpy(m_name(msgnum)); + files[nfiles++] = mh_xstrdup(m_name(msgnum)); unset_exists(mp, msgnum); } } @@ -196,7 +203,7 @@ main(int argc, char **argv) adios(EX_IOERR, altmsg, "unable to open for reading"); } fstat(in, &st2); - distfile = getcpy(m_mktemp2(NULL, invo_name, NULL, NULL)); + distfile = mh_xstrdup(m_mktemp2(NULL, invo_name, NULL, NULL)); if ((out = creat(distfile, (int)st2.st_mode & 0777))==NOTOK) { adios(EX_IOERR, distfile, "unable to open for writing"); } @@ -348,7 +355,7 @@ attach(char *draft_file_name) } /* We'll grow the buffer as needed. */ - field = (char *)mh_xmalloc(field_size = 256); + field = mh_xcalloc(field_size = 256, sizeof(char)); /* ** Scan the draft file for an attachment header field name. @@ -484,7 +491,7 @@ signandenc(char *draft_file_name) } /* We'll grow the buffer as needed. */ - field = (char *)mh_xmalloc(field_size = 256); + field = mh_xcalloc(field_size = 256, sizeof(char)); /* Scan the draft file for an attachment header field name. */ while (get_line() != EOF && *field != '\0' && *field != '-') { @@ -553,7 +560,7 @@ get_line(void) break; } if (++n >= field_size - 1) { - field = (char *)mh_xrealloc(field, field_size += 256); + field = mh_xrealloc(field, field_size += 256); p = field + n - 1; } }