OSDN Git Service

Change to encode reply messages with Kanji code of filenames.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Thu, 10 Nov 2011 10:48:20 +0000 (19:48 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Thu, 10 Nov 2011 10:48:20 +0000 (19:48 +0900)
Change URL strings.
Fix bugs of UTF-8 to UTF-16 API bridge.
Fix bugs of opening wrong files when they contain no extensions.

18 files changed:
FFFTP.vc90.vcproj
FFFTP.vcproj
FFFTP_Eng_Release/FFFTP.exe
FFFTP_English.vc90.vcproj
FFFTP_English.vcproj
Release/FFFTP.exe
common.h
local.c
main.c
mbswrapper.c
mbswrapper.h
mesg-eng.h
mesg-eng.old.h
mesg-jpn.h
mesg-jpn.old.h
registry.c
remote.c
updatebell.c

index 7f15584..ee88d31 100644 (file)
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;sfc.dll;shell32.dll;ole32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;ole32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
                                ProgramDatabaseFile=".\Release\FFFTP.pdb"\r
                                SubSystem="2"\r
                                RandomizedBaseAddress="1"\r
index eb93458..37a7451 100644 (file)
@@ -76,7 +76,7 @@
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;sfc.dll;shell32.dll;ole32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;ole32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\Debug\FFFTP.pdb"\r
                                SubSystem="2"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;sfc.dll;shell32.dll;ole32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;ole32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
                                ProgramDatabaseFile=".\Release\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
index 947983e..b2d470d 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index 03ed55d..986d873 100644 (file)
@@ -78,7 +78,7 @@
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;sfc.dll;shell32.dll;ole32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;ole32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Debug\FFFTP.pdb"\r
                                SubSystem="2"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;sfc.dll;shell32.dll;ole32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;ole32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Release\FFFTP.pdb"\r
                                SubSystem="2"\r
                                RandomizedBaseAddress="1"\r
index 5919e3a..c0ed41b 100644 (file)
@@ -77,7 +77,7 @@
                                LinkIncremental="2"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;sfc.dll;shell32.dll;ole32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;ole32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
                                GenerateDebugInformation="true"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Debug\FFFTP.pdb"\r
                                SubSystem="2"\r
                                LinkIncremental="1"\r
                                SuppressStartupBanner="true"\r
                                GenerateManifest="false"\r
-                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;sfc.dll;shell32.dll;ole32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
+                               DelayLoadDLLs="advapi32.dll;comctl32.dll;crypt32.dll;comdlg32.dll;gdi32.dll;ole32.dll;sfc.dll;shell32.dll;user32.dll;winmm.dll;wintrust.dll;wsock32.dll"\r
                                ProgramDatabaseFile=".\FFFTP_Eng_Release\FFFTP.pdb"\r
                                SubSystem="2"\r
                        />\r
index b7f916a..16eddc6 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 4e7c758..c078703 100644 (file)
--- a/common.h
+++ b/common.h
@@ -75,7 +75,9 @@
 #define PROGRAM_VERSION_NUM            1990            /* バージョン */\r
 \r
 \r
-#define MYWEB_URL      "http://www2.biglobe.ne.jp/~sota/ffftp-qa.html"\r
+// SourceForge.JPによるフォーク\r
+//#define MYWEB_URL    "http://www2.biglobe.ne.jp/~sota/ffftp-qa.html"\r
+#define MYWEB_URL      "http://sourceforge.jp/projects/ffftp/"\r
 \r
 \r
 \r
diff --git a/local.c b/local.c
index 3988c6d..dfc0435 100644 (file)
--- a/local.c
+++ b/local.c
@@ -181,13 +181,20 @@ void DoLocalRENAME(char *Src, char *Dst)
 void DispFileProperty(char *Fname)\r
 {\r
        SHELLEXECUTEINFO sInfo;\r
+       // 異なるファイルが表示されるバグ修正\r
+       // 詳細は不明だが末尾に半角スペースを置くと拡張子の補完がされなくなる\r
+       char Fname2[FMAX_PATH+1];\r
 \r
        memset(&sInfo, NUL, sizeof(SHELLEXECUTEINFO));\r
        sInfo.cbSize = sizeof(SHELLEXECUTEINFO);\r
        sInfo.fMask = SEE_MASK_INVOKEIDLIST;\r
        sInfo.hwnd = NULL;              //GetMainHwnd();\r
        sInfo.lpVerb = "Properties";\r
-       sInfo.lpFile = Fname;\r
+       // 異なるファイルが表示されるバグ修正\r
+//     sInfo.lpFile = Fname;\r
+       strcpy(Fname2, Fname);\r
+       strcat(Fname2, " ");\r
+       sInfo.lpFile = Fname2;\r
        sInfo.lpParameters = NULL;\r
        sInfo.lpDirectory = NULL;\r
        sInfo.nShow = SW_NORMAL;\r
diff --git a/main.c b/main.c
index bcde07a..25b623a 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1230,7 +1230,9 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                        break;\r
 \r
                                case MENU_HELP_TROUBLE :\r
-                                       ShellExecute(NULL, "open", MYWEB_URL, NULL, ".", SW_SHOW);\r
+                                       // 任意のコードが実行されるバグ修正\r
+//                                     ShellExecute(NULL, "open", MYWEB_URL, NULL, ".", SW_SHOW);\r
+                                       ShellExecute(NULL, "open", MYWEB_URL, NULL, NULL, SW_SHOW);\r
                                        break;\r
 \r
                                case MENU_BMARK_ADD :\r
@@ -2473,7 +2475,10 @@ void ExecViewer(char *Fname, int App)
 \r
        AskLocalCurDir(CurDir, FMAX_PATH);\r
 \r
-       if((App == -1) && (FindExecutable(Fname, NULL, AssocProg) > (HINSTANCE)32))\r
+       // 任意のコードが実行されるバグ修正\r
+       // 拡張子が無いと補完されるため\r
+//     if((App == -1) && (FindExecutable(Fname, NULL, AssocProg) > (HINSTANCE)32))\r
+       if((App == -1) && strrchr(Fname, '.') > strrchr(Fname, '\\') && (FindExecutable(Fname, NULL, AssocProg) > (HINSTANCE)32))\r
        {\r
                DoPrintf("ShellExecute - %s", Fname);\r
                ShellExecute(NULL, "open", Fname, NULL, CurDir, SW_SHOW);\r
index 242837c..28c9a2c 100644 (file)
@@ -1718,6 +1718,51 @@ END_ROUTINE
        return r;\r
 }\r
 \r
+BOOL ShellExecuteExM(LPSHELLEXECUTEINFOA lpExecInfo)\r
+{\r
+       BOOL r = FALSE;\r
+       wchar_t* pw0 = NULL;\r
+       wchar_t* pw1 = NULL;\r
+       wchar_t* pw2 = NULL;\r
+       wchar_t* pw3 = NULL;\r
+       wchar_t* pw4 = NULL;\r
+       SHELLEXECUTEINFOW wExecInfo;\r
+START_ROUTINE\r
+       wExecInfo.cbSize = sizeof(SHELLEXECUTEINFOW);\r
+       wExecInfo.fMask = lpExecInfo->fMask;\r
+       wExecInfo.hwnd = lpExecInfo->hwnd;\r
+       pw0 = DuplicateMtoW(lpExecInfo->lpVerb, -1);\r
+       wExecInfo.lpVerb = pw0;\r
+       pw1 = DuplicateMtoW(lpExecInfo->lpFile, -1);\r
+       wExecInfo.lpFile = pw1;\r
+       pw2 = DuplicateMtoW(lpExecInfo->lpParameters, -1);\r
+       wExecInfo.lpParameters = pw2;\r
+       pw3 = DuplicateMtoW(lpExecInfo->lpDirectory, -1);\r
+       wExecInfo.lpDirectory = pw3;\r
+       wExecInfo.nShow = lpExecInfo->nShow;\r
+       wExecInfo.hInstApp = lpExecInfo->hInstApp;\r
+       wExecInfo.lpIDList = lpExecInfo->lpIDList;\r
+       if(lpExecInfo->fMask & SEE_MASK_CLASSNAME)\r
+       {\r
+               pw4 = DuplicateMtoW(lpExecInfo->lpClass, -1);\r
+               wExecInfo.lpClass = pw4;\r
+       }\r
+       wExecInfo.hkeyClass = lpExecInfo->hkeyClass;\r
+       wExecInfo.dwHotKey = lpExecInfo->dwHotKey;\r
+       wExecInfo.hIcon = lpExecInfo->hIcon;\r
+       wExecInfo.hProcess = lpExecInfo->hProcess;\r
+       r = ShellExecuteExW(&wExecInfo);\r
+       lpExecInfo->hInstApp = wExecInfo.hInstApp;\r
+       lpExecInfo->hProcess = wExecInfo.hProcess;\r
+END_ROUTINE\r
+       FreeDuplicatedString(pw0);\r
+       FreeDuplicatedString(pw1);\r
+       FreeDuplicatedString(pw2);\r
+       FreeDuplicatedString(pw3);\r
+       FreeDuplicatedString(pw4);\r
+       return r;\r
+}\r
+\r
 PIDLIST_ABSOLUTE SHBrowseForFolderM(LPBROWSEINFOA lpbi)\r
 {\r
        PIDLIST_ABSOLUTE r = NULL;\r
index 6e5e6ce..08a0f00 100644 (file)
@@ -125,6 +125,9 @@ HINSTANCE FindExecutableM(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult);
 #undef ShellExecute\r
 #define ShellExecute ShellExecuteM\r
 HINSTANCE ShellExecuteM(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd);\r
+#undef ShellExecuteEx\r
+#define ShellExecuteEx ShellExecuteExM\r
+BOOL ShellExecuteExM(LPSHELLEXECUTEINFOA lpExecInfo);\r
 #undef SHBrowseForFolder\r
 #define SHBrowseForFolder SHBrowseForFolderM\r
 PIDLIST_ABSOLUTE SHBrowseForFolderM(LPBROWSEINFOA lpbi);\r
index 24eacb5..0d91977 100644 (file)
 #define MSGJPN281              "Can't connect with PASV mode"\r
 #define MSGJPN282              "INI filename is not specified"\r
 #define MSGJPN283              "INI file : "\r
-#define MSGJPN284              "http://www2.biglobe.ne.jp/~sota/"\r
+#define MSGJPN284              "http://sourceforge.jp/projects/ffftp/"\r
 #define MSGJPN285              "Failed to execute Registory Editor."\r
 #define MSGJPN286              "Save Settings"\r
 #define MSGJPN287              "Reg file\0*.reg\0All file\0*\0"\r
index 86bbb4f..599963f 100644 (file)
 #define MSGJPN281              "Can't connect with PASV mode"\r
 #define MSGJPN282              "INI filename is not specified"\r
 #define MSGJPN283              "INI file : "\r
-#define MSGJPN284              "http://www2.biglobe.ne.jp/~sota/"\r
+#define MSGJPN284              "http://sourceforge.jp/projects/ffftp/"\r
 #define MSGJPN285              "Failed to execute Registory Editor."\r
 #define MSGJPN286              "Save Settings"\r
 #define MSGJPN287              "Reg file\0*.reg\0All file\0*\0"\r
index 6e0bef2..a6e6624 100644 (file)
 #define MSGJPN281              "PASV\xE3\x83\xA2\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xA7\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93"\r
 #define MSGJPN282              "INI\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D\xE3\x81\x8C\xE6\x8C\x87\xE5\xAE\x9A\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93"\r
 #define MSGJPN283              "INI\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE6\x8C\x87\xE5\xAE\x9A\xEF\xBC\x9A"\r
-#define MSGJPN284              "http://www2.biglobe.ne.jp/~sota/"\r
+#define MSGJPN284              "http://sourceforge.jp/projects/ffftp/"\r
 #define MSGJPN285              "\xE3\x83\xAC\xE3\x82\xB8\xE3\x82\xB9\xE3\x83\x88\xE3\x83\xAA\xE3\x82\xA8\xE3\x83\x87\xE3\x82\xA3\xE3\x82\xBF\xE3\x81\x8C\xE8\xB5\xB7\xE5\x8B\x95\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F"\r
 #define MSGJPN286              "\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAE\xE4\xBF\x9D\xE5\xAD\x98"\r
 #define MSGJPN287              "Reg\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*.reg\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*\0"\r
index c73e228..6c06669 100644 (file)
 #define MSGJPN281              "PASV\83\82\81[\83h\82Å\90Ú\91±\82Å\82«\82Ü\82¹\82ñ"\r
 #define MSGJPN282              "INI\83t\83@\83C\83\8b\96¼\82ª\8ew\92è\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ"\r
 #define MSGJPN283              "INI\83t\83@\83C\83\8b\8ew\92è\81F"\r
-#define MSGJPN284              "http://www2.biglobe.ne.jp/~sota/"\r
+#define MSGJPN284              "http://sourceforge.jp/projects/ffftp/"\r
 #define MSGJPN285              "\83\8c\83W\83X\83g\83\8a\83G\83f\83B\83^\82ª\8bN\93®\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½"\r
 #define MSGJPN286              "\90Ý\92è\83t\83@\83C\83\8b\82Ì\95Û\91¶"\r
 #define MSGJPN287              "Reg\83t\83@\83C\83\8b\0*.reg\0\91S\82Ä\82Ì\83t\83@\83C\83\8b\0*\0"\r
index 1bb3b8b..7226885 100644 (file)
@@ -1104,7 +1104,7 @@ void SaveSettingsToFile(void)
                                {\r
                                        if(SetCurrentDirectory(SysDir))\r
                                        {\r
-                                               if(ShellExecute(NULL, "open", "regedit", Tmp, ".", SW_SHOW) <= (HINSTANCE)32)\r
+                                               if(ShellExecute(NULL, "open", "regedit", Tmp, NULL, SW_SHOW) <= (HINSTANCE)32)\r
                                                {\r
                                                        MessageBox(NULL, MSGJPN285, "FFFTP", MB_OK);\r
                                                }\r
@@ -1168,7 +1168,7 @@ int LoadSettingsFromFile(void)
                                {\r
                                        if(SetCurrentDirectory(SysDir))\r
                                        {\r
-                                               if(ShellExecute(NULL, "open", "regedit", Tmp, ".", SW_SHOW) <= (HINSTANCE)32)\r
+                                               if(ShellExecute(NULL, "open", "regedit", Tmp, NULL, SW_SHOW) <= (HINSTANCE)32)\r
                                                {\r
                                                        MessageBox(NULL, MSGJPN285, "FFFTP", MB_OK);\r
                                                }\r
index 0613fcb..b2fffd6 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -239,12 +239,8 @@ static int DoPWD(char *Buf)
                if(strlen(Tmp) < FMAX_PATH)\r
                {\r
                        strcpy(Buf, Tmp);\r
-                       // 0x5Cが含まれる文字列を扱えないバグ修正\r
-//                     ReplaceAll(Buf, '\\', '/');\r
-                       ChangeSepaRemote2Local(Buf);\r
-                       ChangeFnameRemote2Local(Buf, FMAX_PATH);\r
-                       // 0x5Cが含まれる文字列を扱えないバグ修正\r
                        ReplaceAll(Buf, '\\', '/');\r
+                       ChangeSepaRemote2Local(Buf);\r
                }\r
                else\r
                        Sts = FTP_ERROR*100;\r
@@ -905,6 +901,8 @@ int ReadReplyMessage(SOCKET cSkt, char *Buf, int Max, int *CancelCheckWork, char
                        iContinue = NO;\r
                        iRetCode = ReadOneLine(cSkt, Tmp, ONELINE_BUF_SIZE, CancelCheckWork);\r
 \r
+                       // 文字化け対策\r
+                       ChangeFnameRemote2Local(Tmp, ONELINE_BUF_SIZE);\r
                        SetTaskMsg("%s", Tmp);\r
 \r
                        if(Buf != NULL)\r
index c300b77..2507303 100644 (file)
 \r
 \r
 \r
+// SourceForge.JPによるフォーク\r
+//#define MAIL_ADDRESS "sota@mwa.biglobe.ne.jp"\r
+//#define SOFTWARE             "FFFTP"\r
+//#define MYNAME                       "曽田"\r
+//#define MYURL                        "http://www2.biglobe.ne.jp/~sota/"\r
+//#define INFOFILE             "http://www2.biglobe.ne.jp/~sota/product/update.inf"\r
+// TODO: 更新の通知用のINFファイルのURL(SourceForge.JPに作成可能かどうか不明)\r
 #define MAIL_ADDRESS   "sota@mwa.biglobe.ne.jp"\r
 #define SOFTWARE               "FFFTP"\r
-#define MYNAME                 "曽田"\r
-#define MYURL                  "http://www2.biglobe.ne.jp/~sota/"\r
+#define MYNAME                 "FFFTP Project"\r
+#define MYURL                  "http://sourceforge.jp/projects/ffftp/"\r
 #define INFOFILE               "http://www2.biglobe.ne.jp/~sota/product/update.inf"\r
 \r
 \r