* [PATCH] man/man3/strftime.3: Check parameter @ 2025-08-18 16:56 dave 2025-08-18 17:14 ` Alejandro Colomar 0 siblings, 1 reply; 3+ messages in thread From: dave @ 2025-08-18 16:56 UTC (permalink / raw) To: alx; +Cc: linux-man, Dr. David Alan Gilbert From: "Dr. David Alan Gilbert" <dave@treblig.org> The strftime example requires a format paramter. If you don't pass one it crashes. Check for the parameter. Signed-off-by: Dr. David Alan Gilbert <dave@treblig.org> --- man/man3/strftime.3 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/man/man3/strftime.3 b/man/man3/strftime.3 index 4a3f805bb..3c1108b36 100644 --- a/man/man3/strftime.3 +++ b/man/man3/strftime.3 @@ -739,6 +739,11 @@ .SS Program source char outstr[200]; time_t t; struct tm *tmp; +\& + if (argc != 2) { + fprintf(stderr,"%s: format-string\[rs]n", argv[0]); + exit(EXIT_FAILURE); + } \& t = time(NULL); tmp = localtime(&t); -- 2.50.1 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] man/man3/strftime.3: Check parameter 2025-08-18 16:56 [PATCH] man/man3/strftime.3: Check parameter dave @ 2025-08-18 17:14 ` Alejandro Colomar 2025-08-18 17:46 ` Dr. David Alan Gilbert 0 siblings, 1 reply; 3+ messages in thread From: Alejandro Colomar @ 2025-08-18 17:14 UTC (permalink / raw) To: dave; +Cc: linux-man [-- Attachment #1: Type: text/plain, Size: 5388 bytes --] Hi David, On Mon, Aug 18, 2025 at 05:56:35PM +0100, dave@treblig.org wrote: > From: "Dr. David Alan Gilbert" <dave@treblig.org> > > The strftime example requires a format paramter. If you don't > pass one it crashes. > Check for the parameter. > > Signed-off-by: Dr. David Alan Gilbert <dave@treblig.org> > --- > man/man3/strftime.3 | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/man/man3/strftime.3 b/man/man3/strftime.3 > index 4a3f805bb..3c1108b36 100644 > --- a/man/man3/strftime.3 > +++ b/man/man3/strftime.3 > @@ -739,6 +739,11 @@ .SS Program source > char outstr[200]; > time_t t; > struct tm *tmp; > +\& > + if (argc != 2) { > + fprintf(stderr,"%s: format-string\[rs]n", argv[0]); Please make it consistent with examples from other manual pages. See: $ find man/ -type f \ | xargs mansect EXAMPLES \ | man /dev/stdin \ | grep fprintf.*stderr.*argv.0; fprintf(stderr, "Usage: %s MOUNT\n", argv[0]); fprintf(stderr, "Usage: %s <file>\n", argv[0]); fprintf(stderr, "Usage: %s device [output [input] ]\n", argv[0]); fprintf(stderr, "Usage: %s <source> <destination>\n", argv[0]); fprintf(stderr, "%s <owner> <file>\n", argv[0]); fprintf(stderr, "Usage: %s shmid semid string\n", argv[0]); fprintf(stderr, "Usage: %s path\n", argv[0]); fprintf(stderr, "Usage: %s path\n", argv[0]); fprintf(stderr, "Usage: %s [mount-path]\n", argv[0]); fprintf(stderr, "%s /proc/PID/ns/FILE cmd args...\n", argv[0]); fprintf(stderr, "Usage: %s <child-hostname>\n", argv[0]); fprintf(stderr, "Usage: %s <pid>\n", argv[0]); fprintf(stderr, "%s file offset [length]\n", argv[0]); fprintf(stderr, "Usage: %s <path>\n", argv[0]); fprintf(stderr, "Usage: %s file...\n", argv[0]); fprintf(stderr, "Usage: %s <file>\n", argv[0]); fprintf(stderr, "Usage: %s <path>\n", argv[0]); fprintf(stderr, "Usage: %s <file-to-exec>\n", argv[0]); fprintf(stderr, "Usage: %s <num>...\n", argv[0]); fprintf(stderr, "Usage: %s num-pages\n", argv[0]); fprintf(stderr, "Usage: %s <pid> <signal>\n", argv[0]); fprintf(stderr, "Usage: %s <string>\n", argv[0]); fprintf(stderr, "%s name size [seals]\n", argv[0]); fprintf(stderr, "%s /proc/PID/fd/FD\n", argv[0]); fprintf(stderr, "Usage: %s '<num>...'\n", argv[0]); fprintf(stderr, "Usage: %s HOST...\n", argv[0]); fprintf(stderr, "Usage: %s <libpath>\n", argv[0]); fprintf(stderr, "%s response\n", argv[0]); fprintf(stderr, "Usage: %s <user> <ngroups>\n", argv[0]); fprintf(stderr, "Usage: %s str [base]\n", argv[0]); fprintf(stderr, "Usage: %s username\n", argv[0]); fprintf(stderr, "Usage: %s <file>\n", argv[0]); fprintf(stderr, "Usage: %s <num-cpus>\n", argv[0]); fprintf(stderr, "Usage: %s <string1> <string2>\n", argv[0]); fprintf(stderr, "Usage: %s <num> <num>\n", argv[0]); fprintf(stderr, "%s <dotted-address>\n", argv[0]); fprintf(stderr, "Usage: %s <mq-name>\n", argv[0]); fprintf(stderr, "Usage: %s <num>\n", argv[0]); fprintf(stderr, "Usage: %s <string>...\n", argv[0]); fprintf(stderr, "Usage: %s locale1 [locale2]\n", argv[0]); fprintf(stderr, "Usage: %s string delim subdelim\n", argv[0]); fprintf(stderr, "Usage: %s [-c] string...\n", argv[0]); fprintf(stderr, "Usage: %s <real> <imag>\n", argv[0]); fprintf(stderr, "Usage: %s <real> <imag>\n", argv[0]); fprintf(stderr, "Usage: %s mq-name\n", argv[0]); fprintf(stderr, "Usage: %s string\n", argv[0]); fprintf(stderr, "Usage: %s port\n", argv[0]); fprintf(stderr, "Usage: %s host port msg...\n", argv[0]); fprintf(stderr, "Usage: %s <real> <imag>\n", argv[0]); fprintf(stderr, "\nUsage: %s -o <suboptstring>\n", argv[0]); fprintf(stderr, "%s num-calls\n", argv[0]); fprintf(stderr, "Usage: %s {i4|i6|<num>} string\n", argv[0]); fprintf(stderr, "Usage: %s <seed> <nloops>\n", argv[0]); fprintf(stderr, "Usage: %s <str1> <str2> [<n>]\n", argv[0]); fprintf(stderr, "Usage: %s <locale> <string>\n", argv[0]); fprintf(stderr, "Usage: %s /shm-path\n", argv[0]); fprintf(stderr, "Usage: %s /shm-path string\n", argv[0]); fprintf(stderr, "Usage: %s yyyy mm dd HH MM SS isdst\n", argv[0]); fprintf(stderr, "Usage: %s <real> <imag>\n", argv[0]); fprintf(stderr, "%s <process-ID>\n", argv[0]); fprintf(stderr, "Usage: %s backing-file\n", argv[0]); Have a lovely day! Alex > + exit(EXIT_FAILURE); > + } > \& > t = time(NULL); > tmp = localtime(&t); > -- > 2.50.1 > -- <https://www.alejandro-colomar.es/> [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] man/man3/strftime.3: Check parameter 2025-08-18 17:14 ` Alejandro Colomar @ 2025-08-18 17:46 ` Dr. David Alan Gilbert 0 siblings, 0 replies; 3+ messages in thread From: Dr. David Alan Gilbert @ 2025-08-18 17:46 UTC (permalink / raw) To: Alejandro Colomar; +Cc: linux-man * Alejandro Colomar (alx@kernel.org) wrote: > Hi David, > > On Mon, Aug 18, 2025 at 05:56:35PM +0100, dave@treblig.org wrote: > > From: "Dr. David Alan Gilbert" <dave@treblig.org> > > > > The strftime example requires a format paramter. If you don't > > pass one it crashes. > > Check for the parameter. > > > > Signed-off-by: Dr. David Alan Gilbert <dave@treblig.org> > > --- > > man/man3/strftime.3 | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/man/man3/strftime.3 b/man/man3/strftime.3 > > index 4a3f805bb..3c1108b36 100644 > > --- a/man/man3/strftime.3 > > +++ b/man/man3/strftime.3 > > @@ -739,6 +739,11 @@ .SS Program source > > char outstr[200]; > > time_t t; > > struct tm *tmp; > > +\& > > + if (argc != 2) { > > + fprintf(stderr,"%s: format-string\[rs]n", argv[0]); > > Please make it consistent with examples from other manual pages. See: Thanks for the review, V2 sent, see: 20250818174553.70132-1-dave@treblig.org Dave > $ find man/ -type f \ > | xargs mansect EXAMPLES \ > | man /dev/stdin \ > | grep fprintf.*stderr.*argv.0; > fprintf(stderr, "Usage: %s MOUNT\n", argv[0]); > fprintf(stderr, "Usage: %s <file>\n", argv[0]); > fprintf(stderr, "Usage: %s device [output [input] ]\n", argv[0]); > fprintf(stderr, "Usage: %s <source> <destination>\n", argv[0]); > fprintf(stderr, "%s <owner> <file>\n", argv[0]); > fprintf(stderr, "Usage: %s shmid semid string\n", argv[0]); > fprintf(stderr, "Usage: %s path\n", argv[0]); > fprintf(stderr, "Usage: %s path\n", argv[0]); > fprintf(stderr, "Usage: %s [mount-path]\n", argv[0]); > fprintf(stderr, "%s /proc/PID/ns/FILE cmd args...\n", argv[0]); > fprintf(stderr, "Usage: %s <child-hostname>\n", argv[0]); > fprintf(stderr, "Usage: %s <pid>\n", argv[0]); > fprintf(stderr, "%s file offset [length]\n", argv[0]); > fprintf(stderr, "Usage: %s <path>\n", argv[0]); > fprintf(stderr, "Usage: %s file...\n", argv[0]); > fprintf(stderr, "Usage: %s <file>\n", argv[0]); > fprintf(stderr, "Usage: %s <path>\n", argv[0]); > fprintf(stderr, "Usage: %s <file-to-exec>\n", argv[0]); > fprintf(stderr, "Usage: %s <num>...\n", argv[0]); > fprintf(stderr, "Usage: %s num-pages\n", argv[0]); > fprintf(stderr, "Usage: %s <pid> <signal>\n", argv[0]); > fprintf(stderr, "Usage: %s <string>\n", argv[0]); > fprintf(stderr, "%s name size [seals]\n", argv[0]); > fprintf(stderr, "%s /proc/PID/fd/FD\n", argv[0]); > fprintf(stderr, "Usage: %s '<num>...'\n", argv[0]); > fprintf(stderr, "Usage: %s HOST...\n", argv[0]); > fprintf(stderr, "Usage: %s <libpath>\n", argv[0]); > fprintf(stderr, "%s response\n", argv[0]); > fprintf(stderr, "Usage: %s <user> <ngroups>\n", argv[0]); > fprintf(stderr, "Usage: %s str [base]\n", argv[0]); > fprintf(stderr, "Usage: %s username\n", argv[0]); > fprintf(stderr, "Usage: %s <file>\n", argv[0]); > fprintf(stderr, "Usage: %s <num-cpus>\n", argv[0]); > fprintf(stderr, "Usage: %s <string1> <string2>\n", argv[0]); > fprintf(stderr, "Usage: %s <num> <num>\n", argv[0]); > fprintf(stderr, "%s <dotted-address>\n", argv[0]); > fprintf(stderr, "Usage: %s <mq-name>\n", argv[0]); > fprintf(stderr, "Usage: %s <num>\n", argv[0]); > fprintf(stderr, "Usage: %s <string>...\n", argv[0]); > fprintf(stderr, "Usage: %s locale1 [locale2]\n", argv[0]); > fprintf(stderr, "Usage: %s string delim subdelim\n", argv[0]); > fprintf(stderr, "Usage: %s [-c] string...\n", argv[0]); > fprintf(stderr, "Usage: %s <real> <imag>\n", argv[0]); > fprintf(stderr, "Usage: %s <real> <imag>\n", argv[0]); > fprintf(stderr, "Usage: %s mq-name\n", argv[0]); > fprintf(stderr, "Usage: %s string\n", argv[0]); > fprintf(stderr, "Usage: %s port\n", argv[0]); > fprintf(stderr, "Usage: %s host port msg...\n", argv[0]); > fprintf(stderr, "Usage: %s <real> <imag>\n", argv[0]); > fprintf(stderr, "\nUsage: %s -o <suboptstring>\n", argv[0]); > fprintf(stderr, "%s num-calls\n", argv[0]); > fprintf(stderr, "Usage: %s {i4|i6|<num>} string\n", argv[0]); > fprintf(stderr, "Usage: %s <seed> <nloops>\n", argv[0]); > fprintf(stderr, "Usage: %s <str1> <str2> [<n>]\n", argv[0]); > fprintf(stderr, "Usage: %s <locale> <string>\n", argv[0]); > fprintf(stderr, "Usage: %s /shm-path\n", argv[0]); > fprintf(stderr, "Usage: %s /shm-path string\n", argv[0]); > fprintf(stderr, "Usage: %s yyyy mm dd HH MM SS isdst\n", argv[0]); > fprintf(stderr, "Usage: %s <real> <imag>\n", argv[0]); > fprintf(stderr, "%s <process-ID>\n", argv[0]); > fprintf(stderr, "Usage: %s backing-file\n", argv[0]); > > > Have a lovely day! > Alex > > > + exit(EXIT_FAILURE); > > + } > > \& > > t = time(NULL); > > tmp = localtime(&t); > > -- > > 2.50.1 > > > > -- > <https://www.alejandro-colomar.es/> -- -----Open up your eyes, open up your mind, open up your code ------- / Dr. David Alan Gilbert | Running GNU/Linux | Happy \ \ dave @ treblig.org | | In Hex / \ _________________________|_____ http://www.treblig.org |_______/ ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-08-18 17:46 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-08-18 16:56 [PATCH] man/man3/strftime.3: Check parameter dave 2025-08-18 17:14 ` Alejandro Colomar 2025-08-18 17:46 ` Dr. David Alan Gilbert
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox