diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-11 22:09:07 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-11 22:09:07 +0000 |
commit | 4daa640d225f467681810e9040db33e017a5fadc (patch) | |
tree | 3ef1a2e7a47ab0b84cac491694b7530beadf753b /gtk2_ardour/new_session_dialog.cc | |
parent | d8457cdddfebd15ec63da572db80aa546fddd2d4 (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.cc | 36 |
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 |