diff options
Diffstat (limited to 'example/sys.c')
-rw-r--r-- | example/sys.c | 55 |
1 files changed, 21 insertions, 34 deletions
diff --git a/example/sys.c b/example/sys.c index f9f5c33..881d2be 100644 --- a/example/sys.c +++ b/example/sys.c @@ -1,43 +1,30 @@ #include "prb.h" +#include <libgen.h> +#include <stdio.h> -i32 main(void) +i32 main(int c, char **v) { - void *mem; - arena_t arena; - char *dir, *content, *path; - const char *filename = "build.sh"; - - printf("os: "); - switch (OS) { - case OS_LINUX: - printf("linux\n"); + info("os:"); + switch (os) { + case os_linux: + info("linux"); break; - case OS_WINDOWS: - printf("windows\n"); + case os_windows: + info("windows"); break; default: - printf("unsupported\n"); + info("unsupported"); return 1; } - - mem = sys_alloc(megabytes(32)); - assert(mem); - sys_free(mem, megabytes(32)); - - arena = alloc_arena(megabytes(32)); - - dir = sys_getbindir(&arena); - printf("bin directory \"%s\"\n", dir); - - path = push_arena(&arena, MAX_PATH); - memset(path, 0, MAX_PATH); - snprintf(path, MAX_PATH, "%s/%s", dir, filename); - - if (sys_read_file(&arena, &content, path)) - printf("%s content:\n%s", path, content); - else - printf("failed to read %s\n", path); - - if (!sys_read_file(&arena, &content, filename)) - die("failed to read %s\n", filename); + char *dir = dirname(*v); + info("bin directory \"%s\"", dir); + const char *filename = "build.sh"; + char path[1024] = {0}; + snprintf(path, 1024, "%s/%s", dir, filename); + struct arena arena = alloc_arena(megabytes(32)); + char *content = 0; + if (!(content = read_entire_file(&arena, 0, path))) + die("failed to read %s", path); + info("%s content:\n%s", path, content); + return 0; } |