Use ::g_rename instead of ::rename in ARDOUR::FileSource class
authorTim Mayberry <mojofunk@gmail.com>
Wed, 14 Sep 2016 11:58:19 +0000 (21:58 +1000)
committerTim Mayberry <mojofunk@gmail.com>
Thu, 15 Sep 2016 11:27:55 +0000 (21:27 +1000)
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

index b991d549af7fb23c76ea785a073968d08d0fc958..37e156ec8f5b49b34180a2b09cc7b6a282f95ccb 100644 (file)
 
 #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;
                }