[Libosinfo] [libosinfo PATCH 3/3] osinfo-detect: Be aware of tree's os variants
Fabiano Fidêncio
fidencio at redhat.com
Fri Apr 12 08:19:54 UTC 2019
In the same way done for medias, make the tree detection aware of
os-variants.
https://gitlab.com/libosinfo/libosinfo/issues/25
Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
---
tools/osinfo-detect.c | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/tools/osinfo-detect.c b/tools/osinfo-detect.c
index a753bfa..4eef703 100644
--- a/tools/osinfo-detect.c
+++ b/tools/osinfo-detect.c
@@ -201,9 +201,37 @@ static void print_os_tree(OsinfoOs *os, OsinfoTree *tree, OsinfoTree *matched_tr
if (bootiso)
g_print("OSINFO_TREE_BOOT_ISO=%s\n", bootiso);
} else {
- const gchar *name = osinfo_product_get_name(OSINFO_PRODUCT(os));
+ OsinfoOsVariantList *variants;
+ const gchar *name;
+ guint num_variants;
+
+ variants = osinfo_tree_get_os_variants(matched_tree);
+ num_variants = osinfo_list_get_length(OSINFO_LIST(variants));
+ if (num_variants == 1) {
+ OsinfoEntity *variant;
+
+ variant = osinfo_list_get_nth(OSINFO_LIST(variants), 0);
+ name = osinfo_os_variant_get_name(OSINFO_OS_VARIANT(variant));
+ } else {
+ name = osinfo_product_get_name(OSINFO_PRODUCT(os));
+ }
g_print(_("Tree is an installer for OS '%s'\n"), name);
+
+ if (num_variants > 1) {
+ guint i;
+
+ g_print(_("Available OS variants on tree:\n"));
+ for (i = 0; i < num_variants; i++) {
+ OsinfoEntity *variant;
+
+ variant = osinfo_list_get_nth(OSINFO_LIST(variants), i);
+ name = osinfo_os_variant_get_name(OSINFO_OS_VARIANT(variant));
+ g_print("%s\n", name);
+ }
+ }
+
+ g_clear_object(&variants);
}
}
--
2.20.1
More information about the Libosinfo
mailing list