allow rfork(RFNOTEG|RFPROC|RFFDG) for rc.
This commit is contained in:
parent
683c5e534a
commit
1c8efa18ee
2 changed files with 19 additions and 3 deletions
|
|
@ -50,8 +50,7 @@ countde(char *p, int n)
|
||||||
de->d_name[0] = 0;
|
de->d_name[0] = 0;
|
||||||
else if(de->d_name[0]=='.' && de->d_name[1]=='.' && de->d_name[2]==0)
|
else if(de->d_name[0]=='.' && de->d_name[1]=='.' && de->d_name[2]==0)
|
||||||
de->d_name[0] = 0;
|
de->d_name[0] = 0;
|
||||||
else
|
m++;
|
||||||
m++;
|
|
||||||
p += de->d_reclen;
|
p += de->d_reclen;
|
||||||
}
|
}
|
||||||
return m;
|
return m;
|
||||||
|
|
@ -78,9 +77,12 @@ dirpackage(int fd, char *buf, int n, Dir **dp)
|
||||||
|
|
||||||
p = buf;
|
p = buf;
|
||||||
nstr = 0;
|
nstr = 0;
|
||||||
|
|
||||||
for(i=0; i<n; i++){
|
for(i=0; i<n; i++){
|
||||||
de = (struct dirent*)p;
|
de = (struct dirent*)p;
|
||||||
if(stat(de->d_name, &st) < 0)
|
if(de->d_name[0] == 0)
|
||||||
|
/* nothing */ {}
|
||||||
|
else if(stat(de->d_name, &st) < 0)
|
||||||
de->d_name[0] = 0;
|
de->d_name[0] = 0;
|
||||||
else
|
else
|
||||||
nstr += _p9dir(&st, de->d_name, nil, nil, nil);
|
nstr += _p9dir(&st, de->d_name, nil, nil, nil);
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,20 @@
|
||||||
int
|
int
|
||||||
p9rfork(int flags)
|
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){
|
if(flags&RFPROC){
|
||||||
werrstr("cannot use rfork to fork -- use ffork");
|
werrstr("cannot use rfork to fork -- use ffork");
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue