diff --git a/mount_darwin.go b/mount_darwin.go index 58a727b..362cf94 100644 --- a/mount_darwin.go +++ b/mount_darwin.go @@ -37,16 +37,29 @@ type osxfuseInstallation struct { // Environment variable used to pass the path to the executable calling the // mount helper. DaemonVar string + + // Environment variable used to pass the "called by library" flag. + LibVar string } var ( osxfuseInstallations = []osxfuseInstallation{ + // v4 + { + DevicePrefix: "/dev/macfuse", + Load: "/Library/Filesystems/macfuse.fs/Contents/Resources/load_macfuse", + Mount: "/Library/Filesystems/macfuse.fs/Contents/Resources/mount_macfuse", + DaemonVar: "_FUSE_DAEMON_PATH", + LibVar: "_FUSE_CALL_BY_LIB", + }, + // v3 { DevicePrefix: "/dev/osxfuse", Load: "/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse", Mount: "/Library/Filesystems/osxfuse.fs/Contents/Resources/mount_osxfuse", DaemonVar: "MOUNT_OSXFUSE_DAEMON_PATH", + LibVar: "MOUNT_OSXFUSE_CALL_BY_LIB", }, // v2 @@ -55,6 +68,7 @@ var ( Load: "/Library/Filesystems/osxfusefs.fs/Support/load_osxfusefs", Mount: "/Library/Filesystems/osxfusefs.fs/Support/mount_osxfusefs", DaemonVar: "MOUNT_FUSEFS_DAEMON_PATH", + LibVar: "MOUNT_FUSEFS_CALL_BY_LIB", }, } ) @@ -95,6 +109,7 @@ func openOSXFUSEDev(devPrefix string) (dev *os.File, err error) { func callMount( bin string, daemonVar string, + libVar string, dir string, cfg *MountConfig, dev *os.File, @@ -127,10 +142,7 @@ func callMount( ) cmd.ExtraFiles = []*os.File{dev} cmd.Env = os.Environ() - // OSXFUSE <3.3.0 - cmd.Env = append(cmd.Env, "MOUNT_FUSEFS_CALL_BY_LIB=") - // OSXFUSE >=3.3.0 - cmd.Env = append(cmd.Env, "MOUNT_OSXFUSE_CALL_BY_LIB=") + cmd.Env = append(cmd.Env, libVar+"=") daemon := os.Args[0] if daemonVar != "" { @@ -197,7 +209,7 @@ func mount( } // Call the mount binary with the device. - if err := callMount(loc.Mount, loc.DaemonVar, dir, cfg, dev, ready); err != nil { + if err := callMount(loc.Mount, loc.DaemonVar, loc.LibVar, dir, cfg, dev, ready); err != nil { dev.Close() return nil, fmt.Errorf("callMount: %v", err) }