diff options
author | Bad Diode <bd@badd10de.dev> | 2024-06-14 18:41:21 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2024-06-14 18:41:21 +0200 |
commit | 2cad3b5b21fe1644239b03fc8fd3c4329d98e606 (patch) | |
tree | 152cb5c64a89539fcfff86a3a26770964c7d4830 /src/badlib.h | |
parent | 3aae2f36047e9adc6a59b886492254eb4370777d (diff) | |
download | bdl-2cad3b5b21fe1644239b03fc8fd3c4329d98e606.tar.gz bdl-2cad3b5b21fe1644239b03fc8fd3c4329d98e606.zip |
Add initial custom logging functions
Diffstat (limited to 'src/badlib.h')
-rw-r--r-- | src/badlib.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/badlib.h b/src/badlib.h index f7a7974..2bc1807 100644 --- a/src/badlib.h +++ b/src/badlib.h | |||
@@ -873,4 +873,52 @@ platform_time(void) { | |||
873 | return ts.tv_sec * 1000000000 + ts.tv_nsec; | 873 | return ts.tv_sec * 1000000000 + ts.tv_nsec; |
874 | } | 874 | } |
875 | 875 | ||
876 | // | ||
877 | // Custom logger. | ||
878 | // | ||
879 | |||
880 | #define LOG_BUF_SIZE KB(4) | ||
881 | |||
882 | typedef struct Logger { | ||
883 | Buf buf; | ||
884 | FILE *dest; | ||
885 | Arena *storage; | ||
886 | } Logger; | ||
887 | |||
888 | void | ||
889 | log_init(Logger *l) { | ||
890 | buf_reserve(&l->buf, LOG_BUF_SIZE, l->storage); | ||
891 | } | ||
892 | |||
893 | void | ||
894 | log_flush(Logger *l) { | ||
895 | if (l->buf.size) { | ||
896 | fprintf(l->dest, "%.*s", (int)l->buf.size, l->buf.mem); | ||
897 | } | ||
898 | } | ||
899 | |||
900 | void | ||
901 | log_str(Logger *l, Str str) { | ||
902 | assert(l); | ||
903 | Buf *buf = &l->buf; | ||
904 | if (buf->size == 0) log_init(l); | ||
905 | while (str.size > 0) { | ||
906 | sz avail = buf->cap - buf->size; | ||
907 | if (avail == 0) { | ||
908 | log_flush(l); | ||
909 | avail = buf->cap - buf->size; | ||
910 | assert(avail > 0); | ||
911 | } | ||
912 | if (str.size < avail) { | ||
913 | buf_insert(&l->buf, str.mem, str.size, l->storage); | ||
914 | str.size = 0; | ||
915 | return; | ||
916 | } | ||
917 | buf_insert(&l->buf, str.mem, avail, l->storage); | ||
918 | str.mem += avail; | ||
919 | str.size -= avail; | ||
920 | } | ||
921 | } | ||
922 | |||
923 | |||
876 | #endif // BADLIB_H | 924 | #endif // BADLIB_H |