From 58515c8df49b30189af37275fd0bc76a06596af0 Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Thu, 11 Apr 2024 19:10:41 +0200 Subject: [PATCH] [quickjs] console.exit --- src/ecmascript/quickjs/console.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/ecmascript/quickjs/console.c b/src/ecmascript/quickjs/console.c index 01b5adfb..3fb9e294 100644 --- a/src/ecmascript/quickjs/console.c +++ b/src/ecmascript/quickjs/console.c @@ -13,6 +13,7 @@ #include "ecmascript/ecmascript.h" #include "ecmascript/quickjs.h" #include "ecmascript/quickjs/console.h" +#include "main/main.h" #define DEBUG 0 @@ -113,6 +114,20 @@ js_console_error(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst * return js_console_log_common(ctx, this_val, argc, argv, console_error_filename); } +static JSValue +js_console_exit(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv) +{ +#ifdef ECMASCRIPT_DEBUG + fprintf(stderr, "%s:%s\n", __FILE__, __FUNCTION__); +#endif + if (!get_cmd_opt_bool("test")) { + return JS_UNDEFINED; + } + program.retval = JS_ToBool(ctx, argv[0]) ? RET_ERROR : RET_OK; + program.terminate = 1; + return JS_UNDEFINED; +} + static JSValue js_console_toString(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv) { @@ -128,6 +143,7 @@ static const JSCFunctionListEntry js_console_funcs[] = { JS_CFUNC_DEF("assert", 2, js_console_assert), JS_CFUNC_DEF("log", 1, js_console_log), JS_CFUNC_DEF("error", 1, js_console_error), + JS_CFUNC_DEF("exit", 1, js_console_exit), JS_CFUNC_DEF("toString", 0, js_console_toString) };