On Aug 10, 2017 15:29, "Philip Martin" <phi...@codematters.co.uk> wrote:

Branko Čibej <br...@apache.org> writes:

> Would be better to generate this header at build time ... but to do that
> in a cross-platform manner, we'd have to write a C program to do that.

Even that is hard, I know of no easy way for C code to convert an error
number into a symbolic name.  Going from names to numbers would require
us to know, and hard-code, the names.

One way to convert numbers to names is to parse the C header, which on
my Linux system involves following several include directives to find
the underlying files:

  awk '/#define\sE.*[0-9]/{printf "{%s, \"%s\"},\n", $3, $2 }' \
    /usr/include/asm-generic/errno-base.h \
    /usr/include/asm-generic/errno.h


The approach that moreutils'[0] errno utility takes[1] looks useful.

[0]: https://joeyh.name/code/moreutils/
[1]: https://sources.debian.net/src/moreutils/0.60-1/Makefile/#L41-L45 to
generate the array consumed by
https://sources.debian.net/src/moreutils/0.60-1/errno.c/#L33-L38

Cheers,
James

Reply via email to