summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2025-05-02 08:46:03 -0600
committerSimon Glass <sjg@chromium.org>2025-05-30 09:49:31 +0100
commitd58cebbbc7617fbc45e604c883e8501a58d25e62 (patch)
tree86b85edc452fc6efef46b3a37dfd63d04dec2a3b /lib
parent97b586695cd80821455ae06ee178c6c8cf759ce6 (diff)
abuf: Add a function to copy a buffer
It is useful to be able to copy an abuf, to allow changes while preserving the original. Add a function for this. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/abuf.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/abuf.c b/lib/abuf.c
index 3cbe320fb08..28c748acb9f 100644
--- a/lib/abuf.c
+++ b/lib/abuf.c
@@ -128,6 +128,20 @@ bool abuf_init_size(struct abuf *buf, size_t size)
return true;
}
+bool abuf_copy(const struct abuf *old, struct abuf *copy)
+{
+ char *data;
+
+ data = malloc(old->size);
+ if (!data)
+ return false;
+ memcpy(data, old->data, old->size);
+ abuf_init_set(copy, data, old->size);
+ copy->alloced = true;
+
+ return true;
+}
+
void abuf_init_const(struct abuf *abuf, const void *data, size_t size)
{
/* for now there is no flag indicating that the abuf data is constant */