jrk

my own c stdlib to keep myself sane
git clone git://git.jakekoroman.com/jrk
Log | Files | Refs

commit 641b9a04eac3b067542843fca0f657b93256fa43
parent c905041a59e85fbddc993117a14ccb17e5fea95a
Author: Jake Koroman <jake@jakekoroman.com>
Date:   Sat, 21 Feb 2026 14:25:33 -0500

code style change.

Diffstat:
Mjrk.h | 474++++++++++++++++++++++++++++++++++++++++----------------------------------------
1 file changed, 237 insertions(+), 237 deletions(-)

diff --git a/jrk.h b/jrk.h @@ -402,153 +402,153 @@ jrk_array_impl(char) void * jrk_array_alloc_function_arena(u64 size, u64 count, void *user) { - void *result = NULL; - jrk_Arena *arena = (jrk_Arena *) user; - result = jrk_arena_push(arena, size * count); - return result; + void *result = NULL; + jrk_Arena *arena = (jrk_Arena *) user; + result = jrk_arena_push(arena, size * count); + return result; } void * jrk_array_realloc_function_arena(void *ptr, u64 old_size, u64 new_size, void *user) { - void *result = NULL; - jrk_Arena *arena = (jrk_Arena *) user; - result = jrk_arena_resize(arena, ptr, old_size, new_size); - return result; + void *result = NULL; + jrk_Arena *arena = (jrk_Arena *) user; + result = jrk_arena_resize(arena, ptr, old_size, new_size); + return result; } bool jrk_sb_appendf(jrk_StringBuilder *sb, char *fmt, ...) { - char buf[JRK_KILOBYTES(1)]; - va_list args; - va_start(args, fmt); + char buf[JRK_KILOBYTES(1)]; + va_list args; + va_start(args, fmt); - i32 buf_sz = vsnprintf(buf, sizeof(buf), fmt, args); - if (buf_sz < 0) { - jrk_eerrorv("jrk_sb_appendf(%p, %s): failed to create full string from '%s'", (void *) sb, fmt, fmt); - return false; - } - va_end(args); - - i32 actual_sz = 0; - if ((u32) buf_sz > JRK_ARRLENGTH(buf)) { - actual_sz = JRK_ARRLENGTH(buf); - jrk_errorv("jrk_sb_appendf(%p, %s): pushing '%s' into sb caused truncation of %ld bytes", - (void *) sb, fmt, fmt, buf_sz - JRK_ARRLENGTH(buf)); - return false; - } else { - actual_sz = buf_sz; - } + i32 buf_sz = vsnprintf(buf, sizeof(buf), fmt, args); + if (buf_sz < 0) { + jrk_eerrorv("jrk_sb_appendf(%p, %s): failed to create full string from '%s'", (void *) sb, fmt, fmt); + return false; + } + va_end(args); - if (!jrk_array_char_pushn(sb, buf, actual_sz)) { - jrk_errorv("jrk_sb_appendf(%p, %s): failed to push '%s' into sb", (void *) sb, fmt, fmt); - return false; - } + i32 actual_sz = 0; + if ((u32) buf_sz > JRK_ARRLENGTH(buf)) { + actual_sz = JRK_ARRLENGTH(buf); + jrk_errorv("jrk_sb_appendf(%p, %s): pushing '%s' into sb caused truncation of %ld bytes", + (void *) sb, fmt, fmt, buf_sz - JRK_ARRLENGTH(buf)); + return false; + } else { + actual_sz = buf_sz; + } - return true; + if (!jrk_array_char_pushn(sb, buf, actual_sz)) { + jrk_errorv("jrk_sb_appendf(%p, %s): failed to push '%s' into sb", (void *) sb, fmt, fmt); + return false; + } + + return true; } bool jrk_sb_append_buf_at(jrk_StringBuilder *sb, char *buf, u64 buf_sz, u64 idx) { - if (idx > sb->size) { - jrk_errorv("jrk_sb_append_buf_at(%p, %s, %ld, %ld): idx is greater than sb.size", - (void *)sb, buf, buf_sz, idx); - return false; - } + if (idx > sb->size) { + jrk_errorv("jrk_sb_append_buf_at(%p, %s, %ld, %ld): idx is greater than sb.size", + (void *)sb, buf, buf_sz, idx); + return false; + } - if (sb->size + (buf_sz) > sb->capacity) { - while (sb->size + (buf_sz) > sb->capacity) { - sb->capacity *= 2; - } - sb->items = __jrk_array_realloc(sb, sb->capacity); - if (!sb->items) return false; - memset(sb->items + sb->size, 0, sb->capacity - sb->size); - } + if (sb->size + (buf_sz) > sb->capacity) { + while (sb->size + (buf_sz) > sb->capacity) { + sb->capacity *= 2; + } + sb->items = __jrk_array_realloc(sb, sb->capacity); + if (!sb->items) return false; + memset(sb->items + sb->size, 0, sb->capacity - sb->size); + } - memmove(sb->items + idx + buf_sz, sb->items + idx, sb->size - idx); - memcpy(sb->items + idx, buf, buf_sz); + memmove(sb->items + idx + buf_sz, sb->items + idx, sb->size - idx); + memcpy(sb->items + idx, buf, buf_sz); - sb->size += buf_sz; - return true; + sb->size += buf_sz; + return true; } bool jrk_sb_fd_read_all(jrk_StringBuilder *sb, i32 fd) { - bool result = true; - u64 filesize = 0; - if (!jrk_fd_size(fd, &filesize)) jrk_return_defer(false); - char *buf = jrk_emalloc(filesize); - if (read(fd, buf, filesize) < 0) { - jrk_eerrorv("jrk_sb_fd_read_all(%p, %d)", (void *)sb, fd); - jrk_return_defer(false); - } + bool result = true; + u64 filesize = 0; + if (!jrk_fd_size(fd, &filesize)) jrk_return_defer(false); + char *buf = jrk_emalloc(filesize); + if (read(fd, buf, filesize) < 0) { + jrk_eerrorv("jrk_sb_fd_read_all(%p, %d)", (void *)sb, fd); + jrk_return_defer(false); + } - if (!jrk_sb_append_buf(sb, buf, filesize)) jrk_return_defer(false); + if (!jrk_sb_append_buf(sb, buf, filesize)) jrk_return_defer(false); defer: - free(buf); - return result; + free(buf); + return result; } bool jrk_sb_fd_write(jrk_StringBuilder *sb, i32 fd) { - i64 result; - result = write(fd, (void *) sb->items, sb->size); - if (result < 0) { - jrk_eerrorv("jrk_sb_fd_write_all(%p, %d)", (void *)sb, fd); - return -1; - } + i64 result; + result = write(fd, (void *) sb->items, sb->size); + if (result < 0) { + jrk_eerrorv("jrk_sb_fd_write_all(%p, %d)", (void *)sb, fd); + return -1; + } - return result; + return result; } bool jrk_sb_read_entire_file(jrk_StringBuilder *sb, char *filename) { - bool result = true; - i32 fd = jrk_fd_open_read(filename); - if (fd < 0) return false; - if (!jrk_sb_fd_read_all(sb, fd)) jrk_return_defer(false); + bool result = true; + i32 fd = jrk_fd_open_read(filename); + if (fd < 0) return false; + if (!jrk_sb_fd_read_all(sb, fd)) jrk_return_defer(false); defer: - jrk_fd_close(fd); - return result; + jrk_fd_close(fd); + return result; } bool jrk_sb_write_entire_file(jrk_StringBuilder *sb, char *filename) { - bool result = true; - i32 fd = jrk_fd_open_write(filename); - if (fd < 0) return false; - if (!jrk_sb_fd_write(sb, fd)) jrk_return_defer(false); + bool result = true; + i32 fd = jrk_fd_open_write(filename); + if (fd < 0) return false; + if (!jrk_sb_fd_write(sb, fd)) jrk_return_defer(false); defer: - jrk_fd_close(fd); - return result; + jrk_fd_close(fd); + return result; } void * jrk_ecalloc(u64 nmemb, u64 size) { - void *p; + void *p; - if (!(p = calloc(nmemb, size))) - jrk_ediev("jrk_ecalloc(%ld, %ld): buy more ram lol", nmemb, size); - return p; + if (!(p = calloc(nmemb, size))) + jrk_ediev("jrk_ecalloc(%ld, %ld): buy more ram lol", nmemb, size); + return p; } void * jrk_erealloc(void *ptr, u64 size) { - void *p; + void *p; - if (!(p = realloc(ptr, size))) - jrk_ediev("jrk_erealloc(%p, %ld): buy more ram lol", ptr, size); - return p; + if (!(p = realloc(ptr, size))) + jrk_ediev("jrk_erealloc(%p, %ld): buy more ram lol", ptr, size); + return p; } // NOTE: only allocate space for translation units with JRK_IMPLEMENTATION @@ -558,288 +558,288 @@ static u32 jrk__tmpstrings_idx = 0; char * jrk_tmpstrings_push(char *str) { - char *result; - result = jrk_tmpstrings_pushf(str); - return result; + char *result; + result = jrk_tmpstrings_pushf(str); + return result; } char * jrk_tmpstrings_pushf(char *fmt, ...) { - char *result = jrk__tmpstrings[jrk__tmpstrings_idx]; + char *result = jrk__tmpstrings[jrk__tmpstrings_idx]; - va_list args; - va_start(args, fmt); - vsnprintf(result, JRK_TMPSTRINGS_STR_CAPACITY, fmt, args); - va_end(args); + va_list args; + va_start(args, fmt); + vsnprintf(result, JRK_TMPSTRINGS_STR_CAPACITY, fmt, args); + va_end(args); - if (++jrk__tmpstrings_idx >= JRK_TMPSTRINGS_ARR_CAPACITY) - jrk__tmpstrings_idx = 0; + if (++jrk__tmpstrings_idx >= JRK_TMPSTRINGS_ARR_CAPACITY) + jrk__tmpstrings_idx = 0; - return result; + return result; } jrk_Arena jrk_arena_create(u8 *buffer, u64 buffer_count) { - jrk_Arena result = {0}; - result.data = buffer; - result.capacity = buffer_count; - result.offset = 0; - result.prev_offset = 0; - return result; + jrk_Arena result = {0}; + result.data = buffer; + result.capacity = buffer_count; + result.offset = 0; + result.prev_offset = 0; + return result; } void * jrk_arena_push(jrk_Arena *arena, u64 n) { - if (arena->offset + n > arena->capacity) { - jrk_errorv("jrk_arena_push(%p, %ld): arena push requires %ld bytes but has a capacity of %ld bytes", - (void *) arena, n, arena->offset + n, arena->capacity); - return NULL; - } + if (arena->offset + n > arena->capacity) { + jrk_errorv("jrk_arena_push(%p, %ld): arena push requires %ld bytes but has a capacity of %ld bytes", + (void *) arena, n, arena->offset + n, arena->capacity); + return NULL; + } - void *result = &arena->data[arena->offset]; - arena->prev_offset = arena->offset; - arena->offset += n; - memset(result, 0, n); + void *result = &arena->data[arena->offset]; + arena->prev_offset = arena->offset; + arena->offset += n; + memset(result, 0, n); - return result; + return result; } char * jrk_arena_push_strf(jrk_Arena *arena, char *fmt, ...) { - char *result = NULL; + char *result = NULL; - va_list args; - va_start(args, fmt); - i32 n = vsnprintf(NULL, 0, fmt, args); - va_end(args); + va_list args; + va_start(args, fmt); + i32 n = vsnprintf(NULL, 0, fmt, args); + va_end(args); - result = jrk_arena_push(arena, (u64) n + 1); - if (!result) return NULL; + result = jrk_arena_push(arena, (u64) n + 1); + if (!result) return NULL; - va_start(args, fmt); - vsnprintf(result, n + 1, fmt, args); - va_end(args); + va_start(args, fmt); + vsnprintf(result, n + 1, fmt, args); + va_end(args); - return result; + return result; } void * jrk_arena_resize(jrk_Arena *arena, void *old, u64 old_size, u64 new_size) { - u8 *result = NULL; - - if (new_size < old_size) { - jrk_errorv("jrk_arena_resize(%p, %p, %ld, %ld): new_size is smaller than the old_size", - (void *) arena, old, old_size, new_size); - return result; - } - - if (arena->offset + (new_size - old_size) > arena->capacity) { - jrk_errorv("jrk_arena_resize(%p, %p, %ld, %ld): arena resize requires %ld bytes but has a capacity of %ld bytes", - (void *) arena, old, old_size, new_size, arena->offset + (new_size - old_size), arena->capacity); - return result; - } - - if (old == &arena->data[arena->prev_offset]) { - result = old; - arena->prev_offset = arena->offset; - arena->offset += new_size; - memset(&arena->data[arena->prev_offset], 0, new_size - old_size); - } else { - result = &arena->data[arena->offset]; - arena->prev_offset = arena->offset; - arena->offset += new_size; - if (arena->offset > arena->capacity) { - jrk_errorv("jrk_arena_resize(%p, %p, %ld, %ld): arena resize requires %ld bytes but has a capacity of %ld bytes", - (void *) arena, old, old_size, new_size, arena->offset, arena->capacity); - return NULL; - } - memmove(result, old, old_size); - memset(result + old_size, 0, new_size - old_size); - } - - return (void *) result; + u8 *result = NULL; + + if (new_size < old_size) { + jrk_errorv("jrk_arena_resize(%p, %p, %ld, %ld): new_size is smaller than the old_size", + (void *) arena, old, old_size, new_size); + return result; + } + + if (arena->offset + (new_size - old_size) > arena->capacity) { + jrk_errorv("jrk_arena_resize(%p, %p, %ld, %ld): arena resize requires %ld bytes but has a capacity of %ld bytes", + (void *) arena, old, old_size, new_size, arena->offset + (new_size - old_size), arena->capacity); + return result; + } + + if (old == &arena->data[arena->prev_offset]) { + result = old; + arena->prev_offset = arena->offset; + arena->offset += new_size; + memset(&arena->data[arena->prev_offset], 0, new_size - old_size); + } else { + result = &arena->data[arena->offset]; + arena->prev_offset = arena->offset; + arena->offset += new_size; + if (arena->offset > arena->capacity) { + jrk_errorv("jrk_arena_resize(%p, %p, %ld, %ld): arena resize requires %ld bytes but has a capacity of %ld bytes", + (void *) arena, old, old_size, new_size, arena->offset, arena->capacity); + return NULL; + } + memmove(result, old, old_size); + memset(result + old_size, 0, new_size - old_size); + } + + return (void *) result; } void jrk_arena_reset(jrk_Arena *arena) { - arena->offset = 0; - arena->prev_offset = 0; - memset(arena->data, 0, arena->capacity); + arena->offset = 0; + arena->prev_offset = 0; + memset(arena->data, 0, arena->capacity); } bool jrk_fd_size(i32 fd, u64 *size) { - if (!size) { - jrk_errorv("jrk_fd_size(%d, %p): size ptr is NULL", fd, (void *) size); - return false; - } + if (!size) { + jrk_errorv("jrk_fd_size(%d, %p): size ptr is NULL", fd, (void *) size); + return false; + } - struct stat statbuf = {0}; - if (fstat(fd, &statbuf) < 0) { - jrk_eerrorv("jrk_fd_size(%d, %p)", fd, (void *) size); - return false; - } + struct stat statbuf = {0}; + if (fstat(fd, &statbuf) < 0) { + jrk_eerrorv("jrk_fd_size(%d, %p)", fd, (void *) size); + return false; + } - *size = statbuf.st_size; - return true; + *size = statbuf.st_size; + return true; } void jrk_fd_close(i32 fd) { - close(fd); + close(fd); } i32 jrk_fd_open_read(char *path) { - i32 result = open(path, O_RDONLY); + i32 result = open(path, O_RDONLY); - if (result < 0) { - jrk_eerrorv("jrk_fd_open_read(%s)", path); - return -1; - } + if (result < 0) { + jrk_eerrorv("jrk_fd_open_read(%s)", path); + return -1; + } - return result; + return result; } i32 jrk_fd_open_write(char *path) { - i32 result = open(path, - O_WRONLY | O_CREAT | O_TRUNC, - S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + i32 result = open(path, + O_WRONLY | O_CREAT | O_TRUNC, + S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); - if (result < 0) { - jrk_eerrorv("jrk_fd_open_write(%s)", path); - return -1; - } + if (result < 0) { + jrk_eerrorv("jrk_fd_open_write(%s)", path); + return -1; + } - return result; + return result; } i32 jrk_fd_open_write_append(char *path) { - i32 result = open(path, - O_WRONLY | O_CREAT | O_APPEND, - S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + i32 result = open(path, + O_WRONLY | O_CREAT | O_APPEND, + S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); - if (result < 0) { - jrk_eerrorv("jrk_fd_open_write_append(%s)", path); - return -1; - } + if (result < 0) { + jrk_eerrorv("jrk_fd_open_write_append(%s)", path); + return -1; + } - return result; + return result; } jrk_StringView jrk_sv_from_parts(char *data, u64 size) { - jrk_StringView result = {0}; - result.data = data; - result.size = size; - return result; + jrk_StringView result = {0}; + result.data = data; + result.size = size; + return result; } jrk_StringView jrk_sv_from_cstr(char *data) { - jrk_StringView result = {0}; - result.data = data; - result.size = strlen(data); - return result; + jrk_StringView result = {0}; + result.data = data; + result.size = strlen(data); + return result; } jrk_StringView jrk_sv_trim_right(jrk_StringView sv) { - u64 i = 0; - for (; i < sv.size && isspace(sv.data[sv.size - 1 - i]); ++i); - return jrk_sv_from_parts(sv.data, sv.size - i); + u64 i = 0; + for (; i < sv.size && isspace(sv.data[sv.size - 1 - i]); ++i); + return jrk_sv_from_parts(sv.data, sv.size - i); } jrk_StringView jrk_sv_trim_left(jrk_StringView sv) { - u64 i = 0; - for (; i < sv.size && isspace(sv.data[i]); ++i); - return jrk_sv_from_parts(sv.data + i, sv.size - i); + u64 i = 0; + for (; i < sv.size && isspace(sv.data[i]); ++i); + return jrk_sv_from_parts(sv.data + i, sv.size - i); } jrk_StringView jrk_sv_trim(jrk_StringView sv) { - return jrk_sv_trim_right(jrk_sv_trim_left(sv)); + return jrk_sv_trim_right(jrk_sv_trim_left(sv)); } jrk_StringView jrk_sv_chop_delim(jrk_StringView *sv, char delim) { - u64 i = 0; - while (i < sv->size && sv->data[i] != delim) - ++i; + u64 i = 0; + while (i < sv->size && sv->data[i] != delim) + ++i; - jrk_StringView result = jrk_sv_from_parts(sv->data, i); + jrk_StringView result = jrk_sv_from_parts(sv->data, i); - if (i < sv->size) { - sv->data += i + 1; - sv->size -= i + 1; - } else { - sv->data += i; - sv->size -= i; - } + if (i < sv->size) { + sv->data += i + 1; + sv->size -= i + 1; + } else { + sv->data += i; + sv->size -= i; + } - return result; + return result; } bool jrk_sv_equals(jrk_StringView *a, jrk_StringView *b) { - for (u64 i = 0; i < JRK_MIN(a->size, b->size); ++i) - if (a->data[i] != b->data[i]) return false; + for (u64 i = 0; i < JRK_MIN(a->size, b->size); ++i) + if (a->data[i] != b->data[i]) return false; - return true; + return true; } bool jrk_sv_equals_exact(jrk_StringView *a, jrk_StringView *b) { - if (a->size != b->size) return false; + if (a->size != b->size) return false; - for (u64 i = 0; i < a->size; ++i) - if (a->data[i] != b->data[i]) return false; + for (u64 i = 0; i < a->size; ++i) + if (a->data[i] != b->data[i]) return false; - return true; + return true; } u64 jrk_fnv1a_64(u8 *data, u64 size) { - u64 result = JRK_FNV1A_64_OFFSET_BASIS; - for (u64 i = 0; i < size; ++i) { - result ^= data[i]; - result *= JRK_FNV1A_64_PRIME; - } - return result; + u64 result = JRK_FNV1A_64_OFFSET_BASIS; + for (u64 i = 0; i < size; ++i) { + result ^= data[i]; + result *= JRK_FNV1A_64_PRIME; + } + return result; } i32 jrk_rand_num(i32 upbound) { - return rand() % upbound + 1; + return rand() % upbound + 1; } i32 jrk_rand_num_range(i32 min, i32 max) { - return rand() % (max - min + 1) + min; + return rand() % (max - min + 1) + min; } #endif // JRK_IMPLEMENTATION