forked from AuroraMiddleware/gtk
GtkBookmarksManager: Ensure parent directory exists when saving
Otherwise we fail when the user doesn't have ~/.config yet.
This commit is contained in:
parent
20e8675106
commit
4f01c0b159
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user