From: Elias Fleckenstein Date: Thu, 30 Dec 2021 20:09:41 +0000 (+0100) Subject: common/ refactoring X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=a454f9e1f2b09d4799e8ac3c4a4eb62bbba7b823;p=uwu-lang.git common/ refactoring --- diff --git a/common/dl.h b/common/dl.h new file mode 100644 index 0000000..143b422 --- /dev/null +++ b/common/dl.h @@ -0,0 +1,14 @@ +#ifndef _COMMON_DL_H_ +#define _COMMON_DL_H_ + +#include +#include "err.h" + +inline static void check_dlerror() +{ + char *err = dlerror(); + if (err) + error("library error: %s\n", err); +} + +#endif diff --git a/common/err.h b/common/err.h index 1dccbf9..34620bb 100644 --- a/common/err.h +++ b/common/err.h @@ -1,5 +1,5 @@ -#ifndef _ERR_H_ -#define _ERR_H_ +#ifndef _COMMON_ERR_H_ +#define _COMMON_ERR_H_ #include #include diff --git a/common/file.h b/common/file.h new file mode 100644 index 0000000..c5e8036 --- /dev/null +++ b/common/file.h @@ -0,0 +1,19 @@ +#ifndef _COMMON_FILE_H_ +#define _COMMON_FILE_H_ + +#include +#include + +inline static bool file_exists(const char *filename) +{ + FILE *f = fopen(filename, "r"); + + if (f) { + fclose(f); + return true; + } + + return false; +} + +#endif diff --git a/common/str.h b/common/str.h index b0baa37..fc5f587 100644 --- a/common/str.h +++ b/common/str.h @@ -1,5 +1,5 @@ -#ifndef _UTIL_H_ -#define _UTIL_H_ +#ifndef _COMMON_STR_H_ +#define _COMMON_STR_H_ #include #include diff --git a/src/load.c b/src/load.c index edeba97..aeee1c2 100644 --- a/src/load.c +++ b/src/load.c @@ -6,6 +6,8 @@ #include #include "common/err.h" #include "common/str.h" +#include "common/file.h" +#include "common/dl.h" #include "load.h" #include "parse.h" @@ -33,18 +35,6 @@ static char *dirname_wrapper(const char *name) return wrap_name_func(name, &dirname); } -static bool file_exists(const char *filename) -{ - FILE *f = fopen(filename, "r"); - - if (f) { - fclose(f); - return true; - } - - return false; -} - // type definitions typedef struct @@ -148,9 +138,7 @@ static Module *require_module(LoadState *state, char *module_path) state->program.libraries = realloc(state->program.libraries, sizeof(void *) * ++state->program.num_libraries); state->program.libraries[state->program.num_libraries - 1] = module->handle.lib = dlopen(filename, RTLD_LAZY); - char *err = dlerror(); - if (err) - error("library error: %s\n", err); + check_dlerror(); } return module; @@ -293,10 +281,7 @@ static void load_functions(LoadState *state, Module *module) char *symbol = asprintf_wrapper("uwu_%s", link->name); link->ref->value.native = dlsym(module->handle.lib, symbol); - char *err = dlerror(); - if (err) - error("library error: %s\n", err); - + check_dlerror(); free(symbol); } } diff --git a/src/run.c b/src/run.c index 7733c8d..36133fc 100644 --- a/src/run.c +++ b/src/run.c @@ -2,6 +2,7 @@ #include #include #include "common/err.h" +#include "common/dl.h" #include "load.h" #include "run.h" @@ -29,9 +30,7 @@ void run_module(const char *progname, const char *modname, size_t num_args, char char *(*uwuvm_print_value )(UwUVMValue ) = dlsym(program.api_library, "uwuvm_print_value" ); void (*uwuvm_delet_value )(UwUVMValue ) = dlsym(program.api_library, "uwuvm_delet_value" ); - char *err = dlerror(); - if (err) - error("library error: %s\n", err); + check_dlerror(); UwUVMExpression arg_expressions[num_args];