aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/sharefs/fuse.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/sharefs/fuse.go')
-rw-r--r--cmd/sharefs/fuse.go17
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)
}