]> git.lizzy.rs Git - dragonblocks_alpha.git/blobdiff - src/util.c
Merge branch 'master' of github.com:dragonblocks/dragonblocks_alpha
[dragonblocks_alpha.git] / src / util.c
index 187eabd122a1d3b456fd667b882eb8902c992118..3836e02bfeb485456b6b275424b2a76749bb3234 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);
+}