Re: Fw: [PATCH 03/14] Add _REENT_ERRNO(ptr)

Sebastian Huber <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
On 12/07/2022 18:11, Corinna Vinschen wrote:
> On Jun 23 12:55, Sebastian Huber wrote:
>> On 21/06/2022 16:41, C Howland wrote:
>>>> ------------------------------
>>>> *From:* Newlib<[email protected]>   on
>>>> behalf of Sebastian Huber<[email protected]>
>>>> *Sent:* Tuesday, June 21, 2022 8:49 AM
>>>> *To:*[email protected]<[email protected]>
>>>> *Subject:* [PATCH 03/14] Add _REENT_ERRNO(ptr)
>>>>
>>>>
>>>>
>>>> From: Matt Joyce<[email protected]>
>>>>
>>>> Add a _REENT_ERRNO() macro to encapsulate the access to the
>>>> _errno member of struct reent. This will help to replace the
>>>> structure member with a thread-local storage object in a follow
>>>> up patch.
>>>> ---
>>>>
>>> There already exists an __errno_r() macro that does the very same function
>>> (defined in sys/errno.h).  (Its use, however, is limited, only being used
>>> in files under iconv/lib.)  Having the same thing done both ways probably
>>> doesn't make sense.  The new name is more consistent with the rest of the
>>> things being done, while the old name is established and errno is a more
>>> specialized case.  It probably would be a good idea to either
>>> 1)  use __errno_r() instead of creating _REENT_ERRNO() or
>>> 2)  replace __errno_r() with _REENT_ERRNO() as part of adding the latter.
>> I would not remove an existing macro, so option 1) would be preferred by me.
> Really?  Your followup patches introduce a lot of new _REENT_foo macros,
> so defining one of them with a different name doesn't make a lot of sense,
> does it?

There are lots of *_r() functions (for example _strdup_r()) so I assumed 
that this __errno_r() might be used outside of Newlib.

> 
> Either all these macros should be called __foo_r(), or __errno_r() should
> actually be removed or at least be defined in terms of _REENT_errno(),
> if you really think we should keep it.  

The original patch defined __errno_r() like this:

#define __errno_r(ptr) _REENT_ERRNO(ptr)

I think naming of the new _REENT_*() macros is quite consistent with the 
stuff we already have in <sys/reent.h>.

> Given that it's used only in
> iconv/lib kind of shows that it was never meant for consumption outside
> newlib anyway, isn't it?

What about renaming the existing __errno_r() uses in Newlib to 
_REENT_ERRNO() with a definition of __errno_r() in <sys/errno.h> for 
potential users outside of Newlib?

-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: [email protected]
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.