commit - 143cdf575889feef82ed98a19df8761002d3895f
commit + a83ccf38d72b708bb7aa69416a9fe9b090e2e97f
blob - 26319e2e7d2dfb98a39be1995fc3e89190afdb2f
blob + aaec3ef02b5bc0aec87898357e5ab89ef376ff97
--- src/cmd/9pfuse/a.h
+++ src/cmd/9pfuse/a.h
void freefusemsg(FuseMsg *m);
int fusefmt(Fmt*);
void initfuse(char *mtpt);
+void waitfuse(void);
FuseMsg* readfusemsg(void);
void replyfuse(FuseMsg *m, void *arg, int narg);
void replyfuseerrno(FuseMsg *m, int e);
blob - 5c071ab4413db69c24214b4805771e83427508bf
blob + 9918994ddebdde06392f94970d1043ba0c67a9a3
--- src/cmd/9pfuse/fuse.c
+++ src/cmd/9pfuse/fuse.c
close(p[0]);
fd = recvfd(p[1]);
close(p[1]);
- waitpid();
return fd;
#elif defined(__FreeBSD__)
int pid, fd;
fprint(2, "exec mount_fusefs: %r\n");
_exit(1);
}
- waitpid();
return fd;
#else
werrstr("cannot mount fuse on this system");
return -1;
#endif
+}
+
+void
+waitfuse(void)
+{
+ waitpid();
}
void
blob - 5a2ef8f6f299012da71e19d43f6a0356859879ba
blob + db79a5ea2f2c34d9c128f0235a2211f23bbbb0b6
--- src/cmd/9pfuse/main.c
+++ src/cmd/9pfuse/main.c
sendp(fusechan, nil); /* sync */
proccreate(fusereader, nil, STACK);
+ /*
+ * Now that we're serving FUSE, we can wait
+ * for the mount to finish and exit back to the user.
+ */
+ waitfuse();
threadexits(0);
}