return Version;\r
}\r
\r
+// FileZilla XML形式エクスポート対応\r
+void SaveSettingsToFileZillaXml()\r
+{\r
+ char Fname[FMAX_PATH+1];\r
+ FILE* f;\r
+ TIME_ZONE_INFORMATION tzi;\r
+ int Level;\r
+ int i;\r
+ HOSTDATA Host;\r
+ char Tmp[FMAX_PATH+1];\r
+ char* p1;\r
+ char* p2;\r
+ strcpy(Fname, "FileZilla.xml");\r
+ if(SelectFile(GetMainHwnd(), Fname, MSGJPN286, MSGJPN357, "xml", OFN_EXTENSIONDIFFERENT | OFN_OVERWRITEPROMPT, 1) == TRUE)\r
+ {\r
+ if((f = fopen(Fname, "wt")) != NULL)\r
+ {\r
+ fputs("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>\n", f);\r
+ fputs("<FileZilla3>\n", f);\r
+ fputs("<Servers>\n", f);\r
+ GetTimeZoneInformation(&tzi);\r
+ Level = 0;\r
+ i = 0;\r
+ while(CopyHostFromList(i, &Host) == FFFTP_SUCCESS)\r
+ {\r
+ while((Host.Level & SET_LEVEL_MASK) < Level)\r
+ {\r
+ fputs("</Folder>\n", f);\r
+ Level--;\r
+ }\r
+ if(Host.Level & SET_LEVEL_GROUP)\r
+ {\r
+ fputs("<Folder expanded=\"1\">\n", f);\r
+ fprintf(f, "%s
\n", Host.HostName);\r
+ Level++;\r
+ }\r
+ else\r
+ {\r
+ fputs("<Server>\n", f);\r
+ fprintf(f, "<Host>%s</Host>\n", Host.HostAdrs);\r
+ fprintf(f, "<Port>%d</Port>\n", Host.Port);\r
+ if(Host.UseNoEncryption == YES)\r
+ fprintf(f, "<Protocol>%s</Protocol>\n", "0");\r
+ else if(Host.UseFTPES == YES)\r
+ fprintf(f, "<Protocol>%s</Protocol>\n", "4");\r
+ else if(Host.UseFTPIS == YES)\r
+ fprintf(f, "<Protocol>%s</Protocol>\n", "3");\r
+ else\r
+ fprintf(f, "<Protocol>%s</Protocol>\n", "0");\r
+ fprintf(f, "<Type>%s</Type>\n", "0");\r
+ fprintf(f, "<User>%s</User>\n", Host.UserName);\r
+ fprintf(f, "<Pass>%s</Pass>\n", Host.PassWord);\r
+ fprintf(f, "<Account>%s</Account>\n", Host.Account);\r
+ if(Host.Anonymous == YES || strlen(Host.UserName) == 0)\r
+ fprintf(f, "<Logontype>%s</Logontype>\n", "0");\r
+ else\r
+ fprintf(f, "<Logontype>%s</Logontype>\n", "1");\r
+ fprintf(f, "<TimezoneOffset>%d</TimezoneOffset>\n", tzi.Bias + Host.TimeZone * 60);\r
+ if(Host.Pasv == YES)\r
+ fprintf(f, "<PasvMode>%s</PasvMode>\n", "MODE_PASSIVE");\r
+ else\r
+ fprintf(f, "<PasvMode>%s</PasvMode>\n", "MODE_ACTIVE");\r
+ fprintf(f, "<MaximumMultipleConnections>%d</MaximumMultipleConnections>\n", Host.MaxThreadCount);\r
+ switch(Host.NameKanjiCode)\r
+ {\r
+ case KANJI_SJIS:\r
+ fprintf(f, "<EncodingType>%s</EncodingType>\n", "Custom");\r
+ fprintf(f, "<CustomEncoding>%s</CustomEncoding>\n", "Shift_JIS");\r
+ break;\r
+ case KANJI_JIS:\r
+ // 非対応\r
+ fprintf(f, "<EncodingType>%s</EncodingType>\n", "Auto");\r
+ break;\r
+ case KANJI_EUC:\r
+ fprintf(f, "<EncodingType>%s</EncodingType>\n", "Custom");\r
+ fprintf(f, "<CustomEncoding>%s</CustomEncoding>\n", "EUC-JP");\r
+ break;\r
+ case KANJI_SMB_HEX:\r
+ // 非対応\r
+ fprintf(f, "<EncodingType>%s</EncodingType>\n", "Auto");\r
+ break;\r
+ case KANJI_SMB_CAP:\r
+ // 非対応\r
+ fprintf(f, "<EncodingType>%s</EncodingType>\n", "Auto");\r
+ break;\r
+ case KANJI_UTF8N:\r
+ fprintf(f, "<EncodingType>%s</EncodingType>\n", "UTF-8");\r
+ break;\r
+ case KANJI_UTF8HFSX:\r
+ // 非対応\r
+ fprintf(f, "<EncodingType>%s</EncodingType>\n", "Auto");\r
+ break;\r
+ default:\r
+ fprintf(f, "<EncodingType>%s</EncodingType>\n", "Auto");\r
+ break;\r
+ }\r
+ if(Host.FireWall == YES)\r
+ fprintf(f, "<BypassProxy>%s</BypassProxy>\n", "0");\r
+ else\r
+ fprintf(f, "<BypassProxy>%s</BypassProxy>\n", "1");\r
+ fprintf(f, "<Name>%s</Name>\n", Host.HostName);\r
+ fprintf(f, "<LocalDir>%s</LocalDir>\n", Host.LocalInitDir);\r
+ if(strchr(Host.RemoteInitDir, '\\') != NULL)\r
+ {\r
+ fputs("<RemoteDir>", f);\r
+ fputs("8 0", f);\r
+ strcpy(Tmp, Host.RemoteInitDir);\r
+ p1 = Tmp;\r
+ while(*p1 != '\0')\r
+ {\r
+ while(*p1 == '\\')\r
+ {\r
+ p1++;\r
+ }\r
+ if((p2 = strchr(p1, '\\')) != NULL)\r
+ {\r
+ *p2 = '\0';\r
+ p2++;\r
+ }\r
+ else\r
+ p2 = strchr(p1, '\0');\r
+ if(*p1 != '\0')\r
+ fprintf(f, " %d %s", _mbslen(p1), p1);\r
+ p1 = p2;\r
+ }\r
+ fputs("</RemoteDir>\n", f);\r
+ }\r
+ else if(strchr(Host.RemoteInitDir, '/') != NULL)\r
+ {\r
+ fputs("<RemoteDir>", f);\r
+ fputs("1 0", f);\r
+ strcpy(Tmp, Host.RemoteInitDir);\r
+ p1 = Tmp;\r
+ while(*p1 != '\0')\r
+ {\r
+ while(*p1 == '/')\r
+ {\r
+ p1++;\r
+ }\r
+ if((p2 = strchr(p1, '/')) != NULL)\r
+ {\r
+ *p2 = '\0';\r
+ p2++;\r
+ }\r
+ else\r
+ p2 = strchr(p1, '\0');\r
+ if(*p1 != '\0')\r
+ fprintf(f, " %d %s", _mbslen(p1), p1);\r
+ p1 = p2;\r
+ }\r
+ fputs("</RemoteDir>\n", f);\r
+ }\r
+ else\r
+ fprintf(f, "<RemoteDir>%s</RemoteDir>\n", Host.RemoteInitDir);\r
+ if(Host.SyncMove == YES)\r
+ fprintf(f, "<SyncBrowsing>%s</SyncBrowsing>\n", "1");\r
+ else\r
+ fprintf(f, "<SyncBrowsing>%s</SyncBrowsing>\n", "0");\r
+ fprintf(f, "%s
\n", Host.HostName);\r
+ fputs("</Server>\n", f);\r
+ }\r
+ i++;\r
+ }\r
+ while(Level > 0)\r
+ {\r
+ fputs("</Folder>\n", f);\r
+ Level--;\r
+ }\r
+ fputs("</Servers>\n", f);\r
+ // TODO: 環境設定\r
+// fputs("<Settings>\n", f);\r
+// fputs("</Settings>\n", f);\r
+ fputs("</FileZilla3>\n", f);\r
+ fclose(f);\r
+ }\r
+ else\r
+ MessageBox(NULL, MSGJPN358, "FFFTP", MB_OK);\r
+ }\r
+}\r
+\r