btrfs-progs: print optional features in btrfs version

There's a number of optionally built features, print the list on the 2nd
line of 'btrfs version'. The format is same as for e.g. systemd:

$ btrfs version
btrfs-progs v6.9.2
+EXPERIMENTAL -INJECT -STATIC +LZO +ZSTD +UDEV +FSVERITY +ZONED CRYPTO=builtin

Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
David Sterba 2024-06-28 23:15:24 +02:00
parent 49d28bfedb
commit 776162cbe2
1 changed files with 55 additions and 0 deletions

55
btrfs.c
View File

@ -221,7 +221,62 @@ static const char * const cmd_version_usage[] = {
static int cmd_version(const struct cmd_struct *unused, int argc, char **argv) static int cmd_version(const struct cmd_struct *unused, int argc, char **argv)
{ {
static const char *features[] = {
#if EXPERIMENTAL
"+"
#else
"-"
#endif
"EXPERIMENTAL",
#ifdef INJECT
"+"
#else
"-"
#endif
"INJECT",
#ifdef STATIC_BUILD
"+"
#else
"-"
#endif
"STATIC",
#if defined(COMPRESSION_LZO) && COMPRESSION_LZO == 1
"+"
#else
"-"
#endif
"LZO",
#if defined(COMPRESSION_ZSTD) && COMPRESSION_ZSTD == 1
"+"
#else
"-"
#endif
"ZSTD",
#if defined(HAVE_LIBUDEV) && HAVE_LIBUDEV == 1
"+"
#else
"-"
#endif
"UDEV",
#if defined(HAVE_LINUX_FSVERITY_H) && HAVE_LINUX_FSVERITY_H == 1
"+"
#else
"-"
#endif
"FSVERITY",
#if defined(BTRFS_ZONED) && BTRFS_ZONED == 1
"+"
#else
"-"
#endif
"ZONED",
"CRYPTO=" CRYPTOPROVIDER,
};
printf("%s\n", PACKAGE_STRING); printf("%s\n", PACKAGE_STRING);
for (int i = 0; i < ARRAY_SIZE(features); i++)
printf("%s%s", (i == 0 ? "" : " "), features[i]);
putchar('\n');
return 0; return 0;
} }
static DEFINE_SIMPLE_COMMAND(version, "version"); static DEFINE_SIMPLE_COMMAND(version, "version");