ucode: parse ucode plugin scripts in raw mode, init search path
authorJo-Philipp Wich <jo@mein.io>
Fri, 12 Aug 2022 19:11:47 +0000 (21:11 +0200)
committerJo-Philipp Wich <jo@mein.io>
Fri, 12 Aug 2022 19:14:27 +0000 (21:14 +0200)
It makes little sense to execute rpcd ucode plugin scripts in template
mode since those scripts are supposed to output structured JSON data,
so change the parse config to compile scripts in raw mode.

Also initialize the default library search path which is required in
recent ucode versions.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
examples/ucode/example-plugin.uc
ucode.c

index a336671538063dfdaf4ea440a80d8d8d08dd005f..a96b703601a7a472bba0cd39c3d3103645a46793 100644 (file)
@@ -1,5 +1,3 @@
-{%
-
 'use strict';
 
 let ubus = require('ubus').connect();
diff --git a/ucode.c b/ucode.c
index face78400d1ef4b92d7fa09854cce748be130352..c67a6193e8c32fd64c125e4b2c7db01ffa9ca394 100644 (file)
--- a/ucode.c
+++ b/ucode.c
@@ -77,7 +77,8 @@ typedef struct {
 static uc_parse_config_t config = {
        .strict_declarations = false,
        .lstrip_blocks = true,
-       .trim_blocks = true
+       .trim_blocks = true,
+       .raw_mode = true
 };
 
 
@@ -928,6 +929,7 @@ rpc_ucode_script_execute(struct ubus_context *ctx, const char *path, uc_program_
 
        script->path = strncpy(pptr, path, pathlen);
 
+       uc_search_path_init(&config.module_search_path);
        uc_vm_init(&script->vm, &config);
        rpc_ucode_init_globals(script);