aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/9pfuse
diff options
context:
space:
mode:
authorPetter Rodhelind <petter.rodhelind@gmail.com>2018-04-20 19:39:01 +0200
committerPetter Rodhelind <petter.rodhelind@gmail.com>2018-04-20 19:39:01 +0200
commit79223bb49d950dc6236b6c79c37fea787e40ba5c (patch)
treebb85b2a21fa74e8792704b056cc163c38fcc55c2 /src/cmd/9pfuse
parentc04683ef3aa6e9f42fb279025f231b06b17191f4 (diff)
parent03a8ec739af17bc4ba0a2e18ea59b33671c34f2b (diff)
downloadplan9port-79223bb49d950dc6236b6c79c37fea787e40ba5c.tar.gz
plan9port-79223bb49d950dc6236b6c79c37fea787e40ba5c.tar.bz2
plan9port-79223bb49d950dc6236b6c79c37fea787e40ba5c.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'src/cmd/9pfuse')
-rw-r--r--src/cmd/9pfuse/fuse.c15
-rw-r--r--src/cmd/9pfuse/main.c4
2 files changed, 16 insertions, 3 deletions
diff --git a/src/cmd/9pfuse/fuse.c b/src/cmd/9pfuse/fuse.c
index 3f91ce78..66f66065 100644
--- a/src/cmd/9pfuse/fuse.c
+++ b/src/cmd/9pfuse/fuse.c
@@ -48,7 +48,6 @@ readfusemsg(void)
int n, nn;
m = allocfusemsg();
- errno = 0;
/*
* The FUSE kernel device apparently guarantees
* that this read will return exactly one message.
@@ -57,7 +56,11 @@ readfusemsg(void)
* FUSE returns an ENODEV error, not EOF,
* when the connection is unmounted.
*/
- if((n = read(fusefd, m->buf, fusebufsize)) < 0){
+ do{
+ errno = 0;
+ n = read(fusefd, m->buf, fusebufsize);
+ }while(n < 0 && errno == EINTR);
+ if(n < 0){
if(errno != ENODEV)
sysfatal("readfusemsg: %r");
}
@@ -807,6 +810,8 @@ mountfuse(char *mtpt)
"/Support/load_osxfusefs"), 0) < 0 &&
access((v="osxfuse", f="/Library/Filesystems/osxfuse.fs"
"/Contents/Resources/load_osxfuse"), 0) < 0 &&
+ access((v="osxfuse", f="/opt/local/Library/Filesystems/osxfuse.fs"
+ "/Contents/Resources/load_osxfuse"), 0) < 0 &&
access((v="fusefs", f="/System/Library/Extensions/fusefs.kext"
"/Contents/Resources/load_fusefs"), 0) < 0 &&
access(f="/Library/Extensions/fusefs.kext"
@@ -871,6 +876,12 @@ mountfuse(char *mtpt)
execl("/Library/Filesystems/osxfuse.fs/Contents/Resources/mount_osxfuse",
"mount_osxfuse", buf, mtpt, nil);
+ /* OSXFUSE >=3.3 from macports */
+ putenv("MOUNT_OSXFUSE_DAEMON_PATH",
+ "/opt/local/Library/Filesystems/osxfuse.fs/Contents/Resources/mount_osxfuse");
+ execl("/opt/local/Library/Filesystems/osxfuse.fs/Contents/Resources/mount_osxfuse",
+ "mount_osxfuse", buf, mtpt, nil);
+
/* Lion OSXFUSE location */
putenv("MOUNT_FUSEFS_DAEMON_PATH",
"/Library/Filesystems/osxfusefs.fs/Support/mount_osxfusefs");
diff --git a/src/cmd/9pfuse/main.c b/src/cmd/9pfuse/main.c
index cbce3ffd..a3662898 100644
--- a/src/cmd/9pfuse/main.c
+++ b/src/cmd/9pfuse/main.c
@@ -505,7 +505,9 @@ fusesetattr(FuseMsg *m)
if(in->valid&FATTR_MTIME)
d.mtime = in->mtime;
if(in->valid&FATTR_MODE)
- d.mode = in->mode;
+ d.mode = in->mode & 0777;
+ if((in->mode&S_IFMT) == S_IFDIR)
+ d.mode |= DMDIR;
if((in->valid&FATTR_UID) || (in->valid&FATTR_GID)){
/*
* I can't be bothered with these yet.