]> git.lizzy.rs Git - dragonblocks_alpha.git/blobdiff - src/util.c
Add trees
[dragonblocks_alpha.git] / src / util.c
index c1c1c2dc37ee3d1667240a9b3b6889128d35bdf1..56640171f958c2cac5c934c75c4c704ae8e208fa 100644 (file)
@@ -122,3 +122,32 @@ char *format_string(const char *format, ...)
        va_end(args);
        return ptr;
 }
+
+void *buffer_read(unsigned char **buffer, size_t *bufsiz, size_t size)
+{
+       if (size == 0)
+               return NULL;
+
+       if (*bufsiz < size)
+               return NULL;
+
+       void *old_buffer = *buffer;
+
+       *bufsiz -= size;
+       *buffer += size;
+
+       return old_buffer;
+}
+
+void buffer_write(unsigned char **buffer, size_t *bufsiz, void *data, size_t size)
+{
+       if (size == 0)
+               return;
+
+       size_t old_bufsiz = *bufsiz;
+
+       *bufsiz += size;
+       *buffer = realloc(*buffer, *bufsiz);
+
+       memcpy(*buffer + old_bufsiz, data, size);
+}