]> diplodocus.org Git - nmh/blobdiff - uip/slocal.c
mhshow: suppress error for undisplayable parts, if they're not wanted
[nmh] / uip / slocal.c
index eaa7cb7c5bc2380e086575bfe589dc852e4971dd..8afef253c815a8204b8b64e87e5ee3cf6daabf92 100644 (file)
@@ -183,7 +183,7 @@ int
 main (int argc, char **argv)
 {
     int fd, status;
-    FILE *fp = stdin;
+    FILE *fp;
     char *cp, *mdlvr = NULL, buf[BUFSIZ];
     char mailbox[BUFSIZ], tmpfil[BUFSIZ];
     char **argp, **arguments;
@@ -283,11 +283,15 @@ main (int argc, char **argv)
     umask (0077);
 
     if (geteuid() == 0) {
-       setgid (pw->pw_gid);
+       if (setgid (pw->pw_gid) != 0) {
+           adios ("setgid", "unable to set group to %ld", (long) pw->pw_gid);
+       }
        initgroups (pw->pw_name, pw->pw_gid);
-       setuid (pw->pw_uid);
+       if (setuid (pw->pw_uid) != 0) {
+           adios ("setuid", "unable to set user to %ld", (long) pw->pw_uid);
+       }
     }
-    
+
     if (info == NULL)
        info = "";
 
@@ -1410,6 +1414,7 @@ suppress_duplicates (int fd, char *file)
     rewind (in);
 
     for (;;) {
+        int failed_to_lock = 0;
        int bufsz = sizeof buf;
        state = m_getfld (&gstate, name, buf, &bufsz, in);
        switch (state) {
@@ -1447,7 +1452,8 @@ suppress_duplicates (int fd, char *file)
                 * This will fail if your Maildelivery file doesn't
                 * exist.
                 */
-               if ((lockfd = lkopendata(file, O_RDWR, 0)) == -1) {
+               if ((lockfd = lkopendata(file, O_RDWR, 0, &failed_to_lock))
+                   == -1) {
                    advise (file, "unable to perform file locking on");
                    free (cp);
                    fclose (in);