mirror of
https://gitlab.gnome.org/GNOME/libsecret.git
synced 2024-12-22 12:48:51 +00:00
file-backend: Extract function to return GFile
A small cleanup
This commit is contained in:
parent
179dc316c1
commit
7b461f5514
@ -60,6 +60,51 @@ enum {
|
|||||||
PROP_FLAGS
|
PROP_FLAGS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Gets the GFile for this backend and makes sure the parent dirs exist */
|
||||||
|
static GFile *
|
||||||
|
get_secret_file (GCancellable *cancellable, GError **error)
|
||||||
|
{
|
||||||
|
const char *envvar = NULL;
|
||||||
|
char *path = NULL;
|
||||||
|
GFile *file = NULL;
|
||||||
|
GFile *dir = NULL;
|
||||||
|
gboolean ret;
|
||||||
|
|
||||||
|
envvar = g_getenv ("SECRET_FILE_TEST_PATH");
|
||||||
|
if (envvar != NULL && *envvar != '\0') {
|
||||||
|
path = g_strdup (envvar);
|
||||||
|
} else {
|
||||||
|
path = g_build_filename (g_get_user_data_dir (),
|
||||||
|
"keyrings",
|
||||||
|
SECRET_COLLECTION_DEFAULT ".keyring",
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
file = g_file_new_for_path (path);
|
||||||
|
g_free (path);
|
||||||
|
|
||||||
|
dir = g_file_get_parent (file);
|
||||||
|
if (dir == NULL) {
|
||||||
|
g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
|
||||||
|
"not a valid path");
|
||||||
|
g_object_unref (file);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = g_file_make_directory_with_parents (dir, cancellable, error);
|
||||||
|
g_object_unref (dir);
|
||||||
|
if (!ret) {
|
||||||
|
if (!g_error_matches (*error, G_IO_ERROR, G_IO_ERROR_EXISTS)) {
|
||||||
|
g_object_unref (file);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_clear_error (error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
secret_file_backend_init (SecretFileBackend *self)
|
secret_file_backend_init (SecretFileBackend *self)
|
||||||
{
|
{
|
||||||
@ -426,55 +471,22 @@ secret_file_backend_real_init_async (GAsyncInitable *initable,
|
|||||||
GAsyncReadyCallback callback,
|
GAsyncReadyCallback callback,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
gchar *path;
|
const char *envvar = NULL;
|
||||||
GFile *file;
|
GFile *file = NULL;
|
||||||
GFile *dir;
|
|
||||||
SecretValue *password;
|
SecretValue *password;
|
||||||
const gchar *envvar;
|
|
||||||
GTask *task;
|
GTask *task;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
InitClosure *init;
|
InitClosure *init;
|
||||||
gboolean ret;
|
|
||||||
|
|
||||||
task = g_task_new (initable, cancellable, callback, user_data);
|
task = g_task_new (initable, cancellable, callback, user_data);
|
||||||
|
|
||||||
envvar = g_getenv ("SECRET_FILE_TEST_PATH");
|
file = get_secret_file (cancellable, &error);
|
||||||
if (envvar != NULL && *envvar != '\0')
|
if (file == NULL) {
|
||||||
path = g_strdup (envvar);
|
g_task_return_error (task, g_steal_pointer (&error));
|
||||||
else {
|
|
||||||
path = g_build_filename (g_get_user_data_dir (),
|
|
||||||
"keyrings",
|
|
||||||
SECRET_COLLECTION_DEFAULT ".keyring",
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
file = g_file_new_for_path (path);
|
|
||||||
g_free (path);
|
|
||||||
|
|
||||||
dir = g_file_get_parent (file);
|
|
||||||
if (dir == NULL) {
|
|
||||||
g_task_return_new_error (task,
|
|
||||||
G_IO_ERROR,
|
|
||||||
G_IO_ERROR_INVALID_ARGUMENT,
|
|
||||||
"not a valid path");
|
|
||||||
g_object_unref (file);
|
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = g_file_make_directory_with_parents (dir, cancellable, &error);
|
|
||||||
g_object_unref (dir);
|
|
||||||
if (!ret) {
|
|
||||||
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
|
|
||||||
g_clear_error (&error);
|
|
||||||
else {
|
|
||||||
g_task_return_error (task, error);
|
|
||||||
g_object_unref (file);
|
|
||||||
g_object_unref (task);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
envvar = g_getenv ("SECRET_FILE_TEST_PASSWORD");
|
envvar = g_getenv ("SECRET_FILE_TEST_PASSWORD");
|
||||||
if (envvar != NULL && *envvar != '\0') {
|
if (envvar != NULL && *envvar != '\0') {
|
||||||
password = secret_value_new (envvar, -1, "text/plain");
|
password = secret_value_new (envvar, -1, "text/plain");
|
||||||
|
Loading…
Reference in New Issue
Block a user