Work around a gcc-3.3.x bug where redefining prototypes with different __THROW / attribute(nonnull) markings throws an error: string.cpp:31: error: declaration of `char* strcasestr(const char*, const char*)' throws different exceptions ../include/string.h:46: error: than previous declaration `char* strcasestr(const char*, const char*) throw ()' basically we just use the glibc strcasestr() instead of the internal one. http://bugs.gentoo.org/show_bug.cgi?id=85780 --- endeavour2/string.cpp +++ endeavour2/string.cpp @@ -28,3 +28,5 @@ #endif +#ifndef _GNU_SOURCE char *strcasestr(const char *haystack, const char *needle); +#endif int strpfx(const char *s, const char *pfx); @@ -217,3 +219,4 @@ */ +#ifndef _GNU_SOURCE char *strcasestr(const char *haystack, const char *needle) { @@ -274,6 +277,7 @@ return(NULL); } +#endif /* * Checks if string pfx is a prefix of string s.