We need to differ the expected name (name used for the installers, set in the XML representing each script) and the output-file name (name used to generate the script, may be the same than expected name; may be not, once we can set the prefix_output for a script) --- osinfo/libosinfo.syms | 1 + osinfo/osinfo_install_script.c | 19 +++++++++++++++++-- osinfo/osinfo_install_script.h | 4 +++- osinfo/osinfo_loader.c | 2 +- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms index 6060b1d..c60f726 100644 --- a/osinfo/libosinfo.syms +++ b/osinfo/libosinfo.syms @@ -281,6 +281,7 @@ LIBOSINFO_0.2.0 { osinfo_install_script_get_template_uri; osinfo_install_script_get_template_data; osinfo_install_script_get_output_filename; + osinfo_install_script_get_filename; osinfo_install_script_has_config_param; osinfo_install_script_has_config_param_name; osinfo_install_script_get_config_param_list; diff --git a/osinfo/osinfo_install_script.c b/osinfo/osinfo_install_script.c index bb2c2eb..bb4e0f3 100644 --- a/osinfo/osinfo_install_script.c +++ b/osinfo/osinfo_install_script.c @@ -47,6 +47,7 @@ G_DEFINE_TYPE (OsinfoInstallScript, osinfo_install_script, OSINFO_TYPE_ENTITY); struct _OsinfoInstallScriptPrivate { gchar *output_prefix; + gchar *output_filename; GList *config_param_list; }; @@ -353,10 +354,24 @@ const gchar *osinfo_install_script_get_output_prefix(OsinfoInstallScript *script return script->priv->output_prefix; } -const gchar *osinfo_install_script_get_output_filename(OsinfoInstallScript *script) +const gchar *osinfo_install_script_get_filename(OsinfoInstallScript *script) { return osinfo_entity_get_param_value(OSINFO_ENTITY(script), - OSINFO_INSTALL_SCRIPT_PROP_OUTPUT_FILENAME); + OSINFO_INSTALL_SCRIPT_PROP_FILENAME); +} + +const gchar *osinfo_install_script_get_output_filename(OsinfoInstallScript *script) +{ + if (script->priv->output_prefix) { + g_free(script->priv->output_filename); + script->priv->output_filename = + g_strdup_printf("%s-%s", + script->priv->output_prefix, + osinfo_install_script_get_filename(script)); + return script->priv->output_filename; + } + + return osinfo_install_script_get_filename(script); } struct _OsinfoInstallScriptGenerateData { diff --git a/osinfo/osinfo_install_script.h b/osinfo/osinfo_install_script.h index cbfc517..a360098 100644 --- a/osinfo/osinfo_install_script.h +++ b/osinfo/osinfo_install_script.h @@ -50,7 +50,7 @@ typedef struct _OsinfoInstallScriptPrivate OsinfoInstallScriptPrivate; #define OSINFO_INSTALL_SCRIPT_PROP_TEMPLATE_DATA "template-data" #define OSINFO_INSTALL_SCRIPT_PROP_PROFILE "profile" #define OSINFO_INSTALL_SCRIPT_PROP_PRODUCT_KEY_FORMAT "product-key-format" -#define OSINFO_INSTALL_SCRIPT_PROP_OUTPUT_FILENAME "output-filename" +#define OSINFO_INSTALL_SCRIPT_PROP_FILENAME "filename" #define OSINFO_INSTALL_SCRIPT_PROP_CONFIG_REQUIRED "required" #define OSINFO_INSTALL_SCRIPT_PROP_CONFIG_OPTIONAL "optional" @@ -95,6 +95,8 @@ const gchar *osinfo_install_script_get_output_prefix(OsinfoInstallScript *script const gchar *osinfo_install_script_get_output_filename(OsinfoInstallScript *script); +const gchar *osinfo_install_script_get_filename(OsinfoInstallScript *script); + void osinfo_install_script_generate_async(OsinfoInstallScript *script, OsinfoOs *os, OsinfoInstallConfig *config, diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c index c080fc4..404e5b9 100644 --- a/osinfo/osinfo_loader.c +++ b/osinfo/osinfo_loader.c @@ -619,7 +619,7 @@ static void osinfo_loader_install_script(OsinfoLoader *loader, goto error; if (value) osinfo_entity_set_param(OSINFO_ENTITY(installScript), - OSINFO_INSTALL_SCRIPT_PROP_OUTPUT_FILENAME, + OSINFO_INSTALL_SCRIPT_PROP_FILENAME, value); g_free(value); -- 1.7.11.4