X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;ds=sidebyside;f=uip%2Fpick.c;h=6c59add7630f4d85d4483f03dfc26a201a9b2b9a;hb=5a12e4b0477d3ad699f5713682d26079f2792d17;hp=73babadf4e530e960491dc8af757a0dbf6566172;hpb=27826f9353e0f0b04590b7d0f8f83e60462b90f0;p=mmh diff --git a/uip/pick.c b/uip/pick.c index 73babad..6c59add 100644 --- a/uip/pick.c +++ b/uip/pick.c @@ -10,16 +10,10 @@ #include #include -#ifdef TIME_WITH_SYS_TIME +#ifdef HAVE_SYS_TIME_H # include -# include -#else -# ifdef TM_IN_SYS_TIME -# include -# else -# include -# endif #endif +#include static struct swit switches[] = { #define ANDSW 0 @@ -51,23 +45,23 @@ static struct swit switches[] = { #define BEFRSW 13 { "before date", 0 }, #define DATFDSW 14 - { "datefield field", 5 }, + { "datefield field", 5 }, /* 5 chars required to differ from -date */ #define SEQSW 15 { "sequence name", 0 }, #define PUBLSW 16 { "public", 0 }, #define NPUBLSW 17 - { "nopublic", 0 }, + { "nopublic", 2 }, #define ZEROSW 18 { "zero", 0 }, #define NZEROSW 19 - { "nozero", 0 }, + { "nozero", 2 }, #define LISTSW 20 { "list", 0 }, #define NLISTSW 21 - { "nolist", 0 }, + { "nolist", 2 }, #define VERSIONSW 22 - { "version", 0 }, + { "Version", 0 }, #define HELPSW 23 { "help", 0 }, { NULL, 0 } @@ -82,12 +76,13 @@ static int pmatches(FILE *, int, long, long); static int listsw = -1; -static void putzero_done(int) NORETURN; +static void putzero_done(); int main(int argc, char **argv) { - int publicsw = -1, zerosw = 1, seqp = 0, vecp = 0; + int publicsw = -1, zerosw = 1, vecp = 0; + unsigned int seqp = 0; int lo, hi, msgnum; char *maildir, *folder = NULL, buf[100]; char *cp, **argp, **arguments; @@ -96,11 +91,9 @@ main(int argc, char **argv) struct msgs *mp; register FILE *fp; - done=putzero_done; + atexit(putzero_done); -#ifdef LOCALE setlocale(LC_ALL, ""); -#endif invo_name = mhbasename(argv[0]); /* read user profile/context */ @@ -119,7 +112,7 @@ main(int argc, char **argv) case AMBIGSW: ambigsw(cp, switches); listsw = 0; /* HACK */ - done(1); + exit(1); case UNKWNSW: adios(NULL, "-%s unknown", cp); @@ -127,11 +120,11 @@ main(int argc, char **argv) snprintf(buf, sizeof(buf), "%s [+folder] [msgs] [switches]", invo_name); print_help(buf, switches, 1); listsw = 0; /* HACK */ - done(1); + exit(0); case VERSIONSW: print_version(invo_name); listsw = 0; /* HACK */ - done(1); + exit(0); case CCSW: case DATESW: @@ -170,7 +163,7 @@ main(int argc, char **argv) adios(NULL, "too many sequences (more than %d) specified", NUMATTRS); if (!seq_nameok(cp)) - done(1); + exit(1); seqs[seqp++] = cp; continue; @@ -230,7 +223,7 @@ main(int argc, char **argv) /* parse all the message ranges/sequences and set SELECTED */ for (msgnum = 0; msgnum < msgs.size; msgnum++) if (!m_convert(mp, msgs.msgs[msgnum])) - done(1); + exit(1); seq_setprev(mp); /* set the previous-sequence */ /* @@ -245,7 +238,7 @@ main(int argc, char **argv) folder); if (!pcompile(vec, NULL)) - done(1); + exit(1); lo = mp->lowsel; hi = mp->hghsel; @@ -296,7 +289,7 @@ main(int argc, char **argv) */ for (seqp = 0; seqs[seqp]; seqp++) if (!seq_addsel(mp, seqs[seqp], publicsw, zerosw)) - done(1); + exit(1); /* ** Print total matched if not printing each matched message number. @@ -309,17 +302,16 @@ main(int argc, char **argv) seq_save(mp); /* synchronize message sequences */ context_save(); /* save the context file */ folder_free(mp); /* free folder/message structure */ - done(0); - return 1; + listsw = 0; /* HACK */ + return 0; } static void -putzero_done(int status) +putzero_done() { - if (listsw && status && !isatty(fileno(stdout))) + if (listsw && !isatty(fileno(stdout))) printf("0\n"); - exit(status); } @@ -481,23 +473,23 @@ static struct nexus *head; /* ** prototypes for date routines */ -static struct tws *tws_parse(); -static struct tws *tws_special(); +static struct tws *tws_parse(char *, int); +static struct tws *tws_special(char *); /* ** static prototypes */ -static void PRaction(); -static int gcompile(); -static int advance(); -static int cclass(); -static int tcompile(); - -static struct nexus *parse(); -static struct nexus *nexp1(); -static struct nexus *nexp2(); -static struct nexus *nexp3(); -static struct nexus *newnexus(); +static void PRaction(struct nexus *, int); +static int gcompile(struct nexus *, char *); +static int advance(char *, char *); +static int cclass(unsigned char *, int, int); +static int tcompile(char *, struct tws *, int); + +static struct nexus *parse(void); +static struct nexus *nexp1(void); +static struct nexus *nexp2(void); +static struct nexus *nexp3(void); +static struct nexus *newnexus(int (*)()); static int ORaction(); static int ANDaction(); @@ -834,7 +826,7 @@ PRaction(struct nexus *n, int level) if (n->n_action == TWSaction) { fprintf(stderr, "TEMPORAL(%s) %s: %s\n", n->n_after ? "after" : "before", n->n_datef, - dasctime(&n->n_tws, TW_NULL)); + dasctime(&n->n_tws)); return; } fprintf(stderr, "UNKNOWN(0x%x)\n",