[Libosinfo] [PATCH v3 54/60] loader: pull out code for building database paths

Christophe Fergeau cfergeau at redhat.com
Fri Oct 16 10:23:06 UTC 2015


On Mon, Oct 12, 2015 at 06:11:15PM +0100, Daniel P. Berrange wrote:
> Create standalone helper methods for constructing a GFile
> object for the system/local/user database paths.
> 
> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> ---
>  osinfo/osinfo_loader.c | 54 +++++++++++++++++++++++++++++++-------------------
>  1 file changed, 34 insertions(+), 20 deletions(-)
> 
> diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c
> index bcea3fc..1c35a3c 100644
> --- a/osinfo/osinfo_loader.c
> +++ b/osinfo/osinfo_loader.c
> @@ -1910,6 +1910,37 @@ void osinfo_loader_process_uri(OsinfoLoader *loader,
>  }
>  
>  
> +static GFile *osinfo_loader_get_system_path(void)
> +{
> +    GFile *file;
> +    gchar *dbdir;
> +    const gchar *path = g_getenv("OSINFO_DATA_DIR");
> +    if (!path)
> +        path = PKG_DATA_DIR;
> +
> +    dbdir = g_strdup_printf("%s/db", path);

The various g_strdup_printf() could be replaced with g_build_filename()
(but then this patch would be more than code movement).

Looks good otherwise.

Christophe

> +    file = g_file_new_for_path(dbdir);
> +    g_free(dbdir);
> +    return file;
> +}
> +
> +static GFile *osinfo_loader_get_local_path(void)
> +{
> +    return g_file_new_for_path(SYS_CONF_DIR "/libosinfo/db");
> +}
> +
> +static GFile *osinfo_loader_get_user_path(void)
> +{
> +    GFile *file;
> +    gchar *dbdir;
> +    const gchar *configdir = g_get_user_config_dir();
> +
> +    dbdir = g_strdup_printf("%s/libosinfo/db", configdir);
> +    file = g_file_new_for_path(dbdir);
> +    g_free(dbdir);
> +    return file;
> +}
> +
>  void osinfo_loader_process_default_path(OsinfoLoader *loader, GError **err)
>  {
>      GError *error = NULL;
> @@ -1950,28 +1981,17 @@ void osinfo_loader_process_default_path(OsinfoLoader *loader, GError **err)
>  void osinfo_loader_process_system_path(OsinfoLoader *loader,
>                                         GError **err)
>  {
> -    GFile *file;
> -    gchar *dbdir;
> -    const gchar *path = g_getenv("OSINFO_DATA_DIR");
> -    if (!path)
> -        path = PKG_DATA_DIR;
> -
> -    dbdir = g_strdup_printf("%s/db", path);
> -    file = g_file_new_for_path(dbdir);
> +    GFile *file = osinfo_loader_get_system_path();
>      osinfo_loader_process_file(loader,
>                                 file,
>                                 FALSE,
>                                 err);
>      g_object_unref(file);
> -    g_free(dbdir);
>  }
>  
>  void osinfo_loader_process_local_path(OsinfoLoader *loader, GError **err)
>  {
> -    GFile *file;
> -    const gchar *dbdir = SYS_CONF_DIR "/libosinfo/db";
> -
> -    file = g_file_new_for_path(dbdir);
> +    GFile *file = osinfo_loader_get_local_path();
>      osinfo_loader_process_file(loader,
>                                 file,
>                                 TRUE,
> @@ -1981,18 +2001,12 @@ void osinfo_loader_process_local_path(OsinfoLoader *loader, GError **err)
>  
>  void osinfo_loader_process_user_path(OsinfoLoader *loader, GError **err)
>  {
> -    GFile *file;
> -    gchar *dbdir;
> -    const gchar *configdir = g_get_user_config_dir();
> -
> -    dbdir = g_strdup_printf("%s/libosinfo/db", configdir);
> -    file = g_file_new_for_path(dbdir);
> +    GFile *file = osinfo_loader_get_user_path();
>      osinfo_loader_process_file(loader,
>                                 file,
>                                 TRUE,
>                                 err);
>      g_object_unref(file);
> -    g_free(dbdir);
>  }
>  
>  /*
> -- 
> 2.4.3
> 
> _______________________________________________
> Libosinfo mailing list
> Libosinfo at redhat.com
> https://www.redhat.com/mailman/listinfo/libosinfo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libosinfo/attachments/20151016/54192109/attachment.sig>


More information about the Libosinfo mailing list