All pastes #267152 Raw Edit

Someone

public cpp v1 · immutable
·published 2006-12-04 17:35 UTC
rendered paste body
diff -Nru linuxdcpp/client/File.h linuxdcpp-ru/client/File.h--- linuxdcpp/client/File.h	2006-10-07 20:31:39.000000000 +0400+++ linuxdcpp-ru/client/File.h	2006-11-12 19:22:47.000000000 +0300@@ -132,16 +132,16 @@ 		DWORD l = ::SetFilePointer(h, 0, &x, FILE_CURRENT);  		return (int64_t)l | ((int64_t)x)<<32;-	}		+	}  	virtual void setPos(int64_t pos) throw() { 		LONG x = (LONG) (pos>>32); 		::SetFilePointer(h, (DWORD)(pos & 0xffffffff), &x, FILE_BEGIN);-	}		+	} 	virtual void setEndPos(int64_t pos) throw() { 		LONG x = (LONG) (pos>>32); 		::SetFilePointer(h, (DWORD)(pos & 0xffffffff), &x, FILE_END);-	}		+	}  	virtual void movePos(int64_t pos) throw() { 		LONG x = (LONG) (pos>>32);@@ -178,18 +178,18 @@ 		return 0; 	} -	static void deleteFile(const string& aFileName) throw() { ::DeleteFile(Text::toT(aFileName).c_str()); }-	static void renameFile(const string& source, const string& target) throw(FileException) { -		if(!::MoveFile(Text::toT(source).c_str(), Text::toT(target).c_str())) {+	static void deleteFile(const string& aFileName) throw() { ::DeleteFile(Text::utf8ToFileName(aFileName).c_str()); }+	static void renameFile(const string& source, const string& target) throw(FileException) {+		if(!::MoveFile(Text::utf8ToFileName(source).c_str(), Text::utf8ToFileName(target).c_str())) { 			// Can't move, try copy/delete...-			if(!CopyFile(Text::toT(source).c_str(), Text::toT(target).c_str(), FALSE)) {+			if(!CopyFile(Text::utf8ToFileName(source).c_str(), Text::utf8ToFileName(target).c_str(), FALSE)) { 				throw FileException(Util::translateError(GetLastError())); 			} 			deleteFile(source); 		} 	} 	static void copyFile(const string& src, const string& target) throw(FileException) {-		if(!::CopyFile(Text::toT(src).c_str(), Text::toT(target).c_str(), FALSE)) {+		if(!::CopyFile(Text::utf8ToFileName(src).c_str(), Text::utf8ToFileName(target).c_str(), FALSE)) { 			throw FileException(Util::translateError(GetLastError())); 		} 	}@@ -198,7 +198,7 @@ 		WIN32_FIND_DATA fd; 		HANDLE hFind; -		hFind = FindFirstFile(Text::toT(aFileName).c_str(), &fd);+		hFind = FindFirstFile(Text::utf8ToFileName(aFileName).c_str(), &fd);  		if (hFind == INVALID_HANDLE_VALUE) { 			return -1;@@ -211,7 +211,7 @@ 	static void ensureDirectory(const string& aFile) { 		// Skip the first dir... 		tstring file;-		Text::toT(aFile, file);+		Text::utf8ToFileName(aFile, file); 		wstring::size_type start = file.find_first_of(L"\\/"); 		if(start == string::npos) 			return;@@ -249,9 +249,9 @@ 			m |= O_TRUNC; 		}-		h = open(aFileName.c_str(), m, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);+		h = open(Text::utf8ToFileName(aFileName).c_str(), m, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); 		if(h == -1) 			throw FileException("Could not open " + filename);-	}	+	}  	u_int32_t getLastModified() { 		struct stat s;@@ -323,6 +323,6 @@ 		pos = (int64_t) lseek(h,0,SEEK_CUR); 		eof = (int64_t) lseek(h,0,SEEK_END);-		if (eof < pos) +		if (eof < pos) 			ret = extendFile(pos); 		else 			ret = ftruncate(h,(off_t)pos);@@ -335,7 +335,7 @@ 		int64_t pos = getPos(); 		setPos(newSize); 		setEOF();-		setPos(pos);		+		setPos(pos); 	}  	virtual size_t flush() throw(Exception) {@@ -353,16 +353,16 @@        work across different mount points, even if the same filesystem is mounted on both.)     */ 	static void renameFile(const string& source, const string& target) throw() {-		int ret = ::rename(source.c_str(), target.c_str());+		int ret = ::rename(Text::utf8ToFileName(source).c_str(), Text::utf8ToFileName(target).c_str()); 		if ( ( ret != 0 ) && ( errno == EXDEV ) ) {-          copyFile(source.c_str(), target.c_str());-          deleteFile(source.c_str());+		    copyFile(Text::utf8ToFileName(source).c_str(), Text::utf8ToFileName(target).c_str());+		    deleteFile(Text::utf8ToFileName(source).c_str());         } else if (ret != 0)              throw FileException(source.c_str() + Util::translateError(errno));     }  	// This doesn't assume all bytes are written in one write call, it is a bit safer-	static void copyFile(const string& source, const string& target) throw(FileException) { +	static void copyFile(const string& source, const string& target) throw(FileException) { 		const size_t BUF_SIZE = 64 * 1024; 		AutoArray<char> buffer(BUF_SIZE); 		size_t count = BUF_SIZE;@@ -382,14 +382,14 @@  	static int64_t getSize(const string& aFileName) { 		struct stat s;-		if(stat(aFileName.c_str(), &s) == -1)+		if(stat(Text::utf8ToFileName(aFileName).c_str(), &s) == -1) 			return -1;  		return s.st_size; 	}  	static void ensureDirectory(const string& aFile) {-		string acp = Text::utf8ToAcp(aFile);+		string acp = Text::utf8ToFileName(aFile); 		string::size_type start = 0; 		while( (start = aFile.find_first_of(L'/', start)) != string::npos) { 			mkdir(aFile.substr(0, start+1).c_str(), S_IRWXU | S_IRWXG | S_IRWXO);diff -Nru linuxdcpp/client/QueueManager.cpp linuxdcpp-ru/client/QueueManager.cpp--- linuxdcpp/client/QueueManager.cpp	2006-08-17 00:11:46.000000000 +0400+++ linuxdcpp-ru/client/QueueManager.cpp	2006-11-12 19:13:36.000000000 +0300@@ -365,11 +365,11 @@ 			while (struct dirent* ent = readdir(dir)) { 				if (fnmatch("*.xml.bz2", ent->d_name, 0) == 0 || 					fnmatch("*.DcLst", ent->d_name, 0) == 0) {-					File::deleteFile(path + ent->d_name);	+					File::deleteFile(path + Text::fileNameToUtf8 (ent->d_name)); 				} 			} 			closedir(dir);-		}		+		} #endif 	} }diff -Nru linuxdcpp/client/SFVReader.cpp linuxdcpp-ru/client/SFVReader.cpp--- linuxdcpp/client/SFVReader.cpp	2006-06-15 22:30:50.000000000 +0400+++ linuxdcpp-ru/client/SFVReader.cpp	2006-11-12 19:13:36.000000000 +0300@@ -79,22 +79,22 @@ 	string fname = Util::getFileName(fileName);  	DIR* dir = opendir(path.c_str());-	if (!dir) +	if (!dir) 		return; 	while (struct dirent* ent = readdir(dir)) { 		if (fnmatch("*.sfv", ent->d_name, 0) == 0) { 			try {-				if(tryFile(path + Text::fromT(ent->d_name), fname)) {+				if(tryFile(path + Text::fileNameToUtf8(ent->d_name), fname)) { 					closedir(dir); 					return; 				} 			} catch(const FileException&) { 				// Ignore...-			}					+			} 		} 	} -	closedir(dir);	+	closedir(dir);  #endif }diff -Nru linuxdcpp/client/ShareManager.cpp linuxdcpp-ru/client/ShareManager.cpp--- linuxdcpp/client/ShareManager.cpp	2006-09-12 00:44:37.000000000 +0400+++ linuxdcpp-ru/client/ShareManager.cpp	2006-11-12 19:13:36.000000000 +0300@@ -85,11 +85,11 @@ 	if (dir) { 		while (struct dirent* ent = readdir(dir)) { 			if (fnmatch("files*.xml.bz2", ent->d_name, 0) == 0) {-					File::deleteFile(Util::getConfigPath() + ent->d_name);	+					File::deleteFile(Util::getConfigPath() + Text::fileNameToUtf8 (ent->d_name)); 				} 		} 		closedir(dir);-	}		+	} #endif  	for(Directory::MapIter j = directories.begin(); j != directories.end(); ++j) {@@ -579,25 +579,25 @@ 		dir = NULL; 		data.ent = NULL; 	}-	+ 	~FileFindIter() { 		if (dir) closedir(dir); 	}  	FileFindIter(const string& name) {-		dir = opendir(name.c_str());+		dir = opendir(Text::utf8ToFileName (name).c_str()); 		if (!dir) 			return;-		data.base = name;+		data.base = Text::utf8ToFileName (name); 		data.ent = readdir(dir); 		if (!data.ent) { 			closedir(dir); 			dir = NULL; 		} 	}-	+ 	FileFindIter& operator++() {-		if (!dir) +		if (!dir) 			return *this; 		data.ent = readdir(dir); 		if (!data.ent) {@@ -616,7 +616,7 @@ 		DirData() : ent(NULL) {} 		string getFileName() { 			if (!ent) return Util::emptyString;-			return string(ent->d_name);+			return Text::fileNameToUtf8 (ent->d_name); 		} 		bool isDirectory() { 			struct stat inode;diff -Nru linuxdcpp/client/Text.cpp linuxdcpp-ru/client/Text.cpp--- linuxdcpp/client/Text.cpp	2006-09-12 00:44:37.000000000 +0400+++ linuxdcpp-ru/client/Text.cpp	2006-11-12 19:13:36.000000000 +0300@@ -267,13 +267,10 @@ string Text::acpToUtf8(const string& str) throw() { 	std::string utf8String;-	gchar *utf8CString = g_filename_to_utf8(str.c_str(), -1, NULL, NULL, NULL);+	gchar *utf8CString = NULL;+	utf8CString = g_convert(str.c_str(), -1, "UTF-8", WGETS("default-charset").c_str(), NULL, NULL, NULL); 	if (utf8CString == NULL)-	{-		utf8CString = g_convert_with_fallback(str.c_str(), -1, "UTF-8", "ISO-8859-15", "", NULL, NULL, NULL);-		if (utf8CString == NULL)-			return utf8String;-	}+		return utf8String; 	utf8String = string(utf8CString); 	g_free(utf8CString); 	return utf8String;@@ -283,5 +283,5 @@ { 	std::string acpString;-	gchar *acpCString = g_filename_from_utf8(str.c_str(), -1, NULL, NULL, NULL);+	gchar *acpCString = g_convert(str.c_str(), -1, WGETS("default-charset").c_str(), "UTF-8", NULL, NULL, NULL); 	if (acpCString == NULL) 		return acpString;@@ -290,16 +284,44 @@ 	return acpString; } ++string Text::utf8ToFileName (const string& str) throw ()+{+	std::string acpString;+	gchar *acpCString;+        acpCString = g_filename_from_utf8(str.c_str(), -1, NULL, NULL, NULL);++	if (acpCString == NULL)+		return acpString;++	acpString = string(acpCString);+	g_free(acpCString);+	return acpString;+}+++string Text::fileNameToUtf8 (const string& str) throw ()+{+	std::string utf8String;+        gchar *utf8CString = g_filename_to_utf8(str.c_str(), -1, NULL, NULL, NULL);++	if (utf8CString == NULL)+                return utf8String;++	utf8String = string(utf8CString);+	g_free(utf8CString);+        return utf8String;+}++ string Text::toLower(const string& str) throw() {-	std::string lowerString = acpToUtf8(str);+    	std::string lowerString; 	gchar *lowerCString;-	if (!lowerString.empty())-	{-		lowerCString = g_utf8_strdown(lowerString.c_str(), -1);-		lowerString = string(lowerCString);-		g_free(lowerCString);-	}++	lowerCString = g_utf8_strdown(str.c_str(), -1);+	lowerString = string(lowerCString);+	g_free(lowerCString); 	return lowerString; } diff -Nru linuxdcpp/client/Text.h linuxdcpp-ru/client/Text.h--- linuxdcpp/client/Text.h	2006-09-12 00:44:37.000000000 +0400+++ linuxdcpp-ru/client/Text.h	2006-11-12 19:13:36.000000000 +0300@@ -52,5 +52,8 @@ 	static string utf8ToAcp(const string& str) throw(); +        static string utf8ToFileName (const string& str) throw ();+        static string fileNameToUtf8 (const string& str) throw ();+     	static wstring& utf8ToWide(const string& str, wstring& tmp) throw(); 	static wstring utf8ToWide(const string& str) throw() { 		wstring tmp;