summaryrefslogtreecommitdiff
path: root/gtk2_ardour/new_session_dialog.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-01-11 22:09:07 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-01-11 22:09:07 +0000
commit4daa640d225f467681810e9040db33e017a5fadc (patch)
tree3ef1a2e7a47ab0b84cac491694b7530beadf753b /gtk2_ardour/new_session_dialog.cc
parentd8457cdddfebd15ec63da572db80aa546fddd2d4 (diff)
commit so i can do this on OS X with a reasonable link time
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2899 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/new_session_dialog.cc')
-rw-r--r--gtk2_ardour/new_session_dialog.cc36
1 files changed, 18 insertions, 18 deletions
diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc
index 67a5dab206..73a3baa5f1 100644
--- a/gtk2_ardour/new_session_dialog.cc
+++ b/gtk2_ardour/new_session_dialog.cc
@@ -539,26 +539,26 @@ NewSessionDialog::set_session_name (const Glib::ustring& name)
void
NewSessionDialog::set_session_folder(const Glib::ustring& dir)
{
- Glib::ustring realdir = dir;
-
- /* GtkFileChooser doesn't accept non-absolute pathnames without vomiting */
-
- if (!Glib::path_is_absolute (realdir)) {
- if (realdir.length() == 1 && realdir[0] == '.') {
- realdir.replace (0, 1, Glib::get_current_dir());
- } else if (realdir.length() > 1 && realdir[0] == '.' && realdir[1] == '/') {
- realdir.replace (0, 1, Glib::get_current_dir());
- } else if (realdir.length() == 2 && realdir[0] == '.' && realdir[1] == '.') {
- realdir.replace (0, 2, Glib::path_get_dirname (Glib::get_current_dir()));
- } else if (realdir.length() > 2 && realdir[0] == '.' && realdir[1] == '.' && realdir[2] == '/') {
- realdir.replace (0, 2, Glib::path_get_dirname (Glib::get_current_dir()));
- } else {
- error << string_compose (_("Non-absolute path \"%1\" not usable - ignored"), realdir) << endmsg;
- return;
+ char buf[PATH_MAX];
+
+ char *res = realpath (dir.c_str(), buf);
+
+ if (res) {
+
+ cerr << "canonical = " << res << endl;
+
+ Glib::ustring realdir = res;
+ free (res);
+
+ if (!Glib::file_test (realdir, Glib::FILE_TEST_IS_DIR)) {
+ realdir = Glib::path_get_dirname (realdir);
+ cerr << "no such dir, use " << realdir << endl;
}
- }
- m_folder->set_current_folder (realdir);
+ m_folder->set_current_folder (realdir);
+ } else {
+ cerr << dir << " not resolvable\n";
+ }
}
std::string