On Thu, 28 Sep 2006, Junio C Hamano wrote: > > This is simply too clever; -pedantic does not like assignment of > arg to end (constness -- and strtoul takes pointer to non-const > char *, so making the type of end const char * is not an answer > either). The _code_ really is right. The problem is "strtoul()" interfaces and a C typing oddity. > And I do not like casting constness away: end = (char *) arg. You could fix it by doing something like this: static inline unsigned long sane_strtoul(const char *n, const char **p, int base) { char *end; unsigned long res; res = strtoul(n, &end, base); *p = end; return res; } because the only reason strtoul() warns now is that C type-rules don't allow the (obviously safe - but pointers migth have strange representations) conversion of "char **" into "const char **", even though "char *" can be converted into "const char *". At that point, the cast is probably simpler, but the above should be strictly correct pedantic ANSI C. I didn't even try it, though. Linus - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html