aboutsummaryrefslogtreecommitdiffstats
path: root/memory/memccmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'memory/memccmp.c')
-rw-r--r--memory/memccmp.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/memory/memccmp.c b/memory/memccmp.c
new file mode 100644
index 0000000..dadb406
--- /dev/null
+++ b/memory/memccmp.c
@@ -0,0 +1,14 @@
+#include "memory.h"
+
+int memccmp(void const *buffer1, void const *buffer2, int value, size_t size)
+{
+ unsigned char const *buffer[] = {buffer1, buffer2};
+ for (size_t i = 0; i < size; i++) {
+ if (buffer[0][i] != buffer[1][i])
+ return buffer[0][i] - buffer[1][i];
+ if (buffer[0][i] == (unsigned char)value ||
+ buffer[1][i] == (unsigned char)value)
+ break;
+ }
+ return 0;
+}