On 11/28/18 2:30 PM, enh via Toybox wrote:
> bionic, glibc, macOS, and musl all have strcasestr
> (see http://man7.org/linux/man-pages/man3/strstr.3.html).

Dear posix: catch up to reality. I'm sure there's a nice farm somewhere willing
to take Jorg Schilling where he can tell everyone how much better Solaris was
than Linux to his heart's content.

> +#include <string.h>
> +char *strcasestr(const char *haystack, const char *needle);
> +

Why are you including string.h here? That's 3 includes of it (it's in the posix
headers in toys.h after all the portability stuff, and under __BIONIC__, and now
here under __GLIBC__. The standard #includes are after the portability.h stuff
so that can override them, but

The reasons I hadn't done that were:

1) It's  gnu extension and didn't know where else has it. (Sounds like everybody
though.)

2) prototypes grow "const" and "restrict" and __attribute__ and such
semi-randomly, and if you don't get it exactly right the build breaks on a
not-exactly-matching duplicate prototype. (You'd think "what you put on the
stack matches" would be good enough, but no...)

I've cut and pasted a couple out of the posix spec (where it's _specified_ what
the prototype has to be), but glibc has a nasty habit of "that linux kernel
system call was exported when you #included the header, but then they shipped a
new version where you have to #define _gnugnuallhailstallman to get the function
they used to freely export and I don't trust them not to break random stuff.

Sigh. I'm willing to take your word that this is the right thing to do, but it
makes me nervous...

Rob
_______________________________________________
Toybox mailing list
[email protected]
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to