set HTMLHELP=..\htmlhelp\FFFTP.CHM\r
set BIN_JPN=..\Release\FFFTP.exe\r
set BIN_ENG=..\FFFTP_Eng_Release\FFFTP.exe\r
+set PORTABLE_FILE=portable\r
\r
set DIR_JPN_DOC=..\doc\jpn\r
set DIR_ENG_DOC=..\doc\eng\r
copy /Y %DIR_JPN%\*.* %DIR_JPN_INST%\r
copy /Y %DIR_ENG%\*.* %DIR_ENG_INST%\r
\r
+REM; copy a portable indicator file\r
+copy /Y %PORTABLE_FILE% %DIR_JPN%\r
+copy /Y %PORTABLE_FILE% %DIR_ENG%\r
+\r
pause\r
PUSHBUTTON "\92\86\8e~(&S)",UPDOWNAS_STOP,101,66,50,14\r
END\r
\r
+ini_from_reg_dlg DIALOG 0, 0, 211, 64\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION\r
+CAPTION "\83\8c\83W\83X\83g\83\8a\82Ì\90Ý\92è\82Ì\83C\83\93\83|\81[\83g"\r
+FONT 9, "MS Shell Dlg"\r
+BEGIN\r
+ LTEXT "INI\83t\83@\83C\83\8b\82ð\8eg\97p\82·\82é\82æ\82¤\82É\90Ý\92è\82³\82ê\82Ä\82¢\82Ü\82·\82ª\81AINI\83t\83@\83C\83\8b\82Å\82Í\82È\82\83\8c\83W\83X\83g\83\8a\82É\90Ý\92è\82ª\91¶\8dÝ\82·\82é\82±\82Æ\82ð\8c\9f\8fo\82µ\82Ü\82µ\82½\81B\r\n\83\8c\83W\83X\83g\83\8a\82Ì\90Ý\92è\82ð\83C\83\93\83|\81[\83g\82µ\82Ü\82·\82©\81B",-1,7,7,196,36\r
+ DEFPUSHBUTTON "\82Í\82¢",IDOK,48,42,50,14\r
+ PUSHBUTTON "\82¢\82¢\82¦",IDCANCEL,112,42,50,14\r
+END\r
+\r
\r
/////////////////////////////////////////////////////////////////////////////\r
//\r
forcepasschange_dlg, DIALOG\r
BEGIN\r
LEFTMARGIN, 7\r
- RIGHTMARGIN, 139\r
+ RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 43\r
+ BOTTOMMARGIN, 57\r
END\r
\r
opt_trmode2_dlg, DIALOG\r
updatesslroot_dlg, DIALOG\r
BEGIN\r
LEFTMARGIN, 7\r
- RIGHTMARGIN, 139\r
+ RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 43\r
+ BOTTOMMARGIN, 57\r
END\r
\r
updown_as_with_ext_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 180\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 87\r
+ BOTTOMMARGIN, 82\r
+ END\r
+\r
+ ini_from_reg_dlg, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 204\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 57\r
END\r
END\r
#endif // APSTUDIO_INVOKED\r
#define savecrypt_dlg 191\r
#define updatesslroot_dlg 192\r
#define updown_as_with_ext_dlg 193\r
+#define ini_from_reg_dlg 194\r
#define TRANS_TIME_BAR 1002\r
#define TRANS_TEXT 1003\r
#define TRANS_REMOTE 1003\r
// \r
#ifdef APSTUDIO_INVOKED\r
#ifndef APSTUDIO_READONLY_SYMBOLS\r
-#define _APS_NEXT_RESOURCE_VALUE 193\r
+#define _APS_NEXT_RESOURCE_VALUE 195\r
#define _APS_NEXT_COMMAND_VALUE 40177\r
#define _APS_NEXT_CONTROL_VALUE 1213\r
#define _APS_NEXT_SYMED_VALUE 101\r
PUSHBUTTON "Cancel",UPDOWNAS_STOP,101,66,50,14\r
END\r
\r
+ini_from_reg_dlg DIALOG 0, 0, 211, 64\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION\r
+CAPTION "Import settings from registry"\r
+FONT 9, "MS Shell Dlg"\r
+BEGIN\r
+ LTEXT "The INI file that will be used was not found, but settings are detected in the registry.\r\nImport settings from the registry to the INI file?",-1,7,7,196,36\r
+ DEFPUSHBUTTON "Yes",IDOK,48,42,50,14\r
+ PUSHBUTTON "No",IDCANCEL,112,42,50,14\r
+END\r
+\r
\r
/////////////////////////////////////////////////////////////////////////////\r
//\r
forcepasschange_dlg, DIALOG\r
BEGIN\r
LEFTMARGIN, 7\r
- RIGHTMARGIN, 139\r
+ RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 43\r
+ BOTTOMMARGIN, 57\r
END\r
\r
opt_trmode2_dlg, DIALOG\r
updatesslroot_dlg, DIALOG\r
BEGIN\r
LEFTMARGIN, 7\r
- RIGHTMARGIN, 139\r
+ RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 43\r
+ BOTTOMMARGIN, 57\r
END\r
\r
updown_as_with_ext_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 180\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 87\r
+ BOTTOMMARGIN, 82\r
+ END\r
+\r
+ ini_from_reg_dlg, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 204\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 57\r
END\r
END\r
#endif // APSTUDIO_INVOKED\r
#define savecrypt_dlg 191\r
#define updatesslroot_dlg 192\r
#define updown_as_with_ext_dlg 193\r
+#define ini_from_reg_dlg 194\r
#define TRANS_TIME_BAR 1002\r
#define TRANS_TEXT 1003\r
#define TRANS_REMOTE 1003\r
// \r
#ifdef APSTUDIO_INVOKED\r
#ifndef APSTUDIO_READONLY_SYMBOLS\r
-#define _APS_NEXT_RESOURCE_VALUE 193\r
+#define _APS_NEXT_RESOURCE_VALUE 195\r
#define _APS_NEXT_COMMAND_VALUE 40177\r
#define _APS_NEXT_CONTROL_VALUE 1213\r
#define _APS_NEXT_SYMED_VALUE 101\r
BOOL IsMainThread();\r
// ファイルアイコン表示対応\r
int AskDispFileIcon(void);\r
+// ポータブル版判定\r
+void CheckPortableVersion();\r
+int AskPortableVersion(void);\r
\r
/*===== filelist.c =====*/\r
\r
void SaveRegistry(void);\r
int LoadRegistry(void);\r
void ClearRegistry(void);\r
+// ポータブル版判定\r
+void ClearIni(void);\r
void SetMasterPassword( const char* );\r
int GetMasterPasswordStatus(void);\r
int ValidateMasterPassword(void);\r
DWORD LoadHideDriveListRegistry(void);\r
void SaveSettingsToFile(void);\r
int LoadSettingsFromFile(void);\r
+// ポータブル版判定\r
+int IsRegAvailable();\r
+int IsIniAvailable();\r
\r
/*===== lvtips.c =====*/\r
\r
Name resolution and connection will be performed at same time on IPv4 and\r
IPv6, and whichever finished earlier will be used.\r
\r
+-- Disabled saving settings in the registry about ZIP version copies.\r
+ To save in the registry, please remove "portable" the file.\r
+\r
+-- Fix bugs of corruption of the extensions columns.\r
+\r
+-- Added support for some MLSD responses that do not conform to RFC 3659.\r
+\r
\r
Outline\r
-------\r
Name resolution and connection will be performed at same time on IPv4 and\r
IPv6, and whichever finished earlier will be used.\r
\r
+-- Disabled saving settings in the registry about ZIP version copies.\r
+ To save in the registry, please remove "portable" the file.\r
+\r
+-- Fix bugs of corruption of the extensions columns.\r
+\r
+-- Added support for some MLSD responses that do not conform to RFC 3659.\r
+\r
Changes in Ver.1.98d\r
--------------------\r
\r
\81@\81i\88È\91O\82Ì\90Ý\92è\82ª\91¶\8dÝ\82µ\81A\93¯\8e\9e\90Ú\91±\90\94\82ª1\82æ\82è\91å\82«\82¢\8fê\8d\87\82Í\82»\82Ì\90Ý\92è\82ª\93K\97p\r
\81@\82³\82ê\82Ü\82·\81j\81B\r
\r
-\81E\83A\83b\83v\83\8d\81[\83h\8e\9e\82É\83z\83X\83g\82ª\96¼\91O\82ð\95t\82¯\82½\8fê\8d\87\82É\82·\82Å\82É\91¶\8dÝ\82·\82é\83t\83@\83C\83\8b\82Ì\r
+\81E\83A\83b\83v\83\8d\81[\83h\8e\9e\82É\83z\83X\83g\82ª\96¼\91O\82ð\95t\82¯\82½\8fê\8d\87\82É\8c³\82Ì\83t\83@\83C\83\8b\96¼\82Ì\83t\83@\83C\83\8b\82Ì\r
\81@\91®\90«\82ª\95Ï\8dX\82³\82ê\82é\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
\r
\81E\8fI\97¹\8e\9e\82É\83t\83\8a\81[\83Y\82·\82é\82±\82Æ\82ª\82 \82é\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
\81@IPv4\82ÆIPv6\82Ì\97¼\95û\82Å\96¼\91O\89ð\8c\88\82Æ\90Ú\91±\82ð\93¯\8e\9e\82É\8ds\82¢\81A\90æ\82É\90Ú\91±\82ª\8a®\97¹\82µ\82½\95û\82ð\r
\81@\8eg\97p\82µ\82Ü\82·\81B\r
\r
+\81EZIP\94Å\82Å\82Í\83\8c\83W\83X\83g\83\8a\82É\90Ý\92è\82ð\88ê\90Ø\95Û\91¶\82µ\82È\82¢\82æ\82¤\82É\95Ï\8dX\82µ\82Ü\82µ\82½\81B\r
+\81@\83\8c\83W\83X\83g\83\8a\82ð\8eg\97p\82·\82é\82É\82Í\83t\83@\83C\83\8b"portable"\82ð\8dí\8f\9c\82µ\82Ä\82\82¾\82³\82¢\81B\r
+\r
+\81E\83t\83@\83C\83\8b\88ê\97\97\82Ì\8eí\97Þ\82Ì\97ñ\82ª\90³\82µ\82\95\\8e¦\82³\82ê\82È\82¢\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
+\r
+\81E\88ê\95\94\82ÌRFC 3659\82É\8f\80\8b\92\82µ\82È\82¢MLSD\83R\83}\83\93\83h\82Ì\89\9e\93\9a\82É\91Î\89\9e\82µ\82Ü\82µ\82½\81B\r
+\r
\r
Ver 1.96d\88È\91O\82Ö\96ß\82·\8fê\8d\87\r
-----------------------\r
\81@IPv4\82ÆIPv6\82Ì\97¼\95û\82Å\96¼\91O\89ð\8c\88\82Æ\90Ú\91±\82ð\93¯\8e\9e\82É\8ds\82¢\81A\90æ\82É\90Ú\91±\82ª\8a®\97¹\82µ\82½\95û\82ð\r
\81@\8eg\97p\82µ\82Ü\82·\81B\r
\r
+\81EZIP\94Å\82Å\82Í\83\8c\83W\83X\83g\83\8a\82É\90Ý\92è\82ð\88ê\90Ø\95Û\91¶\82µ\82È\82¢\82æ\82¤\82É\95Ï\8dX\82µ\82Ü\82µ\82½\81B\r
+\81@\83\8c\83W\83X\83g\83\8a\82ð\8eg\97p\82·\82é\82É\82Í\83t\83@\83C\83\8b"portable"\82ð\8dí\8f\9c\82µ\82Ä\82\82¾\82³\82¢\81B\r
+\r
+\81E\83t\83@\83C\83\8b\88ê\97\97\82Ì\8eí\97Þ\82Ì\97ñ\82ª\90³\82µ\82\95\\8e¦\82³\82ê\82È\82¢\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
+\r
+\81E\88ê\95\94\82ÌRFC 3659\82É\8f\80\8b\92\82µ\82È\82¢MLSD\83R\83}\83\93\83h\82Ì\89\9e\93\9a\82É\91Î\89\9e\82µ\82Ü\82µ\82½\81B\r
+\r
\81¡Ver 1.98d\r
\r
\81EMLSD\83R\83}\83\93\83h\82É\91Î\89\9e\82µ\82½\83z\83X\83g\82Å\82ÍMLSD\83R\83}\83\93\83h\82ð\97p\82¢\82Ä\83t\83@\83C\83\8b\88ê\97\97\82ð\r
\r
if((Sort & SORT_GET_ORD) == SORT_ASCENT)\r
{\r
- if((((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
- ((Cmp = _mbsicmp(GetFileExt(Name), GetFileExt(Pos->File))) < 0)) ||\r
+ // 読みにくいのでリファクタリング\r
+// if((((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
+// ((Cmp = _mbsicmp(GetFileExt(Name), GetFileExt(Pos->File))) < 0)) ||\r
+//#if defined(HAVE_TANDEM)\r
+// ((AskHostType() == HTYPE_TANDEM) &&\r
+// ((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
+// ((Cmp = Attr - Pos->Attr) < 0)) ||\r
+//#endif\r
+// (((Sort & SORT_MASK_ORD) == SORT_SIZE) &&\r
+// ((Cmp = Size - Pos->Size) < 0)) ||\r
+// (((Sort & SORT_MASK_ORD) == SORT_DATE) &&\r
+// ((Cmp = CompareFileTime(Time, &Pos->Time)) < 0)))\r
+// {\r
+// break;\r
+// }\r
+ if(((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
+ ((Cmp = _mbsicmp(GetFileExt(Name), GetFileExt(Pos->File))) < 0))\r
+ break;\r
#if defined(HAVE_TANDEM)\r
- ((AskHostType() == HTYPE_TANDEM) &&\r
- ((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
- ((Cmp = Attr - Pos->Attr) < 0)) ||\r
+ if((AskHostType() == HTYPE_TANDEM) &&\r
+ ((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
+ ((Cmp = Attr - Pos->Attr) < 0))\r
+ break;\r
#endif\r
- (((Sort & SORT_MASK_ORD) == SORT_SIZE) &&\r
- ((Cmp = Size - Pos->Size) < 0)) ||\r
- (((Sort & SORT_MASK_ORD) == SORT_DATE) &&\r
- ((Cmp = CompareFileTime(Time, &Pos->Time)) < 0)))\r
- {\r
+ if(((Sort & SORT_MASK_ORD) == SORT_SIZE) &&\r
+ ((Cmp = Size - Pos->Size) < 0))\r
+ break;\r
+ if(((Sort & SORT_MASK_ORD) == SORT_DATE) &&\r
+ ((Cmp = CompareFileTime(Time, &Pos->Time)) < 0))\r
break;\r
- }\r
\r
if(((Sort & SORT_MASK_ORD) == SORT_NAME) || (Cmp == 0))\r
{\r
void DirectDownloadProc(char *Fname)\r
{\r
TRANSPACKET Pkt;\r
+ // ディレクトリ自動作成\r
+ char Tmp[FMAX_PATH+1];\r
\r
// 同時接続対応\r
CancelFlg = NO;\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
\r
+ // ディレクトリ自動作成\r
+ strcpy(Tmp, Pkt.LocalFile);\r
Pkt.Mode = CheckLocalFile(&Pkt); /* Pkt.ExistSize がセットされる */\r
if((Pkt.Mode != EXIST_ABORT) && (Pkt.Mode != EXIST_IGNORE))\r
+ // ディレクトリ自動作成\r
+// AddTransFileList(&Pkt);\r
+ {\r
+ if(MakeAllDir == YES)\r
+ MakeDirFromLocalPath(Pkt.LocalFile, Tmp);\r
AddTransFileList(&Pkt);\r
+ }\r
}\r
}\r
\r
static char SSLRootCAFilePath[FMAX_PATH+1];\r
// マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
static DWORD MainThreadId;\r
+// ポータブル版判定\r
+static char PortableFilePath[FMAX_PATH+1];\r
+int PortableVersion;\r
\r
\r
/*===== グローバルなワーク =====*/\r
char PwdBuf[FMAX_PATH+1];\r
int useDefautPassword = 0; /* 警告文表示用 */\r
int masterpass;\r
+ // ポータブル版判定\r
+ int ImportPortable;\r
\r
sts = FFFTP_FAIL;\r
\r
ForceIni = YES;\r
RegType = REGTYPE_INI;\r
}\r
+ // ポータブル版判定\r
+ GetModuleFileName(NULL, PortableFilePath, FMAX_PATH);\r
+ strcpy(GetFileName(PortableFilePath), "portable");\r
+ CheckPortableVersion();\r
+ ImportPortable = NO;\r
+ if(PortableVersion == YES)\r
+ {\r
+ ForceIni = YES;\r
+ RegType = REGTYPE_INI;\r
+ if(IsRegAvailable() == YES && IsIniAvailable() == NO)\r
+ {\r
+ if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(ini_from_reg_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)\r
+ {\r
+ ImportPortable = YES;\r
+ ForceIni = NO;\r
+ RegType = REGTYPE_REG;\r
+ }\r
+ }\r
+ }\r
\r
// AllocConsole();\r
\r
{\r
LoadRegistry();\r
\r
+ // ポータブル版判定\r
+ if(ImportPortable == YES)\r
+ {\r
+ ForceIni = YES;\r
+ RegType = REGTYPE_INI;\r
+ }\r
+\r
// 暗号化通信対応\r
SetSSLTimeoutCallback(TimeOut * 1000, SSLTimeoutCallback);\r
SetSSLConfirmCallback(SSLConfirmCallback);\r
if(DialogBox(hInstFtp, MAKEINTRESOURCE(reginit_dlg), hWnd, ExeEscDialogProc) == YES)\r
{\r
ClearRegistry();\r
+ // ポータブル版判定\r
+ ClearIni();\r
SaveExit = NO;\r
PostMessage(hWnd, WM_CLOSE, 0, 0L);\r
}\r
{\r
GetListTabWidth();\r
SaveRegistry();\r
+ // ポータブル版判定\r
+ if(RegType == REGTYPE_REG)\r
+ ClearIni();\r
\r
if((CacheEntry > 0) && (CacheSave == YES))\r
SaveCache();\r
for(i = 0; i < 5; i++)\r
Hash[i] = _byteswap_ulong(Hash[i]);\r
// 同梱する"ssl.pem"に合わせてSHA1ハッシュ値を変更すること\r
- if(memcmp(&Hash, &SSLRootCAFileHash, 20) == 0 || memcmp(&Hash, "\xF0\x1B\x48\x26\x67\x44\x3A\xFF\x0A\x16\xD3\xBB\x8A\x33\xEB\x70\x6D\x75\xA6\x0D", 20) == 0\r
+ if(memcmp(&Hash, &SSLRootCAFileHash, 20) == 0 || memcmp(&Hash, "\x63\xAC\x6C\x43\xCE\xD6\x5B\xCF\x33\xB9\x45\x70\xC3\x9B\x8C\x91\x19\x0D\xEF\xE6", 20) == 0\r
|| DialogBox(GetFtpInst(), MAKEINTRESOURCE(updatesslroot_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)\r
{\r
memcpy(&SSLRootCAFileHash, &Hash, 20);\r
return(DispFileIcon);\r
}\r
\r
+// ポータブル版判定\r
+void CheckPortableVersion()\r
+{\r
+ HANDLE hFile;\r
+ if((hFile = CreateFile(PortableFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)\r
+ {\r
+ PortableVersion = YES;\r
+ CloseHandle(hFile);\r
+ }\r
+ else\r
+ PortableVersion = NO;\r
+}\r
+\r
+int AskPortableVersion(void)\r
+{\r
+ return(PortableVersion);\r
+}\r
+\r
}\r
else\r
i = -1;\r
- lpString++;\r
- while((*lpString & 0xc0) == 0x80)\r
+ if(*lpString != 0x00)\r
{\r
- i--;\r
- Code = Code << 6;\r
- Code |= (DWORD)*lpString & 0x3f;\r
lpString++;\r
+ while((*lpString & 0xc0) == 0x80)\r
+ {\r
+ i--;\r
+ Code = Code << 6;\r
+ Code |= (DWORD)*lpString & 0x3f;\r
+ lpString++;\r
+ }\r
}\r
+ else\r
+ lpString++;\r
if(i != 0)\r
Code = 0x80000000;\r
if(ppNext)\r
return r;\r
}\r
\r
+BOOL DeleteFileM(LPCSTR lpFileName)\r
+{\r
+ BOOL r = FALSE;\r
+ wchar_t* pw0 = NULL;\r
+START_ROUTINE\r
+ pw0 = DuplicateMtoW(lpFileName, -1);\r
+ r = DeleteFileW(pw0);\r
+END_ROUTINE\r
+ FreeDuplicatedString(pw0);\r
+ return r;\r
+}\r
+\r
int mkdirM(const char * _Path)\r
{\r
int r = -1;\r
#undef MoveFile\r
#define MoveFile MoveFileM\r
BOOL MoveFileM(LPCSTR lpExistingFileName, LPCSTR lpNewFileName);\r
+#undef DeleteFile\r
+#define DeleteFile DeleteFileM\r
+BOOL DeleteFileM(LPCSTR lpFileName);\r
#undef mkdir\r
#define mkdir _mkdirM\r
int mkdirM(const char * _Path);\r
SendDlgItemMessage(hDlg, MISC_WINPOS, BM_SETCHECK, SaveWinPos, 0);\r
SendDlgItemMessage(hDlg, MISC_DEBUG, BM_SETCHECK, DebugConsole, 0);\r
SendDlgItemMessage(hDlg, MISC_REGTYPE, BM_SETCHECK, RegType, 0);\r
+ // ポータブル版判定\r
+ if(AskForceIni() == YES)\r
+ EnableWindow(GetDlgItem(hDlg, MISC_REGTYPE), FALSE);\r
\r
SendDlgItemMessage(hDlg, MISC_CACHE_SAVE, BM_SETCHECK, CacheSave, 0);\r
SendDlgItemMessage(hDlg, MISC_BUFNUM, EM_LIMITTEXT, (WPARAM)2, 0);\r
case PSN_APPLY :\r
SaveWinPos = SendDlgItemMessage(hDlg, MISC_WINPOS, BM_GETCHECK, 0, 0);\r
DebugConsole = SendDlgItemMessage(hDlg, MISC_DEBUG, BM_GETCHECK, 0, 0);\r
- RegType = SendDlgItemMessage(hDlg, MISC_REGTYPE, BM_GETCHECK, 0, 0);\r
+ // ポータブル版判定\r
+// RegType = SendDlgItemMessage(hDlg, MISC_REGTYPE, BM_GETCHECK, 0, 0);\r
+ if(AskForceIni() == NO)\r
+ RegType = SendDlgItemMessage(hDlg, MISC_REGTYPE, BM_GETCHECK, 0, 0);\r
\r
CacheSave = SendDlgItemMessage(hDlg, MISC_CACHE_SAVE, BM_GETCHECK, 0, 0);\r
CacheEntry = GetDecimalText(hDlg, MISC_BUFNUM);\r
}\r
\r
\r
+// ポータブル版判定\r
+void ClearIni(void)\r
+{\r
+// FILE *Strm;\r
+// if((Strm = fopen(AskIniFilePath(), "rt")) != NULL)\r
+// {\r
+// fclose(Strm);\r
+// MoveFileToTrashCan(AskIniFilePath());\r
+// }\r
+ DeleteFile(AskIniFilePath());\r
+ return;\r
+}\r
+\r
+\r
/*----- 設定をファイルに保存 --------------------------------------------------\r
*\r
* Parameter\r
{\r
REGDATATBL *Pos;\r
REGDATATBL *Next;\r
- FILE *Strm;\r
+ // ポータブル版判定\r
+// FILE *Strm;\r
\r
if(TmpRegType == REGTYPE_REG)\r
{\r
RegCloseKey(Handle);\r
\r
/* INIファイルを削除 */\r
- if((Strm = fopen(AskIniFilePath(), "rt")) != NULL)\r
- {\r
- fclose(Strm);\r
- MoveFileToTrashCan(AskIniFilePath());\r
- }\r
+ // ポータブル版判定\r
+// if((Strm = fopen(AskIniFilePath(), "rt")) != NULL)\r
+// {\r
+// fclose(Strm);\r
+// MoveFileToTrashCan(AskIniFilePath());\r
+// }\r
}\r
else\r
{\r
}\r
return rndValue;\r
}\r
+\r
+// ポータブル版判定\r
+int IsRegAvailable()\r
+{\r
+ int Sts;\r
+ void* h;\r
+ Sts = NO;\r
+ SetRegType(REGTYPE_REG);\r
+ if(OpenReg("FFFTP", &h) == FFFTP_SUCCESS)\r
+ {\r
+ CloseReg(h);\r
+ Sts = YES;\r
+ }\r
+ return Sts;\r
+}\r
+\r
+int IsIniAvailable()\r
+{\r
+ int Sts;\r
+ void* h;\r
+ Sts = NO;\r
+ SetRegType(REGTYPE_INI);\r
+ if(OpenReg("FFFTP", &h) == FFFTP_SUCCESS)\r
+ {\r
+ CloseReg(h);\r
+ Sts = YES;\r
+ }\r
+ return Sts;\r
+}\r
+\r