projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Typo.
[gnulib.git]
/
lib
/
snprintf.c
diff --git
a/lib/snprintf.c
b/lib/snprintf.c
index
c23d7e1
..
5870f8d
100644
(file)
--- a/
lib/snprintf.c
+++ b/
lib/snprintf.c
@@
-14,27
+14,20
@@
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation,
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation,
- Inc., 5
9 Temple Place - Suite 330, Boston, MA 02111-1307
, USA. */
+ Inc., 5
1 Franklin Street, Fifth Floor, Boston, MA 02110-1301
, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
-/* Specification. */
#include "snprintf.h"
#include "snprintf.h"
-/* Get va_list, va_start, va_end. */
#include <stdarg.h>
#include <stdarg.h>
-/* Get free. */
#include <stdlib.h>
#include <stdlib.h>
-/* Get memcpy, size_t. */
#include <string.h>
#include <string.h>
-/* Get vasnprintf. */
-#include "vasnprintf.h"
-
-/* Get MIN. */
#include "minmax.h"
#include "minmax.h"
+#include "vasnprintf.h"
/* Print formatted output to string STR. Similar to sprintf, but
additional length SIZE limit how much is written into STR. Returns
/* Print formatted output to string STR. Similar to sprintf, but
additional length SIZE limit how much is written into STR. Returns
@@
-49,19
+42,19
@@
snprintf (char *str, size_t size, const char *format, ...)
va_list args;
va_start (args, format);
va_list args;
va_start (args, format);
- output = vasnprintf (NULL, &len, format, args);
+ len = size;
+ output = vasnprintf (str, &len, format, args);
va_end (args);
if (!output)
return -1;
va_end (args);
if (!output)
return -1;
- if (str && size > 0)
- {
- memcpy (str, output, MIN (len + 1, size));
+ if (str != NULL)
+ if (len > size - 1) /* equivalent to: (size > 0 && len >= size) */
str[size - 1] = '\0';
str[size - 1] = '\0';
- }
- free (output);
+ if (output != str)
+ free (output);
return len;
}
return len;
}