diff options
Diffstat (limited to 'cmd/sharefs/fuse.go')
| -rw-r--r-- | cmd/sharefs/fuse.go | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/cmd/sharefs/fuse.go b/cmd/sharefs/fuse.go index 1dc34e21..c9855eb7 100644 --- a/cmd/sharefs/fuse.go +++ b/cmd/sharefs/fuse.go @@ -19,7 +19,6 @@ import ( "encoding/gob" "errors" "fmt" - "io" "log" "os" "os/exec" @@ -470,13 +469,14 @@ func _main(s ...string) (exitCode int) { os.NewFile(uintptr(C.fuse_session_fd(se)), "fuse"), )) - var setupWriter io.WriteCloser - if fd, w, err := container.Setup(&z.ExtraFiles); err != nil { + var setupPipe [2]*os.File + if r, w, err := os.Pipe(); err != nil { log.Println(err) return 5 } else { - z.Args = append(z.Args, "-osetup="+strconv.Itoa(fd)) - setupWriter = w + z.Args = append(z.Args, "-osetup="+strconv.Itoa(3+len(z.ExtraFiles))) + z.ExtraFiles = append(z.ExtraFiles, r) + setupPipe[0], setupPipe[1] = r, w } if err := z.Start(); err != nil { @@ -487,6 +487,9 @@ func _main(s ...string) (exitCode int) { } return 5 } + if err := setupPipe[0].Close(); err != nil { + log.Println(err) + } if err := z.Serve(); err != nil { if m, ok := message.GetMessage(err); ok { log.Println(m) @@ -496,10 +499,10 @@ func _main(s ...string) (exitCode int) { return 5 } - if err := gob.NewEncoder(setupWriter).Encode(&setup); err != nil { + if err := gob.NewEncoder(setupPipe[1]).Encode(&setup); err != nil { log.Println(err) return 5 - } else if err = setupWriter.Close(); err != nil { + } else if err = setupPipe[1].Close(); err != nil { log.Println(err) } |
