X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fpackf.c;h=b565c164e25cd6d32646d2582d794674972bb03d;hp=b48a92d6bc454b237f40f5d366d463322260ce7b;hb=32b2354dbaf4bf934936eb5b102a4a3d2fdd209a;hpb=d39e2c447b0d163a5a63f480b23d06edb7a73aa0 diff --git a/uip/packf.c b/uip/packf.c index b48a92d..b565c16 100644 --- a/uip/packf.c +++ b/uip/packf.c @@ -13,27 +13,13 @@ #include static struct swit switches[] = { -#define FILESW 0 - { "file name", 0 }, -#define MBOXSW 1 - { "mbox", 0 }, -#define MMDFSW 2 - { "mmdf", 0 }, -#define VERSIONSW 3 - { "version", 0 }, -#define HELPSW 4 +#define VERSIONSW 0 + { "Version", 0 }, +#define HELPSW 1 { "help", 0 }, { NULL, 0 } }; -static int md = NOTOK; -static int mbx_style = MBOX_FORMAT; -static int mapping = 0; - -static void mbxclose_done(int) NORETURN; - -char *file = NULL; - int main(int argc, char **argv) @@ -43,9 +29,6 @@ main(int argc, char **argv) char **argp, **arguments; struct msgs_array msgs = { 0, 0, NULL }; struct msgs *mp; - struct stat st; - - done=mbxclose_done; #ifdef LOCALE setlocale(LC_ALL, ""); @@ -64,35 +47,19 @@ main(int argc, char **argv) while ((cp = *argp++)) { if (*cp == '-') { switch (smatch(++cp, switches)) { - case AMBIGSW: - ambigsw(cp, switches); - done(1); - case UNKWNSW: - adios(NULL, "-%s unknown", cp); - - case HELPSW: - snprintf(buf, sizeof(buf), "%s [+folder] [msgs] [switches]", invo_name); - print_help(buf, switches, 1); - done(1); - case VERSIONSW: - print_version(invo_name); - done(1); - - case FILESW: - if (file) - adios(NULL, "only one file at a time!"); - if (!(file = *argp++) || *file == '-') - adios(NULL, "missing argument to %s", argp[-2]); - continue; - - case MBOXSW: - mbx_style = MBOX_FORMAT; - mapping = 0; - continue; - case MMDFSW: - mbx_style = MMDF_FORMAT; - mapping = 1; - continue; + case AMBIGSW: + ambigsw(cp, switches); + done(1); + case UNKWNSW: + adios(NULL, "-%s unknown", cp); + + case HELPSW: + snprintf(buf, sizeof(buf), "%s [+folder] [msgs] [switches]", invo_name); + print_help(buf, switches, 1); + done(1); + case VERSIONSW: + print_version(invo_name); + done(1); } } if (*cp == '+' || *cp == '@') { @@ -103,26 +70,9 @@ main(int argc, char **argv) app_msgarg(&msgs, cp); } - if (!file) - file = "./msgbox"; - file = getcpy(expanddir(file)); - - /* - ** Check if file to be created (or appended to) - ** exists. If not, ask for confirmation. - */ - if (stat (file, &st) == NOTOK) { - if (errno != ENOENT) - adios(file, "error on file"); - cp = concat("Create file \"", file, "\"? ", NULL); - if (!getanswer(cp)) - done(1); - free(cp); - } - /* default is to pack whole folder */ if (!msgs.size) - app_msgarg(&msgs, "all"); + app_msgarg(&msgs, seq_all); if (!folder) folder = getcurfol(); @@ -145,43 +95,26 @@ main(int argc, char **argv) done(1); seq_setprev(mp); /* set the previous-sequence */ - /* open and lock new maildrop file */ - if ((md = mbx_open(file, mbx_style, getuid(), getgid(), m_gmprot())) - == NOTOK) - adios(file, "unable to open"); - - /* copy all the SELECTED messages to the file */ - for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) + /* copy all the SELECTED messages to stdout */ + for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) { if (is_selected(mp, msgnum)) { if ((fd = open(msgnam = m_name(msgnum), O_RDONLY)) == NOTOK) { admonish(msgnam, "unable to read message"); break; } - - if (mbx_copy(file, mbx_style, md, fd, mapping, NULL, 1) - == NOTOK) - adios(file, "error writing to file"); - + if (mbox_copy(fileno(stdout), fd) == NOTOK) { + adios(NULL, "error writing to stdout"); + } close(fd); } - - /* close and unlock maildrop file */ - mbx_close(file, md); - - context_replace(pfolder, folder); /* update current folder */ + } + context_replace(curfolder, folder); if (mp->hghsel != mp->curmsg) seq_setcur(mp, mp->lowsel); seq_save(mp); - context_save(); /* save the context file */ - folder_free(mp); /* free folder/message structure */ + context_save(); + folder_free(mp); done(0); return 1; } - -static void -mbxclose_done(int status) -{ - mbx_close(file, md); - exit(status); -}