* [PATCH] strsep.3: port strtok(3) example
@ 2022-01-23 0:21 наб
2022-01-24 22:43 ` [PATCH v2] " наб
0 siblings, 1 reply; 4+ messages in thread
From: наб @ 2022-01-23 0:21 UTC (permalink / raw)
To: Alejandro Colomar (man-pages); +Cc: linux-man
[-- Attachment #1: Type: text/plain, Size: 1989 bytes --]
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@nabijaczleweli.xyz>
---
Program builds clean on clang 14 trunk with -Wall -Wextra,
\t -> \et fix included
man3/strsep.3 | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/man3/strsep.3 b/man3/strsep.3
index fb5f7fd1a..b86cd1a54 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 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),
--
2.30.2
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2] strsep.3: port strtok(3) example
2022-01-23 0:21 [PATCH] strsep.3: port strtok(3) example наб
@ 2022-01-24 22:43 ` наб
2022-01-24 23:27 ` Alejandro Colomar (man-pages)
0 siblings, 1 reply; 4+ messages in thread
From: наб @ 2022-01-24 22:43 UTC (permalink / raw)
To: Alejandro Colomar (man-pages); +Cc: linux-man
[-- Attachment #1: Type: text/plain, Size: 1976 bytes --]
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@nabijaczleweli.xyz>
---
v2: I accidentally a word in "multiple delimiters or empty tokens"
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),
--
2.30.2
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2] strsep.3: port strtok(3) example
2022-01-24 22:43 ` [PATCH v2] " наб
@ 2022-01-24 23:27 ` Alejandro Colomar (man-pages)
2022-01-25 17:17 ` Alejandro Colomar (man-pages)
0 siblings, 1 reply; 4+ messages in thread
From: Alejandro Colomar (man-pages) @ 2022-01-24 23:27 UTC (permalink / raw)
To: наб; +Cc: linux-man
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@nabijaczleweli.xyz>
> ---
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/
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] strsep.3: port strtok(3) example
2022-01-24 23:27 ` Alejandro Colomar (man-pages)
@ 2022-01-25 17:17 ` Alejandro Colomar (man-pages)
0 siblings, 0 replies; 4+ messages in thread
From: Alejandro Colomar (man-pages) @ 2022-01-25 17:17 UTC (permalink / raw)
To: наб; +Cc: linux-man
Hi наб,
On 1/25/22 00:27, Alejandro Colomar (man-pages) wrote:
> 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@nabijaczleweli.xyz>
>> ---
I applied this patch and all of the other patches you sent in the past 2
days (5 patches in total).
Thanks,
Alex
> 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/
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-01-25 17:20 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-23 0:21 [PATCH] strsep.3: port strtok(3) example наб
2022-01-24 22:43 ` [PATCH v2] " наб
2022-01-24 23:27 ` Alejandro Colomar (man-pages)
2022-01-25 17:17 ` Alejandro Colomar (man-pages)
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.