github.com/zignig/go-ipfs@v0.0.0-20141111235910-c9e5fdf55a52/cmd/ipfs/mount_darwin.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"runtime"
     6  	"strings"
     7  	"syscall"
     8  )
     9  
    10  func init() {
    11  	// this is a hack, but until we need to do it another way, this works.
    12  	platformFuseChecks = darwinFuseCheckVersion
    13  }
    14  
    15  func darwinFuseCheckVersion() error {
    16  	// on OSX, check FUSE version.
    17  	if runtime.GOOS != "darwin" {
    18  		return nil
    19  	}
    20  
    21  	ov, err := syscall.Sysctl("osxfuse.version.number")
    22  	if err != nil {
    23  		return err
    24  	}
    25  
    26  	if strings.HasPrefix(ov, "2.7.") || strings.HasPrefix(ov, "2.8.") {
    27  		return nil
    28  	}
    29  
    30  	return fmt.Errorf("osxfuse version %s not supported.\n%s\n%s", ov,
    31  		"Older versions of osxfuse have kernel panic bugs; please upgrade!",
    32  		"https://github.com/jbenet/go-ipfs/issues/177")
    33  }