X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/de4636bb664106d9932ae7acb517e471b848f1f3..0a7838e0e8026cbfe8a8924ef256ad9e930fb03d:/uip/scan.c diff --git a/uip/scan.c b/uip/scan.c index e1b9a165..20668691 100644 --- a/uip/scan.c +++ b/uip/scan.c @@ -13,7 +13,6 @@ #include #include #include -#include #define SCAN_SWITCHES \ X("clear", 0, CLRSW) \ @@ -38,19 +37,14 @@ DEFINE_SWITCH_ARRAY(SCAN, switches); #undef X -/* - * prototypes - */ -void clear_screen(void); /* from termsbr.c */ - - int main (int argc, char **argv) { int clearflag = 0, hdrflag = 0, ontty; int width = 0, revflag = 0; int i, state, msgnum; - int seqnum[NUMATTRS], unseen, num_unseen_seq = 0; + ivector_t seqnum = ivector_create (0); + int unseen, num_unseen_seq = 0; char *cp, *maildir, *file = NULL, *folder = NULL; char *form = NULL, *format = NULL, buf[BUFSIZ]; char **argp, *nfs, **arguments; @@ -58,13 +52,7 @@ main (int argc, char **argv) struct msgs *mp; FILE *in; -#ifdef LOCALE - setlocale(LC_ALL, ""); -#endif - invo_name = r1bindex (argv[0], '/'); - - /* read user profile/context */ - context_read(); + if (nmh_init(argv[0], 1)) { return 1; } mts_init (invo_name); arguments = getarguments (invo_name, argc, argv, 1); @@ -175,13 +163,14 @@ main (int argc, char **argv) printf ("FOLDER %s\t%s\n", file, dtimenow (1)); } - m_unknown (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; } + scan_finished (); fclose (in); done (0); } @@ -200,7 +189,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 */ @@ -227,7 +216,7 @@ main (int argc, char **argv) dp = getcpy(cp); ap = brkstring (dp, " ", "\n"); for (i = 0; ap && *ap; i++, ap++) - seqnum[i] = seq_getnum (mp, *ap); + ivector_push_back (seqnum, seq_getnum (mp, *ap)); num_unseen_seq = i; if (dp) @@ -255,7 +244,7 @@ main (int argc, char **argv) */ unseen = 0; for (i = 0; i < num_unseen_seq; i++) { - if (in_sequence(mp, seqnum[i], msgnum)) { + if (in_sequence(mp, ivector_at (seqnum, i), msgnum)) { unseen = 1; break; } @@ -276,6 +265,7 @@ main (int argc, char **argv) advise (NULL, "message %d: empty", msgnum); break; } + scan_finished (); hdrflag = 0; fclose (in); if (ontty) @@ -283,9 +273,10 @@ main (int argc, char **argv) } } + ivector_free (seqnum); folder_free (mp); /* free folder/message structure */ if (clearflag) - clear_screen (); + nmh_clear_screen (); done (0); return 1;