summaryrefslogtreecommitdiffstats
path: root/mstorage.h
diff options
context:
space:
mode:
Diffstat (limited to 'mstorage.h')
-rw-r--r--mstorage.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/mstorage.h b/mstorage.h
new file mode 100644
index 0000000..258e786
--- /dev/null
+++ b/mstorage.h
@@ -0,0 +1,33 @@
+#ifndef _MSTORAGE_H
+#define _MSTORAGE_H
+
+#include <stddef.h>
+
+/* (optionally persistent) mmapped storage. */
+
+typedef struct mstorage {
+ char* root;
+ size_t mapped,used;
+ int fd;
+} mstorage_t;
+
+void mstorage_init(mstorage_t* p);
+
+int mstorage_init_persistent(mstorage_t* p,int fd);
+
+/* Works like strstorage_add, but will return an
+ * offset to mstorage_root, which is mmapped and may thus change. */
+/* offset -1 ==> error */
+long mstorage_add(mstorage_t* p,const char* s,size_t n);
+
+/* undo mapping */
+void mstorage_unmap(mstorage_t* p);
+
+/* this is tinyldap specific. If the data contains at least one 0-byte,
+ * it is stored in a tinyldap specific encoding:
+ * char 0;
+ * uint32 len;
+ * char data[len] */
+long mstorage_add_bin(mstorage_t* p,const char* s,size_t n);
+
+#endif