aboutsummaryrefslogtreecommitdiffstats
path: root/extension/fork.c
diff options
context:
space:
mode:
authorAndrew J. Schorr <aschorr@telemetry-investments.com>2012-04-07 16:30:50 -0400
committerAndrew J. Schorr <aschorr@telemetry-investments.com>2012-04-07 16:30:50 -0400
commitbc9ed3fd239984429613095e6cfc142092f036c4 (patch)
treea005a7ca9054b90af87d2a7b4d8b11a0607e80b8 /extension/fork.c
parentaa23de50eb7c81a3e8f94769c5288aecfeb52b4c (diff)
downloadegawk-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.c20
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);
}