* Copyright 2009, 2010 James Nobis <frt@quelrod.net>\r
* Copyright 2010 Yngve AAdlandsvik\r
*\r
- * This file is part of racrcki_mt.\r
+ * This file is part of rcracki_mt.\r
*\r
* rcracki_mt is free software: you can redistribute it and/or modify\r
* it under the terms of the GNU General Public License as published by\r
return true;\r
}\r
if(sName.substr(0, 6) == "hybrid") // Hybrid charset consisting of 2 charsets\r
- {\r
m_nHybridCharset = 1; \r
- }\r
else\r
- {\r
m_nHybridCharset = 0;\r
- }\r
\r
bool readCharset = false;\r
vector<string> vLine;\r
- if (ReadLinesFromFile("charset.txt", vLine)) {\r
+\r
+ if ( ReadLinesFromFile("charset.txt", vLine) )\r
readCharset = true;\r
- }\r
- else if (ReadLinesFromFile(GetApplicationPath() + "charset.txt", vLine)) {\r
+ else if ( ReadLinesFromFile(GetApplicationPath() + "charset.txt", vLine) )\r
readCharset = true;\r
- }\r
+\r
if (readCharset)\r
{\r
UINT4 i;\r
// something like lm_alpha#1-7_0_100x16_test.rt\r
\r
#ifdef _WIN32\r
- int nIndex = sPathName.find_last_of('\\');\r
+ string::size_type nIndex = sPathName.find_last_of('\\');\r
#else\r
- int nIndex = (int) sPathName.find_last_of('/');\r
+ string::size_type nIndex = sPathName.find_last_of('/');\r
#endif\r
- if (nIndex != -1)\r
+ if (nIndex != string::npos)\r
sPathName = sPathName.substr(nIndex + 1);\r
\r
if (sPathName.size() < 3)\r
}\r
else\r
{\r
- if (sCharsetDefinition.find('#') == (unsigned long)-1) // For backward compatibility, "#1-7" is implied\r
+ if ( sCharsetDefinition.find('#') == string::npos ) // For backward compatibility, "#1-7" is implied\r
{ \r
sCharsetName = sCharsetDefinition;\r
nPlainLenMin = 1;\r
m_nPlainLen = m_nPlainLenMinTotal;\r
uint64 nIndexOfX = m_nIndex - m_nPlainSpaceUpToX[m_nPlainLen - 1];\r
\r
-// this is the generic code for non x86/x86-64 platforms\r
-#if !defined(_M_X64) && !defined(_M_X86) && !defined(__i386__) && !defined(__x86_64__)\r
+// this is the generic code for non x86/x86_64 platforms\r
+#if !defined(_M_X64) && !defined(_M_IX86) && !defined(__i386__) && !defined(__x86_64__)\r
\r
- // Slow/generic version\r
+ // generic version (slow for non 64-bit platforms and gcc < 4.5.x)\r
for (i = m_nPlainLen - 1; i >= 0; i--)\r
{\r
int nCharsetLen = 0;\r
}\r
}\r
}\r
-#else\r
\r
+#elif defined(_M_X64) || defined(_M_IX86) || defined(__i386__) || defined(__x86_64__)\r
\r
// Fast ia32 version\r
for (i = m_nPlainLen - 1; i >= 0; i--)\r
{\r
// 0x100000000 = 2^32\r
-#if defined(_M_X64) || defined(_M_X86)\r
+#ifdef _M_IX86\r
if (nIndexOfX < 0x100000000I64)\r
break;\r
#else\r
}\r
}\r
\r
- unsigned int nIndexOfX32 = (unsigned int)nIndexOfX;\r
+ UINT4 nIndexOfX32 = (UINT4)nIndexOfX;\r
for (; i >= 0; i--)\r
{\r
int nCharsetLen = 0;\r
\r
#if defined(_WIN32) && !defined(__GNUC__)\r
\r
+ // VC++ still needs this\r
+ unsigned int nPlainCharsetLen = m_vCharset[j].m_nPlainCharsetLen;\r
+\r
__asm\r
{\r
mov eax, nIndexOfX32\r
xor edx, edx\r
- div m_vCharset[j].m_nPlainCharsetLen\r
+ div nPlainCharsetLen\r
mov nIndexOfX32, eax\r
mov nTemp, edx\r
}\r