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:
M | jrk.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)
{