aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/page.c11
-rw-r--r--src/page.h9
2 files changed, 20 insertions, 0 deletions
diff --git a/src/page.c b/src/page.c
index a4f52ae4a..5ea03cd02 100644
--- a/src/page.c
+++ b/src/page.c
@@ -51,6 +51,17 @@ page_new_copy(const void *data, size_t size)
return page;
}
+struct page *
+page_new_concat(const struct page *a, const struct page *b)
+{
+ struct page *page = page_new(a->size + b->size);
+
+ memcpy(page->data, a->data, a->size);
+ memcpy(page->data + a->size, b->data, b->size);
+
+ return page;
+}
+
void
page_ref(struct page *page)
{
diff --git a/src/page.h b/src/page.h
index 6bee4996f..a150e3123 100644
--- a/src/page.h
+++ b/src/page.h
@@ -65,6 +65,15 @@ struct page *
page_new_copy(const void *data, size_t size);
/**
+ * Concatenates two pages to a new page.
+ *
+ * @param a the first page
+ * @param b the second page, which is appended
+ */
+struct page *
+page_new_concat(const struct page *a, const struct page *b);
+
+/**
* Increases the reference counter.
*
* @param page the #page object