From 5f8c9a4e607036bdbea0e06f2b9aa50e63ee4943 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 18 Jul 2019 10:17:05 -0600 Subject: [PATCH] if a user specifies just a session name (not path) and it does not exist, use the default session folder --- gtk2_ardour/ardour_ui.cc | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 09912dc95e..f9d09e34c9 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -3285,15 +3285,33 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri template_name = load_template; } - session_name = basename_nosuffix (ARDOUR_COMMAND_LINE::session_name); session_path = ARDOUR_COMMAND_LINE::session_name; if (!session_path.empty()) { + if (Glib::file_test (session_path.c_str(), Glib::FILE_TEST_EXISTS)) { + + session_name = basename_nosuffix (ARDOUR_COMMAND_LINE::session_name); + if (Glib::file_test (session_path.c_str(), Glib::FILE_TEST_IS_REGULAR)) { /* session/snapshot file, change path to be dir */ session_path = Glib::path_get_dirname (session_path); } + } else { + + /* session (file or folder) does not exist ... did the + * user give us a path or just a name? + */ + + if (session_path.find (G_DIR_SEPARATOR) == string::npos) { + /* user gave session name with no path info, use + default session folder. + */ + session_name = ARDOUR_COMMAND_LINE::session_name; + session_path = Glib::build_filename (Config->get_default_session_parent_dir (), session_name); + } else { + session_name = basename_nosuffix (ARDOUR_COMMAND_LINE::session_name); + } } }