On Thu, Nov 07, 2013 at 17:48, Otto Moerbeek wrote: >> > - for (t = toskeywords; t->keyword != NULL; t++) { >> > - if (strcmp(s, t->keyword) == 0) { >> > - *val = t->val; >> > - return (1); >> > - } >> > - } >> > + t = bsearch(s, toskeywords, nitems(toskeywords), sizeof(struct >> > toskeywords), (int (*)(const void *, const void *))strcmp); >> >> I don't like the way this is abusing types. In fact, I don't think this >> even works. Did you test it? A pointer to a struct toskeyword will not >> have the same value as the keyword member. > > The first field of a struct has the same address as the the struct > itself. Still I consider this bad form and overkill.
This is true, but strcmp expects the value of t->keyword, not its address. Have I read the code wrong?