]> diplodocus.org Git - nmh/blobdiff - uip/scan.c
Moved scan_input() from uip/post.c to sbr/utils.c.
[nmh] / uip / scan.c
index 1f487cdd9a77f1d97e441cc1784f06d07d9850e3..d0534f4868cff79d53ffab23b4a58ca0bbc4e3ad 100644 (file)
@@ -41,7 +41,7 @@ int
 main (int argc, char **argv)
 {
     int clearflag = 0, hdrflag = 0, ontty;
 main (int argc, char **argv)
 {
     int clearflag = 0, hdrflag = 0, ontty;
-    int width = 0, revflag = 0;
+    int width = -1, revflag = 0;
     int i, state, msgnum;
     ivector_t seqnum = ivector_create (0);
     int unseen, num_unseen_seq = 0;
     int i, state, msgnum;
     ivector_t seqnum = ivector_create (0);
     int unseen, num_unseen_seq = 0;
@@ -52,15 +52,9 @@ main (int argc, char **argv)
     struct msgs *mp;
     FILE *in;
 
     struct msgs *mp;
     FILE *in;
 
-#ifdef LOCALE
-    setlocale(LC_ALL, "");
-#endif
-    invo_name = r1bindex (argv[0], '/');
+    if (nmh_init(argv[0], 1)) { return 1; }
 
 
-    /* read user profile/context */
-    context_read();
-
-    mts_init (invo_name);
+    mts_init ();
     arguments = getarguments (invo_name, argc, argv, 1);
     argp = arguments;
 
     arguments = getarguments (invo_name, argc, argv, 1);
     argp = arguments;
 
@@ -171,8 +165,11 @@ main (int argc, char **argv)
 
        scan_detect_mbox_style (in);
        for (msgnum = 1; ; ++msgnum) {
 
        scan_detect_mbox_style (in);
        for (msgnum = 1; ; ++msgnum) {
+           charstring_t scanl = NULL;
+
            state = scan (in, msgnum, -1, nfs, width, 0, 0,
            state = scan (in, msgnum, -1, nfs, width, 0, 0,
-                   hdrflag ? file : NULL, 0L, 1);
+                         hdrflag ? file : NULL, 0L, 1, &scanl);
+           charstring_free (scanl);
            if (state != SCNMSG && state != SCNENC)
                break;
        }
            if (state != SCNMSG && state != SCNENC)
                break;
        }
@@ -235,6 +232,8 @@ main (int argc, char **argv)
         (revflag ? msgnum >= mp->lowsel : msgnum <= mp->hghsel);
         msgnum += (revflag ? -1 : 1)) {
        if (is_selected(mp, msgnum)) {
         (revflag ? msgnum >= mp->lowsel : msgnum <= mp->hghsel);
         msgnum += (revflag ? -1 : 1)) {
        if (is_selected(mp, msgnum)) {
+           charstring_t scanl = NULL;
+
            if ((in = fopen (cp = m_name (msgnum), "r")) == NULL) {
                    admonish (cp, "unable to open message");
                continue;
            if ((in = fopen (cp = m_name (msgnum), "r")) == NULL) {
                    admonish (cp, "unable to open message");
                continue;
@@ -258,7 +257,7 @@ main (int argc, char **argv)
 
            switch (state = scan (in, msgnum, 0, nfs, width,
                        msgnum == mp->curmsg, unseen,
 
            switch (state = scan (in, msgnum, 0, nfs, width,
                        msgnum == mp->curmsg, unseen,
-                       folder, 0L, 1)) {
+                       folder, 0L, 1, &scanl)) {
                case SCNMSG: 
                case SCNENC: 
                case SCNERR: 
                case SCNMSG: 
                case SCNENC: 
                case SCNERR: 
@@ -271,6 +270,7 @@ main (int argc, char **argv)
                    advise (NULL, "message %d: empty", msgnum);
                    break;
            }
                    advise (NULL, "message %d: empty", msgnum);
                    break;
            }
+           charstring_free (scanl);
            scan_finished ();
            hdrflag = 0;
            fclose (in);
            scan_finished ();
            hdrflag = 0;
            fclose (in);