Hardcoded mhmail instead of mailproc.
[mmh] / uip / conflict.c
index 30ff189..3670e8e 100644 (file)
@@ -9,7 +9,6 @@
 #include <h/mh.h>
 #include <fcntl.h>
 #include <h/aliasbr.h>
-#include <h/mts.h>
 #include <h/utils.h>
 #include <grp.h>
 #include <pwd.h>
@@ -74,43 +73,45 @@ main(int argc, char **argv)
        if (context_foil(NULL) == -1)
                done(1);
 
-       mts_init(invo_name);
        arguments = getarguments(invo_name, argc, argv, 0);
        argp = arguments;
 
        while ((cp = *argp++)) {
                if (*cp == '-') {
                        switch (smatch(++cp, switches)) {
-                               case AMBIGSW:
-                                       ambigsw(cp, switches);
-                                       done(1);
-                               case UNKWNSW:
-                                       adios(NULL, "-%s unknown", cp);
-
-                               case HELPSW:
-                                       snprintf(buf, sizeof(buf), "%s [switches] [aliasfiles ...]", invo_name);
-                                       print_help(buf, switches, 0);
-                                       done(1);
-                               case VERSIONSW:
-                                       print_version(invo_name);
-                                       done(1);
-
-                               case MAILSW:
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios(NULL, "missing argument to %s", argp[-2]);
-                                       if (mail)
-                                               adios(NULL, "mail to one address only");
-                                       else
-                                               mail = cp;
-                                       continue;
-
-                               case SERCHSW:
-                                       if (!(cp = *argp++) || *cp == '-')
-                                               adios(NULL, "missing argument to %s", argp[-2]);
-                                       if (dp >= NDIRS)
-                                               adios(NULL, "more than %d directories", NDIRS);
-                                       dirs[dp++] = cp;
-                                       continue;
+                       case AMBIGSW:
+                               ambigsw(cp, switches);
+                               done(1);
+                       case UNKWNSW:
+                               adios(NULL, "-%s unknown", cp);
+
+                       case HELPSW:
+                               snprintf(buf, sizeof(buf), "%s [switches] [aliasfiles ...]", invo_name);
+                               print_help(buf, switches, 0);
+                               done(1);
+                       case VERSIONSW:
+                               print_version(invo_name);
+                               done(1);
+
+                       case MAILSW:
+                               if (!(cp = *argp++) || *cp == '-')
+                                       adios(NULL, "missing argument to %s",
+                                                       argp[-2]);
+                               if (mail)
+                                       adios(NULL, "mail to one address only");
+                               else
+                                       mail = cp;
+                               continue;
+
+                       case SERCHSW:
+                               if (!(cp = *argp++) || *cp == '-')
+                                       adios(NULL, "missing argument to %s",
+                                                       argp[-2]);
+                               if (dp >= NDIRS)
+                                       adios(NULL, "more than %d directories",
+                                                       NDIRS);
+                               dirs[dp++] = cp;
+                               continue;
                        }
                }
                akv[akp++] = cp;
@@ -127,10 +128,6 @@ main(int argc, char **argv)
        grp_names();
        grp_members();
        grp_ids();
-#ifdef UCI
-       ldr_names();
-       ldr_ship();
-#endif /* UCI */
        maildrops();
 
        done(0);
@@ -189,7 +186,7 @@ grp_names(void)
        setgrent();
        while ((gr = getgrent())) {
                for (i = 0; i < numgroups; i++)
-                       if (!strcmp(grps[i], gr->gr_name)) {
+                       if (strcmp(grps[i], gr->gr_name)==0) {
                                setup();
                                fprintf(out, "duplicate group %s(gid=%d)\n",
                                                gr->gr_name, (int) gr->gr_gid);
@@ -228,7 +225,7 @@ grp_members(void)
        while ((gr = getgrent())) {
                for (cp = gr->gr_mem; *cp; cp++) {
                        for (hm = homehead; hm; hm = hm->h_next)
-                               if (!strcmp(*cp, hm->h_name))
+                               if (strcmp(*cp, hm->h_name)==0)
                                        break;
                        if (hm == NULL) {
                                setup();
@@ -284,10 +281,7 @@ maildrops(void)
 {
        register int i;
 
-       if (mmdfldir && *mmdfldir)
-               mdrop(mmdfldir);
-       if (uucpldir && *uucpldir)
-               mdrop(uucpldir);
+       mdrop(mailspool);
        for (i = 0; dirs[i]; i++)
                mdrop(dirs[i]);
 }
@@ -325,7 +319,7 @@ check(char *s)
        register struct home *hm;
 
        for (hm = homehead; hm; hm = hm->h_next)
-               if (!strcmp(s, hm->h_name))
+               if (strcmp(s, hm->h_name)==0)
                        return 1;
        return 0;
 }
@@ -343,188 +337,30 @@ setup(void)
                        adios("pipe", "unable to");
 
                switch (fork()) {
-                       case NOTOK:
-                               adios("fork", "unable to");
-
-                       case OK:
-                               close(pd[1]);
-                               if (pd[0] != 0) {
-                                       dup2(pd[0], 0);
-                                       close(pd[0]);
-                               }
-                               if ((fd = open("/dev/null", O_WRONLY))
-                                               != NOTOK)
-                                       if (fd != 1) {
-                                               dup2(fd, 1);
-                                               close(fd);
-                                       }
-                               execlp(mailproc, mhbasename(mailproc),
-                                               mail, "-subject", invo_name,
-                                               NULL);
-                               adios(mailproc, "unable to exec ");
-
-                       default:
-                               close(pd[0]);
-                               out = fdopen(pd[1], "w");
-                               fprintf(out, "%s: the following is suspicious\n\n", invo_name);
-               }
-       }
-}
-
-#ifdef UCI
-/*
-** UCI specific stuff for conflict
-*/
-
-/* taken from <grpldr.h> */
-
-#define GLDRS  "/admin/etc/GroupLeaders"
-
-struct grpldr {
-       char *gl_name;
-       char **gl_ldr;
-};
-
-int setglent(), endglent();
-struct grpldr *getglent(), *getglnam();
-
-
-/* taken from the getglent() routines */
-
-#define MAXGLS  100
-
-static FILE *glp = NULL;
-static char line[BUFSIZ+1];
-static struct grpldr grpldr;
-static char *gl_ldr[MAXGLS + 1];
-
+               case NOTOK:
+                       adios("fork", "unable to");
 
-setglent() {
-       if (glp == NULL)
-               glp = fopen(GLDRS, "r");
-       else
-               rewind(glp);
-
-       return (glp != NULL);
-}
-
-
-endglent() {
-       if (glp != NULL) {
-               fclose(glp);
-               glp = NULL;
-       }
-
-       return 1;
-}
-
-struct grpldr *getglent() {
-       register char  *cp, **q;
-
-       if (glp == NULL && !setglent())
-               return NULL;
-       if ((cp = fgets(line, BUFSIZ, glp)) == NULL)
-               return NULL;
-
-       grpldr.gl_name = cp;
-       grpldr.gl_ldr = q = gl_ldr;
-
-       while (*cp) {
-               while (*cp && !isspace(*cp))
-                       cp++;
-               while (*cp && isspace(*cp))
-                       *cp++ = '\0';
-               if (*cp == '\0')
-                       break;
-               if (q < gl_ldr + MAXGLS)
-                       *q++ = cp;
-               else
-                       break;
-       }
-       *q = NULL;
-
-       return (&grpldr);
-}
-
-struct grpldr *getglnam(name)
-char   *name;
-{
-       register struct grpldr  *gl = NULL;
-
-       setglent();
-       while (gl = getglent())
-               if (strcmp(name, gl->gl_name) == 0)
-                       break;
-       endglent();
-
-       return gl;
-}
-
-ldr_names() {
-       register int gp, hit = 0;
-       char *gldrs[NGRPS];
-       register struct grpldr  *gl;
-
-       gldrs[0] = NULL;
-       setglent();
-       while (gl = getglent()) {
-               if (getgrnam(gl->gl_name) == NULL) {
-                       setup();
-                       fprintf(out, "unknown group %s in group leaders file\n",
-                                       gl->gl_name);
-                       hit++;
-               }
-               for (gp = 0; gldrs[gp]; gp++)
-                       if (strcmp(gldrs[gp], gl->gl_name) == 0) {
-                               setup();
-                               fprintf(out, "duplicate group %s in group leaders file\n", gl->gl_name);
-                               hit++;
-                               break;
-                       }
-               if (gldrs[gp] == NULL)
-                       if (gp < NGRPS) {
-                               gldrs[gp++] = getcpy(gl->gl_name);
-                               gldrs[gp] = NULL;
-                       } else {
-                               setup();
-                               fprintf(out, "more than %d groups in group leaders file (time to recompile)\n", NGRPS - 1);
-                               hit++;
-                       }
-       }
-       endglent();
-
-       for (gp = 0; gldrs[gp]; gp++)
-               free(gldrs[gp]);
-
-       if (!hit && out && !mail)
-               fprintf(out, "all groups in group leaders file accounted for\n");
-}
-
-
-ldr_ship() {
-       register int hit = 0;
-       register char **cp, **dp;
-       register struct grpldr  *gl;
-
-       setglent();
-       while (gl = getglent())
-               for (cp = gl->gl_ldr; *cp; cp++) {
-                       if (!check(*cp)) {
-                               setup();
-                               fprintf(out, "group %s has unknown leader %s\n", gl->gl_name, *cp);
-                               hit++;
+               case OK:
+                       close(pd[1]);
+                       if (pd[0] != 0) {
+                               dup2(pd[0], 0);
+                               close(pd[0]);
                        }
-
-                       for (dp = cp + 1; *dp; dp++)
-                               if (strcmp(*cp, *dp) == 0) {
-                                       setup();
-                                       fprintf(out, "group %s had duplicate leader %s\n", gl->gl_name, *cp);
-                                       hit++;
+                       if ((fd = open("/dev/null", O_WRONLY))
+                                       != NOTOK)
+                               if (fd != 1) {
+                                       dup2(fd, 1);
+                                       close(fd);
                                }
+                       execlp("mhmail", "mhmail",
+                                       mail, "-subject", invo_name,
+                                       NULL);
+                       adios("mhmail", "unable to exec ");
+
+               default:
+                       close(pd[0]);
+                       out = fdopen(pd[1], "w");
+                       fprintf(out, "%s: the following is suspicious\n\n", invo_name);
                }
-       endglent();
-
-       if (!hit && out && !mail)
-               fprintf(out, "all group leaders accounted for\n");
+       }
 }
-#endif /* UCI */