summaryrefslogtreecommitdiff
path: root/libs/ardour/file_source.cc
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2016-09-14 21:58:19 +1000
committerTim Mayberry <mojofunk@gmail.com>2016-09-15 21:27:55 +1000
commit331bfef416b502c63a0498270a2bdcf7777f9fe0 (patch)
tree7981a6935c3ff5343164995c940e6b888a03d81a /libs/ardour/file_source.cc
parente297e27b7f41707254f68a9bab8265bd38a9fde8 (diff)
Use ::g_rename instead of ::rename in ARDOUR::FileSource class
The path is in UTF-8 encoding so use Glib functions to properly support paths containing characters that aren't in the system codepage. This fixes Clean-up Unused Sources on Windows where paths contain characters that aren't in the system codepage(usually most non-ascii characters).
Diffstat (limited to 'libs/ardour/file_source.cc')
-rw-r--r--libs/ardour/file_source.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/libs/ardour/file_source.cc b/libs/ardour/file_source.cc
index b991d549af..37e156ec8f 100644
--- a/libs/ardour/file_source.cc
+++ b/libs/ardour/file_source.cc
@@ -21,11 +21,13 @@
#include <sys/time.h>
#include <sys/stat.h>
-#include <stdio.h> // for rename(), sigh
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+
#include "pbd/convert.h"
#include "pbd/basename.h"
#include "pbd/stl_delete.h"
@@ -205,7 +207,7 @@ FileSource::move_to_trash (const string& trash_dir_name)
}
}
- if (::rename (_path.c_str(), newpath.c_str()) != 0) {
+ if (::g_rename (_path.c_str(), newpath.c_str()) != 0) {
PBD::error << string_compose (
_("cannot rename file source from %1 to %2 (%3)"),
_path, newpath, strerror (errno)) << endmsg;
@@ -214,7 +216,7 @@ FileSource::move_to_trash (const string& trash_dir_name)
if (move_dependents_to_trash() != 0) {
/* try to back out */
- ::rename (newpath.c_str(), _path.c_str());
+ ::g_rename (newpath.c_str(), _path.c_str());
return -1;
}
@@ -592,7 +594,7 @@ FileSource::rename (const string& newpath)
if (Glib::file_test (oldpath.c_str(), Glib::FILE_TEST_EXISTS)) {
/* rename only needed if file exists on disk */
- if (::rename (oldpath.c_str(), newpath.c_str()) != 0) {
+ if (::g_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;
}