Rework of Editor/defaulteditor, similar to Pager/defaultpager; new env vars.
[mmh] / uip / whatnowproc.c
index 9d4d06d..fbea941 100644 (file)
 ** This routine is used by comp, repl, forw, and dist to exec
 ** the "whatnowproc".  It first sets up all the environment
 ** variables that the "whatnowproc" will need to check, and
-** then execs the command.  As an optimization, if the
-** "whatnowproc" is the nmh command "whatnow" (typical case),
-** it will call this routine directly without exec'ing it.
+** then execs the command.
 */
-
-/* from whatnowsbr.c */
-int WhatNow (int, char **);
-
-
 int
-what_now (char *ed, int nedit, int use, char *file, char *altmsg, int dist,
-       struct msgs *mp, char *text, int inplace, char *cwd)
+what_now(char *ed, int nedit, int use, char *file, char *altmsg, int dist,
+       struct msgs *mp, char *text, char *cwd)
 {
        int found, k, msgnum, vecp;
        int len, buflen;
@@ -32,41 +25,39 @@ what_now (char *ed, int nedit, int use, char *file, char *altmsg, int dist,
        char buffer[BUFSIZ], *vec[MAXARGS];
 
        vecp = 0;
-       vec[vecp++] = r1bindex (whatnowproc, '/');
+       vec[vecp++] = mhbasename(whatnowproc);
        vec[vecp] = NULL;
 
-       m_putenv ("mhdraft", file);
+       m_putenv("mhdraft", file);
        if (mp)
-               m_putenv ("mhfolder", mp->foldpath);
+               m_putenv("mhfolder", mp->foldpath);
        else
-               unputenv ("mhfolder");
+               unputenv("mhfolder");
        if (altmsg) {
                if (mp == NULL || *altmsg == '/' || cwd == NULL)
-                       m_putenv ("mhaltmsg", altmsg);
+                       m_putenv("mhaltmsg", altmsg);
                else {
-                       snprintf (buffer, sizeof(buffer), "%s/%s",
+                       snprintf(buffer, sizeof(buffer), "%s/%s",
                                        mp->foldpath, altmsg);
-                       m_putenv ("mhaltmsg", buffer);
+                       m_putenv("mhaltmsg", buffer);
                }
        } else {
-               unputenv ("mhaltmsg");
+               unputenv("mhaltmsg");
        }
-       if ((bp = getenv ("mhaltmsg")))/* XXX */
-               m_putenv ("editalt", bp);
-       snprintf (buffer, sizeof(buffer), "%d", dist);
-       m_putenv ("mhdist", buffer);
+       if ((bp = getenv("mhaltmsg")))/* XXX */
+               m_putenv("editalt", bp);
+       snprintf(buffer, sizeof(buffer), "%d", dist);
+       m_putenv("mhdist", buffer);
        if (nedit) {
-               unputenv ("mheditor");
+               unputenv("mheditor");
        } else {
-               m_putenv ("mheditor", ed ? ed : (ed = context_find ("editor"))
-                       ? ed : defaulteditor);
+               m_putenv("mheditor", ed ? ed : defaulteditor);
        }
-       snprintf (buffer, sizeof(buffer), "%d", use);
-       m_putenv ("mhuse", buffer);
+       snprintf(buffer, sizeof(buffer), "%d", use);
+       m_putenv("mhuse", buffer);
 
-       unputenv ("mhmessages");
-       unputenv ("mhannotate");
-       unputenv ("mhinplace");
+       unputenv("mhmessages");
+       unputenv("mhannotate");
 
        if (text && mp && !is_readonly(mp)) {
                found = 0;
@@ -74,18 +65,16 @@ what_now (char *ed, int nedit, int use, char *file, char *altmsg, int dist,
                buflen = sizeof(buffer);
                for (msgnum = mp->lowmsg; msgnum <= mp->hghmsg; msgnum++) {
                        if (is_selected(mp, msgnum)) {
-                               snprintf (bp, buflen, "%s%s",
-                                               found ? " " : "",
-                                               m_name (msgnum));
-                               len = strlen (bp);
+                               snprintf(bp, buflen, "%s%s", found ? " " : "",
+                                               m_name(msgnum));
+                               len = strlen(bp);
                                bp += len;
                                buflen -= len;
                                for (k = msgnum + 1; k <= mp->hghmsg && is_selected(mp, k); k++)
                                        continue;
                                if (--k > msgnum) {
-                                       snprintf (bp, buflen, "-%s",
-                                                       m_name (k));
-                                       len = strlen (bp);
+                                       snprintf(bp, buflen, "-%s", m_name(k));
+                                       len = strlen(bp);
                                        bp += len;
                                        buflen -= len;
                                }
@@ -94,31 +83,20 @@ what_now (char *ed, int nedit, int use, char *file, char *altmsg, int dist,
                        }
                }
                if (found) {
-                       m_putenv ("mhmessages", buffer);
-                       m_putenv ("mhannotate", text);
-                       snprintf (buffer, sizeof(buffer), "%d", inplace);
-                       m_putenv ("mhinplace", buffer);
+                       m_putenv("mhmessages", buffer);
+                       m_putenv("mhannotate", text);
                }
        }
 
-       context_save ();  /* save the context file */
-       fflush (stdout);
+       context_save();  /* save the context file */
+       fflush(stdout);
 
        if (cwd)
-               chdir (cwd);
-
-       /*
-       ** If the "whatnowproc" is the nmh command "whatnow",
-       ** we run it internally, rather than exec'ing it.
-       */
-       if (strcmp (vec[0], "whatnow") == 0) {
-               WhatNow (vecp, vec);
-               done (0);
-       }
+               chdir(cwd);
 
-       execvp (whatnowproc, vec);
-       fprintf (stderr, "unable to exec ");
-       perror (whatnowproc);
+       execvp(whatnowproc, vec);
+       fprintf(stderr, "unable to exec ");
+       perror(whatnowproc);
 
        return 0;
 }