diff options
author | dzwdz | 2021-11-14 17:46:20 +0100 |
---|---|---|
committer | dzwdz | 2021-11-14 17:46:20 +0100 |
commit | 7acf810e81491b08410df1b7bb886bd11b44cd98 (patch) | |
tree | d05378fea8e7e11a6db90369c165988752a18557 /src/shared | |
parent | 714b3dce9016f699f8842d792075555077fd4d31 (diff) |
shared: use a single implementation of mem* functions everywhere
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/mem.c | 28 | ||||
-rw-r--r-- | src/shared/mem.h | 7 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/shared/mem.c b/src/shared/mem.c new file mode 100644 index 0000000..1b483fe --- /dev/null +++ b/src/shared/mem.c @@ -0,0 +1,28 @@ +#include <shared/mem.h> +#include <stdint.h> + +int memcmp(const void *s1, const void *s2, size_t n) { + const unsigned char *c1 = s1, *c2 = s2; + for (size_t i = 0; i < n; i++) { + if (c1[i] != c2[i]) { + if (c1[i] < c2[i]) return -1; + else return 1; + } + } + return 0; +} + +void *memcpy(void *dest, const void *src, size_t n) { + char *d = dest; + const char *s = src; + for (size_t i = 0; i < n; i++) + d[i] = s[i]; + return dest; +} + +void *memset(void *s, int c, size_t n) { + uint8_t *s2 = s; + for (size_t i = 0; i < n; n++) + s2[i] = c; + return s; +} diff --git a/src/shared/mem.h b/src/shared/mem.h new file mode 100644 index 0000000..682c184 --- /dev/null +++ b/src/shared/mem.h @@ -0,0 +1,7 @@ +#pragma once +#include <stddef.h> + +int memcmp(const void *s1, const void *s2, size_t n); + +void *memcpy(void *dest, const void *src, size_t n); +void *memset(void *s, int c, size_t n); |