From: David Gibson Date: Wed, 22 Oct 2014 11:56:51 +0000 (+0200) Subject: mem: Rename memmem module to mem X-Git-Url: http://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=992931f06cf25d24fe74b4c617753aef2de70426;ds=sidebyside mem: Rename memmem module to mem Currently the 'memmem' module does nothing but provide an implementation of the memmem() function if it is missing from the standard C library. However there are other functions (e.g. memrchr()) also missing from some C library implementations, so rename the module to mem to allow future inclusion of other functions. This also updates the rfc822 module - the only existing user of the memmem module - to use the new name. Signed-off-by: David Gibson --- diff --git a/Makefile-ccan b/Makefile-ccan index f97ff20d..543a3452 100644 --- a/Makefile-ccan +++ b/Makefile-ccan @@ -72,7 +72,7 @@ MODS_WITH_SRC := antithread \ lqueue \ lstack \ md4 \ - memmem \ + mem \ net \ nfs \ noerr \ diff --git a/ccan/mem/LICENSE b/ccan/mem/LICENSE new file mode 120000 index 00000000..b7951dab --- /dev/null +++ b/ccan/mem/LICENSE @@ -0,0 +1 @@ +../../licenses/CC0 \ No newline at end of file diff --git a/ccan/mem/_info b/ccan/mem/_info new file mode 100644 index 00000000..19b22287 --- /dev/null +++ b/ccan/mem/_info @@ -0,0 +1,30 @@ +#include "config.h" +#include +#include + +/** + * mem - Provide mem*() functions if missing from C library + * + * This code implements some string.h mem*() functions if they're not + * already available in the C library. Functions included are: + * memmem() + * + * License: CC0 + */ +int main(int argc, char *argv[]) +{ + /* Expect exactly one argument */ + if (argc != 2) + return 1; + + if (strcmp(argv[1], "depends") == 0) { + return 0; + } + + if (strcmp(argv[1], "testdepends") == 0) { + printf("ccan/array_size"); + return 0; + } + + return 1; +} diff --git a/ccan/mem/mem.c b/ccan/mem/mem.c new file mode 100644 index 00000000..ce675ff0 --- /dev/null +++ b/ccan/mem/mem.c @@ -0,0 +1,27 @@ +/* CC0 (Public domain) - see LICENSE file for details */ + +#include "config.h" + +#include +#include + +#if !HAVE_MEMMEM +void *memmem(const void *haystack, size_t haystacklen, + const void *needle, size_t needlelen) +{ + const char *p; + + if (needlelen > haystacklen) + return NULL; + + p = haystack; + + for (p = haystack; + (p + needlelen) <= ((const char *)haystack + haystacklen); + p++) + if (memcmp(p, needle, needlelen) == 0) + return (void *)p; + + return NULL; +} +#endif diff --git a/ccan/mem/mem.h b/ccan/mem/mem.h new file mode 100644 index 00000000..771d0527 --- /dev/null +++ b/ccan/mem/mem.h @@ -0,0 +1,14 @@ +/* CC0 (Public domain) - see LICENSE file for details */ +#ifndef CCAN_MEM_H +#define CCAN_MEM_H + +#include "config.h" + +#include + +#if !HAVE_MEMMEM +void *memmem(const void *haystack, size_t haystacklen, + const void *needle, size_t needlelen); +#endif + +#endif /* CCAN_MEM_H */ diff --git a/ccan/mem/test/run.c b/ccan/mem/test/run.c new file mode 100644 index 00000000..3efd1d81 --- /dev/null +++ b/ccan/mem/test/run.c @@ -0,0 +1,20 @@ +#include +#include +#include + +int main(void) +{ + char haystack1[] = "abcd\0efgh"; + char needle1[] = "ab"; + char needle2[] = "d\0e"; + + /* This is how many tests you plan to run */ + plan_tests(3); + + ok1(memmem(haystack1, sizeof(haystack1), needle1, 2) == haystack1); + ok1(memmem(haystack1, sizeof(haystack1), needle1, 3) == NULL); + ok1(memmem(haystack1, sizeof(haystack1), needle2, 3) == (haystack1 + 3)); + + /* This exits depending on whether all tests passed */ + return exit_status(); +} diff --git a/ccan/memmem/LICENSE b/ccan/memmem/LICENSE deleted file mode 120000 index b7951dab..00000000 --- a/ccan/memmem/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../../licenses/CC0 \ No newline at end of file diff --git a/ccan/memmem/_info b/ccan/memmem/_info deleted file mode 100644 index 3361be97..00000000 --- a/ccan/memmem/_info +++ /dev/null @@ -1,29 +0,0 @@ -#include "config.h" -#include -#include - -/** - * memmem - Trivial module providing a memmem() implementation - * - * This code implements memmem() if it's not alreayd available in the - * C library. - * - * License: CC0 - */ -int main(int argc, char *argv[]) -{ - /* Expect exactly one argument */ - if (argc != 2) - return 1; - - if (strcmp(argv[1], "depends") == 0) { - return 0; - } - - if (strcmp(argv[1], "testdepends") == 0) { - printf("ccan/array_size"); - return 0; - } - - return 1; -} diff --git a/ccan/memmem/memmem.c b/ccan/memmem/memmem.c deleted file mode 100644 index 48a6de2b..00000000 --- a/ccan/memmem/memmem.c +++ /dev/null @@ -1,27 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ - -#include "config.h" - -#include -#include - -#if !HAVE_MEMMEM -void *memmem(const void *haystack, size_t haystacklen, - const void *needle, size_t needlelen) -{ - const char *p; - - if (needlelen > haystacklen) - return NULL; - - p = haystack; - - for (p = haystack; - (p + needlelen) <= ((const char *)haystack + haystacklen); - p++) - if (memcmp(p, needle, needlelen) == 0) - return (void *)p; - - return NULL; -} -#endif diff --git a/ccan/memmem/memmem.h b/ccan/memmem/memmem.h deleted file mode 100644 index 4da53940..00000000 --- a/ccan/memmem/memmem.h +++ /dev/null @@ -1,14 +0,0 @@ -/* CC0 (Public domain) - see LICENSE file for details */ -#ifndef CCAN_MEMMEM_H -#define CCAN_MEMMEM_H - -#include "config.h" - -#include - -#if !HAVE_MEMMEM -void *memmem(const void *haystack, size_t haystacklen, - const void *needle, size_t needlelen); -#endif - -#endif /* CCAN_MEMMEM_H */ diff --git a/ccan/memmem/test/run.c b/ccan/memmem/test/run.c deleted file mode 100644 index af9aac50..00000000 --- a/ccan/memmem/test/run.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include -#include - -int main(void) -{ - char haystack1[] = "abcd\0efgh"; - char needle1[] = "ab"; - char needle2[] = "d\0e"; - - /* This is how many tests you plan to run */ - plan_tests(3); - - ok1(memmem(haystack1, sizeof(haystack1), needle1, 2) == haystack1); - ok1(memmem(haystack1, sizeof(haystack1), needle1, 3) == NULL); - ok1(memmem(haystack1, sizeof(haystack1), needle2, 3) == (haystack1 + 3)); - - /* This exits depending on whether all tests passed */ - return exit_status(); -} diff --git a/ccan/rfc822/_info b/ccan/rfc822/_info index 7c3ca08e..680f4991 100644 --- a/ccan/rfc822/_info +++ b/ccan/rfc822/_info @@ -65,7 +65,7 @@ int main(int argc, char *argv[]) printf("ccan/list\n"); printf("ccan/str\n"); printf("ccan/bytestring\n"); - printf("ccan/memmem\n"); + printf("ccan/mem\n"); return 0; } diff --git a/ccan/rfc822/rfc822.c b/ccan/rfc822/rfc822.c index 636d29a6..2d23b9ca 100644 --- a/ccan/rfc822/rfc822.c +++ b/ccan/rfc822/rfc822.c @@ -8,7 +8,7 @@ #include #include -#include +#include #include #ifdef TAL_USE_TALLOC