X-Git-Url: https://pd.if.org/git/?p=nbds;a=blobdiff_plain;f=struct%2Fnstring.c;fp=struct%2Fnstring.c;h=840c6df88404283cfa346a786eb6aaf2039758ba;hp=0000000000000000000000000000000000000000;hb=53d171373819e921da8f8648eea236a08ff6a702;hpb=d791fc64b23a9c0a3ed90aa60571344d7735aee9 diff --git a/struct/nstring.c b/struct/nstring.c new file mode 100644 index 0000000..840c6df --- /dev/null +++ b/struct/nstring.c @@ -0,0 +1,24 @@ +#include "common.h" +#include "nstring.h" +#include "mem.h" + +struct nstring { + uint32_t len; + char data[]; +}; + +nstring_t *ns_alloc (const void *data, uint32_t len) { + nstring_t *ns = nbd_malloc(sizeof(nstring_t) + len); + ns->len = len; + memcpy(ns->data, data, len); + return ns; +} + +int ns_cmp_raw (nstring_t *ns, const void *data, uint32_t len) { + int rc = memcmp(ns->data, data, (len < ns->len) ? len : ns->len); + return (rc == 0) ? ns->len - len : rc; +} + +const void *ns_data (nstring_t *ns) { return ns->data; } + +uint64_t ns_len (nstring_t *ns) { return ns->len; }