X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/56a805299de35d8924969138aef4d0f1580daa6d..d6e398f9c:/uip/packf.c?ds=inline diff --git a/uip/packf.c b/uip/packf.c index 0183da65..30f0f484 100644 --- a/uip/packf.c +++ b/uip/packf.c @@ -2,8 +2,6 @@ /* * packf.c -- pack a nmh folder into a file * - * $Id$ - * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for * complete copyright information. @@ -13,27 +11,27 @@ #include #include #include -#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 - { "help", 0 }, - { NULL, 0 } -}; + +#define PACKF_SWITCHES \ + X("file name", 0, FILESW) \ + X("mbox", 0, MBOXSW) \ + X("mmdf", 0, MMDFSW) \ + X("version", 0, VERSIONSW) \ + X("help", 0, HELPSW) \ + +#define X(sw, minchars, id) id, +DEFINE_SWITCH_ENUM(PACKF); +#undef X + +#define X(sw, minchars, id) { sw, minchars, id }, +DEFINE_SWITCH_ARRAY(PACKF, switches); +#undef X static int md = NOTOK; static int mbx_style = MBOX_FORMAT; static int mapping = 0; -static int mbxclose_done(int); +static void mbxclose_done(int) NORETURN; char *file = NULL; @@ -48,15 +46,9 @@ main (int argc, char **argv) struct msgs *mp; struct stat st; - done=mbxclose_done; + if (nmh_init(argv[0], 1)) { return 1; } -#ifdef LOCALE - setlocale(LC_ALL, ""); -#endif - invo_name = r1bindex (argv[0], '/'); - - /* read user profile/context */ - context_read(); + done=mbxclose_done; arguments = getarguments (invo_name, argc, argv, 1); argp = arguments; @@ -77,10 +69,10 @@ main (int argc, char **argv) snprintf (buf, sizeof(buf), "%s [+folder] [msgs] [switches]", invo_name); print_help (buf, switches, 1); - done (1); + done (0); case VERSIONSW: print_version(invo_name); - done (1); + done (0); case FILESW: if (file) @@ -139,7 +131,7 @@ main (int argc, char **argv) adios (maildir, "unable to change directory to "); /* read folder and create message structure */ - if (!(mp = folder_read (folder))) + if (!(mp = folder_read (folder, 1))) adios (NULL, "unable to read folder %s", folder); /* check for empty folder */ @@ -179,13 +171,13 @@ main (int argc, char **argv) seq_save (mp); context_save (); /* save the context file */ folder_free (mp); /* free folder/message structure */ - return done (0); + done (0); + return 1; } -static int +static void mbxclose_done (int status) { mbx_close (file, md); exit (status); - return 1; /* dead code to satisfy the compiler */ }