Move data directory creation/query code to ag_get_user_data_dir()
This commit is contained in:
		
							
								
								
									
										17
									
								
								src/ag-db.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								src/ag-db.c
									
									
									
									
									
								
							@@ -456,30 +456,17 @@ static void
 | 
			
		||||
ag_db_init(AgDb *db)
 | 
			
		||||
{
 | 
			
		||||
    GdaSqlParser *parser;
 | 
			
		||||
    GFile        *user_data_dir = g_file_new_for_path(g_get_user_data_dir()),
 | 
			
		||||
                 *ag_data_dir   = g_file_get_child(user_data_dir, "astrognome");
 | 
			
		||||
    GFile        *ag_data_dir   = ag_get_user_data_dir();
 | 
			
		||||
    AgDbPrivate  *priv          = ag_db_get_instance_private(db);
 | 
			
		||||
    gchar        *path          = g_file_get_path(ag_data_dir);
 | 
			
		||||
    GError       *err           = NULL;
 | 
			
		||||
 | 
			
		||||
    gda_init();
 | 
			
		||||
 | 
			
		||||
    if (!g_file_query_exists(ag_data_dir, NULL)) {
 | 
			
		||||
        gchar *path = g_file_get_path(ag_data_dir);
 | 
			
		||||
 | 
			
		||||
        if (g_mkdir_with_parents(path, 0700) != 0) {
 | 
			
		||||
            g_error(
 | 
			
		||||
                    "Data directory %s does not exist and can not be created.",
 | 
			
		||||
                    path
 | 
			
		||||
                );
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    priv->dsn = g_strdup_printf("SQLite://DB_DIR=%s;DB_NAME=charts", path);
 | 
			
		||||
 | 
			
		||||
    g_free(path);
 | 
			
		||||
    g_object_unref(user_data_dir);
 | 
			
		||||
    g_object_unref(ag_data_dir);
 | 
			
		||||
    g_clear_object(&ag_data_dir);
 | 
			
		||||
 | 
			
		||||
    priv->conn = gda_connection_open_from_string(
 | 
			
		||||
            NULL,
 | 
			
		||||
 
 | 
			
		||||
@@ -188,6 +188,40 @@ ag_house_system_nick_to_id(const gchar *nick)
 | 
			
		||||
    return GSWE_HOUSE_SYSTEM_NONE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ag_get_user_data_dir:
 | 
			
		||||
 *
 | 
			
		||||
 * Creates the astrognome data directory (~/.local/share/astrognome on XDG
 | 
			
		||||
 * compatible systems) if necessary, and returns a GFile handle to it.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns: (transfer full): a #GFile handle to the application data directory
 | 
			
		||||
 *          that must be freed with g_object_unref().
 | 
			
		||||
 */
 | 
			
		||||
GFile *
 | 
			
		||||
ag_get_user_data_dir(void)
 | 
			
		||||
{
 | 
			
		||||
    GFile *user_data_dir = g_file_new_for_path(g_get_user_data_dir()),
 | 
			
		||||
          *ag_data_dir   = g_file_get_child(user_data_dir, "astrognome");
 | 
			
		||||
 | 
			
		||||
    g_clear_object(&user_data_dir);
 | 
			
		||||
    g_assert(ag_data_dir);
 | 
			
		||||
 | 
			
		||||
    if (!g_file_query_exists(ag_data_dir, NULL)) {
 | 
			
		||||
        gchar *path = g_file_get_path(ag_data_dir);
 | 
			
		||||
 | 
			
		||||
        if (g_mkdir_with_parents(path, 0700) != 0) {
 | 
			
		||||
            g_error(
 | 
			
		||||
                    "Data directory ‘%s’ does not exist and cannot be created.",
 | 
			
		||||
                    path
 | 
			
		||||
                );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        g_free(path);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return ag_data_dir;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
main(int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
#ifndef __ASTROGNOME_H__
 | 
			
		||||
#define __ASTROGNOME_H__
 | 
			
		||||
 | 
			
		||||
#include <gtk/gtk.h>
 | 
			
		||||
#include <swe-glib.h>
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
@@ -34,6 +35,7 @@ enum {
 | 
			
		||||
 | 
			
		||||
const gchar *ag_house_system_id_to_nick(GsweHouseSystem house_system);
 | 
			
		||||
GsweHouseSystem ag_house_system_nick_to_id(const gchar *nick);
 | 
			
		||||
GFile *ag_get_user_data_dir(void);
 | 
			
		||||
 | 
			
		||||
#ifndef GDOUBLE_FROM_LE
 | 
			
		||||
inline static gdouble
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user