GtkBookmarksManager: Ensure parent directory exists when saving

Otherwise we fail when the user doesn't have ~/.config yet.
This commit is contained in:
Colin Walters 2013-05-09 16:48:03 -04:00
parent 20e8675106
commit 4f01c0b159

View File

@ -115,6 +115,7 @@ save_bookmarks (GFile *bookmarks_file,
GError *error = NULL; GError *error = NULL;
GString *contents; GString *contents;
GSList *l; GSList *l;
GFile *parent = NULL;
contents = g_string_new (""); contents = g_string_new ("");
@ -136,16 +137,28 @@ save_bookmarks (GFile *bookmarks_file,
g_free (uri); g_free (uri);
} }
parent = g_file_get_parent (bookmarks_file);
if (!g_file_make_directory_with_parents (parent, NULL, &error))
{
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
g_clear_error (&error);
else
goto out;
}
if (!g_file_replace_contents (bookmarks_file, if (!g_file_replace_contents (bookmarks_file,
contents->str, contents->str,
strlen (contents->str), strlen (contents->str),
NULL, FALSE, 0, NULL, NULL, FALSE, 0, NULL,
NULL, &error)) NULL, &error))
goto out;
out:
if (error)
{ {
g_critical ("%s", error->message); g_critical ("%s", error->message);
g_error_free (error); g_error_free (error);
} }
g_clear_object (&parent);
g_string_free (contents, TRUE); g_string_free (contents, TRUE);
} }