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)
|
ag_db_init(AgDb *db)
|
||||||
{
|
{
|
||||||
GdaSqlParser *parser;
|
GdaSqlParser *parser;
|
||||||
GFile *user_data_dir = g_file_new_for_path(g_get_user_data_dir()),
|
GFile *ag_data_dir = ag_get_user_data_dir();
|
||||||
*ag_data_dir = g_file_get_child(user_data_dir, "astrognome");
|
|
||||||
AgDbPrivate *priv = ag_db_get_instance_private(db);
|
AgDbPrivate *priv = ag_db_get_instance_private(db);
|
||||||
gchar *path = g_file_get_path(ag_data_dir);
|
gchar *path = g_file_get_path(ag_data_dir);
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
|
|
||||||
gda_init();
|
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);
|
priv->dsn = g_strdup_printf("SQLite://DB_DIR=%s;DB_NAME=charts", path);
|
||||||
|
|
||||||
g_free(path);
|
g_free(path);
|
||||||
g_object_unref(user_data_dir);
|
g_clear_object(&ag_data_dir);
|
||||||
g_object_unref(ag_data_dir);
|
|
||||||
|
|
||||||
priv->conn = gda_connection_open_from_string(
|
priv->conn = gda_connection_open_from_string(
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -188,6 +188,40 @@ ag_house_system_nick_to_id(const gchar *nick)
|
|||||||
return GSWE_HOUSE_SYSTEM_NONE;
|
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
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#ifndef __ASTROGNOME_H__
|
#ifndef __ASTROGNOME_H__
|
||||||
#define __ASTROGNOME_H__
|
#define __ASTROGNOME_H__
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
#include <swe-glib.h>
|
#include <swe-glib.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -34,6 +35,7 @@ enum {
|
|||||||
|
|
||||||
const gchar *ag_house_system_id_to_nick(GsweHouseSystem house_system);
|
const gchar *ag_house_system_id_to_nick(GsweHouseSystem house_system);
|
||||||
GsweHouseSystem ag_house_system_nick_to_id(const gchar *nick);
|
GsweHouseSystem ag_house_system_nick_to_id(const gchar *nick);
|
||||||
|
GFile *ag_get_user_data_dir(void);
|
||||||
|
|
||||||
#ifndef GDOUBLE_FROM_LE
|
#ifndef GDOUBLE_FROM_LE
|
||||||
inline static gdouble
|
inline static gdouble
|
||||||
|
Loading…
Reference in New Issue
Block a user