jrk

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

commit 9b5f08d6f013d4b123ca1e00f8ee9f6c15625289
parent 8bb0a76de071706c0425755add0d05031ad7ce38
Author: Jake Koroman <jake@jakekoroman.com>
Date:   Wed, 15 Oct 2025 10:26:37 -0400

jrk_assert always exits.

Diffstat:
Mjrk.h | 18+++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/jrk.h b/jrk.h @@ -158,7 +158,6 @@ char *jrk_tmpstrings_pushf(char*, ...); #define jrk_eelog(x) jrk_elog(x": %s", strerror(errno)) #define jrk_eelogv(x, ...) jrk_elogv(x": %s", __VA_ARGS__, strerror(errno)) -#define JRK_NO_EXIT_ON_DIE #ifdef JRK_NO_EXIT_ON_DIE #undef jrk_edie #define jrk_edie jrk_eelog @@ -174,8 +173,21 @@ char *jrk_tmpstrings_pushf(char*, ...); #endif /* NOTE: no shortname as 'assert' is just too generic */ -#define jrk_assert(c, msg) do { if (!(c)) jrk_die("jrk_assert: "msg); } while(0) -#define jrk_assertv(c, msg, ...) do { if (!(c)) jrk_diev("jrk_assert: "msg, __VA_ARGS__); } while(0) +#define jrk_assert(c, msg) \ + do { \ + if (!(c)) { \ + fprintf(stderr, "%s:%d: error: "msg"\n", __FILE__, __LINE__); \ + exit(69); \ + } \ + } while(0) + +#define jrk_assertv(c, msg, ...) \ + do { \ + if (!(c)) { \ + fprintf(stderr, "%s:%d: error: "msg"\n", __FILE__, __LINE__, __VA_ARGS__); \ + exit(69); \ + } \ + } while(0) #define jrk_shift(x, n) ((n)--, *(x)++) #define jrk_shift_loop(x, n, it) for (char *it = jrk_shift(x, n); n >= 0; it = jrk_shift(x, n))