Re: [off topic?] Re: [PATCH] strtok --> strsep in framebuffer drivers

Kari Hurtta (hurtta@leija.mh.fmi.fi)
Sat, 27 Oct 2001 10:55:09 +0300 (EEST)


> > René Scharfe wrote:
>
> > NAME
> > strsep - extract token from string
> > [...]
> > RETURN VALUE
> > The strsep() function returns a pointer to the token, or
> > NULL if delim is not found in stringp.
> >
> > If strsep returns NULL, and you dereference it -> Oops.
> >
> >
> > ! if (!this_opt)
> > continue;
>
> Is that manual page incorrect?
>
> I would think that
>
> strsep() returns NULL when *stringp points to '\0' character
>
> and that if delim is not found in stringp then stringp
> is just advanced to '\0' character of string (and original
> *stringp value is returned)
>
> If that is not true, then these all patches are incorrect.
> Namely last token will be skipped.

Seems that I have also good to talk to mayself....

lib/string.c tells truth.

strsep() returns NULL when *stringp is NULL.

if delim is not found *stringp is set to NULL (and original
*stringp value is returned).

Because kernel code claims that

* It returns empty tokens, too, behaving exactly like the libc function
* of that name. In fact, it was stolen from glibc2 and de-fancy-fied.
* Same semantics, slimmer shape. ;)

quoted manual page IS incorrect (at least if it describes glibc2 function.)

-- 
          /"\                           |  Kari 
          \ /     ASCII Ribbon Campaign |    Hurtta
           X      Against HTML Mail     |
          / \                           |
-
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/