@cryptotaxi247 / kubo / commits / 538550f8f

fix osx mounting version checks

Juan Batiz-Benet committed Jan 10, 2015 at 00:55 UTC 538550f8f8e76ebaff39ea382fe16379a91c3dba
1 file changed +36 -2
core/commands/mount_darwin.go
+36 -2
@@ -5,6 +5,8 @@ import (
5 "runtime"
6 "strings"
7 "syscall"
8 +
9 + fuseversion "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-fuse-version"
10 )
11
12 func init() {
@@ -18,11 +20,17 @@ func darwinFuseCheckVersion() error {
20 return nil
21 }
22
21 - ov, err := syscall.Sysctl("osxfuse.version.number")
23 + ov, err := tryGFV()
24 if err != nil {
23 - return err
25 + log.Debug(err)
26 + ov, err = trySysctl()
27 + if err != nil {
28 + log.Debug(err)
29 + return fmt.Errorf("cannot determine osxfuse version. is it installed?")
30 + }
31 }
32
33 + log.Debug("mount: osxfuse version:", ov)
34 if strings.HasPrefix(ov, "2.7.") || strings.HasPrefix(ov, "2.8.") {
35 return nil
36 }
@@ -31,3 +39,29 @@ func darwinFuseCheckVersion() error {
39 "Older versions of osxfuse have kernel panic bugs; please upgrade!",
40 "https://github.com/jbenet/go-ipfs/issues/177")
41 }
42 +
43 +func tryGFV() (string, error) {
44 + sys, err := fuseversion.LocalFuseSystems()
45 + if err != nil {
46 + log.Debug("mount: fuseversion:", "failed")
47 + return "", err
48 + }
49 +
50 + for _, s := range *sys {
51 + v := s.AgentVersion
52 + log.Debug("mount: fuseversion:", v)
53 + return v, nil
54 + }
55 +
56 + return "", fmt.Errorf("fuseversion: no system found")
57 +}
58 +
59 +func trySysctl() (string, error) {
60 + v, err := syscall.Sysctl("osxfuse.version.number")
61 + if err != nil {
62 + log.Debug("mount: sysctl osxfuse.version.number:", "failed")
63 + return "", err
64 + }
65 + log.Debug("mount: sysctl osxfuse.version.number:", v)
66 + return v, nil
67 +}