summaryrefslogtreecommitdiffhomepage
path: root/src/os-unix.h
diff options
context:
space:
mode:
authorMichael Smith <mikesmiffy128@gmail.com>2022-03-24 02:06:28 +0000
committerMichael Smith <mikesmiffy128@gmail.com>2022-03-24 04:38:25 +0000
commit00ad7cdd3d05d09a43bda972c823fdc440feabb9 (patch)
tree7f9725341e598f273fc1fb6ca0803c794bb67698 /src/os-unix.h
parentb18326a75078530df7712667f41b4ea354e1da3e (diff)
Clean up gameinfo_init() and other random stuff
- Just ask the engine for the game directory instead of doing the stupid argv sniffing hacks from the early days of trying to get the damn thing working. - Also add some other path variables, functions and whatnot, and do some other minor tidying up. - Also also, another damn copyright year, somebody please help me. Unfortunate negative effect off this change: con_init() no longer reports the game name, because it has to happen before gameinfo_init(). I've decided I don't really care, though.
Diffstat (limited to 'src/os-unix.h')
-rw-r--r--src/os-unix.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/os-unix.h b/src/os-unix.h
index 3b63bcc..6522029 100644
--- a/src/os-unix.h
+++ b/src/os-unix.h
@@ -35,6 +35,7 @@ typedef char os_char;
#define os_access access
#define os_stat stat
#define os_getenv getenv
+#define os_getcwd getcwd
#define OS_DLSUFFIX ".so"
@@ -42,6 +43,16 @@ typedef char os_char;
#define os_dlsym dlsym
+static inline bool os_dlfile(void *m, char *buf, int sz) {
+ // NOTE: this might be linux/glibc-specific (I haven't checked every
+ // implementation). this is fine as we don't use it in any build-time code,
+ // only in the plugin itself. just keep it in mind!
+ struct link_map *lm = m;
+ ssz len = strlen(lm->l_name) + 1;
+ if (ssz > sz) { errno = ENAMETOOLONG; return false; }
+ memcpy(buf, lm->l_name, ssz); return true;
+}
+
// unix mprot flags are much nicer but cannot be defined in terms of the windows
// ones, so we use the windows ones and define them in terms of the unix ones.
// another victory for stupid!