X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Ffolder.c;h=77029dc1334b52e03ca78e7dfc270d980366d50b;hp=cc4005937d135266d08dadc66cc36fc5fc420611;hb=cf1205b5cbea2f0cd6ea710ec16c637df85b647c;hpb=601cc73d1fa05ce96faa728f036d6c51b91701c7 diff --git a/uip/folder.c b/uip/folder.c index cc40059..77029dc 100644 --- a/uip/folder.c +++ b/uip/folder.c @@ -12,40 +12,43 @@ #include #include #include +#include +#include +#include static struct swit switches[] = { #define ALLSW 0 { "all", 0 }, #define NALLSW 1 - { "noall", 0 }, + { "noall", 2 }, #define CREATSW 2 { "create", 0 }, #define NCREATSW 3 - { "nocreate", 0 }, + { "nocreate", 2 }, #define FASTSW 4 { "fast", 0 }, #define NFASTSW 5 - { "nofast", 0 }, + { "nofast", 2 }, #define PACKSW 6 { "pack", 0 }, #define NPACKSW 7 - { "nopack", 0 }, + { "nopack", 2 }, #define VERBSW 8 { "verbose", 0 }, #define NVERBSW 9 - { "noverbose", 0 }, + { "noverbose", 2 }, #define RECURSW 10 { "recurse", 0 }, #define NRECRSW 11 - { "norecurse", 0 }, + { "norecurse", 2 }, #define TOTALSW 12 { "total", 0 }, #define NTOTLSW 13 - { "nototal", 0 }, + { "nototal", 2 }, #define LISTSW 14 { "list", 0 }, #define NLISTSW 15 - { "nolist", 0 }, + { "nolist", 2 }, #define PRNTSW 16 { "print", 0 }, #define NPRNTSW 17 @@ -55,7 +58,7 @@ static struct swit switches[] = { #define POPSW 19 { "pop", 0 }, #define VERSIONSW 20 - { "version", 0 }, + { "Version", 0 }, #define HELPSW 21 { "help", 0 }, { NULL, 0 } @@ -115,9 +118,7 @@ main(int argc, char **argv) char *cp, *dp, *msg = NULL, *argfolder = NULL; char **ap, **argp, buf[BUFSIZ], **arguments; -#ifdef LOCALE setlocale(LC_ALL, ""); -#endif invo_name = mhbasename(argv[0]); /* read user profile/context */ @@ -138,17 +139,17 @@ main(int argc, char **argv) switch (smatch(++cp, switches)) { case AMBIGSW: ambigsw(cp, switches); - done(1); + exit(EX_USAGE); case UNKWNSW: - adios(NULL, "-%s unknown", cp); + adios(EX_USAGE, NULL, "-%s unknown", cp); case HELPSW: snprintf(buf, sizeof(buf), "%s [+folder] [msg] [switches]", invo_name); print_help(buf, switches, 1); - done(1); + exit(argc == 2 ? EX_OK : EX_USAGE); case VERSIONSW: print_version(invo_name); - done(1); + exit(argc == 2 ? EX_OK : EX_USAGE); case ALLSW: all = 1; @@ -228,12 +229,12 @@ main(int argc, char **argv) } if (*cp == '+' || *cp == '@') { if (argfolder) - adios(NULL, "only one folder at a time!"); + adios(EX_USAGE, NULL, "only one folder at a time!"); else argfolder = getcpy(expandfol(cp)); } else { if (msg) - adios(NULL, "only one (current) message at a time!"); + adios(EX_USAGE, NULL, "only one (current) message at a time!"); else msg = cp; } @@ -258,7 +259,7 @@ main(int argc, char **argv) ap = brkstring(dp, " ", "\n"); argfolder = getcpy(*ap++); } else { - adios(NULL, "no other folder"); + adios(EX_USAGE, NULL, "no other folder"); } for (cp = getcpy(getcurfol()); *ap; ap++) cp = add(*ap, add(" ", cp)); @@ -275,13 +276,13 @@ main(int argc, char **argv) /* Popping a folder off of the folder stack */ if (popsw) { if (argfolder) - adios(NULL, "sorry, no folders allowed with -pop"); + adios(EX_USAGE, NULL, "sorry, no folders allowed with -pop"); if ((cp = context_find(stack))) { dp = getcpy(cp); ap = brkstring(dp, " ", "\n"); argfolder = getcpy(*ap++); } else { - adios(NULL, "folder stack empty"); + adios(EX_DATAERR, NULL, "folder stack empty"); } if (*ap) { /* if there's anything left in the stack */ @@ -298,7 +299,7 @@ main(int argc, char **argv) if (pushsw || popsw) { cp = toabsdir(argfolder); if (access(cp, F_OK) == NOTOK) - adios(cp, "unable to find folder"); + adios(EX_DATAERR, cp, "unable to find folder"); /* update current folder */ context_replace(curfolder, argfolder); context_save(); /* save the context file */ @@ -316,8 +317,9 @@ main(int argc, char **argv) } printf("\n"); - if (!printsw) - done(0); + if (!printsw) { + exit(EX_OK); + } } /* Allocate initial space to record folder information */ @@ -336,7 +338,7 @@ main(int argc, char **argv) ** crawl_folders */ if (chdir(nmhdir) == NOTOK) - adios(nmhdir, "unable to change directory to"); + adios(EX_OSERR, nmhdir, "unable to change directory to"); if (!argfolder) { if (msg) admonish(NULL, "no folder given for message %s", msg); @@ -367,7 +369,7 @@ main(int argc, char **argv) ** Check if folder exists. If not, then see if ** we should create it, or just exit. */ - create_folder(toabsdir(folder), fcreat, done); + create_folder(toabsdir(folder), fcreat, exit); if (get_folder_info(folder, msg) && argfolder) { /* update current folder */ @@ -381,8 +383,7 @@ main(int argc, char **argv) print_folders(); context_save(); - done(0); - return 1; + return EX_OK; } static int @@ -424,8 +425,9 @@ get_folder_info_body(char *fold, char *msg, boolean *crawl_children) retval = 0; if (fpack) { - if (folder_pack(&mp, fverb) == -1) - done(1); + if (folder_pack(&mp, fverb) == -1) { + exit(EX_OK); + } seq_save(mp); /* synchronize the sequences */ context_save(); /* save the context file */ }