Skip to content

9x/ME: Implement proper handling for console writes where character lengths differ between utf16 and target codepage #14

Open
@seritools

Description

@seritools

For #13 I have implemented a kind of crappy workaround. This ticket tracks actually implementing a proper solution.

The workaround:

if !compat::is_windows_nt() {
// FIXME: This function should manually convert to the target codepage on 9x/ME, and
// handle incomplete writes by calculating how many utf8-effective bytes were written.
return Ok(utf8.len());
}

Problem description

Whenever the "character count" mismatches between the UTF-16 side and the codepage size, the "amount of characters written" also mismatches between both sides.

Solution idea

Roguh idea for the conversion code

Becasue of the multiple, lossy conversions needed on 9x/Me (subset of UTF8 → WTF16 → codepage), the only sensible way would be to do the code page conversion in the stdlib code, then loop until the entire converted buffer has been written, thus confirming that the entire input buffer of up to MAX_BUFFER_SIZE bytes have been written. Only that way we can ensure that all input characters are accounted for in some capacity.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions