diff options
author | Mike Pall <mike> | 2010-11-22 22:39:06 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2010-11-22 22:39:06 +0100 |
commit | 73384567962fa8ec7759dc460e1abbb1d388d77d (patch) | |
tree | 7f324fa641e0bf3f8b0fb3e83739b377803cea75 /src | |
parent | 367ff0cdaa12cfc8dcb7cb7d832998fd29500069 (diff) | |
download | luajit-73384567962fa8ec7759dc460e1abbb1d388d77d.tar.gz luajit-73384567962fa8ec7759dc460e1abbb1d388d77d.tar.bz2 luajit-73384567962fa8ec7759dc460e1abbb1d388d77d.zip |
Support os.exit(status|true|false [,close]) (from Lua 5.2).
Diffstat (limited to 'src')
-rw-r--r-- | src/lib_os.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/lib_os.c b/src/lib_os.c index 690bffe8..a62fd3b4 100644 --- a/src/lib_os.c +++ b/src/lib_os.c | |||
@@ -92,8 +92,15 @@ LJLIB_CF(os_getenv) | |||
92 | 92 | ||
93 | LJLIB_CF(os_exit) | 93 | LJLIB_CF(os_exit) |
94 | { | 94 | { |
95 | exit(lj_lib_optint(L, 1, EXIT_SUCCESS)); | 95 | int status; |
96 | return 0; /* to avoid warnings */ | 96 | if (L->base < L->top && tvisbool(L->base)) |
97 | status = boolV(L->base) ? EXIT_SUCCESS : EXIT_FAILURE; | ||
98 | else | ||
99 | status = lj_lib_optint(L, 1, EXIT_SUCCESS); | ||
100 | if (L->base+1 < L->top && tvistruecond(L->base+1)) | ||
101 | lua_close(L); | ||
102 | exit(status); | ||
103 | return 0; /* Unreachable. */ | ||
97 | } | 104 | } |
98 | 105 | ||
99 | LJLIB_CF(os_clock) | 106 | LJLIB_CF(os_clock) |