aboutsummaryrefslogtreecommitdiffstats
path: root/memelem.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2018-10-20 22:12:59 +0200
committerMattias Andrée <maandree@kth.se>2018-10-20 22:12:59 +0200
commit24f9649c1f4692dd0cea64170a015a214197c926 (patch)
tree686e5c5c5bea6e69ff5894f10e6dc5fb0124b97f /memelem.c
parentAdd man pages for memeq, mempcpy and mempset (diff)
downloadlibsimple-24f9649c1f4692dd0cea64170a015a214197c926.tar.gz
libsimple-24f9649c1f4692dd0cea64170a015a214197c926.tar.bz2
libsimple-24f9649c1f4692dd0cea64170a015a214197c926.tar.xz
Add mempsetelem and memsetelem and add fix and tests for memelem and memrelem
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
-rw-r--r--memelem.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/memelem.c b/memelem.c
index 2561456..ceca578 100644
--- a/memelem.c
+++ b/memelem.c
@@ -11,7 +11,7 @@ libsimple_memelem(const void *hay_, size_t hayn, const void *sub_, size_t subn)
switch (subn) {
case 1:
- return memchr(hay_, hayn, *(char *)sub_);
+ return memchr(hay_, *(char *)sub_, hayn);
case 2:
{
uint16_t *hay = (void *)hay_;
@@ -61,12 +61,34 @@ libsimple_memelem(const void *hay_, size_t hayn, const void *sub_, size_t subn)
int
main(void)
{
- assert(!strcmpnul(libsimple_memelem("12345634", 4, "", 0), "12345634"));
+ assert(!strcmpnul(libsimple_memelem("12345634", 8, "", 0), "12345634"));
+ assert(!strcmpnul(libsimple_memelem("12345634", 0, "", 0), "12345634"));
+
+ assert(!strcmpnul(libsimple_memelem("12345634", 8, "3", 1), "345634"));
+ assert(!libsimple_memelem("12345634", 8, "x", 1));;
+ assert(!strcmpnul(libsimple_memelem("13456342", 8, "3", 1), "3456342"));
+ assert(!libsimple_memelem("12345634", 0, "3", 1));
+
assert(!strcmpnul(libsimple_memelem("12345634", 4, "34", 2), "345634"));
assert(!libsimple_memelem("12345634", 4, "xx", 2));
assert(!libsimple_memelem("13456342", 4, "34", 2));
assert(!libsimple_memelem("12345634", 0, "34", 2));
- assert(!strcmpnul(libsimple_memelem("12345634", 0, "34", 0), "12345634"));
+
+ assert(!strcmpnul(libsimple_memelem("abcd1234abcd1234", 4, "1234", 4), "1234abcd1234"));
+ assert(!libsimple_memelem("abcd1234abcd1234", 4, "zzzz", 4));
+ assert(!libsimple_memelem("cd1234abcd1234ab", 4, "1234", 4));
+ assert(!libsimple_memelem("abcd1234abcd1234", 0, "1234", 4));
+
+ assert(!strcmpnul(libsimple_memelem("abcdefgh12345678abcdefgh12345678", 4, "12345678", 8), "12345678abcdefgh12345678"));
+ assert(!libsimple_memelem("abcdefgh12345678abcdefgh12345678", 4, "zzzzzzzz", 8));
+ assert(!libsimple_memelem("efgh12345678abcdefgh12345678abcd", 4, "12345678", 8));
+ assert(!libsimple_memelem("abcdefgh12345678abcdefgh12345678", 0, "12345678", 8));
+
+ assert(!strcmpnul(libsimple_memelem("abc123abc123", 4, "123", 3), "123abc123"));
+ assert(!libsimple_memelem("abc123abc123", 4, "zzz", 3));
+ assert(!libsimple_memelem("bc123abc123a", 4, "123", 3));
+ assert(!libsimple_memelem("abc123abc123", 0, "123", 3));
+
return 0;
}