Removed configure flag --disable-locale and have it always enabled.
[mmh] / uip / mhshow.c
index c323867..0b49b7e 100644 (file)
@@ -20,7 +20,7 @@ static struct swit switches[] = {
 #define VERBSW  0
        { "verbose", 0 },
 #define NVERBSW  1
-       { "noverbose", 0 },
+       { "noverbose", 2 },
 #define FILESW  2  /* interface from show */
        { "file file", 0 },
 #define FORMSW  3
@@ -30,7 +30,7 @@ static struct swit switches[] = {
 #define TYPESW  5
        { "type content", 0 },
 #define VERSIONSW  6
-       { "version", 0 },
+       { "Version", 0 },
 #define HELPSW  7
        { "help", 0 },
 #define DEBUGSW  8
@@ -53,6 +53,8 @@ extern char *parts[NPARTS + 1];
 extern char *types[NTYPES + 1];
 extern int userrs;
 
+static enum { SHOW, NEXT, PREV } mode = SHOW;
+
 int debugsw = 0;
 int verbosw = 0;
 
@@ -98,10 +100,13 @@ main(int argc, char **argv)
 
        done=freects_done;
 
-#ifdef LOCALE
        setlocale(LC_ALL, "");
-#endif
        invo_name = mhbasename(argv[0]);
+       if (mh_strcasecmp(invo_name, "next")==0) {
+               mode = NEXT;
+       } else if (mh_strcasecmp(invo_name, "prev")==0) {
+               mode = PREV;
+       }
 
        /* read user profile/context */
        context_read();
@@ -122,7 +127,7 @@ main(int argc, char **argv)
                                adios(NULL, "-%s unknown", cp);
 
                        case HELPSW:
-                               snprintf(buf, sizeof(buf), "%s [+folder] [msgs] [switches]", invo_name);
+                               snprintf(buf, sizeof(buf), "%s [+folder] %s[switches]", invo_name, mode==SHOW ? "[msgs] " : "");
                                print_help(buf, switches, 1);
                                done(1);
                        case VERSIONSW:
@@ -148,6 +153,10 @@ main(int argc, char **argv)
                                continue;
 
                        case FILESW:
+                               if (mode != SHOW) {
+                                       adios(NULL, "Either call show as `%s' or use -file", invo_name);
+                               }
+
                                if (!(cp = *argp++) || (*cp == '-' && cp[1]))
                                        adios(NULL, "missing argument to %s",
                                                        argp[-2]);
@@ -179,8 +188,11 @@ main(int argc, char **argv)
                                adios(NULL, "only one folder at a time!");
                        else
                                folder = getcpy(expandfol(cp));
-               } else
+               } else if (mode != SHOW) {
+                       adios(NULL, "Either call show as `%s' or give message arguments", invo_name);
+               } else {
                        app_msgarg(&msgs, cp);
+               }
        }
 
        /* null terminate the list of acceptable parts/types */
@@ -241,8 +253,19 @@ main(int argc, char **argv)
                /*
                ** message(s) are coming from a folder
                */
-               if (!msgs.size)
-                       app_msgarg(&msgs, seq_cur);
+               if (!msgs.size) {
+                       switch (mode) {
+                       case NEXT:
+                               app_msgarg(&msgs, seq_next);
+                               break;
+                       case PREV:
+                               app_msgarg(&msgs, seq_prev);
+                               break;
+                       default:
+                               app_msgarg(&msgs, seq_cur);
+                               break;
+                       }
+               }
                if (!folder)
                        folder = getcurfol();
                maildir = toabsdir(folder);