public inbox for linux-man@vger.kernel.org
 help / color / mirror / Atom feed
* [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