Reformat os
This commit is contained in:
@@ -46,16 +46,16 @@ b8 wapp_mem_arena_init_custom(Arena **arena, u64 base_capacity, MemAllocFlags fl
|
|||||||
);
|
);
|
||||||
|
|
||||||
arena_ptr->buf = (u8 *)wapp_os_mem_alloc(NULL, arena_capacity, WAPP_MEM_ACCESS_READ_WRITE, flags,
|
arena_ptr->buf = (u8 *)wapp_os_mem_alloc(NULL, arena_capacity, WAPP_MEM_ACCESS_READ_WRITE, flags,
|
||||||
zero_buffer ? WAPP_MEM_INIT_INITIALISED : WAPP_MEM_INIT_UNINITIALISED);
|
zero_buffer ? WAPP_MEM_INIT_INITIALISED : WAPP_MEM_INIT_UNINITIALISED);
|
||||||
|
|
||||||
if (!(arena_ptr->buf)) {
|
if (!(arena_ptr->buf)) {
|
||||||
wapp_mem_arena_destroy(arena);
|
wapp_mem_arena_destroy(arena);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
arena_ptr->capacity = arena_capacity;
|
arena_ptr->capacity = arena_capacity;
|
||||||
arena_ptr->offset = arena_ptr->buf;
|
arena_ptr->offset = arena_ptr->buf;
|
||||||
arena_ptr->committed = (flags & WAPP_MEM_ALLOC_COMMIT) == WAPP_MEM_ALLOC_COMMIT;
|
arena_ptr->committed = (flags & WAPP_MEM_ALLOC_COMMIT) == WAPP_MEM_ALLOC_COMMIT;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -79,8 +79,8 @@ void *wapp_mem_arena_alloc_aligned(Arena *arena, u64 size, u64 alignment) {
|
|||||||
#ifdef WAPP_PLATFORM_WINDOWS
|
#ifdef WAPP_PLATFORM_WINDOWS
|
||||||
if (!(arena->committed)) {
|
if (!(arena->committed)) {
|
||||||
wapp_os_mem_alloc(alloc_start, (uptr)(arena->offset) - (uptr)(alloc_start),
|
wapp_os_mem_alloc(alloc_start, (uptr)(arena->offset) - (uptr)(alloc_start),
|
||||||
WAPP_MEM_ACCESS_READ_WRITE, WAPP_MEM_ALLOC_COMMIT,
|
WAPP_MEM_ACCESS_READ_WRITE, WAPP_MEM_ALLOC_COMMIT,
|
||||||
WAPP_MEM_INIT_UNINITIALISED);
|
WAPP_MEM_INIT_UNINITIALISED);
|
||||||
}
|
}
|
||||||
#endif // ifdef WAPP_PLATFORM_WINDOWS
|
#endif // ifdef WAPP_PLATFORM_WINDOWS
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ void *wapp_mem_arena_alloc_aligned(Arena *arena, u64 size, u64 alignment) {
|
|||||||
|
|
||||||
void *wapp_mem_arena_realloc(Arena *arena, void *ptr, u64 old_size, u64 new_size) {
|
void *wapp_mem_arena_realloc(Arena *arena, void *ptr, u64 old_size, u64 new_size) {
|
||||||
if ((u8*)ptr < arena->buf || (u8*)ptr > arena->offset ||
|
if ((u8*)ptr < arena->buf || (u8*)ptr > arena->offset ||
|
||||||
arena->offset + new_size >= arena->buf + arena->capacity) {
|
arena->offset + new_size >= arena->buf + arena->capacity) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ void *wapp_mem_arena_realloc(Arena *arena, void *ptr, u64 old_size, u64 new_size
|
|||||||
|
|
||||||
void *wapp_mem_arena_realloc_aligned(Arena *arena, void *ptr, u64 old_size, u64 new_size, u64 alignment) {
|
void *wapp_mem_arena_realloc_aligned(Arena *arena, void *ptr, u64 old_size, u64 new_size, u64 alignment) {
|
||||||
if ((u8*)ptr < arena->buf || (u8*)ptr > arena->offset ||
|
if ((u8*)ptr < arena->buf || (u8*)ptr > arena->offset ||
|
||||||
arena->offset + new_size >= arena->buf + arena->capacity) {
|
arena->offset + new_size >= arena->buf + arena->capacity) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ BEGIN_C_LINKAGE
|
|||||||
|
|
||||||
typedef struct arena Arena;
|
typedef struct arena Arena;
|
||||||
|
|
||||||
#define wapp_mem_arena_init(arena_dptr, base_capacity) \
|
#define wapp_mem_arena_init(arena_dptr, base_capacity) \
|
||||||
(wapp_mem_arena_init_custom(arena_dptr, base_capacity, WAPP_MEM_ALLOC_RESERVE, false))
|
(wapp_mem_arena_init_custom(arena_dptr, base_capacity, WAPP_MEM_ALLOC_RESERVE, false))
|
||||||
#define wapp_mem_arena_init_commit(arena_dptr, base_capacity) \
|
#define wapp_mem_arena_init_commit(arena_dptr, base_capacity) \
|
||||||
(wapp_mem_arena_init_custom(arena_dptr, base_capacity, WAPP_MEM_ALLOC_RESERVE | WAPP_MEM_ALLOC_COMMIT, false))
|
(wapp_mem_arena_init_custom(arena_dptr, base_capacity, WAPP_MEM_ALLOC_RESERVE | WAPP_MEM_ALLOC_COMMIT, false))
|
||||||
#define wapp_mem_arena_init_zero(arena_dptr, base_capacity) \
|
#define wapp_mem_arena_init_zero(arena_dptr, base_capacity) \
|
||||||
(wapp_mem_arena_init_custom(arena_dptr, base_capacity, WAPP_MEM_ALLOC_RESERVE, true))
|
(wapp_mem_arena_init_custom(arena_dptr, base_capacity, WAPP_MEM_ALLOC_RESERVE, true))
|
||||||
#define wapp_mem_arena_init_commit_and_zero(arena_dptr, base_capacity) \
|
#define wapp_mem_arena_init_commit_and_zero(arena_dptr, base_capacity) \
|
||||||
(wapp_mem_arena_init_custom(arena_dptr, base_capacity, WAPP_MEM_ALLOC_RESERVE | WAPP_MEM_ALLOC_COMMIT, true))
|
(wapp_mem_arena_init_custom(arena_dptr, base_capacity, WAPP_MEM_ALLOC_RESERVE | WAPP_MEM_ALLOC_COMMIT, true))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -27,13 +27,13 @@ typedef struct arena Arena;
|
|||||||
* control over how the Arena is initialised. Wrapper macros are provided for
|
* control over how the Arena is initialised. Wrapper macros are provided for
|
||||||
* easier use.
|
* easier use.
|
||||||
*/
|
*/
|
||||||
b8 wapp_mem_arena_init_custom(Arena **arena, u64 base_capacity, MemAllocFlags flags, b8 zero_buffer);
|
b8 wapp_mem_arena_init_custom(Arena **arena, u64 base_capacity, MemAllocFlags flags, b8 zero_buffer);
|
||||||
void *wapp_mem_arena_alloc(Arena *arena, u64 size);
|
void *wapp_mem_arena_alloc(Arena *arena, u64 size);
|
||||||
void *wapp_mem_arena_alloc_aligned(Arena *arena, u64 size, u64 alignment);
|
void *wapp_mem_arena_alloc_aligned(Arena *arena, u64 size, u64 alignment);
|
||||||
void *wapp_mem_arena_realloc(Arena *arena, void *ptr, u64 old_size, u64 new_size);
|
void *wapp_mem_arena_realloc(Arena *arena, void *ptr, u64 old_size, u64 new_size);
|
||||||
void *wapp_mem_arena_realloc_aligned(Arena *arena, void *ptr, u64 old_size, u64 new_size, u64 alignment);
|
void *wapp_mem_arena_realloc_aligned(Arena *arena, void *ptr, u64 old_size, u64 new_size, u64 alignment);
|
||||||
void wapp_mem_arena_clear(Arena *arena);
|
void wapp_mem_arena_clear(Arena *arena);
|
||||||
void wapp_mem_arena_destroy(Arena **arena);
|
void wapp_mem_arena_destroy(Arena **arena);
|
||||||
|
|
||||||
#ifdef WAPP_PLATFORM_CPP
|
#ifdef WAPP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ wapp_intern void *mem_arena_alloc(u64 size, void *alloc_obj);
|
|||||||
wapp_intern void *mem_arena_alloc_aligned(u64 size, u64 alignment, void *alloc_obj);
|
wapp_intern void *mem_arena_alloc_aligned(u64 size, u64 alignment, void *alloc_obj);
|
||||||
wapp_intern void *mem_arena_realloc(void *ptr, u64 old_size, u64 new_size, void *alloc_obj);
|
wapp_intern void *mem_arena_realloc(void *ptr, u64 old_size, u64 new_size, void *alloc_obj);
|
||||||
wapp_intern void *mem_arena_realloc_aligned(void *ptr, u64 old_size, u64 new_size, u64 alignment,
|
wapp_intern void *mem_arena_realloc_aligned(void *ptr, u64 old_size, u64 new_size, u64 alignment,
|
||||||
void *alloc_obj);
|
void *alloc_obj);
|
||||||
|
|
||||||
|
|
||||||
Allocator wapp_mem_arena_allocator_init_custom(u64 base_capacity, MemAllocFlags flags, b8 zero_buffer) {
|
Allocator wapp_mem_arena_allocator_init_custom(u64 base_capacity, MemAllocFlags flags, b8 zero_buffer) {
|
||||||
@@ -19,9 +19,9 @@ Allocator wapp_mem_arena_allocator_init_custom(u64 base_capacity, MemAllocFlags
|
|||||||
return allocator;
|
return allocator;
|
||||||
}
|
}
|
||||||
|
|
||||||
allocator.alloc = mem_arena_alloc;
|
allocator.alloc = mem_arena_alloc;
|
||||||
allocator.alloc_aligned = mem_arena_alloc_aligned;
|
allocator.alloc_aligned = mem_arena_alloc_aligned;
|
||||||
allocator.realloc = mem_arena_realloc;
|
allocator.realloc = mem_arena_realloc;
|
||||||
allocator.realloc_aligned = mem_arena_realloc_aligned;
|
allocator.realloc_aligned = mem_arena_realloc_aligned;
|
||||||
|
|
||||||
return allocator;
|
return allocator;
|
||||||
@@ -53,7 +53,7 @@ wapp_intern void *mem_arena_realloc(void *ptr, u64 old_size, u64 new_size, void
|
|||||||
}
|
}
|
||||||
|
|
||||||
wapp_intern void *mem_arena_realloc_aligned(void *ptr, u64 old_size, u64 new_size, u64 alignment,
|
wapp_intern void *mem_arena_realloc_aligned(void *ptr, u64 old_size, u64 new_size, u64 alignment,
|
||||||
void *alloc_obj) {
|
void *alloc_obj) {
|
||||||
Arena *arena = (Arena *)alloc_obj;
|
Arena *arena = (Arena *)alloc_obj;
|
||||||
return wapp_mem_arena_realloc_aligned(arena, ptr, old_size, new_size, alignment);
|
return wapp_mem_arena_realloc_aligned(arena, ptr, old_size, new_size, alignment);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,13 +12,13 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WAPP_PLATFORM_CPP
|
#endif // !WAPP_PLATFORM_CPP
|
||||||
|
|
||||||
#define wapp_mem_arena_allocator_init(base_capacity) \
|
#define wapp_mem_arena_allocator_init(base_capacity) \
|
||||||
(wapp_mem_arena_allocator_init_custom(base_capacity, WAPP_MEM_ALLOC_RESERVE, false))
|
(wapp_mem_arena_allocator_init_custom(base_capacity, WAPP_MEM_ALLOC_RESERVE, false))
|
||||||
#define wapp_mem_arena_allocator_init_commit(base_capacity) \
|
#define wapp_mem_arena_allocator_init_commit(base_capacity) \
|
||||||
(wapp_mem_arena_allocator_init_custom(base_capacity, WAPP_MEM_ALLOC_RESERVE | WAPP_MEM_ALLOC_COMMIT, false))
|
(wapp_mem_arena_allocator_init_custom(base_capacity, WAPP_MEM_ALLOC_RESERVE | WAPP_MEM_ALLOC_COMMIT, false))
|
||||||
#define wapp_mem_arena_allocator_init_zero(base_capacity) \
|
#define wapp_mem_arena_allocator_init_zero(base_capacity) \
|
||||||
(wapp_mem_arena_allocator_init_custom(base_capacity, WAPP_MEM_ALLOC_RESERVE, true))
|
(wapp_mem_arena_allocator_init_custom(base_capacity, WAPP_MEM_ALLOC_RESERVE, true))
|
||||||
#define wapp_mem_arena_allocator_init_commit_and_zero(base_capacity) \
|
#define wapp_mem_arena_allocator_init_commit_and_zero(base_capacity) \
|
||||||
(wapp_mem_arena_allocator_init_custom(base_capacity, WAPP_MEM_ALLOC_RESERVE | WAPP_MEM_ALLOC_COMMIT, true))
|
(wapp_mem_arena_allocator_init_custom(base_capacity, WAPP_MEM_ALLOC_RESERVE | WAPP_MEM_ALLOC_COMMIT, true))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -34,9 +34,9 @@ u32 wapp_cpath_join_path(Str8 *dst, const Str8List *parts) {
|
|||||||
|
|
||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
const Str8Node *node = first_node;
|
const Str8Node *node = first_node;
|
||||||
u64 node_index = 1;
|
u64 node_index = 1;
|
||||||
b8 running = node_index < parts->node_count;
|
b8 running = node_index < parts->node_count;
|
||||||
while (running && node->next) {
|
while (running && node->next) {
|
||||||
node = node->next;
|
node = node->next;
|
||||||
if (node->item->size == 0) {
|
if (node->item->size == 0) {
|
||||||
@@ -44,9 +44,9 @@ u32 wapp_cpath_join_path(Str8 *dst, const Str8List *parts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (dst->size > 0) {
|
if (dst->size > 0) {
|
||||||
char dst_last = wapp_str8_get(dst, dst->size - 1);
|
char dst_last = wapp_str8_get(dst, dst->size - 1);
|
||||||
char node_start = wapp_str8_get(node->item, 0);
|
char node_start = wapp_str8_get(node->item, 0);
|
||||||
b8 add_path_sep = dst_last != WAPP_PATH_SEP && node_start != WAPP_PATH_SEP;
|
b8 add_path_sep = dst_last != WAPP_PATH_SEP && node_start != WAPP_PATH_SEP;
|
||||||
|
|
||||||
if (add_path_sep) {
|
if (add_path_sep) {
|
||||||
wapp_str8_concat_capped(dst, &separator);
|
wapp_str8_concat_capped(dst, &separator);
|
||||||
@@ -68,8 +68,8 @@ Str8 *dirup(const Allocator *allocator, Str8RO *path, u64 levels) {
|
|||||||
goto RETURN_DIRUP;
|
goto RETURN_DIRUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
b8 absolute = wapp_str8_get(path, 0) == WAPP_PATH_SEP;
|
b8 absolute = wapp_str8_get(path, 0) == WAPP_PATH_SEP;
|
||||||
Str8 separator = wapp_str8_buf(4);
|
Str8 separator = wapp_str8_buf(4);
|
||||||
wapp_str8_push_back(&separator, WAPP_PATH_SEP);
|
wapp_str8_push_back(&separator, WAPP_PATH_SEP);
|
||||||
|
|
||||||
if (path->size == 0) {
|
if (path->size == 0) {
|
||||||
@@ -109,10 +109,10 @@ Str8 *dirup(const Allocator *allocator, Str8RO *path, u64 levels) {
|
|||||||
wapp_dbl_list_pop_back(Str8, Str8Node, parts);
|
wapp_dbl_list_pop_back(Str8, Str8Node, parts);
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 alignment = sizeof(void *) * 2;
|
u64 alignment = sizeof(void *) * 2;
|
||||||
u64 alloc_size = wapp_str8_list_total_size(parts) + parts->node_count * separator.size;
|
u64 alloc_size = wapp_str8_list_total_size(parts) + parts->node_count * separator.size;
|
||||||
u64 modulo = alloc_size & (alignment - 1);
|
u64 modulo = alloc_size & (alignment - 1);
|
||||||
alloc_size += alignment - modulo;
|
alloc_size += alignment - modulo;
|
||||||
|
|
||||||
output = wapp_str8_alloc_buf(allocator, alloc_size);
|
output = wapp_str8_alloc_buf(allocator, alloc_size);
|
||||||
if (output) {
|
if (output) {
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ enum {
|
|||||||
CPATH_JOIN_INSUFFICIENT_DST_CAPACITY,
|
CPATH_JOIN_INSUFFICIENT_DST_CAPACITY,
|
||||||
};
|
};
|
||||||
|
|
||||||
u32 wapp_cpath_join_path(Str8 *dst, const Str8List *parts);
|
u32 wapp_cpath_join_path(Str8 *dst, const Str8List *parts);
|
||||||
Str8 *dirup(const Allocator *allocator, Str8RO *path, u64 levels);
|
Str8 *dirup(const Allocator *allocator, Str8RO *path, u64 levels);
|
||||||
|
|
||||||
#ifdef WAPP_PLATFORM_CPP
|
#ifdef WAPP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
|
|||||||
@@ -10,21 +10,21 @@
|
|||||||
|
|
||||||
File *wapp_file_open(Str8RO *filepath, FileAccessMode mode) {
|
File *wapp_file_open(Str8RO *filepath, FileAccessMode mode) {
|
||||||
wapp_persist const char *modes[FILE_ACCESS_MODE_COUNT] = {
|
wapp_persist const char *modes[FILE_ACCESS_MODE_COUNT] = {
|
||||||
[WAPP_FA_MODE_R] = "r",
|
[WAPP_FA_MODE_R] = "r",
|
||||||
[WAPP_FA_MODE_W] = "w",
|
[WAPP_FA_MODE_W] = "w",
|
||||||
[WAPP_FA_MODE_A] = "a",
|
[WAPP_FA_MODE_A] = "a",
|
||||||
[WAPP_FA_MODE_R_EX] = "r+",
|
[WAPP_FA_MODE_R_EX] = "r+",
|
||||||
[WAPP_FA_MODE_W_EX] = "w+",
|
[WAPP_FA_MODE_W_EX] = "w+",
|
||||||
[WAPP_FA_MODE_A_EX] = "a+",
|
[WAPP_FA_MODE_A_EX] = "a+",
|
||||||
[WAPP_FA_MODE_RB] = "rb",
|
[WAPP_FA_MODE_RB] = "rb",
|
||||||
[WAPP_FA_MODE_WB] = "wb",
|
[WAPP_FA_MODE_WB] = "wb",
|
||||||
[WAPP_FA_MODE_AB] = "ab",
|
[WAPP_FA_MODE_AB] = "ab",
|
||||||
[WAPP_FA_MODE_RB_EX] = "rb+",
|
[WAPP_FA_MODE_RB_EX] = "rb+",
|
||||||
[WAPP_FA_MODE_WB_EX] = "wb+",
|
[WAPP_FA_MODE_WB_EX] = "wb+",
|
||||||
[WAPP_FA_MODE_AB_EX] = "ab+",
|
[WAPP_FA_MODE_AB_EX] = "ab+",
|
||||||
[WAPP_FA_MODE_WX] = "wx",
|
[WAPP_FA_MODE_WX] = "wx",
|
||||||
[WAPP_FA_MODE_WX_EX] = "wx+",
|
[WAPP_FA_MODE_WX_EX] = "wx+",
|
||||||
[WAPP_FA_MODE_WBX] = "wbx",
|
[WAPP_FA_MODE_WBX] = "wbx",
|
||||||
[WAPP_FA_MODE_WBX_EX] = "wbx+",
|
[WAPP_FA_MODE_WBX_EX] = "wbx+",
|
||||||
};
|
};
|
||||||
wapp_persist c8 tmp[WAPP_PATH_MAX] = {0};
|
wapp_persist c8 tmp[WAPP_PATH_MAX] = {0};
|
||||||
@@ -64,13 +64,13 @@ u64 wapp_file_get_length(File *file) {
|
|||||||
|
|
||||||
u64 wapp_file_read(GenericArray *dst_buf, File *file, u64 item_count) {
|
u64 wapp_file_read(GenericArray *dst_buf, File *file, u64 item_count) {
|
||||||
wapp_debug_assert(dst_buf != NULL && file != NULL,
|
wapp_debug_assert(dst_buf != NULL && file != NULL,
|
||||||
"`dst_buf` and `file` should not be NULL.");
|
"`dst_buf` and `file` should not be NULL.");
|
||||||
|
|
||||||
u64 file_length = wapp_file_get_length(file);
|
u64 file_length = wapp_file_get_length(file);
|
||||||
u64 item_size = dst_buf->item_size;
|
u64 item_size = dst_buf->item_size;
|
||||||
u64 dst_byte_capacity = dst_buf->capacity * item_size;
|
u64 dst_byte_capacity = dst_buf->capacity * item_size;
|
||||||
u64 req_byte_count = item_count * item_size;
|
u64 req_byte_count = item_count * item_size;
|
||||||
u64 copy_byte_count = 0;
|
u64 copy_byte_count = 0;
|
||||||
|
|
||||||
if (req_byte_count <= file_length && req_byte_count <= dst_byte_capacity) {
|
if (req_byte_count <= file_length && req_byte_count <= dst_byte_capacity) {
|
||||||
copy_byte_count = req_byte_count;
|
copy_byte_count = req_byte_count;
|
||||||
@@ -88,12 +88,12 @@ u64 wapp_file_read(GenericArray *dst_buf, File *file, u64 item_count) {
|
|||||||
|
|
||||||
u64 wapp_file_write(const GenericArray *src_buf, File *file, u64 item_count) {
|
u64 wapp_file_write(const GenericArray *src_buf, File *file, u64 item_count) {
|
||||||
wapp_debug_assert(src_buf != NULL && file != NULL,
|
wapp_debug_assert(src_buf != NULL && file != NULL,
|
||||||
"`src_buf` and `file` should not be NULL.");
|
"`src_buf` and `file` should not be NULL.");
|
||||||
|
|
||||||
u64 item_size = src_buf->item_size;
|
u64 item_size = src_buf->item_size;
|
||||||
u64 src_byte_count = src_buf->count * item_size;
|
u64 src_byte_count = src_buf->count * item_size;
|
||||||
u64 req_byte_count = item_count * item_size;
|
u64 req_byte_count = item_count * item_size;
|
||||||
u64 to_copy = req_byte_count <= src_byte_count ? req_byte_count : src_byte_count;
|
u64 to_copy = req_byte_count <= src_byte_count ? req_byte_count : src_byte_count;
|
||||||
|
|
||||||
return fwrite(src_buf->items, sizeof(u8), to_copy, file);
|
return fwrite(src_buf->items, sizeof(u8), to_copy, file);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,40 +14,40 @@ BEGIN_C_LINKAGE
|
|||||||
typedef FILE File;
|
typedef FILE File;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
WAPP_FA_MODE_R, // Equivalent to r
|
WAPP_FA_MODE_R, // Equivalent to r
|
||||||
WAPP_FA_MODE_W, // Equivalent to w
|
WAPP_FA_MODE_W, // Equivalent to w
|
||||||
WAPP_FA_MODE_A, // Equivalent to a
|
WAPP_FA_MODE_A, // Equivalent to a
|
||||||
WAPP_FA_MODE_R_EX, // Equivalent to r+
|
WAPP_FA_MODE_R_EX, // Equivalent to r+
|
||||||
WAPP_FA_MODE_W_EX, // Equivalent to w+
|
WAPP_FA_MODE_W_EX, // Equivalent to w+
|
||||||
WAPP_FA_MODE_A_EX, // Equivalent to a+
|
WAPP_FA_MODE_A_EX, // Equivalent to a+
|
||||||
WAPP_FA_MODE_RB, // Equivalent to rb
|
WAPP_FA_MODE_RB, // Equivalent to rb
|
||||||
WAPP_FA_MODE_WB, // Equivalent to wb
|
WAPP_FA_MODE_WB, // Equivalent to wb
|
||||||
WAPP_FA_MODE_AB, // Equivalent to ab
|
WAPP_FA_MODE_AB, // Equivalent to ab
|
||||||
WAPP_FA_MODE_RB_EX, // Equivalent to rb+
|
WAPP_FA_MODE_RB_EX, // Equivalent to rb+
|
||||||
WAPP_FA_MODE_WB_EX, // Equivalent to wb+
|
WAPP_FA_MODE_WB_EX, // Equivalent to wb+
|
||||||
WAPP_FA_MODE_AB_EX, // Equivalent to ab+
|
WAPP_FA_MODE_AB_EX, // Equivalent to ab+
|
||||||
WAPP_FA_MODE_WX, // Equivalent to wx
|
WAPP_FA_MODE_WX, // Equivalent to wx
|
||||||
WAPP_FA_MODE_WX_EX, // Equivalent to wx+
|
WAPP_FA_MODE_WX_EX, // Equivalent to wx+
|
||||||
WAPP_FA_MODE_WBX, // Equivalent to wbx
|
WAPP_FA_MODE_WBX, // Equivalent to wbx
|
||||||
WAPP_FA_MODE_WBX_EX, // Equivalent to wbx+
|
WAPP_FA_MODE_WBX_EX, // Equivalent to wbx+
|
||||||
|
|
||||||
FILE_ACCESS_MODE_COUNT,
|
FILE_ACCESS_MODE_COUNT,
|
||||||
} FileAccessMode;
|
} FileAccessMode;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
WAPP_SEEK_START = SEEK_SET,
|
WAPP_SEEK_START = SEEK_SET,
|
||||||
WAPP_SEEK_CURRENT = SEEK_CUR,
|
WAPP_SEEK_CURRENT = SEEK_CUR,
|
||||||
WAPP_SEEK_END = SEEK_END,
|
WAPP_SEEK_END = SEEK_END,
|
||||||
} FileSeekOrigin;
|
} FileSeekOrigin;
|
||||||
|
|
||||||
File *wapp_file_open(Str8RO *filename, FileAccessMode mode);
|
File *wapp_file_open(Str8RO *filename, FileAccessMode mode);
|
||||||
u64 wapp_file_get_current_position(File *file);
|
u64 wapp_file_get_current_position(File *file);
|
||||||
i32 wapp_file_seek(File *file, u64 offset, FileSeekOrigin origin);
|
i32 wapp_file_seek(File *file, u64 offset, FileSeekOrigin origin);
|
||||||
u64 wapp_file_get_length(File *file);
|
u64 wapp_file_get_length(File *file);
|
||||||
u64 wapp_file_read(GenericArray *dst_buf, File *file, u64 item_count);
|
u64 wapp_file_read(GenericArray *dst_buf, File *file, u64 item_count);
|
||||||
u64 wapp_file_write(const GenericArray *src_buf, File *file, u64 item_count);
|
u64 wapp_file_write(const GenericArray *src_buf, File *file, u64 item_count);
|
||||||
i32 wapp_file_flush(File *file);
|
i32 wapp_file_flush(File *file);
|
||||||
i32 wapp_file_close(File *file);
|
i32 wapp_file_close(File *file);
|
||||||
|
|
||||||
#ifdef WAPP_PLATFORM_CPP
|
#ifdef WAPP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
|
||||||
wapp_intern const i32 access_types[] = {
|
wapp_intern const i32 access_types[] = {
|
||||||
[WAPP_MEM_ACCESS_NONE] = PROT_NONE,
|
[WAPP_MEM_ACCESS_NONE] = PROT_NONE,
|
||||||
[WAPP_MEM_ACCESS_READ_ONLY] = PROT_READ,
|
[WAPP_MEM_ACCESS_READ_ONLY] = PROT_READ,
|
||||||
[WAPP_MEM_ACCESS_EXEC_ONLY] = PROT_EXEC,
|
[WAPP_MEM_ACCESS_EXEC_ONLY] = PROT_EXEC,
|
||||||
[WAPP_MEM_ACCESS_READ_WRITE] = PROT_READ | PROT_WRITE,
|
[WAPP_MEM_ACCESS_READ_WRITE] = PROT_READ | PROT_WRITE,
|
||||||
[WAPP_MEM_ACCESS_READ_EXEC] = PROT_READ | PROT_EXEC,
|
[WAPP_MEM_ACCESS_READ_EXEC] = PROT_READ | PROT_EXEC,
|
||||||
[WAPP_MEM_ACCESS_READ_WRITE_EXEC] = PROT_READ | PROT_WRITE | PROT_EXEC,
|
[WAPP_MEM_ACCESS_READ_WRITE_EXEC] = PROT_READ | PROT_WRITE | PROT_EXEC,
|
||||||
};
|
};
|
||||||
|
|
||||||
void *os_mem_allocate(void *addr, u64 size, MemAccess access, MemAllocFlags flags, MemInitType type) {
|
void *os_mem_allocate(void *addr, u64 size, MemAccess access, MemAllocFlags flags, MemInitType type) {
|
||||||
|
|||||||
@@ -15,14 +15,14 @@ BEGIN_C_LINKAGE
|
|||||||
|
|
||||||
typedef enum mem_alloc_flags {
|
typedef enum mem_alloc_flags {
|
||||||
#if defined(WAPP_PLATFORM_LINUX) || defined(WAPP_PLATFORM_GNU)
|
#if defined(WAPP_PLATFORM_LINUX) || defined(WAPP_PLATFORM_GNU)
|
||||||
WAPP_MEM_ALLOC_RESERVE = 0,
|
WAPP_MEM_ALLOC_RESERVE = 0,
|
||||||
WAPP_MEM_ALLOC_COMMIT = MAP_POPULATE,
|
WAPP_MEM_ALLOC_COMMIT = MAP_POPULATE,
|
||||||
#elif defined(WAPP_PLATFORM_FREE_BSD)
|
#elif defined(WAPP_PLATFORM_FREE_BSD)
|
||||||
WAPP_MEM_ALLOC_RESERVE = 0,
|
WAPP_MEM_ALLOC_RESERVE = 0,
|
||||||
WAPP_MEM_ALLOC_COMMIT = MAP_PREFAULT_READ,
|
WAPP_MEM_ALLOC_COMMIT = MAP_PREFAULT_READ,
|
||||||
#elif defined(WAPP_PLATFORM_BSD) || defined(WAPP_PLATFORM_UNIX) || defined(WAPP_PLATFORM_APPLE)
|
#elif defined(WAPP_PLATFORM_BSD) || defined(WAPP_PLATFORM_UNIX) || defined(WAPP_PLATFORM_APPLE)
|
||||||
WAPP_MEM_ALLOC_RESERVE = 0,
|
WAPP_MEM_ALLOC_RESERVE = 0,
|
||||||
WAPP_MEM_ALLOC_COMMIT = 0,
|
WAPP_MEM_ALLOC_COMMIT = 0,
|
||||||
#endif
|
#endif
|
||||||
} MemAllocFlags;
|
} MemAllocFlags;
|
||||||
|
|
||||||
|
|||||||
@@ -13,12 +13,12 @@
|
|||||||
#include <memoryapi.h>
|
#include <memoryapi.h>
|
||||||
|
|
||||||
wapp_intern const i32 access_types[] = {
|
wapp_intern const i32 access_types[] = {
|
||||||
[WAPP_MEM_ACCESS_NONE] = PAGE_NOACCESS,
|
[WAPP_MEM_ACCESS_NONE] = PAGE_NOACCESS,
|
||||||
[WAPP_MEM_ACCESS_READ_ONLY] = PAGE_READONLY,
|
[WAPP_MEM_ACCESS_READ_ONLY] = PAGE_READONLY,
|
||||||
[WAPP_MEM_ACCESS_EXEC_ONLY] = PAGE_EXECUTE,
|
[WAPP_MEM_ACCESS_EXEC_ONLY] = PAGE_EXECUTE,
|
||||||
[WAPP_MEM_ACCESS_READ_WRITE] = PAGE_READWRITE,
|
[WAPP_MEM_ACCESS_READ_WRITE] = PAGE_READWRITE,
|
||||||
[WAPP_MEM_ACCESS_READ_EXEC] = PAGE_EXECUTE_READ,
|
[WAPP_MEM_ACCESS_READ_EXEC] = PAGE_EXECUTE_READ,
|
||||||
[WAPP_MEM_ACCESS_READ_WRITE_EXEC] = PAGE_EXECUTE_READWRITE,
|
[WAPP_MEM_ACCESS_READ_WRITE_EXEC] = PAGE_EXECUTE_READWRITE,
|
||||||
};
|
};
|
||||||
|
|
||||||
void *os_mem_allocate(void *addr, u64 size, MemAccess access, MemAllocFlags flags, MemInitType type) {
|
void *os_mem_allocate(void *addr, u64 size, MemAccess access, MemAllocFlags flags, MemInitType type) {
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ BEGIN_C_LINKAGE
|
|||||||
#include <memoryapi.h>
|
#include <memoryapi.h>
|
||||||
|
|
||||||
typedef enum mem_alloc_flags {
|
typedef enum mem_alloc_flags {
|
||||||
WAPP_MEM_ALLOC_RESERVE = MEM_RESERVE,
|
WAPP_MEM_ALLOC_RESERVE = MEM_RESERVE,
|
||||||
WAPP_MEM_ALLOC_COMMIT = MEM_COMMIT,
|
WAPP_MEM_ALLOC_COMMIT = MEM_COMMIT,
|
||||||
} MemAllocFlags;
|
} MemAllocFlags;
|
||||||
|
|
||||||
#endif // !WAPP_PLATFORM_WINDOWS
|
#endif // !WAPP_PLATFORM_WINDOWS
|
||||||
|
|||||||
@@ -71,9 +71,9 @@ wapp_intern CMDResult execute_command(Str8RO *cmd, CMDOutHandling out_handling,
|
|||||||
fp = NULL;
|
fp = NULL;
|
||||||
|
|
||||||
output = (CMDResult){
|
output = (CMDResult){
|
||||||
.exited = true,
|
.exited = true,
|
||||||
.exit_code = st,
|
.exit_code = st,
|
||||||
.error = SHELL_ERR_NO_ERROR,
|
.error = SHELL_ERR_NO_ERROR,
|
||||||
};
|
};
|
||||||
|
|
||||||
EXECUTE_COMMAND_CLOSE:
|
EXECUTE_COMMAND_CLOSE:
|
||||||
|
|||||||
@@ -10,23 +10,23 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
wapp_intern Str8RO colours[COUNT_TERM_COLOUR] = {
|
wapp_intern Str8RO colours[COUNT_TERM_COLOUR] = {
|
||||||
[WAPP_TERM_COLOUR_FG_BLACK] = wapp_str8_lit_ro_initialiser_list("\033[30m"),
|
[WAPP_TERM_COLOUR_FG_BLACK] = wapp_str8_lit_ro_initialiser_list("\033[30m"),
|
||||||
[WAPP_TERM_COLOUR_FG_RED] = wapp_str8_lit_ro_initialiser_list("\033[31m"),
|
[WAPP_TERM_COLOUR_FG_RED] = wapp_str8_lit_ro_initialiser_list("\033[31m"),
|
||||||
[WAPP_TERM_COLOUR_FG_GREEN] = wapp_str8_lit_ro_initialiser_list("\033[32m"),
|
[WAPP_TERM_COLOUR_FG_GREEN] = wapp_str8_lit_ro_initialiser_list("\033[32m"),
|
||||||
[WAPP_TERM_COLOUR_FG_BLUE] = wapp_str8_lit_ro_initialiser_list("\033[34m"),
|
[WAPP_TERM_COLOUR_FG_BLUE] = wapp_str8_lit_ro_initialiser_list("\033[34m"),
|
||||||
[WAPP_TERM_COLOUR_FG_CYAN] = wapp_str8_lit_ro_initialiser_list("\033[36m"),
|
[WAPP_TERM_COLOUR_FG_CYAN] = wapp_str8_lit_ro_initialiser_list("\033[36m"),
|
||||||
[WAPP_TERM_COLOUR_FG_MAGENTA] = wapp_str8_lit_ro_initialiser_list("\033[35m"),
|
[WAPP_TERM_COLOUR_FG_MAGENTA] = wapp_str8_lit_ro_initialiser_list("\033[35m"),
|
||||||
[WAPP_TERM_COLOUR_FG_YELLOW] = wapp_str8_lit_ro_initialiser_list("\033[33m"),
|
[WAPP_TERM_COLOUR_FG_YELLOW] = wapp_str8_lit_ro_initialiser_list("\033[33m"),
|
||||||
[WAPP_TERM_COLOUR_FG_WHITE] = wapp_str8_lit_ro_initialiser_list("\033[37m"),
|
[WAPP_TERM_COLOUR_FG_WHITE] = wapp_str8_lit_ro_initialiser_list("\033[37m"),
|
||||||
[WAPP_TERM_COLOUR_FG_BR_BLACK] = wapp_str8_lit_ro_initialiser_list("\033[90m"),
|
[WAPP_TERM_COLOUR_FG_BR_BLACK] = wapp_str8_lit_ro_initialiser_list("\033[90m"),
|
||||||
[WAPP_TERM_COLOUR_FG_BR_RED] = wapp_str8_lit_ro_initialiser_list("\033[91m"),
|
[WAPP_TERM_COLOUR_FG_BR_RED] = wapp_str8_lit_ro_initialiser_list("\033[91m"),
|
||||||
[WAPP_TERM_COLOUR_FG_BR_GREEN] = wapp_str8_lit_ro_initialiser_list("\033[92m"),
|
[WAPP_TERM_COLOUR_FG_BR_GREEN] = wapp_str8_lit_ro_initialiser_list("\033[92m"),
|
||||||
[WAPP_TERM_COLOUR_FG_BR_BLUE] = wapp_str8_lit_ro_initialiser_list("\033[94m"),
|
[WAPP_TERM_COLOUR_FG_BR_BLUE] = wapp_str8_lit_ro_initialiser_list("\033[94m"),
|
||||||
[WAPP_TERM_COLOUR_FG_BR_CYAN] = wapp_str8_lit_ro_initialiser_list("\033[96m"),
|
[WAPP_TERM_COLOUR_FG_BR_CYAN] = wapp_str8_lit_ro_initialiser_list("\033[96m"),
|
||||||
[WAPP_TERM_COLOUR_FG_BR_MAGENTA] = wapp_str8_lit_ro_initialiser_list("\033[95m"),
|
[WAPP_TERM_COLOUR_FG_BR_MAGENTA] = wapp_str8_lit_ro_initialiser_list("\033[95m"),
|
||||||
[WAPP_TERM_COLOUR_FG_BR_YELLOW] = wapp_str8_lit_ro_initialiser_list("\033[93m"),
|
[WAPP_TERM_COLOUR_FG_BR_YELLOW] = wapp_str8_lit_ro_initialiser_list("\033[93m"),
|
||||||
[WAPP_TERM_COLOUR_FG_BR_WHITE] = wapp_str8_lit_ro_initialiser_list("\033[97m"),
|
[WAPP_TERM_COLOUR_FG_BR_WHITE] = wapp_str8_lit_ro_initialiser_list("\033[97m"),
|
||||||
[WAPP_TERM_COLOUR_CLEAR] = wapp_str8_lit_ro_initialiser_list("\033[0m"),
|
[WAPP_TERM_COLOUR_CLEAR] = wapp_str8_lit_ro_initialiser_list("\033[0m"),
|
||||||
};
|
};
|
||||||
|
|
||||||
void print_coloured_text(Str8RO *text, TerminalColour colour) {
|
void print_coloured_text(Str8RO *text, TerminalColour colour) {
|
||||||
|
|||||||
@@ -15,9 +15,9 @@
|
|||||||
|
|
||||||
typedef struct termcolour_data TermcolourData;
|
typedef struct termcolour_data TermcolourData;
|
||||||
struct termcolour_data {
|
struct termcolour_data {
|
||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
WORD default_colour;
|
WORD default_colour;
|
||||||
WORD current_colour;
|
WORD current_colour;
|
||||||
|
|
||||||
wapp_misc_utils_padding_size(sizeof(HANDLE) + sizeof(WORD) + sizeof(WORD));
|
wapp_misc_utils_padding_size(sizeof(HANDLE) + sizeof(WORD) + sizeof(WORD));
|
||||||
};
|
};
|
||||||
@@ -25,22 +25,22 @@ struct termcolour_data {
|
|||||||
wapp_intern void init_data(TermcolourData *data);
|
wapp_intern void init_data(TermcolourData *data);
|
||||||
|
|
||||||
wapp_intern WORD colours[COUNT_TERM_COLOUR] = {
|
wapp_intern WORD colours[COUNT_TERM_COLOUR] = {
|
||||||
[WAPP_TERM_COLOUR_FG_BLACK] = 0,
|
[WAPP_TERM_COLOUR_FG_BLACK] = 0,
|
||||||
[WAPP_TERM_COLOUR_FG_RED] = FOREGROUND_RED,
|
[WAPP_TERM_COLOUR_FG_RED] = FOREGROUND_RED,
|
||||||
[WAPP_TERM_COLOUR_FG_GREEN] = FOREGROUND_GREEN,
|
[WAPP_TERM_COLOUR_FG_GREEN] = FOREGROUND_GREEN,
|
||||||
[WAPP_TERM_COLOUR_FG_BLUE] = FOREGROUND_BLUE,
|
[WAPP_TERM_COLOUR_FG_BLUE] = FOREGROUND_BLUE,
|
||||||
[WAPP_TERM_COLOUR_FG_CYAN] = FOREGROUND_GREEN | FOREGROUND_BLUE,
|
[WAPP_TERM_COLOUR_FG_CYAN] = FOREGROUND_GREEN | FOREGROUND_BLUE,
|
||||||
[WAPP_TERM_COLOUR_FG_MAGENTA] = FOREGROUND_RED | FOREGROUND_BLUE,
|
[WAPP_TERM_COLOUR_FG_MAGENTA] = FOREGROUND_RED | FOREGROUND_BLUE,
|
||||||
[WAPP_TERM_COLOUR_FG_YELLOW] = FOREGROUND_RED | FOREGROUND_GREEN,
|
[WAPP_TERM_COLOUR_FG_YELLOW] = FOREGROUND_RED | FOREGROUND_GREEN,
|
||||||
[WAPP_TERM_COLOUR_FG_WHITE] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
|
[WAPP_TERM_COLOUR_FG_WHITE] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
|
||||||
[WAPP_TERM_COLOUR_FG_BR_BLACK] = FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_BLACK] = FOREGROUND_INTENSITY,
|
||||||
[WAPP_TERM_COLOUR_FG_BR_RED] = FOREGROUND_RED | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_RED] = FOREGROUND_RED | FOREGROUND_INTENSITY,
|
||||||
[WAPP_TERM_COLOUR_FG_BR_GREEN] = FOREGROUND_GREEN | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_GREEN] = FOREGROUND_GREEN | FOREGROUND_INTENSITY,
|
||||||
[WAPP_TERM_COLOUR_FG_BR_BLUE] = FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_BLUE] = FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
||||||
[WAPP_TERM_COLOUR_FG_BR_CYAN] = FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_CYAN] = FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
||||||
[WAPP_TERM_COLOUR_FG_BR_MAGENTA] = FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_MAGENTA] = FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
||||||
[WAPP_TERM_COLOUR_FG_BR_YELLOW] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_YELLOW] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY,
|
||||||
[WAPP_TERM_COLOUR_FG_BR_WHITE] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_WHITE] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
||||||
};
|
};
|
||||||
|
|
||||||
void print_coloured_text(Str8RO *text, TerminalColour colour) {
|
void print_coloured_text(Str8RO *text, TerminalColour colour) {
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ BEGIN_C_LINKAGE
|
|||||||
#endif // !WAPP_PLATFORM_CPP
|
#endif // !WAPP_PLATFORM_CPP
|
||||||
|
|
||||||
#ifdef WAPP_PLATFORM_WINDOWS
|
#ifdef WAPP_PLATFORM_WINDOWS
|
||||||
#define wapp_shell_utils_popen _popen
|
#define wapp_shell_utils_popen _popen
|
||||||
#define wapp_shell_utils_pclose _pclose
|
#define wapp_shell_utils_pclose _pclose
|
||||||
#else
|
#else
|
||||||
#define wapp_shell_utils_popen popen
|
#define wapp_shell_utils_popen popen
|
||||||
#define wapp_shell_utils_pclose pclose
|
#define wapp_shell_utils_pclose pclose
|
||||||
#endif /* ifdef WAPP_PLATFORM_WINDOWS */
|
#endif /* ifdef WAPP_PLATFORM_WINDOWS */
|
||||||
|
|
||||||
#ifdef WAPP_PLATFORM_CPP
|
#ifdef WAPP_PLATFORM_CPP
|
||||||
|
|||||||
Reference in New Issue
Block a user