Duboucher Thomas wrote: > Bean a écrit : > > Hi, > > > This one work: > > > int > > auth_strcmp (const char *s1, const char *s2) > > { > > int result = 0; > > > while (1) > > { > > result += (*s1 != *s2); > > if (*s1 == 0) > > break; > > > s1++; > > s2++; > > } > > > return (result != 0); > > } > > > The trick is to compare the ending '\0' as well, so that partial match > > is not satisfied. > > > Yep, I like this one, but I would prefer using an OR instead of an ADD > (with a highly hypothetical integer overflow :p) and because it's nicer > in terms of pure logic. > "The comparison beetwen s1 and s2 is false if *s1 is different from > *s2, or recursively if the comparison beetwen s1+1 and s2+1 is false" > > int > auth_strcmp (const char *s1, const char *s2) > { > int ret = 0; > > for (;;) > { > ret |= (*s1 != *s2); > > if (*s1 == '\0') > break; > > s1++; > s2++; > } > > return ret; > } > But now it has a technical problem: it may read post array definitions. If any of post-array memory is MMIO or absent reading from it may have peculiar consequences > Also, because s1 and s2 have two differents roles, I think it would be > best to give them names that better suits them. ;) > > Thomas. _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel -- Regards Vladimir 'phcoder' Serbinenko