OSDN Git Service

Update OpenSSL to 1.0.2d.
[ffftp/ffftp.git] / mbswrapper.c
index fa04fee..0651173 100644 (file)
@@ -578,6 +578,48 @@ int PutNextCharW(LPWSTR lpString, LPWSTR pLimit, LPWSTR* ppNext, DWORD Code)
        return Count;\r
 }\r
 \r
+// マルチバイト文字列のコードポイントの個数を取得\r
+int GetCodeCountM(LPCSTR lpString, int CharCount)\r
+{\r
+       int Count;\r
+       LPCSTR pLimit;\r
+       DWORD Code;\r
+       Count = 0;\r
+       if(CharCount == -1)\r
+               pLimit = lpString + strlen(lpString);\r
+       else\r
+               pLimit = lpString + CharCount;\r
+       while(lpString < pLimit)\r
+       {\r
+               Code = GetNextCharM(lpString, pLimit, &lpString);\r
+               if(Code == 0x80000000)\r
+                       continue;\r
+               Count++;\r
+       }\r
+       return Count;\r
+}\r
+\r
+// ワイド文字列のコードポイントの個数を取得\r
+int GetCodeCountW(LPCWSTR lpString, int CharCount)\r
+{\r
+       int Count;\r
+       LPCWSTR pLimit;\r
+       DWORD Code;\r
+       Count = 0;\r
+       if(CharCount == -1)\r
+               pLimit = lpString + wcslen(lpString);\r
+       else\r
+               pLimit = lpString + CharCount;\r
+       while(lpString < pLimit)\r
+       {\r
+               Code = GetNextCharW(lpString, pLimit, &lpString);\r
+               if(Code == 0x80000000)\r
+                       continue;\r
+               Count++;\r
+       }\r
+       return Count;\r
+}\r
+\r
 // マルチバイト文字列の冗長表現を修正\r
 // 修正があればTRUEを返す\r
 // 修正後の文字列の長さは元の文字列の長さ以下のためpDstとpSrcに同じ値を指定可能\r
@@ -1241,7 +1283,7 @@ START_ROUTINE
                                wLVFindInfo.lParam = pmLVFindInfo->lParam;\r
                                wLVFindInfo.pt = pmLVFindInfo->pt;\r
                                wLVFindInfo.vkDirection = pmLVFindInfo->vkDirection;\r
-                               r = SendMessageW(hWnd, LVM_FINDITEMW, wParam, (LPARAM)&wLVItem);\r
+                               r = SendMessageW(hWnd, LVM_FINDITEMW, wParam, (LPARAM)&wLVFindInfo);\r
                                break;\r
                        case LVM_GETCOLUMNA:\r
                                pmLVColumn = (LVCOLUMNA*)lParam;\r
@@ -2396,6 +2438,30 @@ END_ROUTINE
        return r;\r
 }\r
 \r
+BOOL CreateDirectoryM(LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes)\r
+{\r
+       BOOL r = FALSE;\r
+       wchar_t* pw0 = NULL;\r
+START_ROUTINE\r
+       pw0 = DuplicateMtoW(lpPathName, -1);\r
+       r = CreateDirectoryW(pw0, lpSecurityAttributes);\r
+END_ROUTINE\r
+       FreeDuplicatedString(pw0);\r
+       return r;\r
+}\r
+\r
+BOOL RemoveDirectoryM(LPCSTR lpPathName)\r
+{\r
+       BOOL r = FALSE;\r
+       wchar_t* pw0 = NULL;\r
+START_ROUTINE\r
+       pw0 = DuplicateMtoW(lpPathName, -1);\r
+       r = RemoveDirectoryW(pw0);\r
+END_ROUTINE\r
+       FreeDuplicatedString(pw0);\r
+       return r;\r
+}\r
+\r
 int mkdirM(const char * _Path)\r
 {\r
        int r = -1;\r