| OLD | NEW |
| 1 #include "stdio_impl.h" | 1 #include "stdio_impl.h" |
| 2 #include "locale_impl.h" | 2 #include "locale_impl.h" |
| 3 #include <wchar.h> | 3 #include <wchar.h> |
| 4 | 4 |
| 5 int fputws(const wchar_t *restrict ws, FILE *restrict f) | 5 int fputws(const wchar_t* restrict ws, FILE* restrict f) { |
| 6 { | 6 unsigned char buf[BUFSIZ]; |
| 7 » unsigned char buf[BUFSIZ]; | 7 size_t l = 0; |
| 8 » size_t l=0; | 8 locale_t *ploc = &CURRENT_LOCALE, loc = *ploc; |
| 9 » locale_t *ploc = &CURRENT_LOCALE, loc = *ploc; | |
| 10 | 9 |
| 11 » FLOCK(f); | 10 FLOCK(f); |
| 12 | 11 |
| 13 » fwide(f, 1); | 12 fwide(f, 1); |
| 14 » *ploc = f->locale; | 13 *ploc = f->locale; |
| 15 | 14 |
| 16 » while (ws && (l = wcsrtombs((void *)buf, (void*)&ws, sizeof buf, 0))+1 >
1) | 15 while (ws && (l = wcsrtombs((void*)buf, (void*)&ws, sizeof buf, 0)) + 1 > 1) |
| 17 » » if (__fwritex(buf, l, f) < l) { | 16 if (__fwritex(buf, l, f) < l) { |
| 18 » » » FUNLOCK(f); | 17 FUNLOCK(f); |
| 19 » » » *ploc = loc; | 18 *ploc = loc; |
| 20 » » » return -1; | 19 return -1; |
| 21 » » } | 20 } |
| 22 | 21 |
| 23 » FUNLOCK(f); | 22 FUNLOCK(f); |
| 24 | 23 |
| 25 » *ploc = loc; | 24 *ploc = loc; |
| 26 » return l; /* 0 or -1 */ | 25 return l; /* 0 or -1 */ |
| 27 } | 26 } |
| 28 | 27 |
| 29 weak_alias(fputws, fputws_unlocked); | 28 weak_alias(fputws, fputws_unlocked); |
| OLD | NEW |