summaryrefslogtreecommitdiff
path: root/lib/memcpy.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1995-03-12 18:21:38 +0000
committerJim Meyering <jim@meyering.net>1995-03-12 18:21:38 +0000
commit512ba8f4f8cd29b154fc3ddf064276f0db9fd294 (patch)
tree59029a6a385047f3f6ab15fdd1ab388726f7543d /lib/memcpy.c
parentfc929d146675da0cda2d142e3d9a2b5616fd2aab (diff)
downloadgnulib-512ba8f4f8cd29b154fc3ddf064276f0db9fd294.tar.gz
.
Diffstat (limited to 'lib/memcpy.c')
-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 0000000000..a1f8b8f2b5
--- /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++;
+}