This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
Re: swprintf() and friends?
Jeff Johnston wrote:
Corinna Vinschen wrote:
On Nov 3 16:26, Jeff Johnston wrote:
For fwide support, I assume you mean two bits and yes, I believe two
bits would work. One bit would mean decided (0 = undecided) and
this should take the free bit I mention above. The __srefill_r and
__sfvwrite_r functions could be modified to stamp a file as being
narrow/wide and decided, if currently undecided (an extra argument
would be needed to these functions to say which type of fn was
calling). If setting and the file is already undecided, then we
must resolve any std stream first. The decided orientation bit
would be in _flags (0 = narrow, 1 = wide).
On second reading... what do you mean by "resolve any std stream first"?
The _REENT_SMALL platforms don't have space for the std FILEs
allocated at start-up. They have fake files
(first part of a real FILE structure which is smaller) and these fake
files have the _flags and buffer fields enough to cause a function
call to occur if using a macro like getc() or putc(). They will not
have a _flags2 field. The function call ends up resolving the fake
std streams via the CHECK_INIT macro.
Anyway, my comment was unnecessary. To get to the __srefill_r or
__sfvwrite_r functions, the std streams have to already be resolved
at that point which means they will have a full FILE structure and the
_flags2 field will exist for them at that point.
Oops, scratch that last part about unnecessary. For fwide(), one must
add the CHECK_INIT macro before accessing any _flags2 bit and you have
already done so in your patch.
-- Jeff J.
-- Jeff J.
Corinna