Commit Diff


commit - ac6456a0cc67ca33c7b9c64cf7a4598961de8911
commit + 93f9789c048d9bfd75192adce3ed9a3ff8a68fbc
blob - 0d4adb08cc1f059f2b85ba81e32a2c35439f7b7b
blob + 0df610022d1c00aa3555f4719d476a949dbdd7c5
--- src/cmd/9pfuse/main.c
+++ src/cmd/9pfuse/main.c
@@ -51,6 +51,14 @@
 #  endif
 #endif
 
+#ifndef FMODE_EXEC
+#  if defined(__linux__)
+#    define FMODE_EXEC 040
+#  else
+#    define FMODE_EXEC 0
+#  endif
+#endif
+
 int debug;
 char *argv0;
 char *aname = "";
@@ -583,7 +591,7 @@ _fuseopen(FuseMsg *m, int isdir)
 	flags = in->flags;
 	openmode = flags&3;
 	flags &= ~3;
-	flags &= ~(O_DIRECTORY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC);
+	flags &= ~(O_DIRECTORY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|FMODE_EXEC);
 #ifdef O_NOFOLLOW
 	flags &= ~O_NOFOLLOW;
 #endif
@@ -602,13 +610,14 @@ _fuseopen(FuseMsg *m, int isdir)
 		openmode |= OTRUNC;
 		flags &= ~O_TRUNC;
 	}
+
 	/*
 	 * Could translate but not standard 9P:
 	 *	O_DIRECT -> ODIRECT
 	 *	O_NONBLOCK -> ONONBLOCK
 	 */
 	if(flags){
-		fprint(2, "unexpected open flags %#uo\n", (uint)in->flags);
+		fprint(2, "unexpected open flags requested=%#uo unhandled=%#uo\n", (uint)in->flags, (uint)flags);
 		replyfuseerrno(m, EACCES);
 		return;
 	}