From 96ed1801aabee58db941b0d1b01dab4a3006afbe Mon Sep 17 00:00:00 2001 From: Hein-Pieter van Braam Date: Sun, 12 Aug 2018 21:26:08 +0200 Subject: [PATCH] When starting up try creating directories recursively Previously we had a check to see if cache and data directories exist and another check to try to make them if they do not. However the second check was never reached if we don't have the directories in question. Furthermore for cache directories on Linux people who never started a desktop environment we need to recurisively create the XDG directory as well as the godot specific directory. This fixes #17963 (cherry picked from commit 321ac5ae136635a12925c97d078153a5cae44f3d) --- editor/editor_settings.cpp | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index c2b510c2225..82214babf91 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -740,7 +740,7 @@ void EditorSettings::create() { } if (dir->change_dir(data_dir) != OK) { - dir->make_dir(data_dir); + dir->make_dir_recursive(data_dir); if (dir->change_dir(data_dir) != OK) { ERR_PRINT("Cannot create data directory!"); memdelete(dir); @@ -756,14 +756,8 @@ void EditorSettings::create() { // Validate/create cache dir - if (dir->change_dir(cache_path) != OK) { - ERR_PRINT("Cannot find path for cache directory!"); - memdelete(dir); - goto fail; - } - if (dir->change_dir(cache_dir) != OK) { - dir->make_dir(cache_dir); + dir->make_dir_recursive(cache_dir); if (dir->change_dir(cache_dir) != OK) { ERR_PRINT("Cannot create cache directory!"); memdelete(dir); @@ -773,14 +767,8 @@ void EditorSettings::create() { // Validate/create config dir and subdirectories - if (dir->change_dir(config_path) != OK) { - ERR_PRINT("Cannot find path for config directory!"); - memdelete(dir); - goto fail; - } - if (dir->change_dir(config_dir) != OK) { - dir->make_dir(config_dir); + dir->make_dir_recursive(config_dir); if (dir->change_dir(config_dir) != OK) { ERR_PRINT("Cannot create config directory!"); memdelete(dir);