Added UTF8 international character support for file operations; see issue #413

This commit is contained in:
Oliver Duis
2010-12-18 17:41:03 +01:00
parent 1f2f3b1209
commit 94449dc9e4
29 changed files with 166 additions and 152 deletions

View File

@@ -477,13 +477,13 @@ void FileCatalog::deleteRequested (std::vector<FileBrowserEntry*> tbe) {
// remove from cache
cacheMgr->deleteEntry (fname);
// delete from file system
::g_remove (fname.c_str());
safe_g_remove (fname);
// delete paramfile if found
::g_remove (Glib::ustring(fname+paramFileExtension).c_str());
::g_remove (Glib::ustring(removeExtension(fname)+paramFileExtension).c_str());
safe_g_remove (Glib::ustring(fname+paramFileExtension));
safe_g_remove (Glib::ustring(removeExtension(fname)+paramFileExtension));
// delete .thm file
::g_remove (Glib::ustring(removeExtension(fname)+".thm").c_str());
::g_remove (Glib::ustring(removeExtension(fname)+".THM").c_str());
safe_g_remove (Glib::ustring(removeExtension(fname)+".thm"));
safe_g_remove (Glib::ustring(removeExtension(fname)+".THM"));
}
redrawAll ();
}
@@ -537,7 +537,7 @@ void FileCatalog::renameRequested (std::vector<FileBrowserEntry*> tbe) {
if (ext=="")
nBaseName += "." + getExtension (baseName);
Glib::ustring nfname = Glib::build_filename (dirName, nBaseName);
if (!::g_rename (ofname.c_str(), nfname.c_str())) {
if (!safe_g_rename (ofname, nfname)) {
cacheMgr->renameEntry (ofname, tbe[i]->thumbnail->getMD5(), nfname);
reparseDirectory ();
}
@@ -583,7 +583,7 @@ void FileCatalog::renameRequested (std::vector<FileBrowserEntry*> tbe) {
nBaseName += "." + (lastdot!=Glib::ustring::npos ? baseName.substr (lastdot+1) : "");
}
Glib::ustring nfname = Glib::build_filename (dirName, nBaseName);
if (!::g_rename (ofname.c_str(), nfname.c_str())) {
if (!safe_g_rename (ofname, nfname)) {
cacheMgr->renameEntry (ofname, tbe[i]->thumbnail->getMD5(), nfname);
// the remaining part (removing old and adding new entry) is done by the directory monitor
reparseDirectory ();
@@ -734,7 +734,7 @@ int FileCatalog::reparseDirectory () {
if (selectedDirectory=="")
return 0;
if (!Glib::file_test (selectedDirectory, Glib::FILE_TEST_IS_DIR)) {
if (!safe_file_test (selectedDirectory, Glib::FILE_TEST_IS_DIR)) {
closeDir ();
return 0;
}
@@ -745,7 +745,7 @@ int FileCatalog::reparseDirectory () {
const std::vector<ThumbBrowserEntryBase*>& t = fileBrowser->getEntries ();
std::vector<Glib::ustring> fileNamesToDel;
for (size_t i=0; i<t.size(); i++)
if (!Glib::file_test (t[i]->filename, Glib::FILE_TEST_EXISTS))
if (!safe_file_test (t[i]->filename, Glib::FILE_TEST_EXISTS))
fileNamesToDel.push_back (t[i]->filename);
for (size_t i=0; i<fileNamesToDel.size(); i++) {
delete fileBrowser->delEntry (fileNamesToDel[i]);