diff options
-rw-r--r-- | fs/expose/fuse/__init__.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/fs/expose/fuse/__init__.py b/fs/expose/fuse/__init__.py index 156aa96..4bae8d1 100644 --- a/fs/expose/fuse/__init__.py +++ b/fs/expose/fuse/__init__.py @@ -391,7 +391,8 @@ class MountProcess(subprocess.Popen): cmd = [sys.executable,"-c",cmd] super(MountProcess,self).__init__(cmd,**kwds) os.close(w) - os.read(r,1) + if os.read(r,1) != "S": + raise RuntimeError("A FUSE error occurred") def unmount(self): """Cleanly unmount the FUSE filesystem, terminating this subprocess.""" @@ -413,8 +414,19 @@ class MountProcess(subprocess.Popen): (fs,path,opts,r,w) = pickle.loads(data) os.close(r) opts["foreground"] = True - opts["ready_callback"] = lambda: os.close(w) - mount(fs,path,**opts) + successful = [] + def ready_callback(): + successful.append(True) + os.write(w,"S") + os.close(w) + opts["ready_callback"] = ready_callback + try: + mount(fs,path,**opts) + except Exception: + pass + if not successful: + os.write(w,"E") + if __name__ == "__main__": |