diff options
-rw-r--r-- | coreutils/printf.c | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/coreutils/printf.c b/coreutils/printf.c index d1d22f39c..01f730073 100644 --- a/coreutils/printf.c +++ b/coreutils/printf.c | |||
@@ -152,9 +152,9 @@ static double my_xstrtod(const char *arg) | |||
152 | } | 152 | } |
153 | 153 | ||
154 | #if ENABLE_PLATFORM_MINGW32 | 154 | #if ENABLE_PLATFORM_MINGW32 |
155 | static int fputs_stdout(const char *s) | 155 | static size_t fwrite_stdout(const char *s, const char *t) |
156 | { | 156 | { |
157 | return fputs(s, stdout); | 157 | return fwrite(s, t - s, 1, stdout); |
158 | } | 158 | } |
159 | #endif | 159 | #endif |
160 | 160 | ||
@@ -202,8 +202,7 @@ static int print_esc_string(const char *str) | |||
202 | } | 202 | } |
203 | #if ENABLE_PLATFORM_MINGW32 | 203 | #if ENABLE_PLATFORM_MINGW32 |
204 | finish: | 204 | finish: |
205 | *t = '\0'; | 205 | fwrite_stdout(s, t); |
206 | fputs_stdout(s); | ||
207 | free(s); | 206 | free(s); |
208 | return ret; | 207 | return ret; |
209 | #else | 208 | #else |
@@ -331,8 +330,7 @@ static char **print_formatted(char *f, char **argv, int *conv_err) | |||
331 | switch (*f) { | 330 | switch (*f) { |
332 | case '%': | 331 | case '%': |
333 | #if ENABLE_PLATFORM_MINGW32 | 332 | #if ENABLE_PLATFORM_MINGW32 |
334 | *t = '\0'; | 333 | fwrite_stdout(s, t); |
335 | fputs_stdout(s); | ||
336 | t = s; | 334 | t = s; |
337 | #endif | 335 | #endif |
338 | direc_start = f++; | 336 | direc_start = f++; |
@@ -426,19 +424,10 @@ static char **print_formatted(char *f, char **argv, int *conv_err) | |||
426 | #if ENABLE_PLATFORM_MINGW32 | 424 | #if ENABLE_PLATFORM_MINGW32 |
427 | case '\\': | 425 | case '\\': |
428 | if (*++f == 'c') { | 426 | if (*++f == 'c') { |
429 | *t = '\0'; | 427 | fwrite_stdout(s, t); |
430 | fputs_stdout(s); | ||
431 | return saved_argv; /* causes main() to exit */ | 428 | return saved_argv; /* causes main() to exit */ |
432 | } | 429 | } |
433 | *t = bb_process_escape_sequence((const char **)&f); | 430 | *t++ = bb_process_escape_sequence((const char **)&f); |
434 | if (*t == '\0') { | ||
435 | fputs_stdout(s); | ||
436 | bb_putchar(*t); | ||
437 | t = s; | ||
438 | } | ||
439 | else { | ||
440 | ++t; | ||
441 | } | ||
442 | f--; | 431 | f--; |
443 | break; | 432 | break; |
444 | default: | 433 | default: |
@@ -457,8 +446,7 @@ static char **print_formatted(char *f, char **argv, int *conv_err) | |||
457 | } | 446 | } |
458 | } | 447 | } |
459 | #if ENABLE_PLATFORM_MINGW32 | 448 | #if ENABLE_PLATFORM_MINGW32 |
460 | *t = '\0'; | 449 | fwrite_stdout(s, t); |
461 | fputs_stdout(s); | ||
462 | #endif | 450 | #endif |
463 | 451 | ||
464 | return argv; | 452 | return argv; |