mirror of https://github.com/restic/restic.git
66 lines
1.2 KiB
Go
66 lines
1.2 KiB
Go
|
package fstestutil
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
"log"
|
||
|
"strconv"
|
||
|
|
||
|
"bazil.org/fuse"
|
||
|
)
|
||
|
|
||
|
type flagDebug bool
|
||
|
|
||
|
var debug flagDebug
|
||
|
|
||
|
var _ = flag.Value(&debug)
|
||
|
|
||
|
func (f *flagDebug) IsBoolFlag() bool {
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
func nop(msg interface{}) {}
|
||
|
|
||
|
func (f *flagDebug) Set(s string) error {
|
||
|
v, err := strconv.ParseBool(s)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
*f = flagDebug(v)
|
||
|
if v {
|
||
|
fuse.Debug = logMsg
|
||
|
} else {
|
||
|
fuse.Debug = nop
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (f *flagDebug) String() string {
|
||
|
return strconv.FormatBool(bool(*f))
|
||
|
}
|
||
|
|
||
|
func logMsg(msg interface{}) {
|
||
|
log.Printf("FUSE: %s\n", msg)
|
||
|
}
|
||
|
|
||
|
func init() {
|
||
|
flag.Var(&debug, "fuse.debug", "log FUSE processing details")
|
||
|
}
|
||
|
|
||
|
// DebugByDefault changes the default of the `-fuse.debug` flag to
|
||
|
// true.
|
||
|
//
|
||
|
// This package registers a command line flag `-fuse.debug` and when
|
||
|
// run with that flag (and activated inside the tests), logs FUSE
|
||
|
// debug messages.
|
||
|
//
|
||
|
// This is disabled by default, as most callers probably won't care
|
||
|
// about FUSE details. Use DebugByDefault for tests where you'd
|
||
|
// normally be passing `-fuse.debug` all the time anyway.
|
||
|
//
|
||
|
// Call from an init function.
|
||
|
func DebugByDefault() {
|
||
|
f := flag.Lookup("fuse.debug")
|
||
|
f.DefValue = "true"
|
||
|
f.Value.Set(f.DefValue)
|
||
|
}
|