[Libosinfo] [PATCH 03/10] Add osinfo_install_script_generate_output_for_media*()

Christophe Fergeau cfergeau at redhat.com
Tue May 12 11:47:40 UTC 2015


On Thu, May 07, 2015 at 05:36:38PM +0100, Zeeshan Ali (Khattak) wrote:
> Add variant of osinfo_install_script_generate_for_media*() that
> generates the script into a file.
> ---
>  osinfo/libosinfo.syms          |   4 +
>  osinfo/osinfo_install_script.c | 250 +++++++++++++++++++++++++++++++++--------
>  osinfo/osinfo_install_script.h |  17 +++
>  3 files changed, 224 insertions(+), 47 deletions(-)
> 
> diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms
> index ba4c020..3906f89 100644
> --- a/osinfo/libosinfo.syms
> +++ b/osinfo/libosinfo.syms
> @@ -511,6 +511,10 @@ LIBOSINFO_0.2.12 {
>  	osinfo_install_script_generate_for_media_async;
>  	osinfo_install_script_generate_for_media_finish;
>  
> +	osinfo_install_script_generate_output_for_media;
> +	osinfo_install_script_generate_output_for_media_async;
> +	osinfo_install_script_generate_output_for_media_finish;
> +
>  	osinfo_media_get_volume_size;
>  } LIBOSINFO_0.2.11;
>  
> diff --git a/osinfo/osinfo_install_script.c b/osinfo/osinfo_install_script.c
> index 621c56f..a251557 100644
> --- a/osinfo/osinfo_install_script.c
> +++ b/osinfo/osinfo_install_script.c
> @@ -1061,6 +1061,25 @@ GFile *osinfo_install_script_generate_output_finish(OsinfoInstallScript *script,
>                                                          error);
>  }
>  
> +/**
> + * osinfo_install_script_generate_output_for_media_finish:
> + * @script: the install script
> + * @res:    a #GAsyncResult
> + * @error:  The location where to store any error, or NULL
> + *
> + * Returns: (transfer full): a file containing the script, or NULL on error.
> + *
> + * Since: 0.2.12
> + */
> +GFile *osinfo_install_script_generate_output_for_media_finish(OsinfoInstallScript *script,
> +                                                              GAsyncResult *res,
> +                                                              GError **error)
> +{
> +    return osinfo_install_script_generate_finish_common(script,
> +                                                        res,
> +                                                        error);
> +}
> +
>  struct _OsinfoInstallScriptGenerateSyncData {
>      GMainLoop *loop;
>      GError *error;
> @@ -1081,6 +1100,19 @@ static void osinfo_install_script_generate_output_done(GObject *src,
>      g_main_loop_quit(data->loop);
>  }
>  
> +static void osinfo_install_script_generate_output_for_media_done(GObject *src,
> +                                                                 GAsyncResult *res,
> +                                                                 gpointer user_data)
> +{
> +    OsinfoInstallScriptGenerateSyncData *data = user_data;
> +
> +    data->file =
> +        osinfo_install_script_generate_output_for_media_finish(OSINFO_INSTALL_SCRIPT(src),
> +                                                               res,
> +                                                               &data->error);
> +    g_main_loop_quit(data->loop);
> +}
> +
>  static void osinfo_install_script_generate_output_close_file(GObject *src,
>                                                              GAsyncResult *res,
>                                                              gpointer user_data)
> @@ -1279,28 +1311,14 @@ static void osinfo_install_script_generate_output_write_file(GObject *src,
>      }
>  }
>  
> -/**
> - * osinfo_install_script_generate_output_async:
> - * @script:     the install script
> - * @os:         the os
> - * @config:     the install script config
> - * @output_dir: the directory where file containing the output script
> - *              will be written
> - * @cancellable: (allow-none): a #GCancellable, or %NULL
> - * @callback: Function to call when result of this call is ready
> - * @user_data: The user data to pass to @callback, or %NULL
> - *
> - * Asynchronous variant of #osinfo_install_script_generate_output(). From the
> - * callback, call #osinfo_install_script_generate_output_finish() to conclude
> - * this call and get the generated script.
> - */
> -void osinfo_install_script_generate_output_async(OsinfoInstallScript *script,
> -                                                 OsinfoOs *os,
> -                                                 OsinfoInstallConfig *config,
> -                                                 GFile *output_dir,
> -                                                 GCancellable *cancellable,
> -                                                 GAsyncReadyCallback callback,
> -                                                 gpointer user_data)
> +static void osinfo_install_script_generate_output_async_common(OsinfoInstallScript *script,
> +                                                               OsinfoOs *os,
> +                                                               OsinfoMedia *media,
> +                                                               OsinfoInstallConfig *config,
> +                                                               GFile *output_dir,
> +                                                               GCancellable *cancellable,
> +                                                               GAsyncReadyCallback callback,
> +                                                               gpointer user_data)
>  {
>      const gchar *filename;
>      const gchar *prefix;
> @@ -1312,15 +1330,23 @@ void osinfo_install_script_generate_output_async(OsinfoInstallScript *script,
>      data->res = g_simple_async_result_new(G_OBJECT(script),
>                                            callback,
>                                            user_data,
> -                                          osinfo_install_script_generate_output_async);
> +                                          osinfo_install_script_generate_output_async_common);
>  
>      data->cancellable = cancellable;
>      data->error = data_sync->error;
> -    data->output = osinfo_install_script_generate(script,
> -                                                  os,
> -                                                  config,
> -                                                  cancellable,
> -                                                  &data->error);
> +    if (media != NULL) {
> +        data->output = osinfo_install_script_generate_for_media (script,
> +                                                                 media,
> +                                                                 config,
> +                                                                 cancellable,
> +                                                                 &data->error);
> +    } else {
> +        data->output = osinfo_install_script_generate(script,
> +                                                      os,
> +                                                      config,
> +                                                      cancellable,
> +                                                      &data->error);
> +    }

This is preexisting, but having an async function call into a sync
function while an async variant exists is unexpected.

All in all, looks good,

Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libosinfo/attachments/20150512/641dc7b2/attachment.sig>


More information about the Libosinfo mailing list