diff options
author | Jo-Philipp Wich <jo@mein.io> | 2024-12-12 00:53:26 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2024-12-12 00:53:26 +0100 |
commit | 175686c97d828bae2eef81cc9b7b2daa457af04d (patch) | |
tree | f59a345b1305558e5400310c74e29707293a9e35 | |
parent | 0b80ceb29311b7eccce9d318e5315e5d88d29c28 (diff) |
uci: eliminate usage of global variables
Use the VM registry to store the last uci error code and lookup the uci
cursor resource type at resource creation time instead of caching it in
a global variable.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r-- | lib/uci.c | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -53,11 +53,15 @@ #include "ucode/module.h" -#define ok_return(expr) do { last_error = 0; return (expr); } while(0) -#define err_return(err) do { last_error = err; return NULL; } while(0) +#define ok_return(expr) do { \ + uc_vm_registry_delete(vm, "uci.error"); \ + return (expr); \ +} while(0) -static int last_error = 0; -static uc_resource_type_t *cursor_type; +#define err_return(err) do { \ + uc_vm_registry_set(vm, "uci.error", ucv_int64_new(err)); \ + return NULL; \ +} while(0) enum pkg_cmd { CMD_SAVE, @@ -86,6 +90,7 @@ enum pkg_cmd { static uc_value_t * uc_uci_error(uc_vm_t *vm, size_t nargs) { + int last_error = ucv_int64_get(uc_vm_registry_get(vm, "uci.error")); char buf[sizeof("Unknown error: -9223372036854775808")]; uc_value_t *errmsg; @@ -110,7 +115,7 @@ uc_uci_error(uc_vm_t *vm, size_t nargs) errmsg = ucv_string_new(buf); } - last_error = 0; + uc_vm_registry_delete(vm, "uci.error"); return errmsg; } @@ -179,7 +184,7 @@ uc_uci_cursor(uc_vm_t *vm, size_t nargs) err_return(rv); } - ok_return(uc_resource_new(cursor_type, c)); + ok_return(ucv_resource_create(vm, "uci.cursor", c)); } @@ -1868,5 +1873,5 @@ void uc_module_init(uc_vm_t *vm, uc_value_t *scope) { uc_function_list_register(scope, global_fns); - cursor_type = uc_type_declare(vm, "uci.cursor", cursor_fns, close_uci); + uc_type_declare(vm, "uci.cursor", cursor_fns, close_uci); } |