summaryrefslogtreecommitdiff
path: root/src/libmain.c
diff options
context:
space:
mode:
authorpeter <peter@pmikkelsen.com>2026-08-20 16:04:41 +0000
committerpeter <peter@pmikkelsen.com>2026-08-20 16:04:41 +0000
commit3be992e3f45dcfd9f8a45fa447de3abb710819b7 (patch)
tree6cf02c89acdb0fbf12c20f03ea190a0047221db9 /src/libmain.c
parent3a81615601bf37ffc4f7b570030709ac0782e2ed (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.c48
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;
}