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
35 lines
1.2 KiB
Bash
Executable file
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
|