diff options
| author | peter <peter@pmikkelsen.com> | 2026-08-20 16:04:41 +0000 |
|---|---|---|
| committer | peter <peter@pmikkelsen.com> | 2026-08-20 16:04:41 +0000 |
| commit | 3be992e3f45dcfd9f8a45fa447de3abb710819b7 (patch) | |
| tree | 6cf02c89acdb0fbf12c20f03ea190a0047221db9 /src/libmain.c | |
| parent | 3a81615601bf37ffc4f7b570030709ac0782e2ed (diff) | |
Adapt a different coding style (no typedef'ed structs, C90...), and start working on a test setup.
FossilOrigin-Name: ebb73df5fc58859b6e985c5ec84196bdd09f639dbcdc69e706f6b17652a2d413
Diffstat (limited to 'src/libmain.c')
| -rw-r--r-- | src/libmain.c | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/src/libmain.c b/src/libmain.c index 93ad2a0..5dce8a0 100644 --- a/src/libmain.c +++ b/src/libmain.c @@ -1,19 +1,22 @@ #include <aplwc_internal.h> -AplwcRc -aplwc_new(Aplwc **p, uint8_t *data, size_t size) +enum aplwc_rc +aplwc_new(struct aplwc **p, uint8_t *data, size_t size) { - Memory m = memory_init(data, size); + struct memory m; + + m = memory_init(data, size); + *p = memory_alloc_aplwc(&m); if(*p == NULL) - RETURN_ERROR(*p, OUT_OF_MEMORY, ""); + return APLWC_OUT_OF_MEMORY; (*p)->memory = m; return APLWC_OK; } -AplwcRc -aplwc_destroy(Aplwc *p) +enum aplwc_rc +aplwc_destroy(struct aplwc *p) { if(p) memory_free_aplwc(&p->memory, p); @@ -22,13 +25,19 @@ aplwc_destroy(Aplwc *p) } const char * -aplwc_errstr(Aplwc *aplwc) +aplwc_errstr(struct aplwc *aplwc) { - static char buf[256]; + enum { BUF_SIZE = 256 }; + + static char buf[BUF_SIZE]; + const char *err, *msg; + char *p; + size_t len, i; + buf[0] = 0; + p = buf; + err = msg = NULL; - const char *err = NULL; - const char *msg = NULL; if(aplwc){ err = rc_to_string(aplwc->last_error); msg = aplwc->last_error_msg; @@ -37,10 +46,21 @@ aplwc_errstr(Aplwc *aplwc) if(!err) err = "(unable to produce error string)"; - if(msg && (strlen(msg) > 0)) - snprintf(buf, sizeof(buf), "%s: %s", err, msg); - else - snprintf(buf, sizeof(buf), "%s", err); + for(i = 0, len = strlen(err); (i <= len) && (((p+i)-buf) < (BUF_SIZE-1)); i++) + p[i] = err[i]; + p += i; + + if(msg){ + if(((buf-p)+2) < BUF_SIZE){ + *(p++) = ':'; + *(p++) = ' '; + } + + for(i = 0, len = strlen(msg); (i <= len) && (((p+i)-buf) < (BUF_SIZE-1)); i++) + p[i] = msg[i]; + p += i; + *p = 0; + } return buf; } |