This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]