All checks were successful
Test / Create distribution (push) Successful in 33s
Test / ShareFS (push) Successful in 39s
Test / Sandbox (push) Successful in 46s
Test / Sandbox (race detector) (push) Successful in 45s
Test / Hpkg (push) Successful in 49s
Test / Hakurei (push) Successful in 54s
Test / Hakurei (race detector) (push) Successful in 55s
Test / Flake checks (push) Successful in 1m35s
This should have been handled in a custom option parsing function, but that much extra complexity is unnecessary for this edge case. Honestly I do not know why libfuse does not handle this itself. Signed-off-by: Ophestra <cat@gensokyo.uk>
32 lines
917 B
Go
32 lines
917 B
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"slices"
|
|
)
|
|
|
|
// sharefsName is the prefix used by log.std in the sharefs process.
|
|
const sharefsName = "sharefs"
|
|
|
|
// handleMountArgs returns an alternative, libfuse-compatible args slice for
|
|
// args passed by mount -t fuse.sharefs [options] sharefs <mountpoint>.
|
|
//
|
|
// In this case, args always has a length of 5 with index 0 being what comes
|
|
// after "fuse." in the filesystem type, 1 is the uninterpreted string passed
|
|
// to mount (sharefsName is used as the magic string to enable this hack),
|
|
// 2 is passed through to libfuse as mountpoint, and 3 is always "-o".
|
|
func handleMountArgs(args []string) []string {
|
|
if len(args) == 5 && args[1] == sharefsName && args[3] == "-o" {
|
|
return []string{sharefsName, args[2], "-o", args[4]}
|
|
}
|
|
return slices.Clone(args)
|
|
}
|
|
|
|
func main() {
|
|
log.SetFlags(0)
|
|
log.SetPrefix(sharefsName + ": ")
|
|
|
|
os.Exit(_main(handleMountArgs(os.Args)...))
|
|
}
|