![]() | |||||||||||||
Messages in this thread |
On 2/19/07, Avi Kivity <avi@argo.co.il> wrote: > Francis Moreau wrote: > >> > unsigned long simple_strtoul(const char *cp, char **endp,unsigned > >> int base) > > > > hm, I don't get your point. I understand why we cast 'cp' into a (char > > *) but that's not my point. My point is why aren't all function > > parameters are not const ? > > > > 'cp' can be passed as const, because simple_strtoul() does not modify > it. 'endp' cannot be passed as const, because simple_strtoul() cannot > know whether the caller would want to modify the string or not. > > Whichever way it is written, it is broken. If changed to 'const', it > would preclude the caller from modifying the string if one has a > non-const string. As written, it can silently convert a const string to > a non-const string. However, as written it is (a) standard conforming, > and (b) more useful. > ok I think I finally got it and I agree that both ways are broken. Maybe changing simple_strtoul() prototype as follow would be better ? int simple_strtoul(const char *cp, unsigned long *value, unsigned base) the function would return the number of parsed char, and 'value' would be the result. -- Francis - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2007-02-20 09:23 [from the cache] ©2003-2008 | |||||||||||||