We had errno_to_name() which works for "known" errnos, and returns NULL for unknown ones, and then ERRNO_NAME which always returns an answer, possibly just a number as a string, but requires a helper buffer. It is possible for the kernel to add a new errno. We recently learned that some architectures define custom errno names. Or for some function to unexpectedly return a bogus errno value. In almost all cases it's better to print that value rather than "n/a" or "(null)". So let's use ERRNO_NAME is most error handling code. Noteably, our code wasn't very good in handling the potential NULL, so in various places we could print "(null)". Since this is supposed to be used most of the time, let's shorten the names to ERRNO_NAME/errno_name. There are a few places where we don't want to use the fallback path, in particular for D-Bus error names or when saving the error name. Let's rename errno_to_name() to errno_name_no_fallback() to make the distinction clearer.
System and Service Manager
Details
Most documentation is available on systemd's web site.
Assorted, older, general information about systemd can be found in the systemd Wiki.
Information about build requirements is provided in the README file.
Consult our NEWS file for information about what's new in the most recent systemd versions.
Please see the Code Map for information about this repository's layout and content.
Please see the Hacking guide for information on how to hack on systemd and test your modifications.
Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.
When preparing patches for systemd, please follow our Coding Style Guidelines.
If you are looking for support, please contact our mailing list, join our IRC channel #systemd on libera.chat or Matrix channel
Stable branches with backported patches are available in the stable repo.
We have a security bug bounty program sponsored by the Sovereign Tech Fund hosted on YesWeHack
Repositories with distribution packages built from git main are available on OBS
