From 9695ea005d4af93dcd60f74f10fd3c54499a182f Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Thu, 11 Nov 2021 16:31:58 -0800 Subject: chore: split up base library into individual files for smaller binaries --- sys/base/string/fit.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 sys/base/string/fit.c (limited to 'sys/base/string/fit.c') diff --git a/sys/base/string/fit.c b/sys/base/string/fit.c new file mode 100644 index 0000000..56ab041 --- /dev/null +++ b/sys/base/string/fit.c @@ -0,0 +1,20 @@ +#include "internal.h" + +// fit reallocates the string such that the buffer is exactly sized for the +// buffer. if the capacity equals the length, then the function is a noop. the +// byte array is unchanged. +void +str·fit(string *s) +{ + Hdr* h; + vlong cap = str·cap(*s); + vlong len = str·len(*s); + + if (cap == len) return; + + h = (Hdr*)(s - sizeof(Hdr)); + h = realloc(h, sizeof(*h) + len + 1); + h->cap = len; + + *s = h->buf; +} -- cgit v1.2.1