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 . // // 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)...)) }