# HG changeset patch # User nadvornik # Date 1244666724 0 # Node ID c8252313dcfa2504d08a8d359c679277bc418470 # Parent 97ac3a58adae1f6cac44f1cc72d9dd4a9e5c3e3b make sure that a directory exists on saving desktop files diff -r 97ac3a58adae -r c8252313dcfa src/desktop_file.c --- a/src/desktop_file.c Wed Jun 10 20:26:47 2009 +0000 +++ b/src/desktop_file.c Wed Jun 10 20:45:24 2009 +0000 @@ -59,6 +59,7 @@ static gboolean editor_window_save(EditorWindow *ew) { + gchar *dir; gchar *path; gchar *text; GtkTextIter start, end; @@ -75,9 +76,16 @@ gtk_text_buffer_get_bounds(ew->buffer, &start, &end); text = gtk_text_buffer_get_text(ew->buffer, &start, &end, FALSE); - path = g_build_filename(get_rc_dir(), "applications", name, NULL); + dir = g_build_filename(get_rc_dir(), "applications", NULL); + path = g_build_filename(dir, name, NULL); - if (!g_file_set_contents(path, text, -1, &error)) + if (!recursive_mkdir_if_not_exists(dir, 0755)) + { + file_util_warning_dialog(_("Can't save"), _("Could not create directory"), GTK_STOCK_DIALOG_ERROR, NULL); + ret = FALSE; + } + + if (ret && !g_file_set_contents(path, text, -1, &error)) { file_util_warning_dialog(_("Can't save"), error->message, GTK_STOCK_DIALOG_ERROR, NULL); g_error_free(error); @@ -85,6 +93,7 @@ } g_free(path); + g_free(dir); g_free(text); layout_editors_reload_all(); return ret;