plan9port/bin/mount
Martin Kühl 72fc31acb3 mount: check current osxfuse kext location
Current versions of osxfuse ship with multiple versions of its kernel
extension (kext) for differend versions of macOS.

Running mount(1) on macOS with a current version of osxfuse fails with
`don't know how to mount (no fuse)' since it fails to find the kext.
Running 9pfuse(4) directly works fine.

This change adds a check to mount(1) that determines:
1) which version of macOS we're running on
2) if there is an osxfuse kext available for this version of macOS
2018-03-23 11:58:20 +01:00

35 lines
1.2 KiB
Bash
Executable file

#!/usr/local/plan9/bin/rc
if(! ~ $#* 2){
echo 'usage: mount addr mtpt' >[1=2]
exit usage
}
switch(`{uname}){
case Linux
if(9 grep -si ' 9p(2000)?$' /proc/filesystems){
if(u test -S $1)
exec u mount -t 9p -o trans'='unix,uname'='$USER $1 $2
exec u mount -t 9p -o trans'='tcp,uname'='$USER $1 $2
}
if(9 grep -si ' fuse$' /proc/filesystems)
exec 9pfuse $1 $2
echo 'don''t know how to mount (no 9p, no fuse)' >[1=2]
case FreeBSD
if(kldstat|9 grep -si ' fuse')
exec 9pfuse $1 $2
echo 'don''t know how to mount (no fuse)' >[1=2]
case Darwin
version=`{sw_vers -productVersion|cut -d. -f1,2}
if(sysctl fuse.version >[2]/dev/null |9 grep -si 'fuse.version' ||
sysctl macfuse.version.number >[2]/dev/null |9 grep -si 'fuse.version' ||
sysctl osxfuse.version.number >[2]/dev/null |9 grep -si 'fuse.version' ||
test -d /System/Library/Extensions/fusefs.kext ||
test -d /Library/Filesystems/osxfuse.fs/Contents/Extensions/$version/osxfuse.kext ||
test -d /Library/Filesystems/osxfusefs.fs/Support/osxfusefs.kext ||
test -d /Library/Filesystems/fusefs.fs/Support/fusefs.kext)
exec 9pfuse $1 $2
echo 'don''t know how to mount (no fuse)' >[1=2]
case *
echo 'can''t mount on' `{uname} >[1=2]
}
exit nomount