scripting: Added dedicated vm error functions
authorLukas Krickl <lukas@krickl.dev>
Fri, 13 Mar 2026 14:59:17 +0000 (15:59 +0100)
committerLukas Krickl <lukas@krickl.dev>
Fri, 13 Mar 2026 14:59:17 +0000 (15:59 +0100)
src/l_lsl.c
src/l_lsl.h

index e4c0c316d03e101b50eb5712bca01c04017fc6c2..019836ca32bd52d3db0e8c29a148888f15f38d15 100644 (file)
@@ -13,6 +13,30 @@ struct l_lsl_vm l_lsl_vm_init(void) {
        return v;
 }
 
+int l_lsl_err(struct l_lsl_vm *v, enum l_lsl_error err, const char *fmt, ...) {
+       int res;
+       va_list args;
+
+       va_start(args, fmt);
+       res = u_vfprintf(u_stderr, fmt, args);
+       va_end(args);
+
+       v->err = err;
+       return res;
+}
+
+int l_lsl_warn(struct l_lsl_vm *v, enum l_lsl_error err, const char *fmt, ...) {
+       int res;
+       va_list args;
+       LRTS_UNUSED(v);
+       LRTS_UNUSED(err);
+
+       va_start(args, fmt);
+       res = u_vfprintf(u_stderr, fmt, args);
+       va_end(args);
+       return res;
+}
+
 void l_lsl_vm_free(struct l_lsl_vm *vm) {
        LRTS_UNUSED(vm);
 }
@@ -76,13 +100,14 @@ const char* l_lsl_next_token(struct l_lsl_vm *v, const char *code,
                } else if (c == 'b') {
                        /* bin */
                } else {
-                       u_log(U_LOG_CRIT, "unknown number base: 0%c\n", c);
+                       l_lsl_err(v, L_LSL_ERR_INVALID_NUMBER_BASE, 
+                                       "unknown number base: 0%c\n", c);
                        return LRTS_NULL;
                }
 
 
        } else {
-                       u_log(U_LOG_CRIT, "unknown char: %c\n", c);
+                       l_lsl_err(v, L_LSL_ERR_LEX, "unknown char: %c\n", c);
                        return LRTS_NULL;
        }
 
index 918c405d2346da10a36509ecf869e0e024bab2b3..e61ed877568e5617973368bae9b8a2346c86f360 100644 (file)
@@ -40,7 +40,9 @@ enum l_lsl_data_type {
 
 enum l_lsl_error {
        L_LSL_ERR_OK = 0,
-       L_LSL_ERR_FILE_NOT_FOUND
+       L_LSL_ERR_FILE_NOT_FOUND,
+       L_LSL_ERR_INVALID_NUMBER_BASE,
+       L_LSL_ERR_LEX
 };
 
 struct l_lsl_table;