aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2012-03-26 12:47:40 +0100
committerRon Yorston <rmy@pobox.com>2012-03-26 12:47:40 +0100
commitb11062c28d3b8b9401effcc9fd7a7f76d920461f (patch)
tree1919ed663659342e9ee082482b2e8468764e85ad /libbb
parent83fefff167c161716ba4a40aa4f0dce96cfd3498 (diff)
downloadbusybox-w32-b11062c28d3b8b9401effcc9fd7a7f76d920461f.tar.gz
busybox-w32-b11062c28d3b8b9401effcc9fd7a7f76d920461f.tar.bz2
busybox-w32-b11062c28d3b8b9401effcc9fd7a7f76d920461f.zip
MinGW snprintf/vsnprintf work properly
Diffstat (limited to 'libbb')
-rw-r--r--libbb/platform.c15
-rw-r--r--libbb/xfuncs_printf.c14
2 files changed, 1 insertions, 28 deletions
diff --git a/libbb/platform.c b/libbb/platform.c
index 3cb41347f..2bf34f5bc 100644
--- a/libbb/platform.c
+++ b/libbb/platform.c
@@ -51,21 +51,8 @@ int dprintf(int fd, const char *format, ...)
51 char *string_ptr; 51 char *string_ptr;
52 52
53 va_start(p, format); 53 va_start(p, format);
54 if (ENABLE_PLATFORM_MINGW32) { 54 r = vasprintf(&string_ptr, format, p);
55 string_ptr = xmalloc(1024);
56 r = vsnprintf(string_ptr, 1024, format, p);
57 }
58 else
59 r = vasprintf(&string_ptr, format, p);
60 va_end(p); 55 va_end(p);
61 if (ENABLE_PLATFORM_MINGW32 && r > 0) {
62 free(string_ptr);
63 r += 2;
64 string_ptr = xmalloc(r);
65 va_start(p, format);
66 r = vsnprintf(string_ptr, r, format, p);
67 va_end(p);
68 }
69 if (r >= 0) { 56 if (r >= 0) {
70 r = full_write(fd, string_ptr, r); 57 r = full_write(fd, string_ptr, r);
71 free(string_ptr); 58 free(string_ptr);
diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c
index 70d3fc96c..d8a42ba0b 100644
--- a/libbb/xfuncs_printf.c
+++ b/libbb/xfuncs_printf.c
@@ -295,22 +295,8 @@ char* FAST_FUNC xasprintf(const char *format, ...)
295 char *string_ptr; 295 char *string_ptr;
296 296
297 va_start(p, format); 297 va_start(p, format);
298#if ENABLE_PLATFORM_MINGW32
299 string_ptr = xmalloc(1024);
300 r = vsnprintf(string_ptr, 1024, format, p);
301 va_end(p);
302 if (r > 0) {
303 free(string_ptr);
304 r += 2;
305 string_ptr = xmalloc(r);
306 va_start(p, format);
307 r = vsnprintf(string_ptr, r, format, p);
308 va_end(p);
309 }
310#else
311 r = vasprintf(&string_ptr, format, p); 298 r = vasprintf(&string_ptr, format, p);
312 va_end(p); 299 va_end(p);
313#endif
314 300
315 if (r < 0) 301 if (r < 0)
316 bb_error_msg_and_die(bb_msg_memory_exhausted); 302 bb_error_msg_and_die(bb_msg_memory_exhausted);