|
@@ -3393,6 +3393,25 @@ qi_value_t *qi_builtin_get_globals(qi_state_t *state, qi_size_t pargc,
|
|
|
return qi_make_table(state, table);
|
|
|
}
|
|
|
|
|
|
+qi_value_t *qi_builtin_get_rlimit(qi_state_t *state, qi_size_t pargc,
|
|
|
+ qi_list_t *pargs) {
|
|
|
+ return qi_make_number(state, state->rlimit);
|
|
|
+}
|
|
|
+
|
|
|
+qi_value_t *qi_builtin_set_rlimit(qi_state_t *state, qi_size_t pargc,
|
|
|
+ qi_list_t *pargs) {
|
|
|
+ qi_value_t *a = qi_list_data(pargs, 0);
|
|
|
+
|
|
|
+ if (a->type != QI_NUMBER)
|
|
|
+ qi_throw_format(state,
|
|
|
+ "expected first argument to be: number, but got: %s",
|
|
|
+ _qi_type(state, a));
|
|
|
+
|
|
|
+ state->rlimit = (size_t)a->value.number;
|
|
|
+
|
|
|
+ return state->nil;
|
|
|
+}
|
|
|
+
|
|
|
#define is_valid_mode(fmod) \
|
|
|
(strcmp((fmod), "w") == 0 || strcmp((fmod), "r") == 0 || \
|
|
|
strcmp((fmod), "a") == 0 || strcmp((fmod), "a+") == 0 || \
|
|
@@ -4147,6 +4166,9 @@ static void qi_state_setup(qi_state_t *state) {
|
|
|
qi_add_builtin(state, "get_global", 1, qi_builtin_get_global);
|
|
|
qi_add_builtin(state, "get_globals", 0, qi_builtin_get_globals);
|
|
|
|
|
|
+ qi_add_builtin(state, "get_rlimit", 0, qi_builtin_get_rlimit);
|
|
|
+ qi_add_builtin(state, "set_rlimit", 1, qi_builtin_set_rlimit);
|
|
|
+
|
|
|
qi_add_builtin(state, "fopen", 2, qi_builtin_fopen);
|
|
|
qi_add_builtin(state, "fread", 2, qi_builtin_fread);
|
|
|
qi_add_builtin(state, "fgets", 2, qi_builtin_fgets);
|