On Friday 25 February 2005 17:02, Hollis Blanchard wrote:int grub_strword (const char *haystack, const char *needle) { int pos = 0; int found = 0;
while (haystack[pos]) { /* Advance to next word. */ while (grub_iswordseparator (haystack[pos])) pos++;
if (0 == grub_strcmp (&haystack[pos], needle)) { found = 1; break; } }
return found; }
What about grub_strword("all,foo","all") ?
Wouldn't strcmp tell that {'a','l','l',',',...,'\0'} and {'a','l','l','\0'} are different ?
grub_strword ("filesystem", "file") returns 0 in your implementation.
Isn't it what should happen ?
If we use 2 similar words, one being a substring of the other, I don't think the substring should make the larger match too. Or we might add a hierarchy thing (filesystem/inode, filesystem/block, kern/alloc, kern/term/font/draw, ...) where "filesystem" would match all "filesystem/*" ad "filesystem/inode" would only match that one.
Hollis: mmh, I bet you'll say it's overcomplicated :). And I think you're right. The more I think about such "simple" debug func, the more I feel like I'll take over the world of debugging system... Well, time to find some more of those nice mushrooms ;). And a clean paper to write those 500 Changelog entries.
Vincent Pelletier
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel