Fix missing va_end call in uip/mhmisc.c
[mmh] / sbr / context_save.c
index d1371d0..0f7061a 100644 (file)
@@ -6,20 +6,20 @@
 ** complete copyright information.
 */
 
-#include <h/mh.h>
-#include <h/signals.h>
-
 /*
-** static prototypes
-*/
-static int m_chkids(void);
+ * This function used to support setuid/setgid programs by writing
+ * the file as the user.  But that code, m_chkids(), was removed
+ * because there no longer are setuid/setgid programs in nmh.
+ */
 
+#include <sysexits.h>
+#include <h/mh.h>
+#include <h/signals.h>
 
 void
 context_save(void)
 {
-       int action;
-       register struct node *np;
+       struct node *np;
        FILE *out;
        sigset_t set, oset;
 
@@ -31,9 +31,6 @@ context_save(void)
                return;
        ctxflags &= ~CTXMOD;
 
-       if ((action = m_chkids()) > 0)
-               return;  /* child did it for us */
-
        /* block a few signals */
        sigemptyset(&set);
        sigaddset(&set, SIGHUP);
@@ -43,49 +40,11 @@ context_save(void)
        sigprocmask(SIG_BLOCK, &set, &oset);
 
        if (!(out = lkfopen(ctxpath, "w")))
-               adios(ctxpath, "unable to write");
+               adios(EX_IOERR, ctxpath, "unable to write");
        for (np = m_defs; np; np = np->n_next)
                if (np->n_context)
                        fprintf(out, "%s: %s\n", np->n_name, np->n_field);
        lkfclose(out, ctxpath);
 
        sigprocmask(SIG_SETMASK, &oset, &set); /* reset the signal mask */
-
-       if (action == 0)
-               _exit(0);    /* we are child, time to die */
-}
-
-/*
-** This hack brought to you so we can handle set[ug]id MH programs.
-** If we return -1, then no fork is made, we update .mh_profile
-** normally, and return to the caller normally.  If we return 0,
-** then the child is executing, .mh_profile is modified after
-** we set our [ug]ids to the norm.  If we return > 0, then the
-** parent is executed and .mh_profile has already be modified.
-** We can just return to the caller immediately.
-*/
-
-static int
-m_chkids(void)
-{
-       pid_t pid;
-
-       if (getuid() == geteuid())
-               return (-1);
-
-       switch (pid = fork()) {
-       case -1:
-               break;
-
-       case 0:
-               setgid(getgid());
-               setuid(getuid());
-               break;
-
-       default:
-               pidwait(pid, -1);
-               break;
-       }
-
-       return pid;
 }