X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fstdio%2Ffwide.c;h=8bab634ae0b50ad4245d38b52c00c8e1762c6ab5;hb=7c0c7a75ec8ecf3eedefc40bb4dae5aaa76d7108;hp=fdf8e4bb334706ad8e4d2f911de30876e50b3bd4;hpb=571744447c23f91feb6439948f3a619aca850dfb;p=musl diff --git a/src/stdio/fwide.c b/src/stdio/fwide.c index fdf8e4bb..8bab634a 100644 --- a/src/stdio/fwide.c +++ b/src/stdio/fwide.c @@ -1,13 +1,16 @@ #include #include "stdio_impl.h" - -#define SH (8*sizeof(int)-1) -#define NORMALIZE(x) ((x)>>SH | -((-(x))>>SH)) +#include "locale_impl.h" int fwide(FILE *f, int mode) { FLOCK(f); - if (!f->mode) mode = f->mode = NORMALIZE(mode); + if (mode) { + if (!f->locale) f->locale = MB_CUR_MAX==1 + ? C_LOCALE : UTF8_LOCALE; + if (!f->mode) f->mode = mode>0 ? 1 : -1; + } + mode = f->mode; FUNLOCK(f); return mode; }