[libsecret/nielsdg/extract-get-secret-file-func: 1/2] file-backend: Extract function to return GFile
- From: Niels De Graef <nielsdg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsecret/nielsdg/extract-get-secret-file-func: 1/2] file-backend: Extract function to return GFile
- Date: Sat, 21 May 2022 18:55:58 +0000 (UTC)
commit e1e5a39953ee03d421ff490b9f34f9e2d55e3dbe
Author: Niels De Graef <nielsdegraef gmail com>
Date: Sat May 21 20:23:10 2022 +0200
file-backend: Extract function to return GFile
A small cleanup
libsecret/secret-file-backend.c | 88 +++++++++++++++++++++++------------------
1 file changed, 50 insertions(+), 38 deletions(-)
---
diff --git a/libsecret/secret-file-backend.c b/libsecret/secret-file-backend.c
index 7145f72..9c9dc12 100644
--- a/libsecret/secret-file-backend.c
+++ b/libsecret/secret-file-backend.c
@@ -60,6 +60,51 @@ enum {
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
secret_file_backend_init (SecretFileBackend *self)
{
@@ -426,55 +471,22 @@ secret_file_backend_real_init_async (GAsyncInitable *initable,
GAsyncReadyCallback callback,
gpointer user_data)
{
- gchar *path;
- GFile *file;
- GFile *dir;
+ const char *envvar = NULL;
+ GFile *file = NULL;
SecretValue *password;
- const gchar *envvar;
GTask *task;
GError *error = NULL;
InitClosure *init;
- gboolean ret;
task = g_task_new (initable, cancellable, callback, user_data);
- 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_task_return_new_error (task,
- G_IO_ERROR,
- G_IO_ERROR_INVALID_ARGUMENT,
- "not a valid path");
- g_object_unref (file);
+ file = get_secret_file (cancellable, &error);
+ if (file == NULL) {
+ g_task_return_error (task, g_steal_pointer (&error));
g_object_unref (task);
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");
if (envvar != NULL && *envvar != '\0') {
password = secret_value_new (envvar, -1, "text/plain");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]