summaryrefslogtreecommitdiffstats
path: root/src/lib9/rfork.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib9/rfork.c')
-rw-r--r--src/lib9/rfork.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/lib9/rfork.c b/src/lib9/rfork.c
index 41d3f9d6..270c3cdd 100644
--- a/src/lib9/rfork.c
+++ b/src/lib9/rfork.c
@@ -4,6 +4,20 @@
int
p9rfork(int flags)
{
+ int pid;
+
+ if((flags&(RFPROC|RFFDG|RFMEM)) == (RFPROC|RFFDG)){
+ /* check other flags before we commit */
+ flags &= ~(RFPROC|RFFDG);
+ if(flags & ~(RFNOTEG)){
+ werrstr("unknown flags %08ux in rfork", flags);
+ return -1;
+ }
+ pid = fork();
+ if(pid != 0)
+ return pid;
+ }
+
if(flags&RFPROC){
werrstr("cannot use rfork to fork -- use ffork");
return -1;