Move data directory creation/query code to ag_get_user_data_dir()
This commit is contained in:
parent
89396da4ab
commit
80e3992b24
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
|
||||
|
Loading…
Reference in New Issue
Block a user