diff options
author | rsc <devnull@localhost> | 2006-02-17 19:21:49 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2006-02-17 19:21:49 +0000 |
commit | 19256e0dd9c3c383ada7cc28b67487400c9162e3 (patch) | |
tree | db1d798627a8d42e5432237639e96f5ac111dd13 /src/cmd/ndb/dnarea.c | |
parent | 05f5d46b6368978fd22cfbea7155e983b0faa9a7 (diff) | |
download | plan9port-19256e0dd9c3c383ada7cc28b67487400c9162e3.tar.gz plan9port-19256e0dd9c3c383ada7cc28b67487400c9162e3.tar.bz2 plan9port-19256e0dd9c3c383ada7cc28b67487400c9162e3.zip |
changes from erik quanstrom
Diffstat (limited to 'src/cmd/ndb/dnarea.c')
-rwxr-xr-x | src/cmd/ndb/dnarea.c | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/src/cmd/ndb/dnarea.c b/src/cmd/ndb/dnarea.c index 9f0338b6..05c9d004 100755 --- a/src/cmd/ndb/dnarea.c +++ b/src/cmd/ndb/dnarea.c @@ -91,12 +91,15 @@ freearea(Area **l) * this entails running a command 'zonerefreshprogram'. This could * copy over databases from elsewhere or just do a zone transfer. */ -/* XXX WRONG - can't use fork and exec */ void refresh_areas(Area *s) { - int pid; Waitmsg *w; + char *argv[3]; + + argv[0] = zonerefreshprogram; + argv[1] = "XXX"; + argv[2] = nil; for(; s != nil; s = s->next){ if(!s->needrefresh) @@ -107,26 +110,9 @@ refresh_areas(Area *s) continue; } - switch(pid = fork()){ - case -1: - break; - case 0: - execl(zonerefreshprogram, "zonerefresh", s->soarr->owner->name, 0); - threadexitsall(0); - break; - default: - for(;;){ - w = wait(); - if(w == nil) - break; - if(w->pid == pid){ - if(w->msg == nil || *w->msg == 0) - s->needrefresh = 0; - free(w); - break; - } - free(w); - } - } + argv[1] = s->soarr->owner->name; + w = runproc(argv[0], argv, 0); + free(w); } } + |