From 96d4e7f9c780e2a9ee51fb65f84a6cd65a58b205 Mon Sep 17 00:00:00 2001 From: paul Date: Wed, 21 Jul 2010 13:03:50 +0000 Subject: [PATCH] fix up file renaming code a little bit git-svn-id: http://subversion.ardour.org/svn/ardour2/ardour2/branches/3.0@7460 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/file_source.cc | 10 +++++----- libs/ardour/session.cc | 12 +++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/libs/ardour/file_source.cc b/libs/ardour/file_source.cc index 2fd978e17..d0eb64b8a 100644 --- a/libs/ardour/file_source.cc +++ b/libs/ardour/file_source.cc @@ -395,11 +395,11 @@ FileSource::set_source_name (const ustring& newname, bool destructive) error << string_compose (_("Programming error! %1 tried to rename a file over another file! It's safe to continue working, but please report this to the developers."), PROGRAM_NAME) << endmsg; return -1; } - - if (::rename (oldpath.c_str(), newpath.c_str()) != 0) { - error << string_compose (_("cannot rename audio file %1 to %2"), _name, newpath) << endmsg; - return -1; - } + + if (::rename (oldpath.c_str(), newpath.c_str()) != 0) { + error << string_compose (_("cannot rename file %1 to %2 (%3)"), oldpath, newpath, strerror(errno)) << endmsg; + return -1; + } _name = Glib::path_get_basename (newpath); _path = newpath; diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index d29489844..344a20f86 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -2692,12 +2692,13 @@ Session::change_source_path_by_name (string path, string oldname, string newname prefix = path.substr (0, dash); - path = dir; path += prefix; path += '-'; path += new_legalized; path += ".wav"; /* XXX gag me with a spoon */ + path = Glib::build_filename (dir, path); + } else { /* non-destructive file sources have a name of the form: @@ -2743,10 +2744,12 @@ Session::change_source_path_by_name (string path, string oldname, string newname for (uint32_t cnt = 1; cnt <= limit; ++cnt) { - snprintf (buf, sizeof(buf), "%s%s-%u%s", dir.c_str(), newname.c_str(), cnt, suffix.c_str()); + snprintf (buf, sizeof(buf), "%s-%u%s", newname.c_str(), cnt, suffix.c_str()); + + string p = Glib::build_filename (dir, buf); - if (!Glib::file_test (buf, Glib::FILE_TEST_EXISTS)) { - path = buf; + if (!Glib::file_test (p, Glib::FILE_TEST_EXISTS)) { + path = p; break; } path = ""; @@ -2755,7 +2758,6 @@ Session::change_source_path_by_name (string path, string oldname, string newname if (path == "") { error << "FATAL ERROR! Could not find a " << endl; } - } return path; -- 2.11.4.GIT