how to deal with const
perryh at pluto.rain.com
perryh at pluto.rain.com
Sat Dec 30 23:38:54 PST 2006
I'm working on a kernel project that needs strstr(3).
It looks as if most of the str* functions in libkern are very
similar, if not identical, to their counterparts in libc/string,
but that approach does not seem to work for strstr (#s added):
1: char *
2: strstr(s, find)
3: const char *s, *find;
4: {
5: char c, sc;
6: size_t len;
7:
8: if ((c = *find++) != 0) {
9: len = strlen(find);
10: do {
11: do {
12: if ((sc = *s++) == 0)
13: return (NULL);
14: } while (sc != c);
15: } while (strncmp(s, find, len) != 0);
16: s--;
17: }
18: return ((char *)s);
19: }
I get a "warning: cast discards qualifiers from pointer target type"
on line 18. If I remove the cast, changing it to just "return (s);",
I get "warning: return discards qualifiers from pointer target type"
(and because this is the kernel, those "warning" messages are actually
treated as errors).
What is the accepted method of dealing with this sort of thing?
More information about the freebsd-hackers
mailing list