X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/df6971a59e8d01dcfe605bbac949b7d4b3ab0a92..9291a5f82480f2458e04cb9ea7e6749bc952b308:/uip/whatnowproc.c diff --git a/uip/whatnowproc.c b/uip/whatnowproc.c index 293d5ceb..8f5b534f 100644 --- a/uip/whatnowproc.c +++ b/uip/whatnowproc.c @@ -1,13 +1,16 @@ - -/* - * whatnowproc.c -- exec the "whatnowproc" +/* whatnowproc.c -- exec the "whatnowproc" * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for * complete copyright information. */ -#include +#include "h/mh.h" +#include "sbr/r1bindex.h" +#include "sbr/geteditor.h" +#include "sbr/context_save.h" +#include "sbr/error.h" +#include "h/done.h" /* @@ -22,51 +25,55 @@ int what_now (char *ed, int nedit, int use, char *file, char *altmsg, int dist, - struct msgs *mp, char *text, int inplace, char *cwd) + struct msgs *mp, char *text, int inplace, char *cwd, int atfile) { - int found, k, msgnum, vecp; + bool found; + int k, msgnum, vecp; int len, buflen; - register char *bp; + char *bp; char buffer[BUFSIZ], *vec[MAXARGS]; vecp = 0; vec[vecp++] = r1bindex (whatnowproc, '/'); vec[vecp] = NULL; - m_putenv ("mhdraft", file); + setenv("mhdraft", file, 1); if (mp) - m_putenv ("mhfolder", mp->foldpath); + setenv("mhfolder", mp->foldpath, 1); else - unputenv ("mhfolder"); + unsetenv("mhfolder"); if (altmsg) { if (mp == NULL || *altmsg == '/' || cwd == NULL) - m_putenv ("mhaltmsg", altmsg); + setenv("mhaltmsg", altmsg, 1); else { snprintf (buffer, sizeof(buffer), "%s/%s", mp->foldpath, altmsg); - m_putenv ("mhaltmsg", buffer); + setenv("mhaltmsg", buffer, 1); } } else { - unputenv ("mhaltmsg"); + unsetenv("mhaltmsg"); } if ((bp = getenv ("mhaltmsg")))/* XXX */ - m_putenv ("editalt", bp); + setenv("editalt", bp, 1); snprintf (buffer, sizeof(buffer), "%d", dist); - m_putenv ("mhdist", buffer); + setenv("mhdist", buffer, 1); if (nedit) { - unputenv ("mheditor"); + unsetenv("mheditor"); } else { - m_putenv ("mheditor", ed ? ed : (ed = context_find ("editor")) - ? ed : defaulteditor); + if (!ed) + ed = get_default_editor(); + setenv("mheditor", ed, 1); } snprintf (buffer, sizeof(buffer), "%d", use); - m_putenv ("mhuse", buffer); + setenv("mhuse", buffer, 1); + snprintf (buffer, sizeof(buffer), "%d", atfile); + setenv("mhatfile", buffer, 1); - unputenv ("mhmessages"); - unputenv ("mhannotate"); - unputenv ("mhinplace"); + unsetenv("mhmessages"); + unsetenv("mhannotate"); + unsetenv("mhinplace"); if (text && mp && !is_readonly(mp)) { - found = 0; + found = false; bp = buffer; buflen = sizeof(buffer); for (msgnum = mp->lowmsg; msgnum <= mp->hghmsg; msgnum++) { @@ -84,22 +91,25 @@ what_now (char *ed, int nedit, int use, char *file, char *altmsg, int dist, buflen -= len; } msgnum = k + 1; - found++; + found = true; } } if (found) { - m_putenv ("mhmessages", buffer); - m_putenv ("mhannotate", text); + setenv("mhmessages", buffer, 1); + setenv("mhannotate", text, 1); snprintf (buffer, sizeof(buffer), "%d", inplace); - m_putenv ("mhinplace", buffer); + setenv("mhinplace", buffer, 1); } } context_save (); /* save the context file */ fflush (stdout); - if (cwd) - chdir (cwd); + if (cwd) { + if (chdir (cwd) < 0) { + advise (cwd, "chdir"); + } + } /* * If the "whatnowproc" is the nmh command "whatnow",