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);
}
} 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;
}
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;