swprintf() and friends?
Jeff Johnston
jjohnstn@redhat.com
Fri Nov 14 11:02:00 GMT 2008
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
>>
>>
>
More information about the Newlib
mailing list