diff options
author | pryazha <pryadeiniv@mail.ru> | 2025-03-27 08:29:28 +0500 |
---|---|---|
committer | pryazha <pryadeiniv@mail.ru> | 2025-03-27 08:29:28 +0500 |
commit | 92850237f42cecfeba519bc15f7f5bb7a76cde5f (patch) | |
tree | 590d924ba4ec0ea082f77fa8227ee84bf03c993f /prb_sys.c | |
parent | aa00f2f2d7cc70edb45726dc21d359bc05036387 (diff) |
renaming (mostly)
Diffstat (limited to 'prb_sys.c')
-rw-r--r-- | prb_sys.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/prb_sys.c b/prb_sys.c new file mode 100644 index 0000000..3747f18 --- /dev/null +++ b/prb_sys.c @@ -0,0 +1,52 @@ +/* TODO(pryazha): OS specific */ +FLS sys_read_entire_file_fls(Arena *a, const char *fname) +{ + FILE *f; + FLS r; + S32 len; + + MEM0STRUCT(&r); + + f = fopen(fname, "rb"); + if (!f) + return r; + + if (fseek(f, 0, SEEK_END) == -1) + goto error; + if ((len = ftell(f)) == -1) + goto error; + rewind(f); + + r.p = push_arena(a, len+1); + if (!fread(r.p, len, 1, f)) + goto error; + r.p[len] = 0; + r.len = len+1; + + fclose(f); + + return r; +error: + fclose(f); + return r; +} + +#define PRGE_MAX_PATH 256 + +char *sys_getbindir(Arena *a) +{ + U64 size; + char *path; + ssize_t len; + + size = PRGE_MAX_PATH*sizeof(char); + path = push_arena(a, size); + + len = readlink("/proc/self/exe", path, size-1); + if (len <= 0) + return path; + + path[len] = 0; + + return path; +} |