* [RFA] Fix documentation of snprintf and vsnprintf
@ 2009-05-23 13:48 Eli Zaretskii
2009-05-23 13:55 ` Pedro Alves
2009-05-29 11:43 ` Eli Zaretskii
0 siblings, 2 replies; 15+ messages in thread
From: Eli Zaretskii @ 2009-05-23 13:48 UTC (permalink / raw)
To: gdb-patches
The current documentation of these two functions is misleading, and can
easily cause off-by-one bugs, if one follows it to the letter and
doesn't double-check with what the source actually does.
I tried to be more accurate in the patch below.
OK?
2009-05-23 Eli Zaretskii <eliz@gnu.org>
* snprintf.c: Doc fix.
* vsnprintf.c: Doc fix.
--- libiberty/snprintf.c~0 2005-05-10 21:33:34.000000000 +0300
+++ libiberty/snprintf.c 2009-05-23 16:34:39.265625000 +0300
@@ -27,13 +27,14 @@
@deftypefn Supplemental int snprintf (char *@var{buf}, size_t @var{n}, const char *@var{format}, ...)
-This function is similar to sprintf, but it will print at most @var{n}
-characters. On error the return value is -1, otherwise it returns the
-number of characters that would have been printed had @var{n} been
-sufficiently large, regardless of the actual value of @var{n}. Note
-some pre-C99 system libraries do not implement this correctly so users
-cannot generally rely on the return value if the system version of
-this function is used.
+This function is similar to @code{sprintf}, but it will write at most
+var{n} bytes (including the terminating null byte) to @var{buf}.
+On error the return value is -1, otherwise it returns the number of
+bytes, not including the terminating null byte, that would have been
+written had @var{n} been sufficiently large, regardless of the actual
+value of @var{n}. Note some pre-C99 system libraries do not implement
+this correctly so users cannot generally rely on the return value if
+the system version of this function is used.
@end deftypefn
--- libiberty/vsnprintf.c~0 2005-05-10 21:33:34.000000000 +0300
+++ libiberty/vsnprintf.c 2009-05-23 16:36:07.265625000 +0300
@@ -27,13 +27,14 @@
@deftypefn Supplemental int vsnprintf (char *@var{buf}, size_t @var{n}, const char *@var{format}, va_list @var{ap})
-This function is similar to vsprintf, but it will print at most
-@var{n} characters. On error the return value is -1, otherwise it
-returns the number of characters that would have been printed had
-@var{n} been sufficiently large, regardless of the actual value of
-@var{n}. Note some pre-C99 system libraries do not implement this
-correctly so users cannot generally rely on the return value if the
-system version of this function is used.
+This function is similar to @code{vsprintf}, but it will write at most
+@var{n} bytes (including the terminating null byte) to @var{buf}.
+On error the return value is -1, otherwise it returns the number of
+bytes, not including the terminating null byte, that would have been
+written had @var{n} been sufficiently large, regardless of the actual
+value of @var{n}. Note some pre-C99 system libraries do not implement
+this correctly so users cannot generally rely on the return value if
+the system version of this function is used.
@end deftypefn
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [RFA] Fix documentation of snprintf and vsnprintf
2009-05-23 13:48 [RFA] Fix documentation of snprintf and vsnprintf Eli Zaretskii
@ 2009-05-23 13:55 ` Pedro Alves
2009-05-23 17:02 ` Eli Zaretskii
2009-05-29 11:43 ` Eli Zaretskii
1 sibling, 1 reply; 15+ messages in thread
From: Pedro Alves @ 2009-05-23 13:55 UTC (permalink / raw)
To: gdb-patches, Eli Zaretskii
Hi Eli,
libiberty is maintained by gcc. You should send this to gcc-patches@.
(I always have to peek at src/MAINTAINERS to remind myself.)
--
Pedro Alves
On Saturday 23 May 2009 14:48:23, Eli Zaretskii wrote:
> The current documentation of these two functions is misleading, and can
> easily cause off-by-one bugs, if one follows it to the letter and
> doesn't double-check with what the source actually does.
>
> I tried to be more accurate in the patch below.
>
> OK?
>
> 2009-05-23 Eli Zaretskii <eliz@gnu.org>
>
> * snprintf.c: Doc fix.
>
> * vsnprintf.c: Doc fix.
>
> --- libiberty/snprintf.c~0 2005-05-10 21:33:34.000000000 +0300
> +++ libiberty/snprintf.c 2009-05-23 16:34:39.265625000 +0300
> @@ -27,13 +27,14 @@
>
> @deftypefn Supplemental int snprintf (char *@var{buf}, size_t @var{n}, const char *@var{format}, ...)
>
> -This function is similar to sprintf, but it will print at most @var{n}
> -characters. On error the return value is -1, otherwise it returns the
> -number of characters that would have been printed had @var{n} been
> -sufficiently large, regardless of the actual value of @var{n}. Note
> -some pre-C99 system libraries do not implement this correctly so users
> -cannot generally rely on the return value if the system version of
> -this function is used.
> +This function is similar to @code{sprintf}, but it will write at most
> +var{n} bytes (including the terminating null byte) to @var{buf}.
> +On error the return value is -1, otherwise it returns the number of
> +bytes, not including the terminating null byte, that would have been
> +written had @var{n} been sufficiently large, regardless of the actual
> +value of @var{n}. Note some pre-C99 system libraries do not implement
> +this correctly so users cannot generally rely on the return value if
> +the system version of this function is used.
>
> @end deftypefn
>
> --- libiberty/vsnprintf.c~0 2005-05-10 21:33:34.000000000 +0300
> +++ libiberty/vsnprintf.c 2009-05-23 16:36:07.265625000 +0300
> @@ -27,13 +27,14 @@
>
> @deftypefn Supplemental int vsnprintf (char *@var{buf}, size_t @var{n}, const char *@var{format}, va_list @var{ap})
>
> -This function is similar to vsprintf, but it will print at most
> -@var{n} characters. On error the return value is -1, otherwise it
> -returns the number of characters that would have been printed had
> -@var{n} been sufficiently large, regardless of the actual value of
> -@var{n}. Note some pre-C99 system libraries do not implement this
> -correctly so users cannot generally rely on the return value if the
> -system version of this function is used.
> +This function is similar to @code{vsprintf}, but it will write at most
> +@var{n} bytes (including the terminating null byte) to @var{buf}.
> +On error the return value is -1, otherwise it returns the number of
> +bytes, not including the terminating null byte, that would have been
> +written had @var{n} been sufficiently large, regardless of the actual
> +value of @var{n}. Note some pre-C99 system libraries do not implement
> +this correctly so users cannot generally rely on the return value if
> +the system version of this function is used.
>
> @end deftypefn
>
>
>
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [RFA] Fix documentation of snprintf and vsnprintf
2009-05-23 13:48 [RFA] Fix documentation of snprintf and vsnprintf Eli Zaretskii
2009-05-23 13:55 ` Pedro Alves
@ 2009-05-29 11:43 ` Eli Zaretskii
2009-05-29 20:22 ` DJ Delorie
1 sibling, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2009-05-29 11:43 UTC (permalink / raw)
To: gcc-patches; +Cc: gdb-patches
> Date: Sat, 23 May 2009 16:48:23 +0300
> From: Eli Zaretskii <eliz@gnu.org>
Ping!
> The current documentation of these two functions is misleading, and can
> easily cause off-by-one bugs, if one follows it to the letter and
> doesn't double-check with what the source actually does.
>
> I tried to be more accurate in the patch below.
>
> OK?
>
> 2009-05-23 Eli Zaretskii <eliz@gnu.org>
>
> * snprintf.c: Doc fix.
>
> * vsnprintf.c: Doc fix.
>
> --- libiberty/snprintf.c~0 2005-05-10 21:33:34.000000000 +0300
> +++ libiberty/snprintf.c 2009-05-23 16:34:39.265625000 +0300
> @@ -27,13 +27,14 @@
>
> @deftypefn Supplemental int snprintf (char *@var{buf}, size_t @var{n}, const char *@var{format}, ...)
>
> -This function is similar to sprintf, but it will print at most @var{n}
> -characters. On error the return value is -1, otherwise it returns the
> -number of characters that would have been printed had @var{n} been
> -sufficiently large, regardless of the actual value of @var{n}. Note
> -some pre-C99 system libraries do not implement this correctly so users
> -cannot generally rely on the return value if the system version of
> -this function is used.
> +This function is similar to @code{sprintf}, but it will write at most
> +var{n} bytes (including the terminating null byte) to @var{buf}.
> +On error the return value is -1, otherwise it returns the number of
> +bytes, not including the terminating null byte, that would have been
> +written had @var{n} been sufficiently large, regardless of the actual
> +value of @var{n}. Note some pre-C99 system libraries do not implement
> +this correctly so users cannot generally rely on the return value if
> +the system version of this function is used.
>
> @end deftypefn
>
> --- libiberty/vsnprintf.c~0 2005-05-10 21:33:34.000000000 +0300
> +++ libiberty/vsnprintf.c 2009-05-23 16:36:07.265625000 +0300
> @@ -27,13 +27,14 @@
>
> @deftypefn Supplemental int vsnprintf (char *@var{buf}, size_t @var{n}, const char *@var{format}, va_list @var{ap})
>
> -This function is similar to vsprintf, but it will print at most
> -@var{n} characters. On error the return value is -1, otherwise it
> -returns the number of characters that would have been printed had
> -@var{n} been sufficiently large, regardless of the actual value of
> -@var{n}. Note some pre-C99 system libraries do not implement this
> -correctly so users cannot generally rely on the return value if the
> -system version of this function is used.
> +This function is similar to @code{vsprintf}, but it will write at most
> +@var{n} bytes (including the terminating null byte) to @var{buf}.
> +On error the return value is -1, otherwise it returns the number of
> +bytes, not including the terminating null byte, that would have been
> +written had @var{n} been sufficiently large, regardless of the actual
> +value of @var{n}. Note some pre-C99 system libraries do not implement
> +this correctly so users cannot generally rely on the return value if
> +the system version of this function is used.
>
> @end deftypefn
>
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [RFA] Fix documentation of snprintf and vsnprintf
2009-05-29 11:43 ` Eli Zaretskii
@ 2009-05-29 20:22 ` DJ Delorie
2009-05-29 20:28 ` Dave Korn
2009-05-29 20:42 ` Eli Zaretskii
0 siblings, 2 replies; 15+ messages in thread
From: DJ Delorie @ 2009-05-29 20:22 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: gcc-patches, gdb-patches
Ok. Do you need someone to commit it for you?
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFA] Fix documentation of snprintf and vsnprintf
2009-05-29 20:22 ` DJ Delorie
@ 2009-05-29 20:28 ` Dave Korn
2009-05-29 20:34 ` DJ Delorie
2009-05-29 20:42 ` Eli Zaretskii
1 sibling, 1 reply; 15+ messages in thread
From: Dave Korn @ 2009-05-29 20:28 UTC (permalink / raw)
To: DJ Delorie; +Cc: Eli Zaretskii, gcc-patches, gdb-patches
DJ Delorie wrote:
> Ok. Do you need someone to commit it for you?
Also, how about that proposed variation to the wording?
http://gcc.gnu.org/ml/gcc-patches/2009-05/msg01524.html
cheers,
DaveK
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [RFA] Fix documentation of snprintf and vsnprintf
2009-05-29 20:28 ` Dave Korn
@ 2009-05-29 20:34 ` DJ Delorie
2009-05-29 20:39 ` Dave Korn
0 siblings, 1 reply; 15+ messages in thread
From: DJ Delorie @ 2009-05-29 20:34 UTC (permalink / raw)
To: Dave Korn; +Cc: eliz, gcc-patches, gdb-patches
> Also, how about that proposed variation to the wording?
>
> http://gcc.gnu.org/ml/gcc-patches/2009-05/msg01524.html
When it comes to documentation, I'm willing to trust Eli's judgement.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFA] Fix documentation of snprintf and vsnprintf
2009-05-29 20:34 ` DJ Delorie
@ 2009-05-29 20:39 ` Dave Korn
2009-05-29 20:59 ` Eli Zaretskii
0 siblings, 1 reply; 15+ messages in thread
From: Dave Korn @ 2009-05-29 20:39 UTC (permalink / raw)
To: DJ Delorie; +Cc: Dave Korn, eliz, gcc-patches, gdb-patches
DJ Delorie wrote:
>> Also, how about that proposed variation to the wording?
>>
>> http://gcc.gnu.org/ml/gcc-patches/2009-05/msg01524.html
>
> When it comes to documentation, I'm willing to trust Eli's judgement.
Sorry for piggybacking, that question was directed at Eli!
cheers,
DaveK
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [RFA] Fix documentation of snprintf and vsnprintf
2009-05-29 20:39 ` Dave Korn
@ 2009-05-29 20:59 ` Eli Zaretskii
0 siblings, 0 replies; 15+ messages in thread
From: Eli Zaretskii @ 2009-05-29 20:59 UTC (permalink / raw)
To: Dave Korn; +Cc: dj, dave.korn.cygwin, gcc-patches, gdb-patches
> Date: Fri, 29 May 2009 21:50:41 +0100
> From: Dave Korn <dave.korn.cygwin@googlemail.com>
> CC: Dave Korn <dave.korn.cygwin@googlemail.com>, eliz@gnu.org,
> gcc-patches@gcc.gnu.org, gdb-patches@sourceware.org
>
> DJ Delorie wrote:
> >> Also, how about that proposed variation to the wording?
> >>
> >> http://gcc.gnu.org/ml/gcc-patches/2009-05/msg01524.html
> >
> > When it comes to documentation, I'm willing to trust Eli's judgement.
>
> Sorry for piggybacking, that question was directed at Eli!
Here's the modified version:
--- libiberty/snprintf.c~0 2005-05-10 21:33:34.000000000 +0300
+++ libiberty/snprintf.c 2009-05-29 23:51:35.453125000 +0300
@@ -27,13 +27,15 @@
@deftypefn Supplemental int snprintf (char *@var{buf}, size_t @var{n}, const char *@var{format}, ...)
-This function is similar to sprintf, but it will print at most @var{n}
-characters. On error the return value is -1, otherwise it returns the
-number of characters that would have been printed had @var{n} been
-sufficiently large, regardless of the actual value of @var{n}. Note
-some pre-C99 system libraries do not implement this correctly so users
-cannot generally rely on the return value if the system version of
-this function is used.
+This function is similar to @code{sprintf}, but it will write to
+@var{buf} at most @code{@var{n}-1} bytes of text, followed by a
+terminating null byte, for a total of @var{n} bytes.
+On error the return value is -1, otherwise it returns the number of
+bytes, not including the terminating null byte, that would have been
+written had @var{n} been sufficiently large, regardless of the actual
+value of @var{n}. Note some pre-C99 system libraries do not implement
+this correctly so users cannot generally rely on the return value if
+the system version of this function is used.
@end deftypefn
--- libiberty/vsnprintf.c~ 2009-05-23 16:36:07.265625000 +0300
+++ libiberty/vsnprintf.c 2009-05-29 23:52:35.203125000 +0300
@@ -27,8 +27,9 @@
@deftypefn Supplemental int vsnprintf (char *@var{buf}, size_t @var{n}, const char *@var{format}, va_list @var{ap})
-This function is similar to @code{vsprintf}, but it will write at most
-@var{n} bytes (including the terminating null byte) to @var{buf}.
+This function is similar to @code{vsprintf}, but it will write to
+@var{buf} at most @code{@var{n}-1} bytes of text, followed by a
+terminating null byte, for a total of @var{n} bytes.
On error the return value is -1, otherwise it returns the number of
bytes, not including the terminating null byte, that would have been
written had @var{n} been sufficiently large, regardless of the actual
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFA] Fix documentation of snprintf and vsnprintf
2009-05-29 20:22 ` DJ Delorie
2009-05-29 20:28 ` Dave Korn
@ 2009-05-29 20:42 ` Eli Zaretskii
2009-05-29 20:45 ` DJ Delorie
1 sibling, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2009-05-29 20:42 UTC (permalink / raw)
To: DJ Delorie; +Cc: gcc-patches, gdb-patches
> Date: Fri, 29 May 2009 15:58:03 -0400
> From: DJ Delorie <dj@redhat.com>
> CC: gcc-patches@gcc.gnu.org, gdb-patches@sourceware.org
>
>
> Ok. Do you need someone to commit it for you?
Yes, please.
Thanks.
^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <83d4a0szry.fsf@gnu.org>]
end of thread, other threads:[~2009-05-30 5:18 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-05-23 13:48 [RFA] Fix documentation of snprintf and vsnprintf Eli Zaretskii
2009-05-23 13:55 ` Pedro Alves
2009-05-23 17:02 ` Eli Zaretskii
2009-05-29 11:43 ` Eli Zaretskii
2009-05-29 20:22 ` DJ Delorie
2009-05-29 20:28 ` Dave Korn
2009-05-29 20:34 ` DJ Delorie
2009-05-29 20:39 ` Dave Korn
2009-05-29 20:59 ` Eli Zaretskii
2009-05-29 20:42 ` Eli Zaretskii
2009-05-29 20:45 ` DJ Delorie
2009-05-29 21:44 ` Eli Zaretskii
2009-05-30 5:18 ` DJ Delorie
[not found] <83d4a0szry.fsf@gnu.org>
[not found] ` <4A180840.3040004@gmail.com>
2009-05-23 17:13 ` Eli Zaretskii
2009-05-23 20:09 ` Dave Korn
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox