Re: [PATCH v2] strsep.3: port strtok(3) example

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, наб!

On 1/24/22 23:43, наб wrote:
> Each time I use strsep I want something like this;
> this serves to snappily highlight the programming model,
> esp. in contrast to strtok_r ‒ I elided the long
> (and, frankly, gratuitous, even there) argv explanation
> ‒ if you need it, you can read the original
> (or the usage string, or the seven-line main)
> 
> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@xxxxxxxxxxxxxxxxxx>
> ---
All of the other patches look good to me.
This one I haven't reviewed it yet.
I'll probably apply them all tomorrow.

> v2: I accidentally a word in "multiple delimiters or empty tokens"

It made me laugh :p

Thanks,

Alex

> 
>  man3/strsep.3 | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
> 
> diff --git a/man3/strsep.3 b/man3/strsep.3
> index fb5f7fd1a..3ce4fc35d 100644
> --- a/man3/strsep.3
> +++ b/man3/strsep.3
> @@ -118,6 +118,56 @@ This function modifies its first argument.
>  This function cannot be used on constant strings.
>  .IP *
>  The identity of the delimiting character is lost.
> +.SH EXAMPLES
> +The program below is a port of the one found in
> +.BR strtok (3),
> +which, however, doesn't discard multiple delimiters or empty tokens:
> +.PP
> +.in +4n
> +.EX
> +.RB "$" " ./a.out \(aqa/bbb///cc;xxx:yyy:\(aq \(aq:;\(aq \(aq/\(aq"
> +1: a/bbb///cc
> +         \-\-> a
> +         \-\-> bbb
> +         \-\->
> +         \-\->
> +         \-\-> cc
> +2: xxx
> +         \-\-> xxx
> +3: yyy
> +         \-\-> yyy
> +4:
> +         \-\->
> +.EE
> +.in
> +.SS Program source
> +\&
> +.EX
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <string.h>
> +
> +int
> +main(int argc, char *argv[])
> +{
> +    char *token, *subtoken;
> +
> +    if (argc != 4) {
> +        fprintf(stderr, "Usage: %s string delim subdelim\en",
> +                argv[0]);
> +        exit(EXIT_FAILURE);
> +    }
> +
> +    for (int j = 1; (token = strsep(&argv[1], argv[2])); j++) {
> +        printf("%d: %s\en", j, token);
> +
> +        while ((subtoken = strsep(&token, argv[3])))
> +            printf("\et \-\-> %s\en", subtoken);
> +    }
> +
> +    exit(EXIT_SUCCESS);
> +}
> +.EE
>  .SH SEE ALSO
>  .BR index (3),
>  .BR memchr (3),

-- 
Alejandro Colomar
Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/
http://www.alejandro-colomar.es/



[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux