projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New module 'memmem', from Simon Josefsson.
[gnulib.git]
/
lib
/
snprintf.c
diff --git
a/lib/snprintf.c
b/lib/snprintf.c
index
6cc44aa
..
667ed94
100644
(file)
--- a/
lib/snprintf.c
+++ b/
lib/snprintf.c
@@
-20,14
+20,14
@@
# include <config.h>
#endif
# include <config.h>
#endif
-/* Get specification. */
#include "snprintf.h"
#include "snprintf.h"
-/* Get vasnprintf. */
-#include "vasnprintf.h"
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.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
@@
-37,19
+37,24
@@
int
snprintf (char *str, size_t size, const char *format, ...)
{
int
snprintf (char *str, size_t size, const char *format, ...)
{
+ char *output;
size_t len;
size_t len;
- char *out = vasnprintf (NULL, &len, format, args);
+ va_list args;
+
+ va_start (args, format);
+ output = vasnprintf (NULL, &len, format, args);
+ va_end (args);
- if (!out)
+ if (!out
put
)
return -1;
return -1;
- if (str)
+ if (str
&& size > 0
)
{
{
- memcpy (str, out, MIN (len + 1, size));
+ memcpy (str, out
put
, MIN (len + 1, size));
str[size - 1] = '\0';
}
str[size - 1] = '\0';
}
- free (out);
+ free (out
put
);
return len;
}
return len;
}