Case insensitive string compare inside installers

git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@954 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
twanvl
2008-06-02 21:25:53 +00:00
parent 9b3f6411f3
commit e2246546b0
3 changed files with 17 additions and 1 deletions
+1 -1
View File
@@ -348,7 +348,7 @@ bool PackageDirectory::actual_install(const InstallablePackage& package, const S
const Packaged::FileInfos& file_infos = installer.getFileInfos();
for (Packaged::FileInfos::const_iterator it = file_infos.begin() ; it != file_infos.end() ; ++it) {
String file = it->first;
if (!is_substr(file,0,name)) continue; // not the right package
if (!is_substr_i(file,0,name)) continue; // not the right package
// correct filename
String local_file = install_dir + file.substr(name.length());
create_parent_dirs(local_file);
+11
View File
@@ -370,6 +370,17 @@ bool is_substr(const String& str, size_t pos, const String& cmp) {
return is_substr(str, pos, cmp.c_str());
}
bool is_substr_i(const String& str, size_t pos, const Char* cmp) {
for (String::const_iterator it = str.begin() + pos ; *cmp && it < str.end() ; ++cmp, ++it) {
if (toLower(*cmp) != toLower(*it)) return false;
}
return *cmp == _('\0');
}
bool is_substr_i(const String& str, size_t pos, const String& cmp) {
return is_substr_i(str, pos, cmp.c_str());
}
bool cannocial_name_compare(const String& as, const Char* b) {
const Char* a = as.c_str();
while (true) {
+5
View File
@@ -178,6 +178,11 @@ bool is_substr(const String& str, size_t pos, const Char* cmp);
/// Return whether str contains the string cmp at position pos
bool is_substr(const String& str, size_t pos, const String& cmp);
/// Return whether str contains the string cmp at position pos, case insensitive compare
bool is_substr_i(const String& str, size_t pos, const Char* cmp);
/// Return whether str contains the string cmp at position pos, case insensitive compare
bool is_substr_i(const String& str, size_t pos, const String& cmp);
/// Compare two strings for equality, b may contain '_' where a contains ' '
bool cannocial_name_compare(const String& a, const Char* b);