From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26741 invoked by alias); 23 May 2009 13:48:36 -0000 Received: (qmail 26722 invoked by uid 22791); 23 May 2009 13:48:34 -0000 X-SWARE-Spam-Status: No, hits=-0.4 required=5.0 tests=AWL,BAYES_50,SPF_SOFTFAIL X-Spam-Check-By: sourceware.org Received: from mtaout3.012.net.il (HELO mtaout3.012.net.il) (84.95.2.7) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 23 May 2009 13:48:25 +0000 Received: from conversion-daemon.i_mtaout3.012.net.il by i_mtaout3.012.net.il (HyperSendmail v2004.12) id <0KK300G00NIILE00@i_mtaout3.012.net.il> for gdb-patches@sourceware.org; Sat, 23 May 2009 16:48:23 +0300 (IDT) Received: from HOME-C4E4A596F7 ([84.228.115.215]) by i_mtaout3.012.net.il (HyperSendmail v2004.12) with ESMTPA id <0KK300HE5NOM4R30@i_mtaout3.012.net.il> for gdb-patches@sourceware.org; Sat, 23 May 2009 16:48:23 +0300 (IDT) Date: Sat, 23 May 2009 13:48:00 -0000 From: Eli Zaretskii Subject: [RFA] Fix documentation of snprintf and vsnprintf To: gdb-patches@sourceware.org Reply-to: Eli Zaretskii Message-id: <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/msg00512.txt.bz2 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