static int IsRndSourceInit = 0;\r
static ulong RndSource[9];\r
\r
+// UTF-8対応\r
+static int IniKanjiCode = KANJI_NOCNV;\r
+\r
/*===== 外部参照 =====*/\r
\r
/* 設定値 */\r
Sts = YES;\r
\r
ReadIntValueFromReg(hKey3, "Version", &Version);\r
+ // UTF-8対応\r
+ if(Version < 1980)\r
+ IniKanjiCode = KANJI_SJIS;\r
\r
if(OpenSubKey(hKey3, "Options", &hKey4) == FFFTP_SUCCESS)\r
{\r
{\r
int Sts;\r
char *Pos;\r
+ // UTF-8対応\r
+ char* pa0;\r
+ wchar_t* pw0;\r
+ DWORD TempSize;\r
\r
Sts = FFFTP_FAIL;\r
if(TmpRegType == REGTYPE_REG)\r
{\r
if((Pos = ScanValue(Handle, Name)) != NULL)\r
{\r
- Size = min1(Size-1, strlen(Pos));\r
- Size = StrReadIn(Pos, Size, Str);\r
- *(Str + Size) = NUL;\r
- Sts = FFFTP_SUCCESS;\r
+ // UTF-8対応\r
+// Size = min1(Size-1, strlen(Pos));\r
+// Size = StrReadIn(Pos, Size, Str);\r
+// *(Str + Size) = NUL;\r
+// Sts = FFFTP_SUCCESS;\r
+ switch(IniKanjiCode)\r
+ {\r
+ case KANJI_SJIS:\r
+ if(pa0 = AllocateStringA(Size * 4))\r
+ {\r
+ if(pw0 = AllocateStringW(Size * 4 * 4))\r
+ {\r
+ TempSize = min1((Size * 4) - 1, strlen(Pos));\r
+ TempSize = StrReadIn(Pos, TempSize, pa0);\r
+ *(pa0 + TempSize) = NUL;\r
+ AtoW(pw0, Size * 4 * 4, pa0, -1);\r
+ WtoM(Str, Size, pw0, -1);\r
+ TerminateStringM(Str, Size);\r
+ Sts = FFFTP_SUCCESS;\r
+ FreeDuplicatedString(pw0);\r
+ }\r
+ FreeDuplicatedString(pa0);\r
+ }\r
+ break;\r
+ case KANJI_NOCNV:\r
+ Size = min1(Size-1, strlen(Pos));\r
+ Size = StrReadIn(Pos, Size, Str);\r
+ *(Str + Size) = NUL;\r
+ Sts = FFFTP_SUCCESS;\r
+ break;\r
+ }\r
}\r
}\r
return(Sts);\r