summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/string_util.cpp16
-rw-r--r--src/common/string_util.h5
-rw-r--r--src/core/loader/loader.cpp14
3 files changed, 17 insertions, 18 deletions
diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp
index c1f22bda3..c489c868b 100644
--- a/src/common/string_util.cpp
+++ b/src/common/string_util.cpp
@@ -18,19 +18,15 @@
18#endif 18#endif
19 19
20/// Make a string lowercase 20/// Make a string lowercase
21void LowerStr(char* str) { 21std::string LowerStr(std::string str) {
22 for (int i = 0; str[i]; i++) { 22 std::transform(str.begin(), str.end(), str.begin(), ::tolower);
23 str[i] = tolower(str[ i ]); 23 return str;
24 }
25} 24}
26 25
27/// Make a string uppercase 26/// Make a string uppercase
28void UpperStr(char* str) { 27std::string UpperStr(std::string str) {
29 for (int i=0; i < strlen(str); i++) { 28 std::transform(str.begin(), str.end(), str.begin(), ::toupper);
30 if(str[i] >= 'a' && str[i] <= 'z') { 29 return str;
31 str[i] &= 0xDF;
32 }
33 }
34} 30}
35 31
36// faster than sscanf 32// faster than sscanf
diff --git a/src/common/string_util.h b/src/common/string_util.h
index ba4cd363e..b1118816e 100644
--- a/src/common/string_util.h
+++ b/src/common/string_util.h
@@ -13,10 +13,11 @@
13#include "common/common.h" 13#include "common/common.h"
14 14
15/// Make a string lowercase 15/// Make a string lowercase
16void LowerStr(char* str); 16
17std::string LowerStr(std::string str);
17 18
18/// Make a string uppercase 19/// Make a string uppercase
19void UpperStr(char* str); 20std::string UpperStr(std::string str);
20 21
21std::string StringFromFormat(const char* format, ...); 22std::string StringFromFormat(const char* format, ...);
22// Cheap! 23// Cheap!
diff --git a/src/core/loader/loader.cpp b/src/core/loader/loader.cpp
index 365f5a277..ce1154b79 100644
--- a/src/core/loader/loader.cpp
+++ b/src/core/loader/loader.cpp
@@ -26,21 +26,23 @@ FileType IdentifyFile(const std::string &filename) {
26 ERROR_LOG(LOADER, "invalid filename %s", filename.c_str()); 26 ERROR_LOG(LOADER, "invalid filename %s", filename.c_str());
27 return FileType::Error; 27 return FileType::Error;
28 } 28 }
29 std::string extension = filename.size() >= 5 ? filename.substr(filename.size() - 4) : "";
30 29
31 if (!strcasecmp(extension.c_str(), ".elf")) { 30 size_t extension_loc = filename.find_last_of('.');
31 std::string extension = extension_loc != std::string::npos ? filename.substr(extension_loc) : "";
32
33 if (LowerStr(extension) == ".elf") {
32 return FileType::ELF; // TODO(bunnei): Do some filetype checking :p 34 return FileType::ELF; // TODO(bunnei): Do some filetype checking :p
33 } 35 }
34 else if (!strcasecmp(extension.c_str(), ".axf")) { 36 else if (LowerStr(extension) == ".axf") {
35 return FileType::ELF; // TODO(bunnei): Do some filetype checking :p 37 return FileType::ELF; // TODO(bunnei): Do some filetype checking :p
36 } 38 }
37 else if (!strcasecmp(extension.c_str(), ".cxi")) { 39 else if (LowerStr(extension) == ".cxi") {
38 return FileType::CXI; // TODO(bunnei): Do some filetype checking :p 40 return FileType::CXI; // TODO(bunnei): Do some filetype checking :p
39 } 41 }
40 else if (!strcasecmp(extension.c_str(), ".cci")) { 42 else if (LowerStr(extension) == ".cci") {
41 return FileType::CCI; // TODO(bunnei): Do some filetype checking :p 43 return FileType::CCI; // TODO(bunnei): Do some filetype checking :p
42 } 44 }
43 else if (!strcasecmp(extension.c_str(), ".bin")) { 45 else if (LowerStr(extension) == ".bin") {
44 return FileType::BIN; // TODO(bunnei): Do some filetype checking :p 46 return FileType::BIN; // TODO(bunnei): Do some filetype checking :p
45 } 47 }
46 return FileType::Unknown; 48 return FileType::Unknown;