]> diplodocus.org Git - nmh/blobdiff - uip/scan.c
Some tests for RFC 2231 decoding; seems like it works, but need to stress
[nmh] / uip / scan.c
index e1b9a16576f32d64bea5b4a2b7ac7ffcb699031a..20668691409d0f0a2ac9decb9b84174e774a08c3 100644 (file)
@@ -13,7 +13,6 @@
 #include <h/tws.h>
 #include <h/mts.h>
 #include <h/utils.h>
-#include <errno.h>
 
 #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;