1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
// Copyright 2017 Keybase Inc. All rights reserved.
// Use of this source code is governed by a BSD
// license that can be found in the LICENSE file.
//go:build linux || darwin
// +build linux darwin
package main
import (
"flag"
"fmt"
"log"
"os"
"time"
"github.com/anacrolix/fuse"
"github.com/anacrolix/fuse/fs"
_ "github.com/anacrolix/fuse/fs/fstestutil"
)
var (
inMemoryXattr bool
latency time.Duration
)
/*
func init() {
flag.BoolVar(&inMemoryXattr, "in-memory-xattr", false,
"use an in-memory implementation for xattr. Otherwise,\n"+
"fall back to the ._ file approach provided by osxfuse.")
flag.DurationVar(&latency, "latency", 0,
"add an artificial latency to every fuse handler on every call")
}*/
func usage() {
fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
fmt.Fprintf(os.Stderr, " %s ROOT MOUNTPOINT\n", os.Args[0])
flag.PrintDefaults()
}
func main() {
flag.Usage = usage
flag.Parse()
if flag.NArg() != 2 {
usage()
os.Exit(2)
}
mountpoint := flag.Arg(1)
c, err := fuse.Mount(
mountpoint,
fuse.FSName("loopback"),
fuse.Subtype("loopback-fs"),
fuse.VolumeName("goLoopback"),
//fuse.AllowRoot(),
)
if err != nil {
log.Fatal(err)
}
defer c.Close()
err = fs.Serve(c, newFS(flag.Arg(0)))
if err != nil {
log.Fatal(err)
}
// check if the mount process has an error to report
<-c.Ready
if err := c.MountError; err != nil {
log.Fatal(err)
}
log.Println("mounted!")
}
|