Преглед изворни кода

Support FreeBSD closefrom(2)

Bryan Drewery пре 9 година
родитељ
комит
f3a48b716d
2 измењених фајлова са 13 додато и 2 уклоњено
  1. 1 0
      doc/UPDATES.md
  2. 12 2
      src/shell.cc

+ 1 - 0
doc/UPDATES.md

@@ -7,6 +7,7 @@
     [1] http://clang.llvm.org/docs/AddressSanitizer.html
   * Fix './wraith -C' file being immediately modified when saving on
     FreeBSD (#94)
+  * Support FreeBSD closefrom(2)
 
 # 1.4.7
   * Update server list, 'set -yes servers -' and 'set -yes servers6 -' to get new list.

+ 12 - 2
src/shell.cc

@@ -537,7 +537,12 @@ int shell_exec(char *cmdline, char *input, char **output, char **erroutput, bool
     }
 
     // Close all sockets
-    for (int fd = 3; fd < MAX_SOCKETS; ++fd) close(fd);
+#ifdef HAVE_CLOSEFROM
+    closefrom(3);
+#else
+    for (int fd = 3; fd < MAX_SOCKETS; ++fd)
+      close(fd);
+#endif
 
     char *argv[15];
     if (simple) {
@@ -570,7 +575,12 @@ int simple_exec(const char* argv[]) {
       return -1;
     case 0:		//child
       // Close all sockets
-      for (int fd = 3; fd < MAX_SOCKETS; ++fd) close(fd);
+#ifdef HAVE_CLOSEFROM
+      closefrom(3);
+#else
+      for (int fd = 3; fd < MAX_SOCKETS; ++fd)
+        close(fd);
+#endif
       execvp(argv[0], (char* const*) &argv[0]);
       _exit(127);
     default:		//parent