+#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; }