summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeeshan Ali (Khattak) <zeeshanak@gnome.org>2013-11-26 14:31:21 +0000
committerZeeshan Ali (Khattak) <zeeshanak@gnome.org>2013-11-29 11:22:21 +0000
commit70834b08a84cfaf063a63cfe357c932ec87c35ad (patch)
tree25c1ba8d68270eede2a664d2555b6fc261506518
parent8cc02c5883819cd8de03aaeeaf5b31c5e0916dc2 (diff)
downloadlibosinfo-70834b08a84cfaf063a63cfe357c932ec87c35ad.tar.gz
tools: osinfo-detect prints variant
If a particular variant is matched against, osinfo-detect should print the name of that variant rather than the OS itself.
-rw-r--r--tools/osinfo-detect.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/tools/osinfo-detect.c b/tools/osinfo-detect.c
index 0f837de..cf737f2 100644
--- a/tools/osinfo-detect.c
+++ b/tools/osinfo-detect.c
@@ -136,12 +136,40 @@ static void print_media(OsinfoMedia *media)
g_print("OSINFO_MEDIA=%s\n",
osinfo_entity_get_id(OSINFO_ENTITY(media)));
} else {
- const gchar *name = osinfo_product_get_name(OSINFO_PRODUCT(os));
+ OsinfoOsVariantList *variants;
+ const gchar *name;
+ guint num_variants;
+
+ variants = osinfo_media_get_os_variants(media);
+ 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));
+ }
if (osinfo_media_get_installer (media))
g_print(_("Media is an installer for OS '%s'\n"), name);
if (osinfo_media_get_live (media))
g_print(_("Media is live media for OS '%s'\n"), name);
+
+ if (num_variants > 1) {
+ guint i;
+
+ g_print(_("Available OS variants on media:\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);
}
g_object_unref(os);
}