func main() { // Scans the arg list and sets up flags debug := flag.Bool("debug", false, "print debugging messages.") flag.Parse() if flag.NArg() < 2 { // TODO - where to get program name? fmt.Println("usage: main MOUNTPOINT BACKING-PREFIX") os.Exit(2) } mountPoint := flag.Arg(0) prefix := flag.Arg(1) fs := fuse.NewMemNodeFs(prefix) conn := fuse.NewFileSystemConnector(fs, nil) state := fuse.NewMountState(conn) state.Debug = *debug fmt.Println("Mounting") err := state.Mount(mountPoint, nil) if err != nil { fmt.Printf("Mount fail: %v\n", err) os.Exit(1) } fmt.Println("Mounted!") state.Loop() }
func main() { // Scans the arg list and sets up flags debug := flag.Bool("debug", false, "print debugging messages.") other := flag.Bool("allow-other", false, "mount with -o allowother.") flag.Parse() if flag.NArg() < 2 { // TODO - where to get program name? fmt.Println("usage: main MOUNTPOINT ORIGINAL") os.Exit(2) } var finalFs fuse.FileSystem orig := flag.Arg(1) loopbackfs := fuse.NewLoopbackFileSystem(orig) finalFs = loopbackfs opts := &fuse.FileSystemOptions{ // These options are to be compatible with libfuse defaults, // making benchmarking easier. NegativeTimeout: time.Second, AttrTimeout: time.Second, EntryTimeout: time.Second, } pathFs := fuse.NewPathNodeFs(finalFs, nil) conn := fuse.NewFileSystemConnector(pathFs, opts) state := fuse.NewMountState(conn) state.Debug = *debug mountPoint := flag.Arg(0) fmt.Println("Mounting") mOpts := &fuse.MountOptions{ AllowOther: *other, } err := state.Mount(mountPoint, mOpts) if err != nil { fmt.Printf("Mount fail: %v\n", err) os.Exit(1) } fmt.Println("Mounted!") state.Loop() }