[virt-tools-list] [libosinfo v2 2/3] install_script: add get_config_param function

Fabiano Fidêncio fabiano at fidencio.org
Thu Oct 4 05:06:06 UTC 2012


Return, if exists, the sought OsinfoInstallConfigParam from an
OsinfoInstallScript. Otherwise, NULL is returned.
---
 osinfo/libosinfo.syms          |  1 +
 osinfo/osinfo_install_script.c | 33 +++++++++++++++++++++++++++++++++
 osinfo/osinfo_install_script.h |  2 ++
 3 files changed, 36 insertions(+)

diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms
index 772e89c..df76108 100644
--- a/osinfo/libosinfo.syms
+++ b/osinfo/libosinfo.syms
@@ -309,6 +309,7 @@ LIBOSINFO_0.2.1 {
 	osinfo_entity_get_param_value_int64_with_default;
 	osinfo_entity_set_param_int64;
 	osinfo_install_script_get_expected_filename;
+	osinfo_install_script_get_config_param;
 } LIBOSINFO_0.2.0;
 
 /* Symbols in next release...
diff --git a/osinfo/osinfo_install_script.c b/osinfo/osinfo_install_script.c
index c9e2024..aaef08c 100644
--- a/osinfo/osinfo_install_script.c
+++ b/osinfo/osinfo_install_script.c
@@ -264,6 +264,39 @@ GList *osinfo_install_script_get_config_param_list(const OsinfoInstallScript *sc
     return g_list_copy(script->priv->config_param_list);
 }
 
+/**
+ * osinfo_install_script_get_config_param:
+ *
+ * Get a config param from the config param's list
+ *
+ * Returns: (transfer full): the sought config param, if exists.
+ *                           NULL otherwise.
+ */
+OsinfoInstallConfigParam *osinfo_install_script_get_config_param(const OsinfoInstallScript *script, const gchar *name)
+{
+    GList *l;
+
+    for (l = script->priv->config_param_list; l != NULL; l = l->next)
+    {
+        OsinfoInstallConfigParam *tmp = l->data;
+        const gchar *param_name = osinfo_install_config_param_get_name(tmp);
+
+        if (g_strcmp0(param_name, name) == 0) {
+            const gchar *param_policy;
+            OsinfoInstallConfigParamPolicy policy =
+                osinfo_install_config_param_get_policy(tmp);
+
+            if (policy == OSINFO_INSTALL_CONFIG_PARAM_POLICY_REQUIRED)
+                param_policy = "required";
+            else if (policy == OSINFO_INSTALL_CONFIG_PARAM_POLICY_OPTIONAL)
+                param_policy = "optional";
+
+            return osinfo_install_config_param_new(param_name, param_policy);
+        }
+    }
+    return NULL;
+}
+
 static void
 osinfo_install_script_init (OsinfoInstallScript *list)
 {
diff --git a/osinfo/osinfo_install_script.h b/osinfo/osinfo_install_script.h
index 4af62e0..372bacc 100644
--- a/osinfo/osinfo_install_script.h
+++ b/osinfo/osinfo_install_script.h
@@ -137,6 +137,8 @@ gboolean osinfo_install_script_has_config_param(const OsinfoInstallScript *scrip
 
 gboolean osinfo_install_script_has_config_param_name(const OsinfoInstallScript *script, const gchar *name);
 
+OsinfoInstallConfigParam *osinfo_install_script_get_config_param(const OsinfoInstallScript *script, const gchar *name);
+
 void osinfo_install_script_add_config_param(OsinfoInstallScript *script, OsinfoInstallConfigParam *param);
 
 GList *osinfo_install_script_get_config_param_list(const OsinfoInstallScript *script);
-- 
1.7.12.1




More information about the virt-tools-list mailing list