diff options
author | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2012-04-07 16:30:50 -0400 |
---|---|---|
committer | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2012-04-07 16:30:50 -0400 |
commit | bc9ed3fd239984429613095e6cfc142092f036c4 (patch) | |
tree | a005a7ca9054b90af87d2a7b4d8b11a0607e80b8 /extension/fork.c | |
parent | aa23de50eb7c81a3e8f94769c5288aecfeb52b4c (diff) | |
download | egawk-bc9ed3fd239984429613095e6cfc142092f036c4.tar.gz egawk-bc9ed3fd239984429613095e6cfc142092f036c4.tar.bz2 egawk-bc9ed3fd239984429613095e6cfc142092f036c4.zip |
Extension enhancements and tests.
Diffstat (limited to 'extension/fork.c')
-rw-r--r-- | extension/fork.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/extension/fork.c b/extension/fork.c index 7d6ab362..5a6e96d5 100644 --- a/extension/fork.c +++ b/extension/fork.c @@ -93,6 +93,25 @@ do_waitpid(int nargs) return make_number((AWKNUM) ret); } + +/* do_wait --- provide dynamically loaded wait() builtin for gawk */ + +static NODE * +do_wait(int nargs) +{ + int ret; + + if (do_lint && nargs > 0) + lintwarn("wait: called with too many arguments"); + + ret = wait(NULL); + if (ret < 0) + update_ERRNO_int(errno); + + /* Set the return value */ + return make_number((AWKNUM) ret); +} + /* dlload --- load new builtins in this library */ NODE * @@ -102,5 +121,6 @@ void *dl; { make_builtin("fork", do_fork, 0); make_builtin("waitpid", do_waitpid, 1); + make_builtin("wait", do_wait, 0); return make_number((AWKNUM) 0); } |