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