The basic idea is that we'll have "one source of truth" for the list of options. Currently, this is split between: 1. struct option options[] array for long options 2. the short option parameter to getopt_long() 3. --help so it is easy to forget to add or update one of those places where appropriate. An option is defined through a macro that includes the option short and long codes, and also the metavar and help. Those four items can be used to generate the help string automatically. The code is easier to read when various parts are written in the same order. We can define common options through a macro in the header file, reducing boilerplate repeated in different files. Over time, if we discover that the same pattern is used in multiple files, we can add another "common option". The macro is defined in a way that the editor can indent it like a normal case statement. The error message for ambiguous options is formatted a bit differently: $ systemd-id128 --no- systemd-id128: option '--no-' is ambiguous; possibilities: '--no-pager' '--no-legend' $ build/systemd-id128 --no- option '--no-' is ambiguous; possibilities: --no-pager, --no-legend I think the formatting without commas is ugly, but OTOH, the quotes around option names are superfluous, real option names are easy to distinguish.
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, and also repositories with packages built from the latest stable release
