diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2023-03-13 18:12:04 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2023-03-16 16:46:44 +0100 |
commit | 5356761da67aa5c11f784c3ba9ac8d8f6e55048b (patch) | |
tree | 970588a1d900622bc063c410f42ae905de55db3c /src/udev/ata_id | |
parent | bd36d0281ab41bfea932931e913809ee1e6195ed (diff) | |
download | systemd-5356761da67aa5c11f784c3ba9ac8d8f6e55048b.tar.gz |
udev: implement --version in all builtins
Those are separate binaries, and occasionally people will get a misplaced
binary that doesn't match the rest of the installed system and be confused, so
it good to be able to check the version. It is also nice to have the same
interface in all binaries.
Note that we usually use a separate 'enum ARG_VERSION = 0x100' for an option
without a short name. We can use a less verbose approach of simply taking any
unused letter, which works just as well and even the compiler would warn us
if we tried to use the letter in another place. This way we avoid a few lines
of boilerplate.
The help texts are adjusted to have an empty line between the synopsis and
option list, and no empty lines after the option list.
Diffstat (limited to 'src/udev/ata_id')
-rw-r--r-- | src/udev/ata_id/ata_id.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/udev/ata_id/ata_id.c b/src/udev/ata_id/ata_id.c index ec472feada..7760d248cf 100644 --- a/src/udev/ata_id/ata_id.c +++ b/src/udev/ata_id/ata_id.c @@ -23,6 +23,7 @@ #include <sys/types.h> #include <unistd.h> +#include "build.h" #include "device-nodes.h" #include "fd-util.h" #include "log.h" @@ -361,8 +362,9 @@ static int disk_identify(int fd, static int parse_argv(int argc, char *argv[]) { static const struct option options[] = { - { "export", no_argument, NULL, 'x' }, - { "help", no_argument, NULL, 'h' }, + { "export", no_argument, NULL, 'x' }, + { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, 'v' }, {} }; int c; @@ -375,9 +377,12 @@ static int parse_argv(int argc, char *argv[]) { case 'h': printf("%s [OPTIONS...] DEVICE\n\n" " -x --export Print values as environment keys\n" - " -h --help Show this help text\n", + " -h --help Show this help text\n" + " --version Show package version\n", program_invocation_short_name); return 0; + case 'v': + return version(); case '?': return -EINVAL; default: |