-[submodule "common"]
- path = common
- url = git@github.com:EliasFleckenstein03/uwu-common
[submodule "std"]
path = std
url = git@github.com:EliasFleckenstein03/uwu-std
+++ /dev/null
-Subproject commit a636a960a0866a94719aff01774b9533743ee072
--- /dev/null
+#ifndef _UWU_COMMON_DIR_H_
+#define _UWU_COMMON_DIR_H_
+
+#include <stdlib.h>
+#include <libgen.h>
+#include <string.h>
+
+static char *wrap_name_func(const char *name, char *(*fn)(char *))
+{
+ char *copy = strdup(name);
+ char *result = fn(copy);
+ char *result_copy = strdup(result);
+
+ free(copy);
+ return result_copy;
+}
+
+static inline char *basename_wrapper(const char *name)
+{
+ return wrap_name_func(name, &basename);
+}
+
+static inline char *dirname_wrapper(const char *name)
+{
+ return wrap_name_func(name, &dirname);
+}
+
+#endif
--- /dev/null
+#ifndef _UWU_COMMON_DL_H_
+#define _UWU_COMMON_DL_H_
+
+#include <dlfcn.h>
+#include "err.h"
+
+inline static void check_dlerror()
+{
+ char *err = dlerror();
+ if (err)
+ error("library error: %s\n", err);
+}
+
+#endif
--- /dev/null
+#ifndef _UWU_COMMON_ERR_H_
+#define _UWU_COMMON_ERR_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+static inline void error(const char *format, ...)
+{
+ va_list args;
+ va_start(args, format);
+ vfprintf(stderr, format, args);
+ va_end(args);
+ exit(1);
+}
+
+static inline void syserror(const char *call, FILE *file)
+{
+ perror(call);
+
+ if (file)
+ fclose(file);
+
+ exit(1);
+}
+
+#endif
--- /dev/null
+#ifndef _UWU_COMMON_FILE_H_
+#define _UWU_COMMON_FILE_H_
+
+#include <stdio.h>
+#include <stdbool.h>
+
+inline static bool file_exists(const char *filename)
+{
+ FILE *f = fopen(filename, "r");
+
+ if (f) {
+ fclose(f);
+ return true;
+ }
+
+ return false;
+}
+
+#endif
--- /dev/null
+#ifndef _UWU_COMMON_STR_H_
+#define _UWU_COMMON_STR_H_
+
+#include <stdio.h>
+#include <stdarg.h>
+
+static inline char *asprintf_wrapper(const char *format, ...)
+{
+ va_list args;
+ va_start(args, format);
+ char *ptr;
+ vasprintf(&ptr, format, args);
+ va_end(args);
+ return ptr;
+}
+
+#endif