aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/sharefs/fuse.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-04-07 15:50:59 +0900
committerOphestra <cat@gensokyo.uk>2026-04-07 16:05:33 +0900
commit062edb3487c1cc116cae78bf77420b65c43517d1 (patch)
treeac91267721d7a288ea301b060b0110aa5d3b9b9a /cmd/sharefs/fuse.go
parente4355279a1624833e36455a1a85788dbe091464e (diff)
container: remove setup pipe helper
The API forces use of finalizer to close the read end of the setup pipe, which is no longer considered acceptable. Exporting this as part of package container also imposes unnecessary maintenance burden. Signed-off-by: Ophestra <cat@gensokyo.uk>
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)
}