]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/statd/statd.c
Fix a number of the easier compile warnings: unused variables,
[nfs-utils.git] / utils / statd / statd.c
index 3f6411586bc055a6990d097ab5e238dc3a9b3b57..c92e12f29c3a72d1c4bb84a9f51b3c8f5e344e61 100644 (file)
@@ -7,7 +7,11 @@
  * NSM for Linux.
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <sys/stat.h>
 #include <limits.h>
 #include <signal.h>
 #include <unistd.h>
@@ -22,6 +26,7 @@
 #include <grp.h>
 #include "statd.h"
 #include "version.h"
+#include "nfslib.h"
 
 /* Socket operations */
 #include <sys/types.h>
@@ -46,7 +51,7 @@ int   run_mode = 0;           /* foreground logging mode */
  * two copies of each - one in main(), one static in log.c... 
  * It also eliminates the 256-char static in log.c */
 char *name_p = NULL;
-char *version_p = NULL;
+const char *version_p = NULL;
 
 /* PRC: a high-availability callout program can be specified with -H
  * When this is done, the program will receive callouts whenever clients
@@ -111,7 +116,8 @@ killer (int sig)
 static void
 sigusr (int sig)
 {
-       dprintf (N_DEBUG, "Caught signal %d, re-reading notify list.", sig);
+       dprintf (N_DEBUG, "Caught signal %d, re-notifying (state %d).", sig,
+                                                               MY_STATE);
        re_notify = 1;
 }
 
@@ -193,8 +199,10 @@ static void drop_privs(void)
        struct stat st;
 
        if (stat(SM_DIR, &st) == -1 &&
-           stat(DIR_BASE, &st) == -1)
+           stat(DIR_BASE, &st) == -1) {
                st.st_uid = 0;
+               st.st_gid = 0;
+       }
 
        if (st.st_uid == 0) {
                note(N_WARNING, "statd running as root. chown %s to choose different user\n",
@@ -284,6 +292,7 @@ int main (int argc, char **argv)
                        }
                        break;
                case 'n':       /* Specify local hostname */
+                       run_mode |= STATIC_HOSTNAME;
                        MY_NAME = xstrdup(optarg);
                        break;
                case 'P':
@@ -365,7 +374,7 @@ int main (int argc, char **argv)
 #endif
        
        if (!(run_mode & MODE_NODAEMON)) {
-               int filedes, fdmax, tempfd;
+               int tempfd;
 
                if (pipe(pipefds)<0) {
                        perror("statd: unable to create pipe");
@@ -399,14 +408,12 @@ int main (int argc, char **argv)
                        }
                }
                tempfd = open("/dev/null", O_RDWR);
-               close(0); dup2(tempfd, 0);
-               close(1); dup2(tempfd, 1);
-               close(2); dup2(tempfd, 2);
-               fdmax = sysconf (_SC_OPEN_MAX);
-               for (filedes = 3; filedes < fdmax; filedes++) 
-                       if (filedes != pipefds[1])
-                               close (filedes);
-
+               dup2(tempfd, 0);
+               dup2(tempfd, 1);
+               dup2(tempfd, 2);
+               dup2(pipefds[1], 3);
+               pipefds[1] = 3;
+               closeall(4);
        }
 
        /* Child. */