X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/adc0a3232c43033729dbc036f0757bddfba463bd..a1067dea91a4cb3fc71b0b33271d2c7c9c8a2d7a:/uip/scan.c?ds=sidebyside diff --git a/uip/scan.c b/uip/scan.c index 06b12c62..2996a2b5 100644 --- a/uip/scan.c +++ b/uip/scan.c @@ -15,44 +15,29 @@ #include #include -static struct swit switches[] = { -#define CLRSW 0 - { "clear", 0 }, -#define NCLRSW 1 - { "noclear", 0 }, -#define FORMSW 2 - { "form formatfile", 0 }, -#define FMTSW 3 - { "format string", 5 }, -#define HEADSW 4 - { "header", 0 }, -#define NHEADSW 5 - { "noheader", 0 }, -#define WIDTHSW 6 - { "width columns", 0 }, -#define REVSW 7 - { "reverse", 0 }, -#define NREVSW 8 - { "noreverse", 0 }, -#define FILESW 9 - { "file file", 4 }, -#define VERSIONSW 10 - { "version", 0 }, -#define HELPSW 11 - { "help", 0 }, - { NULL, 0 } -}; +#define SCAN_SWITCHES \ + X("clear", 0, CLRSW) \ + X("noclear", 0, NCLRSW) \ + X("form formatfile", 0, FORMSW) \ + X("format string", 5, FMTSW) \ + X("header", 0, HEADSW) \ + X("noheader", 0, NHEADSW) \ + X("width columns", 0, WIDTHSW) \ + X("reverse", 0, REVSW) \ + X("noreverse", 0, NREVSW) \ + X("file file", 4, FILESW) \ + X("version", 0, VERSIONSW) \ + X("help", 0, HELPSW) \ + +#define X(sw, minchars, id) id, +DEFINE_SWITCH_ENUM(SCAN); +#undef X + +#define X(sw, minchars, id) { sw, minchars, id }, +DEFINE_SWITCH_ARRAY(SCAN, switches); +#undef X -/* - * global for sbr/formatsbr.c - yech! - */ -#ifdef LBL -extern struct msgs *fmt_current_folder; -#endif - -extern m_getfld_state_t gstate; - /* * prototypes */ @@ -190,15 +175,14 @@ main (int argc, char **argv) printf ("FOLDER %s\t%s\n", file, dtimenow (1)); } - m_getfld_state_init (&gstate); - m_unknown (gstate, in); + scan_detect_mbox_style (in); for (msgnum = 1; ; ++msgnum) { state = scan (in, msgnum, -1, nfs, width, 0, 0, hdrflag ? file : NULL, 0L, 1); if (state != SCNMSG && state != SCNENC) break; } - m_getfld_state_destroy (&gstate); + scan_finished (); fclose (in); done (0); } @@ -217,7 +201,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 */ @@ -253,11 +237,6 @@ main (int argc, char **argv) ontty = isatty (fileno (stdout)); -#ifdef LBL - else - fmt_current_folder = mp; -#endif - for (msgnum = revflag ? mp->hghsel : mp->lowsel; (revflag ? msgnum >= mp->lowsel : msgnum <= mp->hghsel); msgnum += (revflag ? -1 : 1)) { @@ -283,7 +262,6 @@ main (int argc, char **argv) } } - m_getfld_state_init (&gstate); switch (state = scan (in, msgnum, 0, nfs, width, msgnum == mp->curmsg, unseen, folder, 0L, 1)) { @@ -299,18 +277,13 @@ main (int argc, char **argv) advise (NULL, "message %d: empty", msgnum); break; } - m_getfld_state_destroy (&gstate); + scan_finished (); hdrflag = 0; fclose (in); if (ontty) fflush (stdout); } } - m_getfld_state_destroy (&gstate); - -#ifdef LBL - seq_save (mp); /* because formatsbr might have made changes */ -#endif folder_free (mp); /* free folder/message structure */ if (clearflag)