From 331bfef416b502c63a0498270a2bdcf7777f9fe0 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 14 Sep 2016 21:58:19 +1000 Subject: 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). --- libs/ardour/file_source.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'libs/ardour/file_source.cc') 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 #include -#include // for rename(), sigh #include #include #include +#include +#include + #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; } -- cgit v1.2.3