mailing list of musl libc
 help / color / mirror / code / Atom feed
* [musl] Broken freopen() does not reset fwide()
@ 2022-08-16 18:33 Anonymousemail
  2022-08-17 15:11 ` Rich Felker
  0 siblings, 1 reply; 3+ messages in thread
From: Anonymousemail @ 2022-08-16 18:33 UTC (permalink / raw)
  To: musl

[-- Attachment #1: Type: text/plain, Size: 1966 bytes --]

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
 

[-- Attachment #2: Type: text/html, Size: 2508 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-08-17 22:39 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-16 18:33 [musl] Broken freopen() does not reset fwide() Anonymousemail
2022-08-17 15:11 ` Rich Felker
2022-08-17 22:38   ` Rich Felker

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).