Author: pjd
Date: Wed Oct 20 21:10:01 2010
New Revision: 214119
URL: http://svn.freebsd.org/changeset/base/214119

Log:
  Use closefrom(2) instead of close(2) in a loop.
  
  MFC after:    1 week

Modified:
  head/sbin/hastd/hooks.c

Modified: head/sbin/hastd/hooks.c
==============================================================================
--- head/sbin/hastd/hooks.c     Wed Oct 20 20:50:55 2010        (r214118)
+++ head/sbin/hastd/hooks.c     Wed Oct 20 21:10:01 2010        (r214119)
@@ -88,32 +88,19 @@ static void hook_free(struct hookproc *h
 static void
 descriptors(void)
 {
-       long maxfd;
        int fd;
 
        /*
-        * Close all descriptors.
+        * Close all (or almost all) descriptors.
         */
-       maxfd = sysconf(_SC_OPEN_MAX);
-       if (maxfd < 0) {
-               pjdlog_errno(LOG_WARNING, "sysconf(_SC_OPEN_MAX) failed");
-               maxfd = 1024;
-       }
-       for (fd = 0; fd <= maxfd; fd++) {
-               switch (fd) {
-               case STDIN_FILENO:
-               case STDOUT_FILENO:
-               case STDERR_FILENO:
-                       if (pjdlog_mode_get() == PJDLOG_MODE_STD)
-                               break;
-                       /* FALLTHROUGH */
-               default:
-                       close(fd);
-                       break;
-               }
-       }
-       if (pjdlog_mode_get() == PJDLOG_MODE_STD)
+       if (pjdlog_mode_get() == PJDLOG_MODE_STD) {
+               closefrom(MAX(MAX(STDIN_FILENO, STDOUT_FILENO),
+                   STDERR_FILENO) + 1);
                return;
+       }
+
+       closefrom(0);
+
        /*
         * Redirect stdin, stdout and stderr to /dev/null.
         */
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to