[BRLTTY] Low-level BrlAPI questions
Aura Kelloniemi
kaura.dev at sange.fi
Mon Apr 12 05:58:53 EDT 2021
Hi
On 2021-04-12 at 08:41 +0200, Samuel Thibault <samuel.thibault at ens-lyon.org> wrote:
> Aura Kelloniemi, le lun. 12 avril 2021 09:33:33 +0300, a ecrit:
> > Various BrlAPI functions return strings to the caller (in one way or another).
> > What is the character set of these strings? Can I assume them to be UTF-8 or
> > ASCII?
> >
> > To give examples: driver names, model identifiers, key names, key code
> > descriptions, error messages from brlapi_strerror, etc.
> They are all ASCII.
Ok, thanks.
I researched the error messages case, and I suspect that they
might be encoded in whatever character set in the case of C library errors,
because strerror might return a translated message, which is in the user's
locale.
I also found race conditions from brlapi_strerror. Its result buffer will be
clobbered, if brlapi_strerror is called simultaneously from multiple threads.
This function also calls strerror, which contains the same race condition by
definition. I don't think there is a portable way of fixing it, but on GNU
libc strerror_r should probably be used. gai_strerror probably has the same
issue.
Could a new function brlapi_strerror_r be added that would be re-entrant?
--
Aura
More information about the BRLTTY
mailing list