summaryrefslogtreecommitdiff
path: root/example/sys.c
blob: f9f5c333cbb8ecdbb49c0c337226364cfd607d4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "prb.h"

i32 main(void)
{
	void *mem;
	arena_t arena;
	char *dir, *content, *path;
	const char *filename = "build.sh";

	printf("os: ");
	switch (OS) {
	case OS_LINUX:
		printf("linux\n");
		break;
	case OS_WINDOWS:
		printf("windows\n");
		break;
	default:
		printf("unsupported\n");
		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);
}