jrk

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

commit 41d6caf308a2f8147a63f903abc6019f97676a82
parent 439f45490b55ce4424a9b0e4d034ddceb405adae
Author: Jake Koroman <jake@jakekoroman.com>
Date:   Thu, 31 Jul 2025 16:15:41 -0400

add todos, jrk_sb_write_file and formatting.

Diffstat:
Mjrk.h | 103++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
1 file changed, 60 insertions(+), 43 deletions(-)

diff --git a/jrk.h b/jrk.h @@ -1,3 +1,10 @@ +/* + * TODO(jake): + * - variadic die macros to show params of 'dying' functions + * - application shouldn't be dying on all failures, have a way + * to configure that ... just die without calling exit() + */ + #include <stdint.h> #ifdef JRK_IMPLEMENTATION_WITH_SHORTNAMES @@ -53,6 +60,7 @@ void jrk_fd_close(i32); i32 jrk_sb_appendf(jrk_StringBuilder*, const char*, ...); void jrk_sb_fd_read_all(jrk_StringBuilder*, i32); u64 jrk_sb_fd_write_all(jrk_StringBuilder*, i32); +void jrk_sb_write_file(jrk_StringBuilder*, char*); jrk_StringView jrk_sv_from_parts(char*, u64); jrk_StringView jrk_sv_trim_right(jrk_StringView); @@ -126,48 +134,49 @@ jrk_StringView jrk_sv_trim(jrk_StringView); #define jrk_sb_append_buf(sb, buf, size) jrk_da_append_many(sb, buf, size) #ifdef JRK_SHORTNAMES - #define Arena jrk_Arena - #define StringBuilder jrk_StringBuilder - #define StringView jrk_StringView - - #define sb_appendf jrk_sb_appendf - #define sb_append_null jrk_sb_append_null - #define sb_append_buf jrk_sb_append_buf - #define sb_append_cstr jrk_sb_append_cstr - #define sb_free jrk_sb_free - #define sb_fd_read_all jrk_sb_fd_read_all - #define sb_fd_write_all jrk_sb_fd_write_all - #define sb_to_sv jrk_sb_to_sv - - #define sv_trim_left jrk_sv_trim_left - #define sv_trim_right jrk_sv_trim_right - #define sv_trim jrk_sv_trim - #define sv_from_cstr jrk_sv_from_cstr - #define sv_from_parts jrk_sv_from_parts - - #define ecalloc jrk_ecalloc - #define erealloc jrk_erealloc - #define emalloc jrk_emalloc - - #define da_reserve jrk_da_reserve - #define da_append jrk_da_append - #define da_append_many jrk_da_append_many - #define da_foreach jrk_da_foreach - #define da_create jrk_da_create - #define da_free jrk_da_free - - #define arena_create jrk_arena_create - #define arena_destroy jrk_arena_destroy - #define arena_push_struct jrk_arena_push_struct - #define arena_push_array jrk_arena_push_array - #define arena_expand jrk_arena_expand - - #define rand_num jrk_rand_num - #define rand_num_range jrk_rand_num_range - - #define fd_close jrk_fd_close - #define fd_open_read jrk_fd_open_read - #define fd_open_write jrk_fd_open_write + #define Arena jrk_Arena + #define StringBuilder jrk_StringBuilder + #define StringView jrk_StringView + + #define sb_appendf jrk_sb_appendf + #define sb_append_null jrk_sb_append_null + #define sb_append_buf jrk_sb_append_buf + #define sb_append_cstr jrk_sb_append_cstr + #define sb_free jrk_sb_free + #define sb_fd_read_all jrk_sb_fd_read_all + #define sb_fd_write_all jrk_sb_fd_write_all + #define sb_to_sv jrk_sb_to_sv + #define sb_write_file jrk_sb_write_file + + #define sv_trim_left jrk_sv_trim_left + #define sv_trim_right jrk_sv_trim_right + #define sv_trim jrk_sv_trim + #define sv_from_cstr jrk_sv_from_cstr + #define sv_from_parts jrk_sv_from_parts + + #define ecalloc jrk_ecalloc + #define erealloc jrk_erealloc + #define emalloc jrk_emalloc + + #define da_reserve jrk_da_reserve + #define da_append jrk_da_append + #define da_append_many jrk_da_append_many + #define da_foreach jrk_da_foreach + #define da_create jrk_da_create + #define da_free jrk_da_free + + #define arena_create jrk_arena_create + #define arena_destroy jrk_arena_destroy + #define arena_push_struct jrk_arena_push_struct + #define arena_push_array jrk_arena_push_array + #define arena_expand jrk_arena_expand + + #define rand_num jrk_rand_num + #define rand_num_range jrk_rand_num_range + + #define fd_close jrk_fd_close + #define fd_open_read jrk_fd_open_read + #define fd_open_write jrk_fd_open_write #define fd_open_write_append jrk_fd_open_write_append #endif // JRK_SHORTNAMES @@ -186,7 +195,7 @@ jrk_StringView jrk_sv_trim(jrk_StringView); #define jrk_edie(x) do { fprintf(stderr, "%s:%d: error: "x": %s\n", __FILE__, __LINE__, strerror(errno)); exit(69); } while(0) #ifdef JRK_SHORTNAMES - #define die jrk_die + #define die jrk_die #define edie jrk_edie #endif // JRK_SHORTNAMES @@ -294,6 +303,14 @@ jrk_fd_close(i32 fd) close(fd); } +void +jrk_sb_write_file(jrk_StringBuilder *sb, char *path) +{ + i32 fd = jrk_fd_open_write(path); + jrk_sb_fd_write_all(sb, fd); + jrk_fd_close(fd); +} + i32 jrk_fd_open_read(char *path) {