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: wcstold implementation



On 01/22/2015 12:44 PM, Craig Howland wrote:
On 01/22/2015 11:16 AM, Corinna Vinschen wrote:
On Jan 22 16:28, Corinna Vinschen wrote:


On Jan 22 15:11, Nick Clifton wrote:
Hi Corinna, Hi Yaakov,

   What do you think of the attached patch for an implementation of
   wcstold() for sizeof (long double) > sizeof (double) ? The patch is
   against the devo sources, but it could be adapted for FSF newlib
   easily enough.  One thing that you might not like is that the
   _wcstold_r implementation calls _strtold and not _strtold_r.  I can
   fix this too if you think that it is worth it.
We don't have a _strtold_r function, only _strtold.  Along these lines,
I think it should be sufficent to implement wcstold and just skip
_wcstold_r.
Hmm, on second thought.

The _strtold function in ldtoa.c is old, it never sets errno, it doesn't
take _localeconv_r (ptr)->decimal_point into account...

Maybe we should in fact start with creating an _strtold_r function from
the _strtod_r function first?

I actually have a _strtold_r() function that I did back in 2009 but never quite got to the last step of submitting. I had gotten an updated version of ldtoa.c (the present one in Newlib is not David Gay's latest), and made a wrapper for it.

One thing that I did is that the function call for _strtold_r() has an additional argument over strtold() to allow it to be called from scanf. The former wants errno set but the latter does not.

It does not, however, have the locale thing, as that was added after I had done it.

I have attached it for discussion and as a possible starting point. The exact method by which error or not errno is handled is a question. As noted, I had put it into the _strtold_r() call, rather than having yet another wrapper level. The reasoning is that you already need to add the reentry pointer, so another argument different from the standard call is not necessarily a bad thing.

The list mailer bounced with all 3 files, so here are 2, the other will follow.

Craig
Here is the "new" ldtoa.c for the discussion.

Attachment: ldtoa.c
Description: Text document


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