summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-11-25 15:37:33 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2013-11-27 10:42:54 +0100
commit54f55d79d92986477c08791fe8cbdef32e3eae6f (patch)
tree8acdfabdffaa32d1c11b253ce3601fa6b083a955 /lib
parentb0cd10ff12a01ada7f2f0833db42a65cc32beab8 (diff)
downloadbarebox-54f55d79d92986477c08791fe8cbdef32e3eae6f.tar.gz
barebox-54f55d79d92986477c08791fe8cbdef32e3eae6f.tar.xz
string: Add (x)memdup
It's a common task to duplicate some memory. Add (x)memdup functions. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'lib')
-rw-r--r--lib/string.c14
-rw-r--r--lib/xfuncs.c10
2 files changed, 24 insertions, 0 deletions
diff --git a/lib/string.c b/lib/string.c
index eeec137c9e..ceced7f48e 100644
--- a/lib/string.c
+++ b/lib/string.c
@@ -725,3 +725,17 @@ void *memchr_inv(const void *start, int c, size_t bytes)
return check_bytes8(start, value, bytes % 8);
}
EXPORT_SYMBOL(memchr_inv);
+
+void *memdup(const void *orig, size_t size)
+{
+ void *buf;
+
+ buf = malloc(size);
+ if (!buf)
+ return NULL;
+
+ memcpy(buf, orig, size);
+
+ return buf;
+}
+EXPORT_SYMBOL(memdup);
diff --git a/lib/xfuncs.c b/lib/xfuncs.c
index db85720195..86d0013787 100644
--- a/lib/xfuncs.c
+++ b/lib/xfuncs.c
@@ -75,3 +75,13 @@ void* xmemalign(size_t alignment, size_t bytes)
return p;
}
EXPORT_SYMBOL(xmemalign);
+
+void *xmemdup(const void *orig, size_t size)
+{
+ void *buf = xmalloc(size);
+
+ memcpy(buf, orig, size);
+
+ return buf;
+}
+EXPORT_SYMBOL(xmemdup);