summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/memcpy.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/memcpy.c b/lib/memcpy.c
new file mode 100644
index 000000000..a1f8b8f2b
--- /dev/null
+++ b/lib/memcpy.c
@@ -0,0 +1,25 @@
+/* memcpy.c -- copy memory.
+ Copy LENGTH bytes from SOURCE to DEST. Does not null-terminate.
+ The source and destination regions may not overlap.
+ In the public domain.
+ By Jim Meyering. */
+
+/* FIXME: remove this before release. */
+#include <assert.h>
+#ifndef ABS
+# define ABS(x) ((x) < 0 ? (-(x)) : (x))
+#endif
+
+void
+memcpy (dest, source, length)
+ char *dest;
+ const char *source;
+ unsigned length;
+{
+ assert (length >= 0);
+ /* Make sure they don't overlap. */
+ assert (ABS (dest - source) >= length);
+
+ for (; length; --length)
+ *dest++ = *source++;
+}