From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13446 invoked by alias); 29 May 2009 11:43:59 -0000 Received: (qmail 13430 invoked by uid 22791); 29 May 2009 11:43:58 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,SPF_SOFTFAIL X-Spam-Check-By: sourceware.org Received: from mtaout7.012.net.il (HELO mtaout7.012.net.il) (84.95.2.19) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 29 May 2009 11:43:52 +0000 Received: from conversion-daemon.i-mtaout7.012.net.il by i-mtaout7.012.net.il (HyperSendmail v2007.08) id <0KKE00G00LKJPZ00@i-mtaout7.012.net.il> for gdb-patches@sourceware.org; Fri, 29 May 2009 14:43:49 +0300 (IDT) Received: from HOME-C4E4A596F7 ([84.228.115.215]) by i-mtaout7.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0KKE00LYFLWUDC10@i-mtaout7.012.net.il>; Fri, 29 May 2009 14:43:43 +0300 (IDT) Date: Fri, 29 May 2009 11:43:00 -0000 From: Eli Zaretskii Subject: Re: [RFA] Fix documentation of snprintf and vsnprintf In-reply-to: <83ab54szfc.fsf@gnu.org> To: gcc-patches@gcc.gnu.org Cc: gdb-patches@sourceware.org Reply-to: Eli Zaretskii Message-id: <83tz343zik.fsf@gnu.org> References: <83ab54szfc.fsf@gnu.org> X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-05/txt/msg00621.txt.bz2 > Date: Sat, 23 May 2009 16:48:23 +0300 > From: Eli Zaretskii 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 > > * 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 >