Clean up the `%public_api` printer code slightly - get rid of explicit `\n` and ensure we only print `__BEGIN_C_DECLS` and `__END_C_DECLS` if the generated header actually contains functions or objects to declare. I've noticed that after 27ba9e2a44c11f8123528c350227db2c9a707c8f landed, generated errno.h header has two blocks of `__BEGIN_C_DECLS` / `__END_C_DECLS`: an empty one was generated automatically from `%public_api` section that was intended to only add the `errno_t` type declaration.
This directory also contains the Python sources for hdrgen, which is what generates the headers public libc headers. The definitions for these headers are in the ``include`` directory. The ``.h.def`` files are the bases and the ``.yaml`` files are the contents.