summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorSebastian Lackner2019-01-05 15:44:32 +0100
committerJakob Unterwurzacher2019-01-05 16:12:16 +0100
commit7e05e809b7579ad0473fff6ce466c19d417d4e93 (patch)
treef4ba0f8b29c2a1ac7595b544a335db3aa32d75ed /main.go
parentad15ad99856f90f3a72be4bd22ce44338645c963 (diff)
main: Run 'ensure fds' code early during the program startup.
The files are apparently processed in alphabetic order, so cli_args.go is processed before main.go. In order to run before the go-fuse imports, put the 'ensure fds' code in a separate package. Debug messages are omitted to avoid additional imports (that might contain other code messing up our file descriptors).
Diffstat (limited to 'main.go')
-rw-r--r--main.go25
1 files changed, 0 insertions, 25 deletions
diff --git a/main.go b/main.go
index 619b1ce..a376356 100644
--- a/main.go
+++ b/main.go
@@ -8,7 +8,6 @@ import (
"runtime"
"strconv"
"strings"
- "syscall"
"github.com/hanwen/go-fuse/fuse"
@@ -150,7 +149,6 @@ func printVersion() {
}
func main() {
- ensureStdFds()
mxp := runtime.GOMAXPROCS(0)
if mxp < 4 {
// On a 2-core machine, setting maxprocs to 4 gives 10% better performance
@@ -330,26 +328,3 @@ func main() {
os.Exit(0)
}
}
-
-// ensureStdFds ensures that file descriptors 0,1,2 are open. The Go stdlib,
-// as well as the gocryptfs code, relies on the fact that fds 0,1,2 are always
-// open.
-// See https://github.com/rfjakob/gocryptfs/issues/320 for details.
-//
-// This function should be called as the first thing from main().
-func ensureStdFds() {
- fd, err := syscall.Open("/dev/null", syscall.O_RDWR, 0)
- if err != nil {
- tlog.Fatal.Printf("ensureStdFds: open /dev/null failed: %v", err)
- os.Exit(exitcodes.DevNull)
- }
- for fd <= 2 {
- fd, err = syscall.Dup(fd)
- if err != nil {
- tlog.Fatal.Printf("ensureStdFds: dup failed: %v", err)
- os.Exit(exitcodes.DevNull)
- }
- }
- // Close excess fd (usually fd 3)
- syscall.Close(fd)
-}