I'm using musl based distribution. The official example from https://en.cppreference.com/w/c/io/fwide is malfunctioning, musl does not reset the fwide(), returns -1 (meaning BYTE oriented). Output from example on musl: 1) A newly opened stream has no orientation.     no orientation 2) Establish byte orientation.     narrow orientation     narrow character read '#'     wide character read 'i' 3) Only freopen() can reset stream orientation. 4) A reopened stream has no orientation.     narrow orientation  <- problem detected here, should say "no orientation" 5) Establish wide orientation.     narrow orientation     narrow character read '#'     wide character read 'i' Another simple example to reproduce the issue.: #include <stdio.h> #include <wchar.h> #include <stdlib.h> // for EXIT_SUCCESS #include <assert.h> int main() {     enum { narrow = -1, query = 0, wide = 1 };     FILE* test = fopen("test.bin", "r");     if(!test) {         puts("You need to have test.bin file.");         abort();     }     // establish NARROW orientation     fwide(test, narrow);     // reopen to reset, broken on musl     freopen("test.bin", "r", test);     assert(fwide(test, query) == 0); // will fail on musl     // CLEANUP     fclose(test);     // Exit the program     return EXIT_SUCCESS; } ----- Save as main.c, run with cc main.c echo test >test.bin ./a.out Will output Assertion failed: fwide(test, query) == 0 (main2.c: main: 17) Aborted