Gave openOSXFUSEDev a makeover.
parent
1bb0fd4724
commit
eda994c2e6
|
@ -24,31 +24,29 @@ func loadOSXFUSE() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func openOSXFUSEDev() (*os.File, error) {
|
func openOSXFUSEDev() (dev *os.File, err error) {
|
||||||
var f *os.File
|
// Try each device name.
|
||||||
var err error
|
|
||||||
for i := uint64(0); ; i++ {
|
for i := uint64(0); ; i++ {
|
||||||
path := "/dev/osxfuse" + strconv.FormatUint(i, 10)
|
path := fmt.Sprintf("/dev/osxfuse%d", i)
|
||||||
f, err = os.OpenFile(path, os.O_RDWR, 0000)
|
dev, err = os.OpenFile(path, os.O_RDWR, 0000)
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
if i == 0 {
|
if i == 0 {
|
||||||
// not even the first device was found -> fuse is not loaded
|
// Not even the first device was found. Fuse must not be loaded.
|
||||||
return nil, errNotLoaded
|
err = errNotLoaded
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// we've run out of kernel-provided devices
|
// Otherwise we've run out of kernel-provided devices
|
||||||
return nil, errNoAvail
|
err = errNoAvail
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err2, ok := err.(*os.PathError); ok && err2.Err == syscall.EBUSY {
|
if err2, ok := err.(*os.PathError); ok && err2.Err == syscall.EBUSY {
|
||||||
// try the next one
|
// This device is in use; try the next one.
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
return
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return f, nil
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue