diff --git a/ChangeLog b/ChangeLog index f673202c99..98db0948cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2011-10-29 Ulrich Drepper + * string/test-strchr.c: Make usable for strchrnul testing. + * string/test-strchrnul.c: New file. + * string/Makefile (strop-tests): Add strchrnul. + * po/it.po: Update from translation team. * po/es.po: Likewise. diff --git a/string/Makefile b/string/Makefile index 109f59b454..459cf810ff 100644 --- a/string/Makefile +++ b/string/Makefile @@ -50,7 +50,7 @@ strop-tests := memchr memcmp memcpy memmove mempcpy memset memccpy \ stpcpy stpncpy strcat strchr strcmp strcpy strcspn \ strlen strncmp strncpy strpbrk strrchr strspn memmem \ strstr strcasestr strnlen strcasecmp strncasecmp \ - strncat rawmemchr + strncat rawmemchr strchrnul tests := tester inl-tester noinl-tester testcopy test-ffs \ tst-strlen stratcliff tst-svc tst-inlcall \ bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \ diff --git a/string/test-strchr.c b/string/test-strchr.c index 3bbc2f5700..a46ee82c1d 100644 --- a/string/test-strchr.c +++ b/string/test-strchr.c @@ -23,7 +23,13 @@ #include "test-string.h" #ifndef WIDE -# define STRCHR strchr +# ifdef USE_FOR_STRCHRNUL +# define STRCHR strchrnul +# define stupid_STRCHR stupid_STRCHRNUL +# define simple_STRCHR simple_STRCHRNUL +# else +# define STRCHR strchr +# endif # define STRLEN strlen # define CHAR char # define BIG_CHAR CHAR_MAX @@ -41,6 +47,13 @@ # define UCHAR wchar_t #endif +#ifdef USE_FOR_STRCHRNUL +# define NULLRET(endptr) endptr +#else +# define NULLRET(endptr) NULL +#endif + + typedef CHAR *(*proto_t) (const CHAR *, int); CHAR * @@ -48,7 +61,7 @@ simple_STRCHR (const CHAR *s, int c) { for (; *s != (CHAR) c; ++s) if (*s == '\0') - return NULL; + return NULLRET ((CHAR *) s); return (CHAR *) s; } @@ -60,7 +73,7 @@ stupid_STRCHR (const CHAR *s, int c) while (n--) if (*s++ == (CHAR) c) return (CHAR *) s - 1; - return NULL; + return NULLRET ((CHAR *) s - 1); } IMPL (stupid_STRCHR, 0) @@ -73,8 +86,8 @@ do_one_test (impl_t *impl, const CHAR *s, int c, const CHAR *exp_res) CHAR *res = CALL (impl, s, c); if (res != exp_res) { - error (0, 0, "Wrong result in function %s %p %p", impl->name, - res, exp_res); + error (0, 0, "Wrong result in function %s %#x %p %p", impl->name, + c, res, exp_res); ret = 1; return; } @@ -129,7 +142,7 @@ do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char) else if (seek_char == 0) result = buf + align + len; else - result = NULL; + result = NULLRET (buf + align + len); if (HP_TIMING_AVAIL) printf ("Length %4zd, alignment in bytes %2zd:", @@ -198,7 +211,7 @@ do_random_tests (void) else if (seek_char == 0) result = (CHAR *) (p + len + align); else - result = NULL; + result = NULLRET ((CHAR *) (p + len + align)); FOR_EACH_IMPL (impl, 1) if (CALL (impl, (CHAR *) (p + align), seek_char) != result) diff --git a/string/test-strchrnul.c b/string/test-strchrnul.c new file mode 100644 index 0000000000..9836af6ddd --- /dev/null +++ b/string/test-strchrnul.c @@ -0,0 +1,2 @@ +#define USE_FOR_STRCHRNUL 1 +#include "test-strchr.c"