Replace SUCCESS and FAIL macros to FFFTP_SUCCESS and FFFTP_FAIL.
-<?xml version="1.0" encoding="shift_jis"?>
+<?xml version="1.0" encoding="shift_jis"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
-<?xml version="1.0" encoding="shift_jis"?>\r
+<?xml version="1.0" encoding="shift_jis"?>\r
<VisualStudioProject\r
ProjectType="Visual C++"\r
Version="8.00"\r
-<?xml version="1.0" encoding="shift_jis"?>
+<?xml version="1.0" encoding="shift_jis"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
-<?xml version="1.0" encoding="shift_jis"?>\r
+<?xml version="1.0" encoding="shift_jis"?>\r
<VisualStudioProject\r
ProjectType="Visual C++"\r
Version="8.00"\r
-/*=============================================================================\r
-* \83\8c\83W\83X\83g\83\8a\8aÖ\8cW\r
+/*=============================================================================\r
+* レジストリ関係\r
*\r
*\r
===============================================================================\r
#include "sha.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static void SaveStr(HKEY hKey, char *Key, char *Str, char *DefaultStr);\r
static void SaveIntNum(HKEY hKey, char *Key, int Num, int DefaultNum);\r
void SetHashSalt( DWORD salt );\r
\r
\r
-/* 2010.01.30 genta \92Ç\89Á */\r
+/* 2010.01.30 genta 追加 */\r
static char SecretKey[FMAX_PATH+1];\r
static int SecretKeyLength;\r
static int IsMasterPasswordError = PASSWORD_OK;\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
extern int WinPosX;\r
extern int WinPosY;\r
extern int WinWidth;\r
extern int FolderAttr;\r
extern int FolderAttrNum;\r
\r
-/*----- \83}\83X\83^\83p\83X\83\8f\81[\83h\82Ì\90Ý\92è ----------------------------------------------\r
+/*----- マスタパスワードの設定 ----------------------------------------------\r
*\r
* Parameter\r
-* const char* Password : \83}\83X\83^\81[\83p\83X\83\8f\81[\83h\r
+* const char* Password : マスターパスワード\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
void SetMasterPassword( const char* Password )\r
{\r
}\r
SecretKeyLength = strlen( SecretKey );\r
\r
- /* \96¢\8c\9f\8fØ\82È\82Ì\82Å\81C\8f\89\8aú\8fó\91Ô\82ÍOK\82É\82·\82é (\8b\90§\8dÄ\90Ý\92è\81¨\95Û\91¶\82É\82ð\89Â\94\\82É\82·\82é)*/\r
+ /* 未検証なので,初期状態はOKにする (強制再設定→保存にを可能にする)*/\r
IsMasterPasswordError = PASSWORD_OK;\r
}\r
\r
-/*----- \83}\83X\83^\83p\83X\83\8f\81[\83h\82Ì\8fó\91Ô\8eæ\93¾ ----------------------------------------------\r
+/*----- マスタパスワードの状態取得 ----------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
* PASSWORD_OK : OK\r
-* PASSWORD_UNMATCH : \83p\83X\83\8f\81[\83h\95s\88ê\92v\r
-* BAD_PASSWORD_HASH : \83p\83X\83\8f\81[\83h\8am\94F\8e¸\94s\r
+* PASSWORD_UNMATCH : パスワード不一致\r
+* BAD_PASSWORD_HASH : パスワード確認失敗\r
*----------------------------------------------------------------------------*/\r
int GetMasterPasswordStatus(void)\r
{\r
return IsMasterPasswordError;\r
}\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a\81^INI\83t\83@\83C\83\8b\82Ì\83}\83X\83^\81[\83p\83X\83\8f\81[\83h\82Ì\8c\9f\8fØ\82ð\8ds\82¤ ------------\r
+/*----- レジストリ/INIファイルのマスターパスワードの検証を行う ------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
* \r
return NO;\r
}\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a\81^INI\83t\83@\83C\83\8b\82É\90Ý\92è\92l\82ð\95Û\91¶ ---------------------------------\r
+/*----- レジストリ/INIファイルに設定値を保存 ---------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SaveRegistory(void)\r
HISTORYDATA DefaultHist;\r
\r
if( GetMasterPasswordStatus() == PASSWORD_UNMATCH ){\r
- /* 2010.01.30 genta: \83}\83X\83^\81[\83p\83X\83\8f\81[\83h\82ª\95s\88ê\92v\82Ì\8fê\8d\87\82Í\95s\97p\88Ó\82É\8fã\8f\91\82«\82µ\82È\82¢ */\r
+ /* 2010.01.30 genta: マスターパスワードが不一致の場合は不用意に上書きしない */\r
return;\r
}\r
\r
\r
WriteIntValueToReg(hKey4, "HistNum", FileHist);\r
\r
- /* Ver1.54a\88È\91O\82Ì\8c`\8e®\82Ì\83q\83X\83g\83\8a\83f\81[\83^\82Í\8dí\8f\9c */\r
+ /* Ver1.54a以前の形式のヒストリデータは削除 */\r
DeleteValue(hKey4, "Hist");\r
\r
- /* \83q\83X\83g\83\8a\82Ì\90Ý\92è\82ð\95Û\91¶ */\r
+ /* ヒストリの設定を保存 */\r
CopyDefaultHistory(&DefaultHist);\r
n = 0;\r
for(i = AskHistoryNum(); i > 0; i--)\r
}\r
WriteIntValueToReg(hKey4, "SavedHist", n);\r
\r
- /* \97]\95ª\82È\83q\83X\83g\83\8a\82ª\82 \82Á\82½\82ç\8dí\8f\9c */\r
+ /* 余分なヒストリがあったら削除 */\r
for(; n < 999; n++)\r
{\r
sprintf(Str, "History%d", n);\r
break;\r
}\r
\r
- /* \83z\83X\83g\82Ì\90Ý\92è\82ð\95Û\91¶ */\r
+ /* ホストの設定を保存 */\r
CopyDefaultHost(&DefaultHost);\r
i = 0;\r
while(CopyHostFromList(i, &Host) == SUCCESS)\r
}\r
WriteIntValueToReg(hKey4, "SetNum", i);\r
\r
- /* \97]\95ª\82È\83z\83X\83g\82Ì\90Ý\92è\82ª\82 \82Á\82½\82ç\8dí\8f\9c */\r
+ /* 余分なホストの設定があったら削除 */\r
for(; i < 998; i++)\r
{\r
sprintf(Str, "Host%d", i);\r
return;\r
}\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a\81^INI\83t\83@\83C\83\8b\82©\82ç\90Ý\92è\92l\82ð\8cÄ\82Ñ\8fo\82· ---------------------------\r
+/*----- レジストリ/INIファイルから設定値を呼び出す ---------------------------\r
*\r
-* \82±\82Ì\8aÖ\90\94\82ð\95¡\90\94\89ñ\8cÄ\82Ñ\8fo\82·\82Æ\81C\83z\83X\83g\90Ý\92è\82ª\92Ç\89Á\82³\82ê\82é\81D\r
+* この関数を複数回呼び出すと,ホスト設定が追加される.\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* YES: \93Ç\82Ý\8fo\82µ\90¬\8c÷\r
-* NO: \93Ç\82Ý\8fo\82µ\8e¸\94s(\90Ý\92è\96³\82µ)\r
+* YES: 読み出し成功\r
+* NO: 読み出し失敗(設定無し)\r
*----------------------------------------------------------------------------*/\r
\r
int LoadRegistory(void)\r
void *hKey5;\r
int i;\r
int Sets;\r
- char Str[256]; /* ASCII_EXT_LEN\82æ\82è\91å\82«\82¢\8e\96 */\r
+ char Str[256]; /* ASCII_EXT_LENより大きい事 */\r
char *Pos;\r
char *Pos2;\r
HOSTDATA Host;\r
ReadIntValueFromReg(hKey4, "WinWidth", &WinWidth);\r
ReadIntValueFromReg(hKey4, "WinHeight", &WinHeight);\r
ReadIntValueFromReg(hKey4, "LocalWidth", &LocalWidth);\r
- /* \81«\8b\8c\83o\81[\83W\83\87\83\93\82Ì\83o\83O\91Î\8dô */\r
+ /* ↓旧バージョンのバグ対策 */\r
LocalWidth = max1(0, LocalWidth);\r
ReadIntValueFromReg(hKey4, "TaskHeight", &TaskHeight);\r
- /* \81«\8b\8c\83o\81[\83W\83\87\83\93\82Ì\83o\83O\91Î\8dô */\r
+ /* ↓旧バージョンのバグ対策 */\r
TaskHeight = max1(0, TaskHeight);\r
ReadBinaryFromReg(hKey4, "LocalColm", &LocalTabWidth, sizeof(LocalTabWidth));\r
ReadBinaryFromReg(hKey4, "RemoteColm", &RemoteTabWidth, sizeof(RemoteTabWidth));\r
\r
if(ReadMultiStringFromReg(hKey4, "AsciiFile", AsciiExt, ASCII_EXT_LEN+1) == FAIL)\r
{\r
- /* \8b\8cASCII\83\82\81[\83h\82Ì\8ag\92£\8eq\82Ì\90Ý\92è\82ð\90V\82µ\82¢\82à\82Ì\82É\95Ï\8a· */\r
+ /* 旧ASCIIモードの拡張子の設定を新しいものに変換 */\r
ReadStringFromReg(hKey4, "Ascii", Str, ASCII_EXT_LEN+1);\r
memset(AsciiExt, NUL, ASCII_EXT_LEN+1);\r
Pos = Str;\r
ReadIntValueFromReg(hKey4, "HistNum", &FileHist);\r
// ReadMultiStringFromReg(hKey4, "Hist", Hist, (FMAX_PATH+1)*HISTORY_MAX+1);\r
\r
- /* \83q\83X\83g\83\8a\82Ì\90Ý\92è\82ð\93Ç\82Ý\8d\9e\82Þ */\r
+ /* ヒストリの設定を読み込む */\r
Sets = 0;\r
ReadIntValueFromReg(hKey4, "SavedHist", &Sets);\r
\r
}\r
}\r
\r
- /* \83z\83X\83g\82Ì\90Ý\92è\82ð\93Ç\82Ý\8d\9e\82Þ */\r
+ /* ホストの設定を読み込む */\r
Sets = 0;\r
ReadIntValueFromReg(hKey4, "SetNum", &Sets);\r
\r
if(OpenSubKey(hKey4, Str, &hKey5) == SUCCESS)\r
{\r
CopyDefaultHost(&Host);\r
- /* \89º\88Ê\8cÝ\8a·\90«\82Ì\82½\82ß */\r
+ /* 下位互換性のため */\r
if(Version < VER_NUM)\r
{\r
Host.Pasv = NO;\r
}\r
else\r
{\r
- /*===== \8dÅ\8f\89\82Ì\8bN\93®\8e\9e\81i\90Ý\92è\82ª\96³\82¢) =====*/\r
+ /*===== 最初の起動時(設定が無い) =====*/\r
\r
#if 0\r
strcpy(UserMailAdrs, "");\r
}\r
\r
\r
-/*----- \89B\82µ\83h\83\89\83C\83u\8fî\95ñ\82ð\8eæ\93¾ ------------------------------------------------\r
+/*----- 隠しドライブ情報を取得 ------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
* DWORD \r
-* YES/NO=\90Ý\92è\96³\82µ\r
+* YES/NO=設定無し\r
*----------------------------------------------------------------------------*/\r
\r
DWORD LoadHideDriveListRegistory(void)\r
}\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a\82Ì\90Ý\92è\92l\82ð\83N\83\8a\83A --------------------------------------------\r
+/*----- レジストリの設定値をクリア --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ClearRegistory(void)\r
}\r
\r
\r
-/*----- \90Ý\92è\82ð\83t\83@\83C\83\8b\82É\95Û\91¶ --------------------------------------------------\r
+/*----- 設定をファイルに保存 --------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SaveSettingsToFile(void)\r
}\r
\r
\r
-/*----- \90Ý\92è\82ð\83t\83@\83C\83\8b\82©\82ç\95\9c\8c³ ------------------------------------------------\r
+/*----- 設定をファイルから復元 ------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83\8d\81[\83h\82µ\82½\82©\82Ç\82¤\82© (YES/NO)\r
+* int ロードしたかどうか (YES/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int LoadSettingsFromFile(void)\r
else\r
{\r
Ret = YES;\r
- /* \83\8c\83W\83X\83g\83\8a\83G\83f\83B\83^\82ª\8fI\97¹\82·\82é\82Ì\82ð\91Ò\82Â */\r
+ /* レジストリエディタが終了するのを待つ */\r
// WaitForSingleObject(Info.hProcess, INFINITE);\r
}\r
}\r
\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a/INI\83t\83@\83C\83\8b\82É\95¶\8e\9a\97ñ\82ð\83Z\81[\83u --------------------------------\r
+/*----- レジストリ/INIファイルに文字列をセーブ --------------------------------\r
*\r
* Parameter\r
-* HKEY hKey : \83\8c\83W\83X\83g\83\8a\83L\81[\r
-* char *Key : \83L\81[\96¼\r
-* char *Str : \83Z\81[\83u\82·\82é\95¶\8e\9a\97ñ\r
-* char *DefaultStr : \83f\83t\83H\83\8b\83g\82Ì\95¶\8e\9a\97ñ\r
+* HKEY hKey : レジストリキー\r
+* char *Key : キー名\r
+* char *Str : セーブする文字列\r
+* char *DefaultStr : デフォルトの文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \95¶\8e\9a\97ñ\82ª\83f\83t\83H\83\8b\83g\82Ì\95¶\8e\9a\97ñ\82Æ\93¯\82¶\82È\82ç\83Z\81[\83u\82µ\82È\82¢\r
+* 文字列がデフォルトの文字列と同じならセーブしない\r
*----------------------------------------------------------------------------*/\r
\r
static void SaveStr(HKEY hKey, char *Key, char *Str, char *DefaultStr)\r
}\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a/INI\83t\83@\83C\83\8b\82É\90\94\92l(INT)\82ð\83Z\81[\83u -----------------------------\r
+/*----- レジストリ/INIファイルに数値(INT)をセーブ -----------------------------\r
*\r
* Parameter\r
-* HKEY hKey : \83\8c\83W\83X\83g\83\8a\83L\81[\r
-* char *Key : \83L\81[\96¼\r
-* int Num : \83Z\81[\83u\82·\82é\92l\r
-* int DefaultNum : \83f\83t\83H\83\8b\83g\82Ì\92l\r
+* HKEY hKey : レジストリキー\r
+* char *Key : キー名\r
+* int Num : セーブする値\r
+* int DefaultNum : デフォルトの値\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \90\94\92l\82ª\83f\83t\83H\83\8b\83g\82Ì\92l\82Æ\93¯\82¶\82È\82ç\83Z\81[\83u\82µ\82È\82¢\r
+* 数値がデフォルトの値と同じならセーブしない\r
*----------------------------------------------------------------------------*/\r
\r
static void SaveIntNum(HKEY hKey, char *Key, int Num, int DefaultNum)\r
}\r
\r
\r
-/*----- LOGFONT\83f\81[\83^\82ð\95¶\8e\9a\97ñ\82É\95Ï\8a·\82·\82é ---------------------------------------\r
+/*----- LOGFONTデータを文字列に変換する ---------------------------------------\r
*\r
* Parameter\r
-* LOGFONT Font : \83t\83H\83\93\83g\83f\81[\83^\r
-* HFONT hFont : \83t\83H\83\93\83g\82Ì\83n\83\93\83h\83\8b\r
-* NULL = \83f\83t\83H\83\8b\83g\82Ì\83t\83H\83\93\83g\r
-* char *Buf : \83o\83b\83t\83@\r
+* LOGFONT Font : フォントデータ\r
+* HFONT hFont : フォントのハンドル\r
+* NULL = デフォルトのフォント\r
+* char *Buf : バッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void MakeFontData(LOGFONT Font, HFONT hFont, char *Buf)\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ðLOGFONT\83f\81[\83^\82É\95Ï\8a·\82·\82é ---------------------------------------\r
+/*----- 文字列をLOGFONTデータに変換する ---------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* LOGFONT *Font : \83t\83H\83\93\83g\83f\81[\83^\r
+* char *Str : 文字列\r
+* LOGFONT *Font : フォントデータ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL=\95Ï\8a·\82Å\82«\82È\82¢\r
+* int ステータス\r
+* SUCCESS/FAIL=変換できない\r
*----------------------------------------------------------------------------*/\r
\r
static int RestoreFontData(char *Str, LOGFONT *Font)\r
return(Sts);\r
}\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82ð\88Ã\8d\86\89»\82·\82é ------------------------------------------------\r
+/*----- パスワードを暗号化する ------------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \83p\83X\83\8f\81[\83h\r
-* char *Buf : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
+* char *Str : パスワード\r
+* char *Buf : 暗号化したパスワードを格納するバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
static void EncodePassword(char *Str, char *Buf)\r
{\r
EncodePassword2( Str, Buf, SecretKey );\r
}\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82ð\88Ã\8d\86\89»\82·\82é(\83I\83\8a\83W\83i\83\8b\83A\83\8b\83S\83\8a\83Y\83\80) ------------------\r
+/*----- パスワードを暗号化する(オリジナルアルゴリズム) ------------------\r
*\r
* Parameter\r
-* char *Str : \83p\83X\83\8f\81[\83h\r
-* char *Buf : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
+* char *Str : パスワード\r
+* char *Buf : 暗号化したパスワードを格納するバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void EncodePasswordOriginal(char *Str, char *Buf)\r
return;\r
}\r
\r
- /* \8e¯\95Ê\8eq\82ð\90æ\93ª\82É\92u\82 */\r
+ /* 識別子を先頭に置く */\r
Put[0] = '0';\r
Put[1] = 'A';\r
Put += 2;\r
return;\r
}\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82ð\88Ã\8d\86\89»\82·\82é(\83I\83\8a\83W\83i\83\8b\83A\83\8b\83S\83\8a\83Y\83\80\81OKey) ----------------\r
+/*----- パスワードを暗号化する(オリジナルアルゴリズム^Key) ----------------\r
*\r
* Parameter\r
-* char *Str : \83p\83X\83\8f\81[\83h\r
-* char *Buf : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
-* const char *Key : \88Ã\8d\86\89»\83L\81[\r
+* char *Str : パスワード\r
+* char *Buf : 暗号化したパスワードを格納するバッファ\r
+* const char *Key : 暗号化キー\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void EncodePassword2(char *Str, char *Buf, const char* Key)\r
return;\r
}\r
\r
- /* \8e¯\95Ê\8eq\82ð\90æ\93ª\82É\92u\82 */\r
+ /* 識別子を先頭に置く */\r
Put[0] = '0';\r
Put[1] = 'B';\r
Put += 2;\r
}\r
\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82Ì\88Ã\8d\86\89»\82ð\89ð\82 ----------------------------------------------\r
+/*----- パスワードの暗号化を解く ----------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\r
-* char *Buf : \83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
+* char *Str : 暗号化したパスワード\r
+* char *Buf : パスワードを格納するバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DecodePassword(char *Str, char *Buf)\r
}\r
}\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82Ì\88Ã\8d\86\89»\82ð\89ð\82(\83I\83\8a\83W\83i\83\8b\83A\83\8b\83S\83\8a\83Y\83\80) -------------------\r
+/*----- パスワードの暗号化を解く(オリジナルアルゴリズム) -------------------\r
*\r
* Parameter\r
-* char *Str : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\r
-* char *Buf : \83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
+* char *Str : 暗号化したパスワード\r
+* char *Buf : パスワードを格納するバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
static void DecodePasswordOriginal(char *Str, char *Buf)\r
{\r
return;\r
}\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82Ì\88Ã\8d\86\89»\82ð\89ð\82(\83I\83\8a\83W\83i\83\8b\83A\83\8b\83S\83\8a\83Y\83\80\81OKey) -------------------\r
+/*----- パスワードの暗号化を解く(オリジナルアルゴリズム^Key) -------------------\r
*\r
* Parameter\r
-* char *Str : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\r
-* char *Buf : \83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
-* const char *Key : \88Ã\8d\86\89»\83L\81[\r
+* char *Str : 暗号化したパスワード\r
+* char *Buf : パスワードを格納するバッファ\r
+* const char *Key : 暗号化キー\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
static void DecodePassword2(char *Str, char *Buf, const char* Key)\r
{\r
}\r
\r
\r
-/*===== \83\8c\83W\83X\83g\83\8a\82ÆINI\83t\83@\83C\83\8b\82Ì\83A\83N\83Z\83X\8f\88\97\9d ============*/\r
+/*===== レジストリとINIファイルのアクセス処理 ============*/\r
\r
\r
-/*===== INI\83t\83@\83C\83\8b\97p\82Ì\83\8c\83W\83X\83g\83\8a\83f\81[\83^ =====*/\r
+/*===== INIファイル用のレジストリデータ =====*/\r
\r
typedef struct regdatatbl {\r
- char KeyName[80+1]; /* \83L\81[\96¼ */\r
- char ValTbl[REG_SECT_MAX]; /* \92l\82Ì\83e\81[\83u\83\8b */\r
- int ValLen; /* \92l\83f\81[\83^\82Ì\83o\83C\83g\90\94 */\r
- int Mode; /* \83L\81[\82Ì\83\82\81[\83h */\r
+ char KeyName[80+1]; /* キー名 */\r
+ char ValTbl[REG_SECT_MAX]; /* 値のテーブル */\r
+ int ValLen; /* 値データのバイト数 */\r
+ int Mode; /* キーのモード */\r
struct regdatatbl *Next;\r
} REGDATATBL;\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static BOOL WriteOutRegToFile(REGDATATBL *Pos);\r
static int ReadInReg(char *Name, REGDATATBL **Handle);\r
static char *ScanValue(void *Handle, char *Name);\r
\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static int TmpRegType;\r
\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a\82Ì\83^\83C\83v\82ð\90Ý\92è\82·\82é ------------------------------------------\r
+/*----- レジストリのタイプを設定する ------------------------------------------\r
*\r
* Parameter\r
-* int Type : \83^\83C\83v (REGTYPE_xxx)\r
+* int Type : タイプ (REGTYPE_xxx)\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a/INI\83t\83@\83C\83\8b\82ð\83I\81[\83v\83\93\82·\82é\81i\93Ç\82Ý\8d\9e\82Ý\81j-----------------------\r
+/*----- レジストリ/INIファイルをオープンする(読み込み)-----------------------\r
*\r
* Parameter\r
-* char *Name : \83\8c\83W\83X\83g\83\8a\96¼\r
-* void **Handle : \83n\83\93\83h\83\8b\82ð\95Ô\82·\83\8f\81[\83N\r
+* char *Name : レジストリ名\r
+* void **Handle : ハンドルを返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a/INI\83t\83@\83C\83\8b\82ð\8dì\90¬\82·\82é\81i\8f\91\82«\8d\9e\82Ý\81j---------------------------\r
+/*----- レジストリ/INIファイルを作成する(書き込み)---------------------------\r
*\r
* Parameter\r
-* char *Name : \83\8c\83W\83X\83g\83\8a\96¼\r
-* void **Handle : \83n\83\93\83h\83\8b\82ð\95Ô\82·\83\8f\81[\83N\r
+* char *Name : レジストリ名\r
+* void **Handle : ハンドルを返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a/INI\83t\83@\83C\83\8b\82ð\83N\83\8d\81[\83Y\82·\82é ----------------------------------\r
+/*----- レジストリ/INIファイルをクローズする ----------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
+* void *Handle : ハンドル\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
{\r
RegCloseKey(Handle);\r
\r
- /* INI\83t\83@\83C\83\8b\82ð\8dí\8f\9c */\r
+ /* INIファイルを削除 */\r
if((Strm = fopen(AskIniFilePath(), "rt")) != NULL)\r
{\r
fclose(Strm);\r
{\r
if(WriteOutRegToFile(Handle) == TRUE)\r
{\r
-// /* \83\8c\83W\83X\83g\83\8a\82ð\83N\83\8a\83A */\r
+// /* レジストリをクリア */\r
// ClearRegistory();\r
}\r
}\r
- /* \83e\81[\83u\83\8b\82ð\8dí\8f\9c */\r
+ /* テーブルを削除 */\r
Pos = Handle;\r
while(Pos != NULL)\r
{\r
}\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a\8fî\95ñ\82ðINI\83t\83@\83C\83\8b\82É\8f\91\82«\8d\9e\82Þ ---------------------------------\r
+/*----- レジストリ情報をINIファイルに書き込む ---------------------------------\r
*\r
* Parameter\r
-* REGDATATBL *Pos : \83\8c\83W\83X\83g\83\8a\83f\81[\83^\r
+* REGDATATBL *Pos : レジストリデータ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static BOOL WriteOutRegToFile(REGDATATBL *Pos)\r
}\r
\r
\r
-/*----- INI\83t\83@\83C\83\8b\82©\82ç\83\8c\83W\83X\83g\83\8a\8fî\95ñ\82ð\93Ç\82Ý\8d\9e\82Þ -------------------------------\r
+/*----- INIファイルからレジストリ情報を読み込む -------------------------------\r
*\r
* Parameter\r
-* char *Name : \96¼\91O\r
-* void *Handle : \83n\83\93\83h\83\8b\r
+* char *Name : 名前\r
+* void *Handle : ハンドル\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \83T\83u\83L\81[\82ð\83I\81[\83v\83\93\82·\82é ------------------------------------------------\r
+/*----- サブキーをオープンする ------------------------------------------------\r
*\r
* Parameter\r
-* void *Parent : \90e\82Ì\83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* void **Handle : \83n\83\93\83h\83\8b\82ð\95Ô\82·\83\8f\81[\83N\r
+* void *Parent : 親のハンドル\r
+* char *Name : 名前\r
+* void **Handle : ハンドルを返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \83T\83u\83L\81[\82ð\8dì\90¬\82·\82é ----------------------------------------------------\r
+/*----- サブキーを作成する ----------------------------------------------------\r
*\r
* Parameter\r
-* void *Parent : \90e\82Ì\83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* void **Handle : \83n\83\93\83h\83\8b\82ð\95Ô\82·\83\8f\81[\83N\r
+* void *Parent : 親のハンドル\r
+* char *Name : 名前\r
+* void **Handle : ハンドルを返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \83T\83u\83L\81[\82ð\83N\83\8d\81[\83Y\82·\82é ------------------------------------------------\r
+/*----- サブキーをクローズする ------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
+* void *Handle : ハンドル\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \83T\83u\83L\81[\82ð\8dí\8f\9c\82·\82é ----------------------------------------------------\r
+/*----- サブキーを削除する ----------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \92l\82ð\8dí\8f\9c\82·\82é ----------------------------------------------------------\r
+/*----- 値を削除する ----------------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- INT\92l\82ð\93Ç\82Ý\8d\9e\82Þ -------------------------------------------------------\r
+/*----- INT値を読み込む -------------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* int *Value : INT\92l\82ð\95Ô\82·\83\8f\81[\83N\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* int *Value : INT値を返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- INT\92l\82ð\8f\91\82«\8d\9e\82Þ -------------------------------------------------------\r
+/*----- INT値を書き込む -------------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* int Value : INT\92l\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* int Value : INT値\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ð\93Ç\82Ý\8d\9e\82Þ ------------------------------------------------------\r
+/*----- 文字列を読み込む ------------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* char *Str : \95¶\8e\9a\97ñ\82ð\95Ô\82·\83\8f\81[\83N\r
-* DWORD Size : \8dÅ\91å\83T\83C\83Y\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* char *Str : 文字列を返すワーク\r
+* DWORD Size : 最大サイズ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ð\8f\91\82«\8d\9e\82Þ ------------------------------------------------------\r
+/*----- 文字列を書き込む ------------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* char *Str :\95¶\8e\9a\97ñ\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* char *Str :文字列\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \83}\83\8b\83`\95¶\8e\9a\97ñ\82ð\93Ç\82Ý\8d\9e\82Þ ------------------------------------------------\r
+/*----- マルチ文字列を読み込む ------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* char *Str : \95¶\8e\9a\97ñ\82ð\95Ô\82·\83\8f\81[\83N\r
-* DWORD Size : \8dÅ\91å\83T\83C\83Y\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* char *Str : 文字列を返すワーク\r
+* DWORD Size : 最大サイズ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \83}\83\8b\83`\95¶\8e\9a\97ñ\82ð\8f\91\82«\8d\9e\82Þ ------------------------------------------------\r
+/*----- マルチ文字列を書き込む ------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \83o\83C\83i\83\8a\82ð\93Ç\82Ý\8d\9e\82Þ-----------------------------------------------------\r
+/*----- バイナリを読み込む-----------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* void *Bin : \83o\83C\83i\83\8a\82ð\95Ô\82·\83\8f\81[\83N\r
-* DWORD Size : \8dÅ\91å\83T\83C\83Y\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* void *Bin : バイナリを返すワーク\r
+* DWORD Size : 最大サイズ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \83o\83C\83i\83\8a\82ð\8f\91\82«\8d\9e\82Þ ----------------------------------------------------\r
+/*----- バイナリを書き込む ----------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* void *Bin : \83o\83C\83i\83\8a\r
-* int Len : \92·\82³\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* void *Bin : バイナリ\r
+* int Len : 長さ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* SUCCESS/FAIL\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ð\83o\83b\83t\83@\82É\92Ç\89Á\8f\91\82«\8d\9e\82Ý\82·\82é ------------------------------------\r
+/*----- 文字列をバッファに追加書き込みする ------------------------------------\r
*\r
* Parameter\r
-* char *Src : \95¶\8e\9a\97ñ\r
-* int len : \95¶\8e\9a\97ñ\82Ì\92·\82³\r
-* char *Dst : \8f\91\82«\8d\9e\82Ý\82·\82é\83o\83b\83t\83@\r
+* char *Src : 文字列\r
+* int len : 文字列の長さ\r
+* char *Dst : 書き込みするバッファ\r
*\r
* Return Value\r
-* int \92Ç\89Á\82µ\82½\83o\83C\83g\90\94\r
+* int 追加したバイト数\r
*----------------------------------------------------------------------------*/\r
\r
static int StrCatOut(char *Src, int Len, char *Dst)\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ð\83o\83b\83t\83@\82É\93Ç\82Ý\8d\9e\82Þ --------------------------------------------\r
+/*----- 文字列をバッファに読み込む --------------------------------------------\r
*\r
* Parameter\r
-* char *Src : \95¶\8e\9a\97ñ\r
-* int Max : \8dÅ\91å\83T\83C\83Y\r
-* char *Dst : \8f\91\82«\8d\9e\82Ý\82·\82é\83o\83b\83t\83@\r
+* char *Src : 文字列\r
+* int Max : 最大サイズ\r
+* char *Dst : 書き込みするバッファ\r
*\r
* Return Value\r
-* int \93Ç\82Ý\8d\9e\82ñ\82¾\83o\83C\83g\90\94\r
+* int 読み込んだバイト数\r
*----------------------------------------------------------------------------*/\r
\r
static int StrReadIn(char *Src, int Max, char *Dst)\r
}\r
\r
\r
-/*----- \92l\82ð\8c\9f\8dõ\82·\82é ----------------------------------------------------------\r
+/*----- 値を検索する ----------------------------------------------------------\r
*\r
* Parameter\r
-* char *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
+* char *Handle : ハンドル\r
+* char *Name : 名前\r
*\r
* Return Value\r
-* char *\92l\83f\81[\83^\82Ì\90æ\93ª\r
-* NULL=\8ew\92è\82Ì\96¼\91O\82Ì\92l\82ª\8c©\82Â\82©\82ç\82È\82¢\r
+* char *値データの先頭\r
+* NULL=指定の名前の値が見つからない\r
*----------------------------------------------------------------------------*/\r
\r
static char *ScanValue(void *Handle, char *Name)\r
}\r
\r
\r
-/*----------- \83p\83X\83\8f\81[\83h\82Ì\91Ã\93\96\90«\82ð\8am\94F\82·\82é ------------------------------------\r
+/*----------- パスワードの妥当性を確認する ------------------------------------\r
*\r
* Parameter\r
-* char *Password: \83p\83X\83\8f\81[\83h\95¶\8e\9a\97ñ\r
-* char *HashStr: SHA-1\83n\83b\83V\83\85\95¶\8e\9a\97ñ\r
+* char *Password: パスワード文字列\r
+* char *HashStr: SHA-1ハッシュ文字列\r
*\r
* Return Value\r
-* int 0 \95s\88ê\92v\r
-* 1: \88ê\92v\r
-* 2: \88Ù\8fí\r
+* int 0 不一致\r
+* 1: 一致\r
+* 2: 異常\r
*----------------------------------------------------------------------------*/\r
int CheckPasswordValidity( char* Password, int length, const char* HashStr )\r
{\r
\r
const char* p = HashStr;\r
\r
- /* \8bó\95¶\8e\9a\97ñ\82Í\88ê\92v\82µ\82½\82±\82Æ\82É\82·\82é */\r
+ /* 空文字列は一致したことにする */\r
if( HashStr[0] == NUL ) return 1;\r
\r
- /* Hash\82ð\83`\83F\83b\83N\82·\82é\82·\82é*/\r
+ /* Hashをチェックするする*/\r
if( strlen(HashStr) != 40 ) return 2;\r
\r
- /* Hash\82ð\83f\83R\81[\83h\82·\82é*/\r
+ /* Hashをデコードする*/\r
for( i = 0; i < 5; i++ ){\r
ulong decode = 0;\r
for( j = 0; j < 8; j++ ){\r
hash1[i] = decode;\r
}\r
\r
- /* Password \82ð\83n\83b\83V\83\85\82·\82é */\r
+ /* Password をハッシュする */\r
sha_memory( Password, length, hash2 );\r
\r
if( memcmp( (char*)hash1, (char*)hash2, sizeof( hash1 )) == 0 ){\r
return 0;\r
}\r
\r
-/*----------- \83p\83X\83\8f\81[\83h\82Ì\91Ã\93\96\90«\83`\83F\83b\83N\82Ì\82½\82ß\82Ì\95¶\8e\9a\97ñ\82ð\8dì\90¬\82·\82é ------------\r
+/*----------- パスワードの妥当性チェックのための文字列を作成する ------------\r
*\r
* Parameter\r
-* char *Password: \83p\83X\83\8f\81[\83h\95¶\8e\9a\97ñ\r
-* char *Str: SHA-1\83n\83b\83V\83\85\95¶\8e\9a\97ñ\8ai\94[\8fê\8f\8a (41bytes\88È\8fã)\r
+* char *Password: パスワード文字列\r
+* char *Str: SHA-1ハッシュ文字列格納場所 (41bytes以上)\r
*\r
* Return Value\r
* None\r
-/**************************************************************************\r
+/**************************************************************************\r
\r
OleDragDrop.c\r
\r
#include "OleDragDrop.h"\r
\r
\r
-/* Clipboard format \82©\82ç Type of storage medium \82ð\8eæ\93¾ */\r
+/* Clipboard format から Type of storage medium を取得 */\r
static DWORD FormatToTymed(const UINT cfFormat)\r
{\r
switch(cfFormat)\r
IDROPTARGET_NOTIFY dtn;\r
}IDROPTARGET_INTERNAL , *LPIDROPTARGET_INTERNAL;\r
\r
-/* OLE\82Ì\83h\83\8d\83b\83v\83^\81[\83Q\83b\83g\82Æ\82µ\82Ä\93o\98^\82·\82é */\r
+/* OLEのドロップターゲットとして登録する */\r
BOOL APIPRIVATE OLE_IDropTarget_RegisterDragDrop(HWND hWnd, UINT uCallbackMessage, UINT *cFormat, int cfcnt)\r
{\r
static IDROPTARGET_INTERNAL *pdti;\r
}\r
pdti->lpVtbl = (LPVOID)&dtv;\r
pdti->m_refCnt = 0;\r
- pdti->hWnd = hWnd; /* \83\81\83b\83Z\81[\83W\82ð\8eó\82¯\8eæ\82é\83E\83B\83\93\83h\83E */\r
- pdti->uCallbackMessage = uCallbackMessage; /* \83\81\83b\83Z\81[\83W */\r
- pdti->cFormat = (UINT *)GlobalAlloc(GPTR, sizeof(UINT) * cfcnt); /* \91Î\89\9e\82µ\82Ä\82¢\82é\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g */\r
+ pdti->hWnd = hWnd; /* メッセージを受け取るウィンドウ */\r
+ pdti->uCallbackMessage = uCallbackMessage; /* メッセージ */\r
+ pdti->cFormat = (UINT *)GlobalAlloc(GPTR, sizeof(UINT) * cfcnt); /* 対応しているクリップボードフォーマット */\r
if(pdti->cFormat == NULL){\r
GlobalFree(pdti);\r
return FALSE;\r
}\r
CopyMemory(pdti->cFormat, cFormat, sizeof(UINT) * cfcnt);\r
- pdti->cfcnt = cfcnt; /* \83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82Ì\90\94 */\r
+ pdti->cfcnt = cfcnt; /* クリップボードフォーマットの数 */\r
return (S_OK == RegisterDragDrop(hWnd, (LPDROPTARGET)pdti));\r
}\r
\r
-/* OLE\82Ì\83h\83\8d\83b\83v\83^\81[\83Q\83b\83g\82ð\89ð\8f\9c\82·\82é */\r
+/* OLEのドロップターゲットを解除する */\r
void APIPRIVATE OLE_IDropTarget_RevokeDragDrop(HWND hWnd)\r
{\r
RevokeDragDrop(hWnd);\r
\r
static HRESULT STDMETHODCALLTYPE OLE_IDropTarget_QueryInterface(LPDROPTARGET pThis, REFIID riid, PVOID *ppvObject)\r
{\r
- //\97v\8b\81\82³\82ê\82½IID\82Æ\93¯\82¶\8fê\8d\87\82Í\83I\83u\83W\83F\83N\83g\82ð\95Ô\82·\r
+ //要求されたIIDと同じ場合はオブジェクトを返す\r
if(IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDropTarget)){\r
*ppvObject = (LPVOID)pThis;\r
((LPUNKNOWN)*ppvObject)->lpVtbl->AddRef((LPUNKNOWN)*ppvObject);\r
{\r
CONST LPIDROPTARGET_INTERNAL pdti = (LPIDROPTARGET_INTERNAL)pThis;\r
\r
- /* reference count\82ð\83C\83\93\83N\83\8a\83\81\83\93\83g\82·\82é */\r
+ /* reference countをインクリメントする */\r
pdti->m_refCnt++;\r
return pdti->m_refCnt;\r
}\r
{\r
CONST LPIDROPTARGET_INTERNAL pdti = (LPIDROPTARGET_INTERNAL)pThis;\r
\r
- /* reference count\82ð\83f\83N\83\8a\83\81\83\93\83g\82·\82é */\r
+ /* reference countをデクリメントする */\r
pdti->m_refCnt--;\r
\r
- /* reference count\82ª 0 \82É\82È\82Á\82½\8fê\8d\87\82Í\83I\83u\83W\83F\83N\83g\82Ì\89ð\95ú\82ð\8ds\82¤ */\r
+ /* reference countが 0 になった場合はオブジェクトの解放を行う */\r
if(pdti->m_refCnt == 0L){\r
if(pdti->cFormat != NULL){\r
GlobalFree(pdti->cFormat);\r
int i;\r
\r
if(pdo){\r
- /* \91Î\89\9e\82µ\82Ä\82¢\82é\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82ª\82 \82é\82©\92²\82×\82é */\r
+ /* 対応しているクリップボードフォーマットがあるか調べる */\r
for(i = 0;i < pdti->cfcnt;i++){\r
if(DropTarget_QueryGetData(pdo, pdti->cFormat[i]) == S_OK){\r
cfFormat = pdti->cFormat[i];\r
break;\r
}\r
}\r
- /* \83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82©\82ç\83f\81[\83^\82ð\8eæ\93¾\82·\82é */\r
+ /* クリップボードフォーマットからデータを取得する */\r
if(cfFormat != 0){\r
if (DropTarget_GetData(pdo, cfFormat, &sm) != S_OK){\r
cfFormat = 0;\r
}\r
}\r
}\r
- pdtn->ppt = ppt; /* \83}\83E\83X\83|\83C\83\93\83^\82Ì\88Ê\92u */\r
- pdtn->grfKeyState = grfKeyState; /* \83L\81[\81A\83}\83E\83X\83{\83^\83\93\82Ì\8fó\91Ô */\r
- pdtn->cfFormat = cfFormat; /* \83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g */\r
- pdtn->hMem = sm.hGlobal; /* \8eÀ\83f\81[\83^ */\r
+ pdtn->ppt = ppt; /* マウスポインタの位置 */\r
+ pdtn->grfKeyState = grfKeyState; /* キー、マウスボタンの状態 */\r
+ pdtn->cfFormat = cfFormat; /* クリップボードフォーマット */\r
+ pdtn->hMem = sm.hGlobal; /* 実データ */\r
pdtn->pdo = pdo; /* IDataObject */\r
\r
- /* \83E\83B\83\93\83h\83E\82É\83C\83x\83\93\83g\82ð\92Ê\92m\82·\82é */\r
+ /* ウィンドウにイベントを通知する */\r
SendMessage(pdti->hWnd, pdti->uCallbackMessage, (WPARAM)uNotify, (LPARAM)pdtn);\r
\r
- /* \83N\83\8a\83b\83v\83{\81[\83h\8c`\8e®\82Ì\83f\81[\83^\82Ì\89ð\95ú */\r
+ /* クリップボード形式のデータの解放 */\r
if(cfFormat){\r
ReleaseStgMedium(&sm);\r
}\r
\r
- /* \8cø\89Ê\82Ì\90Ý\92è */\r
+ /* 効果の設定 */\r
if(pdwEffect){\r
*pdwEffect &= pdtn->dwEffect;\r
\r
{\r
FORMATETC fmt;\r
\r
- /* IDataObject\82É\83N\83\8a\83b\83v\83{\81[\83h\8c`\8e®\82Ì\83f\81[\83^\82ð\97v\8b\81\82·\82é */\r
+ /* IDataObjectにクリップボード形式のデータを要求する */\r
fmt.cfFormat = cfFormat;\r
fmt.ptd = NULL;\r
fmt.dwAspect = DVASPECT_CONTENT;\r
{\r
FORMATETC fmt;\r
\r
- /* IDataObject\82É\8ew\92è\82Ì\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82ª\91¶\8dÝ\82·\82é\82©\96â\82¢\8d\87\82í\82¹\82é */\r
+ /* IDataObjectに指定のクリップボードフォーマットが存在するか問い合わせる */\r
fmt.cfFormat = cfFormat;\r
fmt.ptd = NULL;\r
fmt.dwAspect = DVASPECT_CONTENT;\r
\r
static HRESULT STDMETHODCALLTYPE OLE_IEnumFORMATETC_QueryInterface(LPENUMFORMATETC lpThis, REFIID riid, LPVOID FAR* lplpvObj)\r
{\r
- //\97v\8b\81\82³\82ê\82½IID\82Æ\93¯\82¶\8fê\8d\87\82Í\83I\83u\83W\83F\83N\83g\82ð\95Ô\82·\r
+ //要求されたIIDと同じ場合はオブジェクトを返す\r
if(IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IEnumFORMATETC)){\r
*lplpvObj = (LPVOID) lpThis;\r
((LPUNKNOWN)*lplpvObj)->lpVtbl->AddRef(((LPUNKNOWN)*lplpvObj));\r
{\r
CONST LPIENUMFORMATETC_INTERNAL pefi = (LPIENUMFORMATETC_INTERNAL)lpThis;\r
\r
- /* reference count\82ð\83C\83\93\83N\83\8a\83\81\83\93\83g\82·\82é */\r
+ /* reference countをインクリメントする */\r
pefi->m_refCnt++;\r
- /* \90e\83I\83u\83W\83F\83N\83g\82Ìreference count\82ð\89Á\82¦\82é */\r
+ /* 親オブジェクトのreference countを加える */\r
pefi->m_pUnknownObj->lpVtbl->AddRef(pefi->m_pUnknownObj);\r
return pefi->m_refCnt;\r
}\r
{\r
CONST LPIENUMFORMATETC_INTERNAL pefi = (LPIENUMFORMATETC_INTERNAL)lpThis;\r
\r
- /* reference count\82ð\83f\83N\83\8a\83\81\83\93\83g\82·\82é */\r
+ /* reference countをデクリメントする */\r
pefi->m_refCnt--;\r
- /* \90e\83I\83u\83W\83F\83N\83g\82Ìreference count\82ð\8c¸\82ç\82· */\r
+ /* 親オブジェクトのreference countを減らす */\r
pefi->m_pUnknownObj->lpVtbl->Release(pefi->m_pUnknownObj);\r
\r
- /* reference count\82ª 0 \82É\82È\82Á\82½\8fê\8d\87\82Í\83I\83u\83W\83F\83N\83g\82Ì\89ð\95ú\82ð\8ds\82¤ */\r
+ /* reference countが 0 になった場合はオブジェクトの解放を行う */\r
if(pefi->m_refCnt == 0L){\r
if(pefi->m_formatList != NULL){\r
GlobalFree(pefi->m_formatList);\r
LPIENUMFORMATETC_INTERNAL lpefi = ((LPIENUMFORMATETC_INTERNAL)lpThis);\r
UINT i;\r
\r
- /* IEnumFORMATETC\82ð\8dì\90¬\82·\82é */\r
+ /* IEnumFORMATETCを作成する */\r
pNew = GlobalAlloc(GPTR, sizeof(IENUMFORMATETC_INTERNAL));\r
if(pNew == NULL){\r
return ResultFromScode(E_OUTOFMEMORY);\r
pNew->m_pUnknownObj = lpefi->m_pUnknownObj;\r
pNew->m_numFormats = lpefi->m_numFormats;\r
\r
- /* \83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82Ì\83\8a\83X\83g\82ð\83R\83s\81[\82·\82é */\r
+ /* クリップボードフォーマットのリストをコピーする */\r
pNew->m_formatList = GlobalAlloc(GPTR, sizeof(FORMATETC) * pNew->m_numFormats);\r
if(pNew->m_formatList != NULL){\r
for(i = 0;i < pNew->m_numFormats;i++){\r
\r
static HRESULT STDMETHODCALLTYPE OLE_IDataObject_QueryInterface(LPDATAOBJECT lpThis, REFIID riid, LPVOID FAR *lplpvObj)\r
{\r
- //\97v\8b\81\82³\82ê\82½IID\82Æ\93¯\82¶\8fê\8d\87\82Í\83I\83u\83W\83F\83N\83g\82ð\95Ô\82·\r
+ //要求されたIIDと同じ場合はオブジェクトを返す\r
if(IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDataObject)){\r
*lplpvObj = lpThis;\r
((LPUNKNOWN)*lplpvObj)->lpVtbl->AddRef(((LPUNKNOWN)*lplpvObj));\r
{\r
CONST LPIDATAOBJECT_INTERNAL pdoi = (LPIDATAOBJECT_INTERNAL)lpThis;\r
\r
- /* reference count\82ð\83C\83\93\83N\83\8a\83\81\83\93\83g\82·\82é */\r
+ /* reference countをインクリメントする */\r
pdoi->m_refCnt++;\r
return pdoi->m_refCnt;\r
}\r
{\r
CONST LPIDATAOBJECT_INTERNAL pdoi = (LPIDATAOBJECT_INTERNAL)lpThis;\r
\r
- /* reference count\82ð\83f\83N\83\8a\83\81\83\93\83g\82·\82é */\r
+ /* reference countをデクリメントする */\r
pdoi->m_refCnt--;\r
\r
- /* reference count\82ª 0 \82É\82È\82Á\82½\8fê\8d\87\82Í\83I\83u\83W\83F\83N\83g\82Ì\89ð\95ú\82ð\8ds\82¤ */\r
+ /* reference countが 0 になった場合はオブジェクトの解放を行う */\r
if(pdoi->m_refCnt == 0L){\r
if(pdoi->m_typeList != NULL){\r
GlobalFree(pdoi->m_typeList);\r
HGLOBAL hMem;\r
UINT i;\r
\r
- /* \97v\8b\81\82³\82ê\82½\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82ª\91¶\8dÝ\82·\82é\82©\92²\82×\82é */\r
+ /* 要求されたクリップボードフォーマットが存在するか調べる */\r
for(i = 0;i < pdoi->m_numTypes;i++){\r
if(pdoi->m_typeList[i].cfFormat == pFormatetc->cfFormat){\r
break;\r
}\r
}\r
if(i == pdoi->m_numTypes){\r
- /* \97v\8b\81\82³\82ê\82½\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82ð\83T\83|\81[\83g\82µ\82Ä\82È\82¢\8fê\8d\87 */\r
+ /* 要求されたクリップボードフォーマットをサポートしてない場合 */\r
return ResultFromScode(DV_E_FORMATETC);\r
}\r
\r
- // \83}\83E\83X\82Ì\83h\83\89\83b\83O\92\86\82Í WM_GETDATA \82ð\91\97\82ç\82È\82¢\82æ\82¤\82É\82·\82é\81B(2007.9.3 yutaka)\r
+ // マウスのドラッグ中は WM_GETDATA を送らないようにする。(2007.9.3 yutaka)\r
if (GetAsyncKeyState(VK_LBUTTON) & 0x8000 ||\r
GetAsyncKeyState(VK_RBUTTON) & 0x8000) {\r
return ResultFromScode(DV_E_FORMATETC);\r
}\r
\r
- /* \83E\83B\83\93\83h\83E\82É\83f\81[\83^\82Ì\97v\8b\81\82ð\8ds\82¤ */\r
+ /* ウィンドウにデータの要求を行う */\r
SendMessage(pdoi->hWnd, pdoi->uCallbackMessage, (WPARAM)pdoi->m_typeList[i].cfFormat, (LPARAM)&hMem);\r
if(hMem == NULL){\r
return ResultFromScode(STG_E_MEDIUMFULL);\r
CONST LPIDATAOBJECT_INTERNAL pdoi = (LPIDATAOBJECT_INTERNAL)lpThis;\r
UINT i;\r
\r
- /* \97v\8b\81\82³\82ê\82½\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82ª\91¶\8dÝ\82·\82é\82©\92²\82×\82é */\r
+ /* 要求されたクリップボードフォーマットが存在するか調べる */\r
for(i = 0;i < pdoi->m_numTypes;i++){\r
if(pdoi->m_typeList[i].cfFormat == pFormatetc->cfFormat){\r
return S_OK;\r
return ResultFromScode(E_NOTIMPL);\r
}\r
\r
- /* IEnumFORMATETC\82ð\8dì\90¬\82·\82é */\r
+ /* IEnumFORMATETCを作成する */\r
pefi = GlobalAlloc(GPTR, sizeof(IENUMFORMATETC_INTERNAL));\r
if(pefi == NULL){\r
return E_OUTOFMEMORY;\r
pefi->m_pUnknownObj = (struct IUnknown *)lpThis;\r
pefi->m_numFormats = pdoi->m_numTypes;\r
\r
- /* \83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82Ì\83\8a\83X\83g\82ð\83R\83s\81[\82·\82é */\r
+ /* クリップボードフォーマットのリストをコピーする */\r
pefi->m_formatList = GlobalAlloc(GPTR, sizeof(FORMATETC) * pefi->m_numFormats);\r
if(pefi->m_formatList != NULL){\r
for(i = 0;i < pefi->m_numFormats;i++){\r
\r
static HRESULT STDMETHODCALLTYPE OLE_IDropSource_QueryInterface(LPDROPSOURCE lpThis, REFIID riid, LPVOID FAR *lplpvObj)\r
{\r
- //\97v\8b\81\82³\82ê\82½IID\82Æ\93¯\82¶\8fê\8d\87\82Í\83I\83u\83W\83F\83N\83g\82ð\95Ô\82·\r
+ //要求されたIIDと同じ場合はオブジェクトを返す\r
if(IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDropSource)){\r
*lplpvObj = (LPVOID) lpThis;\r
((LPUNKNOWN)*lplpvObj)->lpVtbl->AddRef(((LPUNKNOWN)*lplpvObj));\r
{\r
CONST LPIDROPSOURCE_INTERNAL pdsi = (LPIDROPSOURCE_INTERNAL)lpThis;\r
\r
- /* reference count\82ð\83C\83\93\83N\83\8a\83\81\83\93\83g\82·\82é */\r
+ /* reference countをインクリメントする */\r
pdsi->m_refCnt++;\r
return pdsi->m_refCnt;\r
}\r
{\r
CONST LPIDROPSOURCE_INTERNAL pdsi = (LPIDROPSOURCE_INTERNAL)lpThis;\r
\r
- /* reference count\82ð\83f\83N\83\8a\83\81\83\93\83g\82·\82é */\r
+ /* reference countをデクリメントする */\r
pdsi->m_refCnt--;\r
\r
- /* reference count\82ª 0 \82É\82È\82Á\82½\8fê\8d\87\82Í\83I\83u\83W\83F\83N\83g\82Ì\89ð\95ú\82ð\8ds\82¤ */\r
+ /* reference countが 0 になった場合はオブジェクトの解放を行う */\r
if(pdsi->m_refCnt == 0L){\r
GlobalFree(pdsi);\r
return 0L;\r
CONST LPIDROPSOURCE_INTERNAL pdsi = (LPIDROPSOURCE_INTERNAL)lpThis;\r
\r
if(fEscapePressed){\r
- /* \83G\83X\83P\81[\83v\82ª\89\9f\82³\82ê\82½\8fê\8d\87\82Í\83L\83\83\83\93\83Z\83\8b\82É\82·\82é */\r
+ /* エスケープが押された場合はキャンセルにする */\r
return ResultFromScode(DRAGDROP_S_CANCEL);\r
}\r
\r
- // Mouse over\82Ì\92Ê\92m (yutaka)\r
+ // Mouse overの通知 (yutaka)\r
SendMessage(pdsi->m_hWnd, pdsi->m_uCallbackDragOverMessage, 0, 0);\r
\r
- /* \8ew\92è\82Ì\83L\81[\82â\83}\83E\83X\82ª\97£\82³\82ê\82½\8fê\8d\87\82Í\83h\83\8d\83b\83v\82É\82·\82é */\r
+ /* 指定のキーやマウスが離された場合はドロップにする */\r
if(pdsi->m_button == 0){\r
if(grfKeyState != pdsi->m_keyState){\r
return ResultFromScode(DRAGDROP_S_DROP);\r
return ResultFromScode(DRAGDROP_S_USEDEFAULTCURSORS);\r
}\r
\r
-/* \83h\83\89\83b\83O\81\95\83h\83\8d\83b\83v\82Ì\8aJ\8en */\r
+/* ドラッグ&ドロップの開始 */\r
int APIPRIVATE OLE_IDropSource_Start(HWND hWnd, UINT uCallbackMessage, UINT uCallbackDragOverMessage, UINT *ClipFormtList, int cfcnt, int Effect)\r
{\r
static IDATAOBJECT_INTERNAL *pdoi;\r
int i;\r
int ret;\r
\r
- /* IDataObject\82Ì\8dì\90¬ */\r
+ /* IDataObjectの作成 */\r
pdoi = GlobalAlloc(GPTR, sizeof(IDATAOBJECT_INTERNAL));\r
if(pdoi == NULL){\r
return -1;\r
pdoi->m_refCnt = 0;\r
pdoi->m_numTypes = cfcnt;\r
pdoi->m_maxTypes = cfcnt;\r
- /* \97L\8cø\82È\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82ð\90Ý\92è\82·\82é */\r
+ /* 有効なクリップボードフォーマットを設定する */\r
pdoi->m_typeList = GlobalAlloc(GPTR, sizeof(FORMATETC) * cfcnt);\r
if(pdoi->m_typeList == NULL){\r
GlobalFree(pdoi);\r
pdoi->uCallbackMessage = uCallbackMessage;\r
((LPDATAOBJECT)pdoi)->lpVtbl->AddRef((LPDATAOBJECT)pdoi);\r
\r
- /* IDropSource\82Ì\8dì\90¬ */\r
+ /* IDropSourceの作成 */\r
pdsi = GlobalAlloc(GPTR, sizeof(IDROPSOURCE_INTERNAL));\r
if(pdsi == NULL){\r
- /* IDataObject\82ð\89ð\95ú\82·\82é */\r
+ /* IDataObjectを解放する */\r
((LPDATAOBJECT)pdoi)->lpVtbl->Release((LPDATAOBJECT)pdoi);\r
return -1;\r
}\r
pdsi->m_hWnd = hWnd; // yutaka\r
pdsi->m_uCallbackDragOverMessage = uCallbackDragOverMessage;\r
\r
- /* \97L\8cø\82È\83L\81[\82Æ\83}\83E\83X\82Ì\8fó\91Ô */\r
+ /* 有効なキーとマウスの状態 */\r
if(GetKeyState(VK_RBUTTON) & 0x8000){\r
pdsi->m_button = MK_RBUTTON;\r
}else{\r
pdsi->m_button = MK_LBUTTON;\r
}\r
\r
- /* \8c»\8dÝ\82Ì\83L\81[\82Æ\83}\83E\83X\82Ì\8fó\91Ô */\r
+ /* 現在のキーとマウスの状態 */\r
keyState = 0;\r
if(GetKeyState(VK_SHIFT) & 0x8000){\r
keyState |= MK_SHIFT;\r
\r
lpdwEffect = 0;\r
\r
- /* \83h\83\89\83b\83O&\83h\83\8d\83b\83v\82Ì\8aJ\8en */\r
+ /* ドラッグ&ドロップの開始 */\r
ret = DoDragDrop((LPDATAOBJECT)pdoi, (LPDROPSOURCE)pdsi, Effect, &lpdwEffect);\r
\r
- /* IDataObject\82ð\89ð\95ú\82·\82é */\r
+ /* IDataObjectを解放する */\r
((LPDATAOBJECT)pdoi)->lpVtbl->Release((LPDATAOBJECT)pdoi);\r
- /* IDropSource\82ð\89ð\95ú\82·\82é */\r
+ /* IDropSourceを解放する */\r
((LPDROPSOURCE)pdsi)->lpVtbl->Release((LPDROPSOURCE)pdsi);\r
\r
if(ret == DRAGDROP_S_DROP){\r
- /* \83h\83\8d\83b\83v\90æ\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ª\90Ý\92è\82µ\82½\8cø\89Ê\82ð\95Ô\82· */\r
+ /* ドロップ先のアプリケーションが設定した効果を返す */\r
return lpdwEffect;\r
}\r
return -1;\r
-/**************************************************************************\r
+/**************************************************************************\r
\r
OleDragDrop.h\r
\r
#define IDROPTARGET_NOTIFY_DROP 3\r
\r
typedef struct _IDROPTARGET_NOTIFY{\r
- POINTL *ppt; //\83}\83E\83X\82Ì\88Ê\92u\r
- DWORD dwEffect; //\83h\83\89\83b\83O\91\80\8dì\82Å\81A\83h\83\89\83b\83O\82³\82ê\82é\91Î\8fÛ\82Å\8b\96\82³\82ê\82é\8cø\89Ê\r
- DWORD grfKeyState; //\83L\81[\82Ì\8fó\91Ô\r
- UINT cfFormat; //\83h\83\8d\83b\83v\82³\82ê\82é\83f\81[\83^\82Ì\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\r
- HANDLE hMem; //\83h\83\8d\83b\83v\82³\82ê\82é\83f\81[\83^\r
+ POINTL *ppt; //マウスの位置\r
+ DWORD dwEffect; //ドラッグ操作で、ドラッグされる対象で許される効果\r
+ DWORD grfKeyState; //キーの状態\r
+ UINT cfFormat; //ドロップされるデータのクリップボードフォーマット\r
+ HANDLE hMem; //ドロップされるデータ\r
LPVOID pdo; //IDataObject\r
}IDROPTARGET_NOTIFY , *LPIDROPTARGET_NOTIFY;\r
\r
//DragTarget\r
BOOL APIPRIVATE OLE_IDropTarget_RegisterDragDrop(HWND hWnd, UINT uCallbackMessage, UINT *cFormat, int cfcnt);\r
\r
-//\83h\83\89\83b\83O&\83h\83\8d\83b\83v\82Ì\83^\81[\83Q\83b\83g\82Æ\82µ\82Ä\93o\98^\82µ\82Ü\82·\81B\r
+//ドラッグ&ドロップのターゲットとして登録します。\r
\r
-//[\88ø\90\94]\r
-// \83h\83\89\83b\83O&\83h\83\8d\83b\83v\91\80\8dì\82ª\8ds\82í\82ê\82½\82Æ\82«\82É\8ew\92è\82Ì\83E\83B\83\93\83h\83E\82Ì\8ew\92è\82Ì\83\81\83b\83Z\81[\83W\82É\92Ê\92m\82³\82ê\82Ü\82·\81B\r
-// wParam \82É\91\80\8dì\82Ì\8eí\97Þ(IDROPTARGET_NOTIFY_)\82ª\90Ý\92è\82³\82ê\82Ä\82¢\82Ü\82·\81B\r
-// lParam \82É IDROPTARGET_NOTIFY \8d\\91¢\91Ì\82Ö\82Ì\83|\83C\83\93\83^\82ª\90Ý\92è\82³\82ê\82Ä\82¢\82Ü\82·\81B\r
+//[引数]\r
+// ドラッグ&ドロップ操作が行われたときに指定のウィンドウの指定のメッセージに通知されます。\r
+// wParam に操作の種類(IDROPTARGET_NOTIFY_)が設定されています。\r
+// lParam に IDROPTARGET_NOTIFY 構造体へのポインタが設定されています。\r
\r
-// cFormat \82Í \8eó\82¯\8eæ\82é\82±\82Æ\82ª\89Â\94\\82È\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82Ì\83\8a\83X\83g\82ð\8ew\92è\82µ\82Ü\82·\81B\r
-// cfcnt \82Í\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82Ì\94z\97ñ\82Ì\97v\91f\90\94\82ð\8ew\92è\82µ\82Ü\82·\81B\r
+// cFormat は 受け取ることが可能なクリップボードフォーマットのリストを指定します。\r
+// cfcnt はクリップボードフォーマットの配列の要素数を指定します。\r
\r
void APIPRIVATE OLE_IDropTarget_RevokeDragDrop(HWND hWnd);\r
\r
-//\83h\83\89\83b\83O\81\95\83h\83\8d\83b\83v\82Ì\83^\81[\83Q\83b\83g\82ð\89ð\8f\9c\82µ\82Ü\82·\81B\r
+//ドラッグ&ドロップのターゲットを解除します。\r
\r
\r
\r
//DropSource\r
int APIPRIVATE OLE_IDropSource_Start(HWND hWnd, UINT uCallbackMessage, UINT uCallbackDragOverMessage, UINT *ClipFormtList, int cfcnt, int Effect);\r
\r
-//\83h\83\89\83b\83O\81\95\83h\83\8d\83b\83v\82ð\8aJ\8en\82·\82é\82Æ\82«\82É\8ew\92è\82µ\82Ü\82·\81B\r
-//\83h\83\89\83b\83O\81\95\83h\83\8d\83b\83v\91\80\8dì\82Í\8e©\93®\93I\82É\8ds\82í\82ê\82Ü\82·\82ª\81A\83f\81[\83^\82ª\95K\97v\82È\8e\9e\82Í\81A\8ew\92è\82Ì\83E\83B\83\93\83h\83E\83\81\83b\83Z\81[\83W\82Å\83f\81[\83^\97v\8b\81\82ð\8ds\82¢\82Ü\82·\81B\r
+//ドラッグ&ドロップを開始するときに指定します。\r
+//ドラッグ&ドロップ操作は自動的に行われますが、データが必要な時は、指定のウィンドウメッセージでデータ要求を行います。\r
\r
-//[\88ø\90\94]\r
-// hWnd \82É uCallbackMessage \82ð\91\97\82Á\82Ä\83f\81[\83^\82Ì\97v\8b\81\82ð\8ds\82¢\82Ü\82·\81B\r
-// \82±\82Ì\8e\9e wParam \82É\97v\8b\81\82·\82é\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82Ì\92l\82ª\93ü\82Á\82Ä\82¢\82Ü\82·\81B\r
-// \83v\83\8d\83O\83\89\83\80\82Í *(HANDLE *)lParam \82É\83f\81[\83^\82ð\90Ý\92è\82µ\82Ä\95Ô\82µ\82Ü\82·\81B(NULL\82Å\82à\89Â)\r
+//[引数]\r
+// hWnd に uCallbackMessage を送ってデータの要求を行います。\r
+// この時 wParam に要求するクリップボードフォーマットの値が入っています。\r
+// プログラムは *(HANDLE *)lParam にデータを設定して返します。(NULLでも可)\r
\r
-// ClipFormtList \82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82é\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82Ì\94z\97ñ\82ð\8ew\92è\82µ\82Ü\82·\81B\r
-// cfcnt \82Í\83N\83\8a\83b\83v\83{\81[\83h\83t\83H\81[\83}\83b\83g\82Ì\94z\97ñ\82Ì\97v\91f\90\94\82ð\8ew\92è\82µ\82Ü\82·\81B\r
+// ClipFormtList はサポートしているクリップボードフォーマットの配列を指定します。\r
+// cfcnt はクリップボードフォーマットの配列の要素数を指定します。\r
\r
-// Effect \82Í \83h\83\89\83b\83O\91\80\8dì\82Å\83h\83\89\83b\83O\82³\82ê\82é\91Î\8fÛ\82Å\8b\96\82³\82ê\82é\8cø\89Ê\82Ì\91g\82Ý\8d\87\82í\82¹\82ð\8ew\92è\82µ\82Ü\82·\81B\r
+// Effect は ドラッグ操作でドラッグされる対象で許される効果の組み合わせを指定します。\r
\r
-//[\96ß\82è\92l]\r
-//\83h\83\8d\83b\83v\82ª\8ds\82í\82ê\82½\8fê\8d\87\82Í\81A\83h\83\8d\83b\83v\90æ\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ª\90Ý\92è\82µ\82½\8cø\89Ê\82ð\95Ô\82µ\82Ü\82·\81B\r
-//\83L\83\83\83\93\83Z\83\8b\82â\83G\83\89\81[\82Ì\8fê\8d\87\82Í -1 \82ð\95Ô\82µ\82Ü\82·\81B\r
+//[戻り値]\r
+//ドロップが行われた場合は、ドロップ先のアプリケーションが設定した効果を返します。\r
+//キャンセルやエラーの場合は -1 を返します。\r
\r
\r
#endif\r
-//{{NO_DEPENDENCIES}}\r
+//{{NO_DEPENDENCIES}}\r
// Microsoft Visual C++ generated include file.\r
// Used by ffftp.rc\r
//\r
-//{{NO_DEPENDENCIES}}\r
+//{{NO_DEPENDENCIES}}\r
// Microsoft Visual C++ generated include file.\r
// Used by FFFTP-eng.rc\r
//\r
-/*\r
+/*\r
---------------------------------------------------------------------------\r
Copyright (c) 1998-2008, Brian Gladman, Worcester, UK. All rights reserved.\r
\r
-/*\r
+/*\r
---------------------------------------------------------------------------\r
Copyright (c) 1998-2008, Brian Gladman, Worcester, UK. All rights reserved.\r
\r
-/*\r
+/*\r
---------------------------------------------------------------------------\r
Copyright (c) 1998-2008, Brian Gladman, Worcester, UK. All rights reserved.\r
\r
-/*\r
+/*\r
---------------------------------------------------------------------------\r
Copyright (c) 1998-2008, Brian Gladman, Worcester, UK. All rights reserved.\r
\r
-/*\r
+/*\r
---------------------------------------------------------------------------\r
Copyright (c) 1998-2008, Brian Gladman, Worcester, UK. All rights reserved.\r
\r
-/*\r
+/*\r
---------------------------------------------------------------------------\r
Copyright (c) 1998-2008, Brian Gladman, Worcester, UK. All rights reserved.\r
\r
-/*\r
+/*\r
---------------------------------------------------------------------------\r
Copyright (c) 1998-2008, Brian Gladman, Worcester, UK. All rights reserved.\r
\r
-/*\r
+/*\r
---------------------------------------------------------------------------\r
Copyright (c) 1998-2008, Brian Gladman, Worcester, UK. All rights reserved.\r
\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83u\83b\83N\83}\81[\83N\r
+* ブックマーク\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include <htmlhelp.h>\r
#include "helpid.h"\r
\r
-// UTF-8\91Î\89\9e\r
+// UTF-8対応\r
#undef __MBSWRAPPER_H__\r
#include "mbswrapper.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static int AddBookMark(char *Path);\r
static int GetBothPath(char *Str, char **Path1, char **Path2);\r
static BOOL CALLBACK EditBookMarkProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
static BOOL CALLBACK BookMarkEditCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
extern HWND hHelpWin;\r
\r
-/* \90Ý\92è\92l */\r
-extern HFONT ListFont; /* \83\8a\83X\83g\83{\83b\83N\83X\82Ì\83t\83H\83\93\83g */\r
+/* 設定値 */\r
+extern HFONT ListFont; /* リストボックスのフォント */\r
extern SIZE BmarkDlgSize;\r
\r
\r
\r
-/*----- \83u\83b\83N\83}\81[\83N\82ð\83N\83\8a\83A\82·\82é ----------------------------------------------\r
+/*----- ブックマークをクリアする ----------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ClearBookMark(void)\r
}\r
\r
\r
-/*----- \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ð\83u\83b\83N\83}\81[\83N\82É\92Ç\89Á ------------------------------\r
+/*----- カレントディレクトリをブックマークに追加 ------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void AddCurDirToBookMark(int Win)\r
}\r
\r
\r
-/*----- \83u\83b\83N\83}\81[\83N\82É\83p\83X\82ð\93o\98^\82·\82é ------------------------------------------\r
+/*----- ブックマークにパスを登録する ------------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int AddBookMark(char *Path)\r
int MarkID;\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
hMenu = GetSubMenu(GetMenu(GetMainHwnd()), BMARK_SUB_MENU);\r
MarkID = (GetMenuItemCount(hMenu) - DEFAULT_BMARK_ITEM) + MENU_BMARK_TOP;\r
if(AppendMenu(hMenu, MF_STRING, MarkID, Path) == TRUE)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
return(Sts);\r
}\r
\r
\r
-/*----- \8ew\92è\82ÌID\82ð\8e\9d\82Â\83u\83b\83N\83}\81[\83N\82Ì\83p\83X\82ð\95Ô\82· --------------------------------\r
+/*----- 指定のIDを持つブックマークのパスを返す --------------------------------\r
*\r
* Parameter\r
* int MarkID : ID\r
-* char *Local : \83\8d\81[\83J\83\8b\91¤\82Ì\83p\83X\82ð\95Ô\82·\83o\83b\83t\83@\r
-* char *Remote : \83\8a\83\82\81[\83g\91¤\82Ì\83p\83X\82ð\95Ô\82·\83o\83b\83t\83@\r
-* int Max : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
+* char *Local : ローカル側のパスを返すバッファ\r
+* char *Remote : リモート側のパスを返すバッファ\r
+* int Max : バッファのサイズ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (BMARK_TYPE_xxx)\r
+* int ステータス (BMARK_TYPE_xxx)\r
*----------------------------------------------------------------------------*/\r
\r
int AskBookMarkText(int MarkID, char *Local, char *Remote, int Max)\r
}\r
\r
\r
-/*----- \83u\83b\83N\83}\81[\83N\82Ì\95¶\8e\9a\97ñ\82©\82ç\82Q\82Â\82Ì\83p\83X\82ð\8eæ\82è\8fo\82· --------------------------\r
+/*----- ブックマークの文字列から2つのパスを取り出す --------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* char **Local : \83\8d\81[\83J\83\8b\91¤\82Ì\83p\83X\82Ì\90æ\93ª\82ð\95Ô\82·\83\8f\81[\83N\r
-* char **Remote : \83\8a\83\82\81[\83g\91¤\82Ì\83p\83X\82Ì\90æ\93ª\82ð\95Ô\82·\83\8f\81[\83N\r
+* char *Str : 文字列\r
+* char **Local : ローカル側のパスの先頭を返すワーク\r
+* char **Remote : リモート側のパスの先頭を返すワーク\r
*\r
* Return Value\r
-* int \83p\83X\82Ì\8cÂ\90\94 (1 or 2)\r
+* int パスの個数 (1 or 2)\r
*\r
* Note\r
-* Str\82Ì\93à\97e\82ð\8f\91\82«\8a·\82¦\82é\r
+* Strの内容を書き換える\r
*----------------------------------------------------------------------------*/\r
\r
static int GetBothPath(char *Str, char **Path1, char **Path2)\r
}\r
\r
\r
-/*----- \83u\83b\83N\83}\81[\83N\82ð\90Ú\91±\92\86\82Ì\83z\83X\83g\83\8a\83X\83g\82É\95Û\91¶\82·\82é --------------------------\r
+/*----- ブックマークを接続中のホストリストに保存する --------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SaveBookMark(void)\r
}\r
\r
\r
-/*----- \83z\83X\83g\83\8a\83X\83g\82©\82ç\83u\83b\83N\83}\81[\83N\82ð\93Ç\82Ý\8d\9e\82Þ --------------------------------\r
+/*----- ホストリストからブックマークを読み込む --------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void LoadBookMark(void)\r
Pos = Buf;\r
while(*Pos != NUL)\r
{\r
- /* \8b\8c\83t\83H\81[\83}\83b\83g\82Ì\82½\82ß\82Ì\8f\88\97\9d */\r
- /* \81i\83p\83X\82É"L"\82â"H"\82ª\82Â\82¢\82Ä\82È\82¢\95¨\81j */\r
+ /* 旧フォーマットのための処理 */\r
+ /* (パスに"L"や"H"がついてない物) */\r
if((strncmp(Pos, BMARK_MARK_LOCAL, BMARK_MARK_LEN) != 0) &&\r
(strncmp(Pos, BMARK_MARK_REMOTE, BMARK_MARK_LEN) != 0) &&\r
(strncmp(Pos, BMARK_MARK_BOTH, BMARK_MARK_LEN) != 0))\r
}\r
\r
\r
-/*----- \83u\83b\83N\83}\81[\83N\95Ò\8fW\83E\83C\83\93\83h\83E --------------------------------------------\r
+/*----- ブックマーク編集ウインドウ --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \83X\83e\81[\83^\83X (YES=\8eÀ\8ds/NO=\8eæ\8fÁ)\r
+* ステータス (YES=実行/NO=取消)\r
*----------------------------------------------------------------------------*/\r
\r
int EditBookMark(void)\r
}\r
\r
\r
-/*----- \83u\83b\83N\83}\81[\83N\95Ò\8fW\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------\r
+/*----- ブックマーク編集ウインドウのコールバック ------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
case BMARK_JUMP :\r
if((Cur = SendDlgItemMessage(hDlg, BMARK_LIST, LB_GETCURSEL, 0, 0)) != LB_ERR)\r
PostMessage(GetMainHwnd(), WM_COMMAND, MAKEWPARAM(Cur+MENU_BMARK_TOP, 0), 0);\r
- /* \82±\82±\82É break \82Í\82È\82¢ */\r
+ /* ここに break はない */\r
\r
case IDCANCEL :\r
case IDOK :\r
}\r
\r
\r
-/*----- \83u\83b\83N\83}\81[\83N\93ü\97Í\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------\r
+/*----- ブックマーク入力ダイアログのコールバック ------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
else if(strncmp(Str, BMARK_MARK_REMOTE, BMARK_MARK_LEN) == 0)\r
{\r
SendDlgItemMessage(hDlg, BEDIT_REMOTE, WM_SETTEXT, 0, (LPARAM)Path1);\r
- /* \83z\83X\83g\91¤\82É\83J\81[\83\\83\8b\82ð\88Ú\93®\82µ\82Ä\82¨\82 */\r
+ /* ホスト側にカーソルを移動しておく */\r
SetFocus(GetDlgItem(hDlg, BEDIT_REMOTE));\r
SendDlgItemMessage(hDlg, BEDIT_REMOTE, EM_SETSEL, 0, -1);\r
return(FALSE);\r
{\r
if(strlen(Remote) > 0)\r
{\r
- /* \97¼\95û */\r
+ /* 両方 */\r
strcpy(Str, BMARK_MARK_BOTH);\r
strcat(Str, Local);\r
strcat(Str, BMARK_SEP);\r
}\r
else\r
{\r
- /* \83\8d\81[\83J\83\8b\82Ì\82Ý */\r
+ /* ローカルのみ */\r
strcpy(Str, BMARK_MARK_LOCAL);\r
strcat(Str, Local);\r
}\r
}\r
else if(strlen(Remote) > 0)\r
{\r
- /* \83z\83X\83g\82Ì\82Ý */\r
+ /* ホストのみ */\r
strcpy(Str, BMARK_MARK_REMOTE);\r
strcat(Str, Remote);\r
EndDialog(hDlg, YES);\r
-/*\r
+/*\r
---------------------------------------------------------------------------\r
Copyright (c) 1998-2008, Brian Gladman, Worcester, UK. All rights reserved.\r
\r
-/*\r
+/*\r
---------------------------------------------------------------------------\r
Copyright (c) 1998-2008, Brian Gladman, Worcester, UK. All rights reserved.\r
\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83t\83@\83C\83\8b\88ê\97\97\83L\83\83\83b\83V\83\85\r
+* ファイル一覧キャッシュ\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
\r
\r
\r
-/*===== \83L\83\83\83b\83V\83\85\83f\81[\83^\82Ì\83X\83g\83\89\83N\83`\83\83 =====*/\r
+/*===== キャッシュデータのストラクチャ =====*/\r
\r
typedef struct {\r
- time_t Time; /* \83\8a\83X\83g\82É\93o\98^\82µ\82½\8e\9e\8aÔ */\r
- char HostAdrs[HOST_ADRS_LEN+1]; /* \83z\83X\83g\82Ì\83A\83h\83\8c\83X */\r
- char UserName[USER_NAME_LEN+1]; /* \83\86\81[\83U\96¼ */\r
- char Path[FMAX_PATH+1]; /* \83p\83X\96¼ */\r
+ time_t Time; /* リストに登録した時間 */\r
+ char HostAdrs[HOST_ADRS_LEN+1]; /* ホストのアドレス */\r
+ char UserName[USER_NAME_LEN+1]; /* ユーザ名 */\r
+ char Path[FMAX_PATH+1]; /* パス名 */\r
} CACHELIST;\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
-static CACHELIST *RemoteCache = NULL; /* \83L\83\83\83b\83V\83\85\83f\81[\83^ */\r
-static int TmpCacheEntry = 0; /* \83L\83\83\83b\83V\83\85\82³\82ê\82Ä\82¢\82é\83f\81[\83^\82Ì\90\94 */\r
-static int LastNum; /* \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83f\81[\83^\82Ì\94Ô\8d\86 */\r
-static int ProgNum; /* FFFTP\82Ì\8bN\93®\94Ô\8d\86 */\r
+static CACHELIST *RemoteCache = NULL; /* キャッシュデータ */\r
+static int TmpCacheEntry = 0; /* キャッシュされているデータの数 */\r
+static int LastNum; /* 現在表示しているデータの番号 */\r
+static int ProgNum; /* FFFTPの起動番号 */\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\83L\83\83\83b\83V\83\85\82ð\8dì\90¬\82·\82é --------------------------------------\r
+/*----- ファイル一覧キャッシュを作成する --------------------------------------\r
*\r
* Parameter\r
-* int Num : \83L\83\83\83b\83V\83\85\89Â\94\\8cÂ\90\94\r
+* int Num : キャッシュ可能個数\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int MakeCacheBuf(int Num)\r
int Sts;\r
int i;\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
if(Num > 0)\r
{\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((RemoteCache = malloc(sizeof(CACHELIST) * Num)) != NULL)\r
{\r
TmpCacheEntry = Num;\r
for(i = 0; i < TmpCacheEntry; i++)\r
ClearCache(i);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\83L\83\83\83b\83V\83\85\82ð\8dí\8f\9c\82·\82é --------------------------------------\r
+/*----- ファイル一覧キャッシュを削除する --------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DeleteCacheBuf(void)\r
}\r
\r
\r
-/*----- \83p\83X\82ª\83L\83\83\83b\83V\83\85\82³\82ê\82Ä\82¢\82é\82©\82Ç\82¤\82©\82ð\95Ô\82· ------------------------------\r
+/*----- パスがキャッシュされているかどうかを返す ------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* int \83L\83\83\83b\83V\83\85\83f\81[\83^\82Ì\94Ô\8d\86\r
-* -1 = \83L\83\83\83b\83V\83\85\82³\82ê\82Ä\82¢\82È\82¢\r
+* int キャッシュデータの番号\r
+* -1 = キャッシュされていない\r
*----------------------------------------------------------------------------*/\r
\r
int AskCached(char *Path)\r
}\r
\r
\r
-/*----- \96¢\8eg\97p\82Ì\83L\83\83\83b\83V\83\85\83f\81[\83^\94Ô\8d\86\82ð\95Ô\82· ------------------------------------\r
+/*----- 未使用のキャッシュデータ番号を返す ------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \96¢\8eg\97p\82Ì\83L\83\83\83b\83V\83\85\83f\81[\83^\94Ô\8d\86\r
+* int 未使用のキャッシュデータ番号\r
*\r
* Note\r
-* \96¢\8eg\97p\82Ì\95¨\82ª\96³\82¢\8e\9e\82Í\81A\88ê\94Ô\8cÃ\82¢\82à\82Ì\82É\8fã\8f\91\82«\82·\82é\r
+* 未使用の物が無い時は、一番古いものに上書きする\r
*----------------------------------------------------------------------------*/\r
\r
int AskFreeCache(void)\r
}\r
\r
\r
-/*----- \83L\83\83\83b\83V\83\85\83f\81[\83^\82ð\83Z\83b\83g\82·\82é ------------------------------------------\r
+/*----- キャッシュデータをセットする ------------------------------------------\r
*\r
* Parameter\r
-* int Num : \83L\83\83\83b\83V\83\85\83f\81[\83^\94Ô\8d\86\r
-* char *Path : \83p\83X\96¼\r
+* int Num : キャッシュデータ番号\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \8c»\8dÝ\90Ú\91±\92\86\82Ì\83z\83X\83g\96¼\82ð\8eg\97p\82·\82é\r
+* 現在接続中のホスト名を使用する\r
*----------------------------------------------------------------------------*/\r
\r
void SetCache(int Num, char *Path)\r
}\r
\r
\r
-/*----- \83L\83\83\83b\83V\83\85\83f\81[\83^\82ð\83N\83\8a\83A\82·\82é ------------------------------------------\r
+/*----- キャッシュデータをクリアする ------------------------------------------\r
*\r
* Parameter\r
-* int Num : \83L\83\83\83b\83V\83\85\83f\81[\83^\94Ô\8d\86\r
+* int Num : キャッシュデータ番号\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ClearCache(int Num)\r
}\r
\r
\r
-/*----- \8c»\8dÝ\95\\8e¦\92\86\82Ì\83L\83\83\83b\83V\83\85\83f\81[\83^\94Ô\8d\86\82ð\95Ô\82· --------------------------------\r
+/*----- 現在表示中のキャッシュデータ番号を返す --------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83L\83\83\83b\83V\83\85\83f\81[\83^\94Ô\8d\86\r
+* int キャッシュデータ番号\r
*----------------------------------------------------------------------------*/\r
\r
int AskCurrentFileListNum(void)\r
}\r
\r
\r
-/*----- \8c»\8dÝ\95\\8e¦\92\86\82Ì\83L\83\83\83b\83V\83\85\83f\81[\83^\94Ô\8d\86\82ð\83Z\83b\83g\82·\82é --------------------------\r
+/*----- 現在表示中のキャッシュデータ番号をセットする --------------------------\r
*\r
* Parameter\r
-* int Num : \83L\83\83\83b\83V\83\85\83f\81[\83^\94Ô\8d\86\r
+* int Num : キャッシュデータ番号\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetCurrentFileListNum(int Num)\r
}\r
\r
\r
-/*----- \83L\83\83\83b\83V\83\85\83f\81[\83^\82ð\95Û\91¶\82·\82é --------------------------------------------\r
+/*----- キャッシュデータを保存する --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \83L\83\83\83b\83V\83\85\83f\81[\83^\82»\82Ì\82à\82Ì\82Í\83t\83@\83C\83\8b\82É\82È\82Á\82Ä\82¢\82é\82Ì\82Å\81A\82±\82±\82Å\82Í\83C\83\93\83f\83b\83N\r
-* \83X\83t\83@\83C\83\8b\82ð\8dì\90¬\82·\82é\81B\r
-* \82Ü\82½\81A\95s\97v\82È\83t\83@\83C\83\8b\82Í\8dí\8f\9c\82·\82é\81B\r
+* キャッシュデータそのものはファイルになっているので、ここではインデック\r
+* スファイルを作成する。\r
+* また、不要なファイルは削除する。\r
*----------------------------------------------------------------------------*/\r
\r
void SaveCache(void)\r
CACHELIST *Pos;\r
int i;\r
\r
- if(ProgNum == 0) /* \8dÅ\8f\89\82Ì\83C\83\93\83X\83^\83\93\83X\82¾\82¯\82ª\83L\83\83\83b\83V\83\85\82ð\95Û\91¶\82Å\82«\82é */\r
+ if(ProgNum == 0) /* 最初のインスタンスだけがキャッシュを保存できる */\r
{\r
if(TmpCacheEntry > 0)\r
{\r
}\r
\r
\r
-/*----- \83L\83\83\83b\83V\83\85\83f\81[\83^\82ð\93Ç\82Ý\8d\9e\82Þ --------------------------------------------\r
+/*----- キャッシュデータを読み込む --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void LoadCache(void)\r
CACHELIST *Pos;\r
int Num;\r
\r
- if(ProgNum == 0) /* \8dÅ\8f\89\82Ì\83C\83\93\83X\83^\83\93\83X\82¾\82¯\82ª\83L\83\83\83b\83V\83\85\82ð\95Û\91¶\82Å\82«\82é */\r
+ if(ProgNum == 0) /* 最初のインスタンスだけがキャッシュを保存できる */\r
{\r
if(TmpCacheEntry > 0)\r
{\r
}\r
\r
\r
-/*----- \83L\83\83\83b\83V\83\85\83f\81[\83^\82ð\91S\82Ä\8dí\8f\9c\82·\82é ----------------------------------------\r
+/*----- キャッシュデータを全て削除する ----------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DeleteCache(void)\r
}\r
\r
\r
-/*----- \83L\83\83\83b\83V\83\85\82Ì\83t\83@\83C\83\8b\96¼\82ð\8dì\90¬\82·\82é --------------------------------------\r
+/*----- キャッシュのファイル名を作成する --------------------------------------\r
*\r
* Parameter\r
-* int Num : \83L\83\83\83b\83V\83\85\83f\81[\83^\94Ô\8d\86\r
-* char *Buf : \83t\83@\83C\83\8b\96¼\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
+* int Num : キャッシュデータ番号\r
+* char *Buf : ファイル名を格納するバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void MakeCacheFileName(int Num, char *Buf)\r
}\r
\r
\r
-/*----- \8bN\93®\82µ\82Ä\82¢\82éFFFTP\82Ì\90\94\82ð\90\94\82¦\82é ------------------------------------------\r
+/*----- 起動しているFFFTPの数を数える ------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \8cÂ\90\94\82ÍProgNum\82É\8ai\94[\82·\82é\r
+* 個数はProgNumに格納する\r
*----------------------------------------------------------------------------*/\r
\r
void CountPrevFfftpWindows(void)\r
}\r
\r
\r
-/*----- \8bN\93®\82µ\82Ä\82¢\82éFFFTP\82Ì\90\94\82ð\90\94\82¦\82é\83R\81[\83\8b\83o\83b\83N-------------------------------\r
+/*----- 起動しているFFFTPの数を数えるコールバック-------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* LPARAM lParam : \83p\83\89\83\81\81[\83^\r
+* HWND hWnd : ウインドウハンドル\r
+* LPARAM lParam : パラメータ\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83N\83\8a\83b\83v\83{\81[\83h\8aÖ\8cW\r
+* クリップボード関係\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ð\83N\83\8a\83b\83v\83{\81[\83h\82É\83R\83s\81[ ----------------------------------------\r
+/*----- 文字列をクリップボードにコピー ----------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
int CopyStrToClipBoard(char *Str)\r
void *gBuf;\r
HGLOBAL hGlobal;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(OpenClipboard(GetMainHwnd()))\r
{\r
if(EmptyClipboard())\r
\r
GlobalUnlock(hGlobal);\r
SetClipboardData(CF_TEXT, hGlobal);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
}\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\81^\89ü\8ds\83R\81[\83h\95Ï\8a·\r
+* 漢字コード変換/改行コード変換\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
\r
\r
\r
-#define CONV_ASCII 0 /* ASCII\95¶\8e\9a\8f\88\97\9d\92\86 */\r
-#define CONV_KANJI 1 /* \8a¿\8e\9a\8f\88\97\9d\92\86 */\r
-#define CONV_KANA 2 /* \94¼\8ap\83J\83^\83J\83i\8f\88\97\9d\92\86 */\r
+#define CONV_ASCII 0 /* ASCII文字処理中 */\r
+#define CONV_KANJI 1 /* 漢字処理中 */\r
+#define CONV_KANA 2 /* 半角カタカナ処理中 */\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static char *ConvEUCtoSJISkanaProc(CODECONVINFO *cInfo, char Dt, char *Put);\r
static char *ConvJIStoSJISkanaProc(CODECONVINFO *cInfo, char Dt, char *Put);\r
\r
\r
#if 0\r
-/*----- \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\82Ì\83e\83X\83g\83v\83\8d\83O\83\89\83\80 ------------------------------------*/\r
+/*----- 漢字コード変換のテストプログラム ------------------------------------*/\r
\r
void CodeCnvTest(void)\r
{\r
\r
\r
#if 0\r
-/*----- \89ü\8ds\83R\81[\83h\95Ï\8a·\82Ì\83e\83X\83g\83v\83\8d\83O\83\89\83\80 ------------------------------------*/\r
+/*----- 改行コード変換のテストプログラム ------------------------------------*/\r
\r
void TermCodeCnvTest(void)\r
{\r
\r
\r
\r
-/*----- \89ü\8ds\83R\81[\83h\95Ï\8a·\8fî\95ñ\82ð\8f\89\8aú\89» --------------------------------------------\r
+/*----- 改行コード変換情報を初期化 --------------------------------------------\r
*\r
* Parameter\r
-* TERMCODECONVINFO *cInfo : \89ü\8ds\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* TERMCODECONVINFO *cInfo : 改行コード変換情報\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void InitTermCodeConvInfo(TERMCODECONVINFO *cInfo)\r
}\r
\r
\r
-/*----- \89ü\8ds\83R\81[\83h\95Ï\8a·\82Ì\8ec\82è\8fî\95ñ\82ð\8fo\97Í ----------------------------------------\r
+/*----- 改行コード変換の残り情報を出力 ----------------------------------------\r
*\r
* Parameter\r
-* TERMCODECONVINFO *cInfo : \89ü\8ds\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* TERMCODECONVINFO *cInfo : 改行コード変換情報\r
*\r
* Return Value\r
-* int \82\82è\95Ô\82µ\83t\83\89\83O (=NO)\r
+* int くり返しフラグ (=NO)\r
*\r
* Note\r
-* \89ü\8ds\83R\81[\83h\95Ï\8a·\82Ì\8dÅ\8cã\82É\8cÄ\82Ô\8e\96\r
+* 改行コード変換の最後に呼ぶ事\r
*----------------------------------------------------------------------------*/\r
\r
int FlushRestTermCodeConvData(TERMCODECONVINFO *cInfo)\r
}\r
\r
\r
-/*----- \89ü\8ds\83R\81[\83h\82ðCRLF\82É\95Ï\8a· -------------------------------------------------\r
+/*----- 改行コードをCRLFに変換 -------------------------------------------------\r
*\r
* Parameter\r
-* TERMCODECONVINFO *cInfo : \89ü\8ds\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* TERMCODECONVINFO *cInfo : 改行コード変換情報\r
*\r
* Return Value\r
-* int \82\82è\95Ô\82µ\83t\83\89\83O (YES/NO)\r
+* int くり返しフラグ (YES/NO)\r
*\r
* Note\r
-* \82\82è\95Ô\82µ\83t\83\89\83O\82ªYES\82Ì\8e\9e\82Í\81AcInfo\82Ì\93à\97e\82ð\95Ï\82¦\82¸\82É\82à\82¤\88ê\93x\8cÄ\82Ô\82±\82Æ\r
+* くり返しフラグがYESの時は、cInfoの内容を変えずにもう一度呼ぶこと\r
*----------------------------------------------------------------------------*/\r
\r
int ConvTermCodeToCRLF(TERMCODECONVINFO *cInfo)\r
}\r
\r
\r
-/*----- \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\82ð\8f\89\8aú\89» --------------------------------------------\r
+/*----- 漢字コード変換情報を初期化 --------------------------------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void InitCodeConvInfo(CODECONVINFO *cInfo)\r
cInfo->KanjiFst = 0;\r
cInfo->KanaPrev = 0;\r
cInfo->KanaProc = NULL;\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
cInfo->EscUTF8Len = 0;\r
return;\r
}\r
\r
\r
-/*----- \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\82Ì\8ec\82è\8fî\95ñ\82ð\8fo\97Í ----------------------------------------\r
+/*----- 漢字コード変換の残り情報を出力 ----------------------------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
*\r
* Return Value\r
-* int \82\82è\95Ô\82µ\83t\83\89\83O (=NO)\r
+* int くり返しフラグ (=NO)\r
*\r
* Note\r
-* \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\82Ì\8dÅ\8cã\82É\8cÄ\82Ô\8e\96\r
+* 漢字コード変換の最後に呼ぶ事\r
*----------------------------------------------------------------------------*/\r
\r
int FlushRestData(CODECONVINFO *cInfo)\r
*Put++ = cInfo->EscCode[0];\r
if(cInfo->EscProc == 2)\r
*Put++ = cInfo->EscCode[1];\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
memcpy(Put, cInfo->EscUTF8, sizeof(char) * cInfo->EscUTF8Len);\r
Put += cInfo->EscUTF8Len;\r
\r
}\r
\r
\r
-/*----- EUC\8a¿\8e\9a\83R\81[\83h\82ðSHIFT-JIS\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a· ------------------------------\r
+/*----- EUC漢字コードをSHIFT-JIS漢字コードに変換 ------------------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
*\r
* Return Value\r
-* int \82\82è\95Ô\82µ\83t\83\89\83O (YES/NO)\r
+* int くり返しフラグ (YES/NO)\r
*\r
* Note\r
-* \82\82è\95Ô\82µ\83t\83\89\83O\82ªYES\82Ì\8e\9e\82Í\81AcInfo\82Ì\93à\97e\82ð\95Ï\82¦\82¸\82É\82à\82¤\88ê\93x\8cÄ\82Ô\82±\82Æ\r
+* くり返しフラグがYESの時は、cInfoの内容を変えずにもう一度呼ぶこと\r
*----------------------------------------------------------------------------*/\r
\r
int ConvEUCtoSJIS(CODECONVINFO *cInfo)\r
cInfo->KanjiFst = *Str++;\r
else\r
{\r
- if((uchar)cInfo->KanjiFst == (uchar)0x8E) /* \94¼\8ap\83J\83^\83J\83i */\r
+ if((uchar)cInfo->KanjiFst == (uchar)0x8E) /* 半角カタカナ */\r
{\r
Put = ConvEUCtoSJISkanaProc(cInfo, *Str++, Put);\r
}\r
}\r
\r
\r
-/*----- EUC-->SHIFT-JIS\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a·\82Ì\94¼\8ap\83J\83^\83J\83i\82Ì\8f\88\97\9d -------------------\r
+/*----- EUC-->SHIFT-JIS漢字コードに変換の半角カタカナの処理 -------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
-* char Dt : \95¶\8e\9a\r
-* char *Put : \83f\81[\83^\83Z\83b\83g\88Ê\92u\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
+* char Dt : 文字\r
+* char *Put : データセット位置\r
*\r
* Return Value\r
-* char *\8e\9f\82Ì\83f\81[\83^\83Z\83b\83g\88Ê\92u\r
+* char *次のデータセット位置\r
*----------------------------------------------------------------------------*/\r
\r
static char *ConvEUCtoSJISkanaProc(CODECONVINFO *cInfo, char Dt, char *Put)\r
}\r
\r
\r
-/*----- JIS\8a¿\8e\9a\83R\81[\83h\82ðSHIFT-JIS\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a· ------------------------------\r
+/*----- JIS漢字コードをSHIFT-JIS漢字コードに変換 ------------------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
*\r
* Return Value\r
-* int \82\82è\95Ô\82µ\83t\83\89\83O (YES/NO)\r
+* int くり返しフラグ (YES/NO)\r
*\r
* Note\r
-* \82\82è\95Ô\82µ\83t\83\89\83O\82ªYES\82Ì\8e\9e\82Í\81AcInfo\82Ì\93à\97e\82ð\95Ï\82¦\82¸\82É\82à\82¤\88ê\93x\8cÄ\82Ô\82±\82Æ\r
+* くり返しフラグがYESの時は、cInfoの内容を変えずにもう一度呼ぶこと\r
*\r
-* \83G\83X\83P\81[\83v\83R\81[\83h\82Í\81A\8e\9f\82Ì\82à\82Ì\82É\91Î\89\9e\82µ\82Ä\82¢\82é\r
-* \8a¿\8e\9a\8aJ\8en <ESC>$B <ESC>$@\r
-* \94¼\8ap\83J\83i\8aJ\8en <ESC>(I\r
-* \8a¿\8e\9a\8fI\97¹ <ESC>(B <ESC>(J <ESC>(H\r
+* エスケープコードは、次のものに対応している\r
+* 漢字開始 <ESC>$B <ESC>$@\r
+* 半角カナ開始 <ESC>(I\r
+* 漢字終了 <ESC>(B <ESC>(J <ESC>(H\r
*----------------------------------------------------------------------------*/\r
\r
int ConvJIStoSJIS(CODECONVINFO *cInfo)\r
}\r
\r
\r
-/*----- JIS-->SHIFT-JIS\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a·\82Ì\94¼\8ap\83J\83^\83J\83i\82Ì\8f\88\97\9d -------------------\r
+/*----- JIS-->SHIFT-JIS漢字コードに変換の半角カタカナの処理 -------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
-* char Dt : \95¶\8e\9a\r
-* char *Put : \83f\81[\83^\83Z\83b\83g\88Ê\92u\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
+* char Dt : 文字\r
+* char *Put : データセット位置\r
*\r
* Return Value\r
-* char *\8e\9f\82Ì\83f\81[\83^\83Z\83b\83g\88Ê\92u\r
+* char *次のデータセット位置\r
*----------------------------------------------------------------------------*/\r
\r
static char *ConvJIStoSJISkanaProc(CODECONVINFO *cInfo, char Dt, char *Put)\r
}\r
\r
\r
-/*----- Samba-HEX/Samba-CAP\8a¿\8e\9a\83R\81[\83h\82ðSHIFT-JIS\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a· --------------\r
+/*----- Samba-HEX/Samba-CAP漢字コードをSHIFT-JIS漢字コードに変換 --------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
*\r
* Return Value\r
-* int \82\82è\95Ô\82µ\83t\83\89\83O (YES/NO)\r
+* int くり返しフラグ (YES/NO)\r
*\r
* Note\r
-* \82\82è\95Ô\82µ\83t\83\89\83O\82ªYES\82Ì\8e\9e\82Í\81AcInfo\82Ì\93à\97e\82ð\95Ï\82¦\82¸\82É\82à\82¤\88ê\93x\8cÄ\82Ô\82±\82Æ\r
-* \95ª\8a\84\82³\82ê\82½\93ü\97Í\95¶\8e\9a\97ñ\82Ì\95Ï\8a·\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\r
-* \94¼\8ap\83J\83^\83J\83i\82Ì\95Ï\8a·\90Ý\92è\82É\82Í\91Î\89\9e\82µ\82Ä\82¢\82È\82¢\r
+* くり返しフラグがYESの時は、cInfoの内容を変えずにもう一度呼ぶこと\r
+* 分割された入力文字列の変換はサポートしていない\r
+* 半角カタカナの変換設定には対応していない\r
*----------------------------------------------------------------------------*/\r
\r
int ConvSMBtoSJIS(CODECONVINFO *cInfo)\r
}\r
\r
\r
-/*----- SHIFT-JIS\8a¿\8e\9a\83R\81[\83h\82ðEUC\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a· ------------------------------\r
+/*----- SHIFT-JIS漢字コードをEUC漢字コードに変換 ------------------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
*\r
* Return Value\r
-* int \82\82è\95Ô\82µ\83t\83\89\83O (YES/NO)\r
+* int くり返しフラグ (YES/NO)\r
*\r
* Note\r
-* \82\82è\95Ô\82µ\83t\83\89\83O\82ªYES\82Ì\8e\9e\82Í\81AcInfo\82Ì\93à\97e\82ð\95Ï\82¦\82¸\82É\82à\82¤\88ê\93x\8cÄ\82Ô\82±\82Æ\r
+* くり返しフラグがYESの時は、cInfoの内容を変えずにもう一度呼ぶこと\r
*----------------------------------------------------------------------------*/\r
\r
int ConvSJIStoEUC(CODECONVINFO *cInfo)\r
}\r
\r
\r
-/*----- SHIFT-JIS-->EUC\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a·\82Ì\94¼\8ap\83J\83^\83J\83i\82Ì\8f\88\97\9d -------------------\r
+/*----- SHIFT-JIS-->EUC漢字コードに変換の半角カタカナの処理 -------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
-* char Dt : \95¶\8e\9a\r
-* char *Put : \83f\81[\83^\83Z\83b\83g\88Ê\92u\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
+* char Dt : 文字\r
+* char *Put : データセット位置\r
*\r
* Return Value\r
-* char *\8e\9f\82Ì\83f\81[\83^\83Z\83b\83g\88Ê\92u\r
+* char *次のデータセット位置\r
*----------------------------------------------------------------------------*/\r
\r
static char *ConvSJIStoEUCkanaProc(CODECONVINFO *cInfo, char Dt, char *Put)\r
}\r
\r
\r
-/*----- SHIFT-JIS\8a¿\8e\9a\83R\81[\83h\82ðJIS\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a· ------------------------------\r
+/*----- SHIFT-JIS漢字コードをJIS漢字コードに変換 ------------------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
*\r
* Return Value\r
-* int \82\82è\95Ô\82µ\83t\83\89\83O (YES/NO)\r
+* int くり返しフラグ (YES/NO)\r
*\r
* Note\r
-* \82\82è\95Ô\82µ\83t\83\89\83O\82ªYES\82Ì\8e\9e\82Í\81AcInfo\82Ì\93à\97e\82ð\95Ï\82¦\82¸\82É\82à\82¤\88ê\93x\8cÄ\82Ô\82±\82Æ\r
+* くり返しフラグがYESの時は、cInfoの内容を変えずにもう一度呼ぶこと\r
*\r
-* \83G\83X\83P\81[\83v\83R\81[\83h\82Í\81A\8e\9f\82Ì\82à\82Ì\82ð\8eg\97p\82·\82é\r
-* \8a¿\8e\9a\8aJ\8en <ESC>$B\r
-* \94¼\8ap\83J\83i\8aJ\8en <ESC>(I\r
-* \8a¿\8e\9a\8fI\97¹ <ESC>(B\r
+* エスケープコードは、次のものを使用する\r
+* 漢字開始 <ESC>$B\r
+* 半角カナ開始 <ESC>(I\r
+* 漢字終了 <ESC>(B\r
*----------------------------------------------------------------------------*/\r
\r
int ConvSJIStoJIS(CODECONVINFO *cInfo)\r
}\r
\r
\r
-/*----- SHIFT-JIS-->JIS\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a·\82Ì\94¼\8ap\83J\83^\83J\83i\82Ì\8f\88\97\9d -------------------\r
+/*----- SHIFT-JIS-->JIS漢字コードに変換の半角カタカナの処理 -------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
-* char Dt : \95¶\8e\9a\r
-* char *Put : \83f\81[\83^\83Z\83b\83g\88Ê\92u\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
+* char Dt : 文字\r
+* char *Put : データセット位置\r
*\r
* Return Value\r
-* char *\8e\9f\82Ì\83f\81[\83^\83Z\83b\83g\88Ê\92u\r
+* char *次のデータセット位置\r
*----------------------------------------------------------------------------*/\r
\r
static char *ConvSJIStoJISkanaProc(CODECONVINFO *cInfo, char Dt, char *Put)\r
}\r
\r
\r
-/*----- SHIFT-JIS\8a¿\8e\9a\83R\81[\83h\82ðSamba-HEX\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a· ------------------------\r
+/*----- SHIFT-JIS漢字コードをSamba-HEX漢字コードに変換 ------------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
*\r
* Return Value\r
-* int \82\82è\95Ô\82µ\83t\83\89\83O (YES/NO)\r
+* int くり返しフラグ (YES/NO)\r
*\r
* Note\r
-* \82\82è\95Ô\82µ\83t\83\89\83O\82ªYES\82Ì\8e\9e\82Í\81AcInfo\82Ì\93à\97e\82ð\95Ï\82¦\82¸\82É\82à\82¤\88ê\93x\8cÄ\82Ô\82±\82Æ\r
-* \95ª\8a\84\82³\82ê\82½\93ü\97Í\95¶\8e\9a\97ñ\82Ì\95Ï\8a·\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\r
-* \94¼\8ap\83J\83^\83J\83i\82Ì\95Ï\8a·\90Ý\92è\82É\82Í\91Î\89\9e\82µ\82Ä\82¢\82È\82¢\r
+* くり返しフラグがYESの時は、cInfoの内容を変えずにもう一度呼ぶこと\r
+* 分割された入力文字列の変換はサポートしていない\r
+* 半角カタカナの変換設定には対応していない\r
*----------------------------------------------------------------------------*/\r
\r
int ConvSJIStoSMB_HEX(CODECONVINFO *cInfo)\r
}\r
\r
\r
-/*----- SHIFT-JIS\8a¿\8e\9a\83R\81[\83h\82ðSamba-CAP\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a· ------------------------\r
+/*----- SHIFT-JIS漢字コードをSamba-CAP漢字コードに変換 ------------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
*\r
* Return Value\r
-* int \82\82è\95Ô\82µ\83t\83\89\83O (YES/NO)\r
+* int くり返しフラグ (YES/NO)\r
*\r
* Note\r
-* \82\82è\95Ô\82µ\83t\83\89\83O\82ªYES\82Ì\8e\9e\82Í\81AcInfo\82Ì\93à\97e\82ð\95Ï\82¦\82¸\82É\82à\82¤\88ê\93x\8cÄ\82Ô\82±\82Æ\r
-* \95ª\8a\84\82³\82ê\82½\93ü\97Í\95¶\8e\9a\97ñ\82Ì\95Ï\8a·\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\r
+* くり返しフラグがYESの時は、cInfoの内容を変えずにもう一度呼ぶこと\r
+* 分割された入力文字列の変換はサポートしていない\r
*----------------------------------------------------------------------------*/\r
\r
int ConvSJIStoSMB_CAP(CODECONVINFO *cInfo)\r
}\r
\r
\r
-/*----- \82P\83o\83C\83g\83J\83^\83J\83i\82ðJIS\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a· ---------------------------------\r
+/*----- 1バイトカタカナをJIS漢字コードに変換 ---------------------------------\r
*\r
* Parameter\r
-* char Ch : \82P\83o\83C\83g\83J\83^\83J\83i\83R\81[\83h\r
+* char Ch : 1バイトカタカナコード\r
*\r
* Return Value\r
-* int JIS\8a¿\8e\9a\83R\81[\83h\r
+* int JIS漢字コード\r
*----------------------------------------------------------------------------*/\r
\r
static int HanKataToZen(char Ch)\r
}\r
\r
\r
-/*----- \91÷\89¹\81^\94¼\91÷\89¹\82É\82È\82é\95¶\8e\9a\82©\83`\83F\83b\83N --------------------------------------\r
+/*----- 濁音/半濁音になる文字かチェック --------------------------------------\r
*\r
* Parameter\r
-* char Ch : \82P\83o\83C\83g\83J\83^\83J\83i\83R\81[\83h\r
-* char Daku : \91÷\93_\81^\94¼\91÷\93_\r
+* char Ch : 1バイトカタカナコード\r
+* char Daku : 濁点/半濁点\r
*\r
* Return Value\r
-* int \95¶\8e\9a\83R\81[\83h\82É\89Á\82¦\82é\92l (0=\91÷\89¹\81^\94¼\91÷\89¹\82É\82È\82ç\82È\82¢)\r
+* int 文字コードに加える値 (0=濁音/半濁音にならない)\r
*----------------------------------------------------------------------------*/\r
\r
static int AskDakuon(char Ch, char Daku)\r
\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82Ì\8a¿\8e\9a\83R\81[\83h\82ð\92²\82×\81AShift-JIS\82É\95Ï\8a· -----------------------------\r
+/*----- 文字列の漢字コードを調べ、Shift-JISに変換 -----------------------------\r
*\r
* Parameter\r
-* char *Text : \95¶\8e\9a\97ñ\r
-* int Pref : SJIS/EUC\82Ì\97D\90æ\8ew\92è\r
-\81\96 KANJI_SJIS / KANJI_EUC / KANJI_NOCNV=SJIS/EUC\82Ì\83`\83F\83b\83N\82Í\82µ\82È\82¢\r
+* char *Text : 文字列\r
+* int Pref : SJIS/EUCの優先指定\r
+* KANJI_SJIS / KANJI_EUC / KANJI_NOCNV=SJIS/EUCのチェックはしない\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ConvAutoToSJIS(char *Text, int Pref)\r
}\r
\r
\r
-/*----- \8eg\82í\82ê\82Ä\82¢\82é\8a¿\8e\9a\83R\81[\83h\82ð\92²\82×\82é ----------------------------------------\r
+/*----- 使われている漢字コードを調べる ----------------------------------------\r
*\r
* Parameter\r
-* char *Text : \95¶\8e\9a\97ñ\r
-* int Size : \95¶\8e\9a\97ñ\82Ì\92·\82³\r
-* int Pref : SJIS/EUC\82Ì\97D\90æ\8ew\92è\r
-\81\96 KANJI_SJIS / KANJI_EUC / KANJI_NOCNV=SJIS/EUC\82Ì\83`\83F\83b\83N\82Í\82µ\82È\82¢\r
+* char *Text : 文字列\r
+* int Size : 文字列の長さ\r
+* int Pref : SJIS/EUCの優先指定\r
+* KANJI_SJIS / KANJI_EUC / KANJI_NOCNV=SJIS/EUCのチェックはしない\r
*\r
* Return Value\r
-* int \8a¿\8e\9a\83R\81[\83h (KANJI_xxx)\r
+* int 漢字コード (KANJI_xxx)\r
*----------------------------------------------------------------------------*/\r
\r
int CheckKanjiCode(char *Text, int Size, int Pref)\r
Ret = -1;\r
Btm = Text + Size;\r
\r
- /* JIS\8a¿\8e\9a\83R\81[\83h\82Ì\83`\83F\83b\83N */\r
+ /* JIS漢字コードのチェック */\r
Pos = Text;\r
while((Pos = memchr(Pos, 0x1b, Btm-Pos-2)) != NULL)\r
{\r
}\r
}\r
\r
- /* EUC\82ÆSHIFT-JIS\8a¿\8e\9a\83R\81[\83h\82Ì\83`\83F\83b\83N */\r
+ /* EUCとSHIFT-JIS漢字コードのチェック */\r
if(Ret == -1)\r
{\r
if(Pref != KANJI_NOCNV)\r
}\r
\r
\r
-/*----- SHIFT-JIS\83R\81[\83h\82Ì\89Â\94\\90«\82ª\82 \82é\82©\83`\83F\83b\83N --------------------------------\r
+/*----- SHIFT-JISコードの可能性があるかチェック --------------------------------\r
*\r
* Parameter\r
-* uchar *Pos : \95¶\8e\9a\97ñ\r
-* uchar *Btm : \95¶\8e\9a\97ñ\82Ì\96\96\94ö\r
+* uchar *Pos : 文字列\r
+* uchar *Btm : 文字列の末尾\r
*\r
* Return Value\r
-* int \93¾\93_\r
+* int 得点\r
*\r
* Note\r
-* High 81-FF (A0-DF\82Í\94¼\8ap) (EB\88È\8d~\82Í\82Ù\82Æ\82ñ\82Ç\96³\82¢)\r
+* High 81-FF (A0-DFは半角) (EB以降はほとんど無い)\r
* Low 40-FC\r
*----------------------------------------------------------------------------*/\r
\r
{\r
if(FstOnTwo == YES)\r
{\r
- if((*Pos < 0x40) || (*Pos > 0xFC)) /* 2\83o\83C\83g\96Ú\82Í 0x40\81`0xFC */\r
+ if((*Pos < 0x40) || (*Pos > 0xFC)) /* 2バイト目は 0x40~0xFC */\r
Point = 0;\r
FstOnTwo = NO;\r
}\r
else if(*Pos >= 0x81)\r
{\r
- if((*Pos < 0xA0) || (*Pos > 0xDF)) /* \94¼\8ap\83J\83i\82Å\82È\82¯\82ê\82Î */\r
+ if((*Pos < 0xA0) || (*Pos > 0xDF)) /* 半角カナでなければ */\r
{\r
- if(*Pos >= 0xEB) /* 1\83o\83C\83g\96Ú\82Í0xEB\88È\8d~\82Í\82Ù\82Æ\82ñ\82Ç\96³\82¢ */\r
+ if(*Pos >= 0xEB) /* 1バイト目は0xEB以降はほとんど無い */\r
Point -= 50;\r
FstOnTwo = YES;\r
}\r
}\r
Pos++;\r
}\r
- if(FstOnTwo == YES) /* \82P\83o\83C\83g\96Ú\82Å\8fI\82í\82Á\82Ä\82¢\82é\82Ì\82Í\82¨\82©\82µ\82¢ */\r
+ if(FstOnTwo == YES) /* 1バイト目で終わっているのはおかしい */\r
Point = 0;\r
\r
return(Point);\r
}\r
\r
\r
-/*----- EUC\83R\81[\83h\82Ì\89Â\94\\90«\82ª\82 \82é\82©\83`\83F\83b\83N -------------------------------------\r
+/*----- EUCコードの可能性があるかチェック -------------------------------------\r
*\r
* Parameter\r
-* uchar *Pos : \95¶\8e\9a\97ñ\r
-* uchar *Btm : \95¶\8e\9a\97ñ\82Ì\96\96\94ö\r
+* uchar *Pos : 文字列\r
+* uchar *Btm : 文字列の末尾\r
*\r
* Return Value\r
-* int \93¾\93_\r
+* int 得点\r
*\r
* Note\r
* High A1-FE , 8E\r
{\r
if(FstOnTwo == 1)\r
{\r
- if((*Pos < 0xA1) || (*Pos > 0xFE)) /* 2\83o\83C\83g\96Ú\82Í 0xA1\81`0xFE */\r
+ if((*Pos < 0xA1) || (*Pos > 0xFE)) /* 2バイト目は 0xA1~0xFE */\r
Point = 0;\r
FstOnTwo = 0;\r
}\r
- else if(FstOnTwo == 2) /* \94¼\8ap\83J\83i */\r
+ else if(FstOnTwo == 2) /* 半角カナ */\r
{\r
- if((*Pos < 0xA0) || (*Pos > 0xDF)) /* 2\83o\83C\83g\96Ú\82Í 0xA0\81`0xDF */\r
+ if((*Pos < 0xA0) || (*Pos > 0xDF)) /* 2バイト目は 0xA0~0xDF */\r
Point = 0;\r
FstOnTwo = 0;\r
}\r
else\r
{\r
- if(*Pos == 0x8E) /* 0x8E??\82Í\94¼\8ap\83J\83i */\r
+ if(*Pos == 0x8E) /* 0x8E??は半角カナ */\r
FstOnTwo = 2;\r
else if((*Pos >= 0xA1) && (*Pos <= 0xFE))\r
FstOnTwo = 1;\r
}\r
Pos++;\r
}\r
- if(FstOnTwo != 0) /* \82P\83o\83C\83g\96Ú\82Å\8fI\82í\82Á\82Ä\82¢\82é\82Ì\82Í\82¨\82©\82µ\82¢ */\r
+ if(FstOnTwo != 0) /* 1バイト目で終わっているのはおかしい */\r
Point = 0;\r
\r
return(Point);\r
}\r
\r
\r
-// UTF-8\91Î\89\9e \82±\82±\82©\82ç\81«\r
-/*----- UTF-8\8a¿\8e\9a\83R\81[\83h\82ðSHIFT-JIS\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a· ------------------------------\r
+// UTF-8対応 ここから↓\r
+/*----- UTF-8漢字コードをSHIFT-JIS漢字コードに変換 ------------------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
*\r
* Return Value\r
-* int \82\82è\95Ô\82µ\83t\83\89\83O (YES/NO)\r
+* int くり返しフラグ (YES/NO)\r
*\r
* Note\r
-* \82\82è\95Ô\82µ\83t\83\89\83O\82ªYES\82Ì\8e\9e\82Í\81AcInfo\82Ì\93à\97e\82ð\95Ï\82¦\82¸\82É\82à\82¤\88ê\93x\8cÄ\82Ô\82±\82Æ\r
+* くり返しフラグがYESの時は、cInfoの内容を変えずにもう一度呼ぶこと\r
*----------------------------------------------------------------------------*/\r
\r
int ConvUTF8NtoSJIS(CODECONVINFO *cInfo)\r
// char temp_string[2048];\r
int string_length;\r
\r
- // \91å\82«\82¢\83T\83C\83Y\82É\91Î\89\9e\r
- // \8fI\92[\82ÌNULL\82ð\8aÜ\82Þ\83o\83O\82ð\8fC\90³\r
+ // 大きいサイズに対応\r
+ // 終端のNULLを含むバグを修正\r
int SrcLength;\r
char* pSrc;\r
wchar_t* pUTF16;\r
\r
Continue = NO;\r
\r
- // \90¶\90¬\82³\82ê\82é\92\86\8aÔ\83R\81[\83h\82Ì\83T\83C\83Y\82ð\92²\82×\82é\r
+ // 生成される中間コードのサイズを調べる\r
// string_length = MultiByteToWideChar(\r
-// CP_UTF8, // \95Ï\8a·\90æ\95¶\8e\9a\83R\81[\83h\r
-// 0, // \83t\83\89\83O(0:\82È\82µ)\r
-// cInfo->Str, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\r
-// -1, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-// NULL, // \95Ï\8a·\82µ\82½\95¶\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
-// 0 // \8ai\94[\90æ\83T\83C\83Y\r
+// CP_UTF8, // 変換先文字コード\r
+// 0, // フラグ(0:なし)\r
+// cInfo->Str, // 変換元文字列\r
+// -1, // 変換元文字列バイト数(-1:自動)\r
+// NULL, // 変換した文字列の格納先\r
+// 0 // 格納先サイズ\r
// );\r
- // \91O\89ñ\82Ì\95Ï\8a·\95s\94\\82È\8ec\82è\82Ì\95¶\8e\9a\97ñ\82ð\93ü\97Í\82Ì\90æ\93ª\82É\8c\8b\8d\87\r
+ // 前回の変換不能な残りの文字列を入力の先頭に結合\r
SrcLength = cInfo->StrLen + cInfo->EscUTF8Len;\r
if(!(pSrc = (char*)malloc(sizeof(char) * (SrcLength + 1))))\r
{\r
memcpy(pSrc, cInfo->EscUTF8, sizeof(char) * cInfo->EscUTF8Len);\r
memcpy(pSrc + cInfo->EscUTF8Len, cInfo->Str, sizeof(char) * cInfo->StrLen);\r
*(pSrc + SrcLength) = '\0';\r
- // UTF-8\82Ì\8fê\8d\87\81A\95s\8a®\91S\82È\95¶\8e\9a\82Í\8fí\82É\95Ï\8a·\82³\82ê\82È\82¢\r
+ // UTF-8の場合、不完全な文字は常に変換されない\r
UTF16Length = MultiByteToWideChar(CP_UTF8, 0, pSrc, SrcLength, NULL, 0);\r
\r
- // \83T\83C\83Y0 or \83o\83b\83t\83@\83T\83C\83Y\82æ\82è\91å\82«\82¢\8fê\8d\87\82Í\r
- // cInfo->Buf\82Ì\8dÅ\8f\89\82É'\0'\82ð\93ü\82ê\82Ä\81A\r
- // cInfo->BufSize\82É0\82ð\93ü\82ê\82Ä\95Ô\82·\81B\r
+ // サイズ0 or バッファサイズより大きい場合は\r
+ // cInfo->Bufの最初に'\0'を入れて、\r
+ // cInfo->BufSizeに0を入れて返す。\r
// if( string_length == 0 ||\r
// string_length >= 1024 ){\r
// *(cInfo->Buf) = '\0';\r
return Continue;\r
}\r
\r
- // \92\86\8aÔ\83R\81[\83h(unicode)\82É\95Ï\8a·\r
+ // 中間コード(unicode)に変換\r
// MultiByteToWideChar(\r
-// CP_UTF8, // \95Ï\8a·\90æ\95¶\8e\9a\83R\81[\83h\r
-// 0, // \83t\83\89\83O(0:\82È\82µ)\r
-// cInfo->Str, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\r
-// -1, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-// (unsigned short *)temp_string, // \95Ï\8a·\82µ\82½\95¶\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
-// 1024 // \8ai\94[\90æ\83T\83C\83Y\r
+// CP_UTF8, // 変換先文字コード\r
+// 0, // フラグ(0:なし)\r
+// cInfo->Str, // 変換元文字列\r
+// -1, // 変換元文字列バイト数(-1:自動)\r
+// (unsigned short *)temp_string, // 変換した文字列の格納先\r
+// 1024 // 格納先サイズ\r
// );\r
MultiByteToWideChar(CP_UTF8, 0, pSrc, SrcLength, pUTF16, UTF16Length);\r
\r
- // \90¶\90¬\82³\82ê\82éUTF-8\83R\81[\83h\82Ì\83T\83C\83Y\82ð\92²\82×\82é\r
+ // 生成されるUTF-8コードのサイズを調べる\r
// string_length = WideCharToMultiByte(\r
-// CP_ACP, // \95Ï\8a·\90æ\95¶\8e\9a\83R\81[\83h\r
-// 0, // \83t\83\89\83O(0:\82È\82µ)\r
-// (unsigned short *)temp_string, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\r
-// -1, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-// NULL, // \95Ï\8a·\82µ\82½\95¶\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
-// 0, // \8ai\94[\90æ\83T\83C\83Y\r
+// CP_ACP, // 変換先文字コード\r
+// 0, // フラグ(0:なし)\r
+// (unsigned short *)temp_string, // 変換元文字列\r
+// -1, // 変換元文字列バイト数(-1:自動)\r
+// NULL, // 変換した文字列の格納先\r
+// 0, // 格納先サイズ\r
// NULL,NULL\r
// );\r
string_length = WideCharToMultiByte(CP_ACP, 0, pUTF16, UTF16Length, NULL, 0, NULL, NULL);\r
\r
- // \83T\83C\83Y0 or \8fo\97Í\83o\83b\83t\83@\83T\83C\83Y\82æ\82è\91å\82«\82¢\8fê\8d\87\82Í\81A\r
- // cInfo->Buf\82Ì\8dÅ\8f\89\82É'\0'\82ð\93ü\82ê\82Ä\81A\r
- // cInfo->BufSize\82É0\82ð\93ü\82ê\82Ä\95Ô\82·\81B\r
+ // サイズ0 or 出力バッファサイズより大きい場合は、\r
+ // cInfo->Bufの最初に'\0'を入れて、\r
+ // cInfo->BufSizeに0を入れて返す。\r
// if( string_length == 0 ||\r
// string_length >= cInfo->BufSize ){\r
// *(cInfo->Buf) = '\0';\r
// return(Continue);\r
// }\r
\r
- // \8fo\97Í\83T\83C\83Y\82ð\90Ý\92è\r
+ // 出力サイズを設定\r
// cInfo->OutLen = string_length;\r
\r
- // UTF-8\83R\81[\83h\82É\95Ï\8a·\r
+ // UTF-8コードに変換\r
// WideCharToMultiByte(\r
-// CP_ACP, // \95Ï\8a·\90æ\95¶\8e\9a\83R\81[\83h\r
-// 0, // \83t\83\89\83O(0:\82È\82µ)\r
-// (unsigned short *)temp_string, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\r
-// -1, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-// cInfo->Buf, // \95Ï\8a·\82µ\82½\95¶\8e\9a\97ñ\82Ì\8ai\94[\90æ(BOM:3bytes)\r
-// cInfo->BufSize, // \8ai\94[\90æ\83T\83C\83Y\r
+// CP_ACP, // 変換先文字コード\r
+// 0, // フラグ(0:なし)\r
+// (unsigned short *)temp_string, // 変換元文字列\r
+// -1, // 変換元文字列バイト数(-1:自動)\r
+// cInfo->Buf, // 変換した文字列の格納先(BOM:3bytes)\r
+// cInfo->BufSize, // 格納先サイズ\r
// NULL,NULL\r
// );\r
cInfo->OutLen = WideCharToMultiByte(CP_ACP, 0, pUTF16, UTF16Length, cInfo->Buf, cInfo->BufSize, NULL, NULL);\r
- // \83o\83b\83t\83@\82É\8eû\82Ü\82ç\82È\82¢\82½\82ß\95Ï\8a·\95¶\8e\9a\90\94\82ð\94¼\8c¸\r
+ // バッファに収まらないため変換文字数を半減\r
while(cInfo->OutLen == 0 && UTF16Length > 0)\r
{\r
UTF16Length = UTF16Length / 2;\r
cInfo->OutLen = WideCharToMultiByte(CP_ACP, 0, pUTF16, UTF16Length, cInfo->Buf, cInfo->BufSize, NULL, NULL);\r
}\r
- // \95Ï\8a·\82³\82ê\82½\8c³\82Ì\95¶\8e\9a\97ñ\82Å\82Ì\95¶\8e\9a\90\94\82ð\8eæ\93¾\r
+ // 変換された元の文字列での文字数を取得\r
Count = WideCharToMultiByte(CP_UTF8, 0, pUTF16, UTF16Length, NULL, 0, NULL, NULL);\r
- // \95Ï\8a·\89Â\94\\82È\8ec\82è\82Ì\95¶\8e\9a\90\94\82ð\8eæ\93¾\r
+ // 変換可能な残りの文字数を取得\r
UTF16Length = MultiByteToWideChar(CP_UTF8, 0, pSrc + Count, SrcLength - Count, NULL, 0);\r
cInfo->Str += Count - cInfo->EscUTF8Len;\r
cInfo->StrLen -= Count - cInfo->EscUTF8Len;\r
Continue = YES;\r
else\r
{\r
- // \95Ï\8a·\95s\94\\82È\82½\82ß\8e\9f\82Ì\93ü\97Í\82Ì\90æ\93ª\82É\8c\8b\8d\87\r
+ // 変換不能なため次の入力の先頭に結合\r
memcpy(cInfo->EscUTF8, cInfo->Str, sizeof(char) * cInfo->StrLen);\r
cInfo->EscUTF8Len = cInfo->StrLen;\r
cInfo->Str += cInfo->StrLen;\r
return(Continue);\r
}\r
\r
-/*----- SHIFT-JIS\8a¿\8e\9a\83R\81[\83h\82ðUTF-8\8a¿\8e\9a\83R\81[\83h\82É\95Ï\8a· ------------------------------\r
+/*----- SHIFT-JIS漢字コードをUTF-8漢字コードに変換 ------------------------------\r
*\r
* Parameter\r
-* CODECONVINFO *cInfo : \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\8fî\95ñ\r
+* CODECONVINFO *cInfo : 漢字コード変換情報\r
*\r
* Return Value\r
-* int \82\82è\95Ô\82µ\83t\83\89\83O (YES/NO)\r
+* int くり返しフラグ (YES/NO)\r
*\r
* Note\r
-* \82\82è\95Ô\82µ\83t\83\89\83O\82ªYES\82Ì\8e\9e\82Í\81AcInfo\82Ì\93à\97e\82ð\95Ï\82¦\82¸\82É\82à\82¤\88ê\93x\8cÄ\82Ô\82±\82Æ\r
+* くり返しフラグがYESの時は、cInfoの内容を変えずにもう一度呼ぶこと\r
*----------------------------------------------------------------------------*/\r
int ConvSJIStoUTF8N(CODECONVINFO *cInfo)\r
{\r
// char temp_string[2048];\r
int string_length;\r
\r
- // \91å\82«\82¢\83T\83C\83Y\82É\91Î\89\9e\r
- // \8fI\92[\82ÌNULL\82ð\8aÜ\82Þ\83o\83O\82ð\8fC\90³\r
+ // 大きいサイズに対応\r
+ // 終端のNULLを含むバグを修正\r
int SrcLength;\r
char* pSrc;\r
wchar_t* pUTF16;\r
\r
Continue = NO;\r
\r
- // \90¶\90¬\82³\82ê\82é\92\86\8aÔ\83R\81[\83h\82Ì\83T\83C\83Y\82ð\92²\82×\82é\r
+ // 生成される中間コードのサイズを調べる\r
// string_length = MultiByteToWideChar(\r
-// CP_ACP, // \95Ï\8a·\90æ\95¶\8e\9a\83R\81[\83h\r
-// 0, // \83t\83\89\83O(0:\82È\82µ)\r
-// cInfo->Str, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\r
-// -1, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-// NULL, // \95Ï\8a·\82µ\82½\95¶\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
-// 0 // \8ai\94[\90æ\83T\83C\83Y\r
+// CP_ACP, // 変換先文字コード\r
+// 0, // フラグ(0:なし)\r
+// cInfo->Str, // 変換元文字列\r
+// -1, // 変換元文字列バイト数(-1:自動)\r
+// NULL, // 変換した文字列の格納先\r
+// 0 // 格納先サイズ\r
// );\r
- // \91O\89ñ\82Ì\95Ï\8a·\95s\94\\82È\8ec\82è\82Ì\95¶\8e\9a\97ñ\82ð\93ü\97Í\82Ì\90æ\93ª\82É\8c\8b\8d\87\r
+ // 前回の変換不能な残りの文字列を入力の先頭に結合\r
SrcLength = cInfo->StrLen + cInfo->EscUTF8Len;\r
if(!(pSrc = (char*)malloc(sizeof(char) * (SrcLength + 1))))\r
{\r
memcpy(pSrc, cInfo->EscUTF8, sizeof(char) * cInfo->EscUTF8Len);\r
memcpy(pSrc + cInfo->EscUTF8Len, cInfo->Str, sizeof(char) * cInfo->StrLen);\r
*(pSrc + SrcLength) = '\0';\r
- // Shift_JIS\82Ì\8fê\8d\87\81A\95s\8a®\91S\82È\95¶\8e\9a\82Å\82à\95Ï\8a·\82³\82ê\82é\82±\82Æ\82ª\82 \82é\82½\82ß\81A\96\96\94ö\82Ì\95s\8a®\91S\82È\95\94\95ª\82ð\8dí\82é\r
+ // Shift_JISの場合、不完全な文字でも変換されることがあるため、末尾の不完全な部分を削る\r
Count = 0;\r
while(Count < SrcLength)\r
{\r
SrcLength = Count;\r
UTF16Length = MultiByteToWideChar(CP_ACP, 0, pSrc, SrcLength, NULL, 0);\r
\r
- // \83T\83C\83Y0 or \83o\83b\83t\83@\83T\83C\83Y\82æ\82è\91å\82«\82¢\8fê\8d\87\82Í\81A\r
- // cInfo->Buf\82Ì\8dÅ\8f\89\82É'\0'\82ð\93ü\82ê\82Ä\81A\r
- // cInfo->BufSize\82É0\82ð\93ü\82ê\82Ä\95Ô\82·\81B\r
+ // サイズ0 or バッファサイズより大きい場合は、\r
+ // cInfo->Bufの最初に'\0'を入れて、\r
+ // cInfo->BufSizeに0を入れて返す。\r
// if( string_length == 0 ||\r
// string_length >= 1024 ){\r
// *(cInfo->Buf) = '\0';\r
return Continue;\r
}\r
\r
- // \92\86\8aÔ\83R\81[\83h(unicode)\82É\95Ï\8a·\r
+ // 中間コード(unicode)に変換\r
// MultiByteToWideChar(\r
-// CP_ACP, // \95Ï\8a·\90æ\95¶\8e\9a\83R\81[\83h\r
-// 0, // \83t\83\89\83O(0:\82È\82µ)\r
-// cInfo->Str, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\r
-// -1, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-// (unsigned short *)temp_string, // \95Ï\8a·\82µ\82½\95¶\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
-// 1024 // \8ai\94[\90æ\83T\83C\83Y\r
+// CP_ACP, // 変換先文字コード\r
+// 0, // フラグ(0:なし)\r
+// cInfo->Str, // 変換元文字列\r
+// -1, // 変換元文字列バイト数(-1:自動)\r
+// (unsigned short *)temp_string, // 変換した文字列の格納先\r
+// 1024 // 格納先サイズ\r
// );\r
MultiByteToWideChar(CP_ACP, 0, pSrc, SrcLength, pUTF16, UTF16Length);\r
\r
- // \90¶\90¬\82³\82ê\82éUTF-8\83R\81[\83h\82Ì\83T\83C\83Y\82ð\92²\82×\82é\r
+ // 生成されるUTF-8コードのサイズを調べる\r
// string_length = WideCharToMultiByte(\r
-// CP_UTF8, // \95Ï\8a·\90æ\95¶\8e\9a\83R\81[\83h\r
-// 0, // \83t\83\89\83O(0:\82È\82µ)\r
-// (unsigned short *)temp_string, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\r
-// -1, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-// NULL, // \95Ï\8a·\82µ\82½\95¶\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
-// 0, // \8ai\94[\90æ\83T\83C\83Y\r
+// CP_UTF8, // 変換先文字コード\r
+// 0, // フラグ(0:なし)\r
+// (unsigned short *)temp_string, // 変換元文字列\r
+// -1, // 変換元文字列バイト数(-1:自動)\r
+// NULL, // 変換した文字列の格納先\r
+// 0, // 格納先サイズ\r
// NULL,NULL\r
// );\r
string_length = WideCharToMultiByte(CP_UTF8, 0, pUTF16, UTF16Length, NULL, 0, NULL, NULL);\r
\r
- // \83T\83C\83Y0 or \8fo\97Í\83o\83b\83t\83@\83T\83C\83Y\82æ\82è\91å\82«\82¢\8fê\8d\87\82Í\81A\r
- // cInfo->Buf\82Ì\8dÅ\8f\89\82É'\0'\82ð\93ü\82ê\82Ä\81A\r
- // cInfo->BufSize\82É0\82ð\93ü\82ê\82Ä\95Ô\82·\81B\r
+ // サイズ0 or 出力バッファサイズより大きい場合は、\r
+ // cInfo->Bufの最初に'\0'を入れて、\r
+ // cInfo->BufSizeに0を入れて返す。\r
// if( string_length == 0 ||\r
// string_length >= cInfo->BufSize ){\r
// *(cInfo->Buf) = '\0';\r
// return(Continue);\r
// }\r
\r
- // \8fo\97Í\83T\83C\83Y\82ð\90Ý\92è\r
+ // 出力サイズを設定\r
// cInfo->OutLen = string_length;\r
\r
/*\r
- // \81«\95t\82¯\82¿\82á\82¾\82ß \83R\83}\83\93\83h\82É\82à\92Ç\89Á\82³\82ê\82Ä\82µ\82Ü\82¤\r
- // \8fo\97Í\95¶\8e\9a\97ñ\82Ì\90æ\93ª\82ÉBOM(byte order mark)\82ð\82Â\82¯\82é\r
+ // ↓付けちゃだめ コマンドにも追加されてしまう\r
+ // 出力文字列の先頭にBOM(byte order mark)をつける\r
*(cInfo->Buf) = (char)0xef;\r
*(cInfo->Buf+1) = (char)0xbb;\r
*(cInfo->Buf+2) = (char)0xbf;\r
*/\r
\r
- // UTF-8\83R\81[\83h\82É\95Ï\8a·\r
+ // UTF-8コードに変換\r
// WideCharToMultiByte(\r
-// CP_UTF8, // \95Ï\8a·\90æ\95¶\8e\9a\83R\81[\83h\r
-// 0, // \83t\83\89\83O(0:\82È\82µ)\r
-// (unsigned short *)temp_string, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\r
-// -1, // \95Ï\8a·\8c³\95¶\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-// cInfo->Buf, // \95Ï\8a·\82µ\82½\95¶\8e\9a\97ñ\82Ì\8ai\94[\90æ(BOM:3bytes)\r
-// cInfo->BufSize, // \8ai\94[\90æ\83T\83C\83Y\r
+// CP_UTF8, // 変換先文字コード\r
+// 0, // フラグ(0:なし)\r
+// (unsigned short *)temp_string, // 変換元文字列\r
+// -1, // 変換元文字列バイト数(-1:自動)\r
+// cInfo->Buf, // 変換した文字列の格納先(BOM:3bytes)\r
+// cInfo->BufSize, // 格納先サイズ\r
// NULL,NULL\r
// );\r
cInfo->OutLen = WideCharToMultiByte(CP_UTF8, 0, pUTF16, UTF16Length, cInfo->Buf, cInfo->BufSize, NULL, NULL);\r
- // \83o\83b\83t\83@\82É\8eû\82Ü\82ç\82È\82¢\82½\82ß\95Ï\8a·\95¶\8e\9a\90\94\82ð\94¼\8c¸\r
+ // バッファに収まらないため変換文字数を半減\r
while(cInfo->OutLen == 0 && UTF16Length > 0)\r
{\r
UTF16Length = UTF16Length / 2;\r
cInfo->OutLen = WideCharToMultiByte(CP_UTF8, 0, pUTF16, UTF16Length, cInfo->Buf, cInfo->BufSize, NULL, NULL);\r
}\r
- // \95Ï\8a·\82³\82ê\82½\8c³\82Ì\95¶\8e\9a\97ñ\82Å\82Ì\95¶\8e\9a\90\94\82ð\8eæ\93¾\r
+ // 変換された元の文字列での文字数を取得\r
Count = WideCharToMultiByte(CP_ACP, 0, pUTF16, UTF16Length, NULL, 0, NULL, NULL);\r
- // \95Ï\8a·\89Â\94\\82È\8ec\82è\82Ì\95¶\8e\9a\90\94\82ð\8eæ\93¾\r
+ // 変換可能な残りの文字数を取得\r
UTF16Length = MultiByteToWideChar(CP_ACP, 0, pSrc + Count, SrcLength - Count, NULL, 0);\r
cInfo->Str += Count - cInfo->EscUTF8Len;\r
cInfo->StrLen -= Count - cInfo->EscUTF8Len;\r
Continue = YES;\r
else\r
{\r
- // \95Ï\8a·\95s\94\\82È\82½\82ß\8e\9f\82Ì\93ü\97Í\82Ì\90æ\93ª\82É\8c\8b\8d\87\r
+ // 変換不能なため次の入力の先頭に結合\r
memcpy(cInfo->EscUTF8, cInfo->Str, sizeof(char) * cInfo->StrLen);\r
cInfo->EscUTF8Len = cInfo->StrLen;\r
cInfo->Str += cInfo->StrLen;\r
\r
return(Continue);\r
}\r
-// UTF-8\91Î\89\9e \82±\82±\82Ü\82Å\81ª\r
+// UTF-8対応 ここまで↑\r
\r
\r
-/*----- IBM\8ag\92£\8a¿\8e\9a\82ðNEC\91I\92èIBM\8ag\92£\8a¿\8e\9a\93\99\82É\95Ï\8a· -------------------------------\r
+/*----- IBM拡張漢字をNEC選定IBM拡張漢字等に変換 -------------------------------\r
*\r
* Parameter\r
-* code \8a¿\8e\9a\83R\81[\83h\r
+* code 漢字コード\r
*\r
* Return Value\r
-* int \8a¿\8e\9a\83R\81[\83h\r
+* int 漢字コード\r
*----------------------------------------------------------------------------*/\r
static int ConvertIBMExtendedChar(int code)\r
{\r
-/*=============================================================================\r
-* \82e\82e\82e\82s\82o\8b¤\92Ê\92è\8b`\83t\83@\83C\83\8b\r
+/*=============================================================================\r
+* FFFTP共通定義ファイル\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#define ushort unsigned short\r
#define ulong unsigned long\r
\r
-#define FAIL 0\r
-#define SUCCESS 1\r
+// 警告の回避\r
+//#define FAIL 0\r
+//#define SUCCESS 1\r
+#define FFFTP_FAIL 0\r
+#define FFFTP_SUCCESS 1\r
\r
#define NO 0\r
#define YES 1\r
#define YES_ALL 3\r
#define YES_LIST 4\r
\r
-/*===== \83o\81[\83W\83\87\83\93 ======*/\r
+/*===== バージョン ======*/\r
\r
-// SourceForge.JP\82É\82æ\82é\83t\83H\81[\83N\r
+// SourceForge.JPによるフォーク\r
//#define VER_STR "1.97b"\r
-//#define VER_NUM 1921 /* \90Ý\92è\83o\81[\83W\83\87\83\93 */\r
-//#define PROGRAM_VERSION_NUM 1972 /* \83o\81[\83W\83\87\83\93 */\r
+//#define VER_NUM 1921 /* 設定バージョン */\r
+//#define PROGRAM_VERSION_NUM 1972 /* バージョン */\r
#define VER_STR "1.98"\r
-#define VER_NUM 1980 /* \90Ý\92è\83o\81[\83W\83\87\83\93 */\r
-#define PROGRAM_VERSION_NUM 1980 /* \83o\81[\83W\83\87\83\93 */\r
+#define VER_NUM 1980 /* 設定バージョン */\r
+#define PROGRAM_VERSION_NUM 1980 /* バージョン */\r
\r
\r
#define MYWEB_URL "http://www2.biglobe.ne.jp/~sota/ffftp-qa.html"\r
\r
\r
\r
-/*===== \92Ê\90M\8aÖ\8cW ======*/\r
+/*===== 通信関係 ======*/\r
\r
#define TCP_PORT 6\r
\r
-/*===== \83E\83C\83\93\83h\83E\83T\83C\83Y ======*/\r
+/*===== ウインドウサイズ ======*/\r
\r
-#define TOOLWIN_HEIGHT 28 /* \83c\81[\83\8b\83o\81[\82Ì\8d\82\82³ */\r
+#define TOOLWIN_HEIGHT 28 /* ツールバーの高さ */\r
\r
-/*===== \93Á\8eê\82È\83L\83\83\83b\83V\83\85\83f\81[\83^\94Ô\8d\86 =====*/\r
-/* \81i\83t\83@\83C\83\8b\88ê\97\97\8eæ\93¾\82Å\8eg\97p\82·\82é\83\8d\81[\83J\83\8b\83t\83@\83C\83\8b\96¼ _ffftp.??? \82Ì\94Ô\8d\86\95\94\95ª\81j */\r
+/*===== 特殊なキャッシュデータ番号 =====*/\r
+/* (ファイル一覧取得で使用するローカルファイル名 _ffftp.??? の番号部分) */\r
\r
-#define CACHE_FILE_TMP1 999 /* \83z\83X\83g\82Ì\83t\83@\83C\83\8b\83c\83\8a\81[\8eæ\93¾\97p */\r
-#define CACHE_FILE_TMP2 998 /* \83A\83b\83v\83\8d\81[\83h\92\86\82Ì\83z\83X\83g\82Ì\83t\83@\83C\83\8b\88ê\97\97\8eæ\93¾\97p */\r
+#define CACHE_FILE_TMP1 999 /* ホストのファイルツリー取得用 */\r
+#define CACHE_FILE_TMP2 998 /* アップロード中のホストのファイル一覧取得用 */\r
\r
-/*===== \83\86\81[\83U\92è\8b`\83R\83}\83\93\83h =====*/\r
+/*===== ユーザ定義コマンド =====*/\r
\r
-#define WM_CHANGE_COND (WM_USER+1) /* \83t\83@\83C\83\8b\88ê\97\97\82ð\95Ï\8dX\82·\82é\83R\83}\83\93\83h */\r
-#define WM_SET_PACKET (WM_USER+2) /* \8c»\8dÝ\8eg\97p\82µ\82Ä\82¢\82é\93]\91\97\83p\83P\83b\83g\82Ì\83A\83h\83\8c\83X\82ð\92Ê\92m */\r
-#define WM_SELECT_HOST (WM_USER+3) /* \83z\83X\83g\82ð\83_\83u\83\8b\83N\83\8a\83b\83N\82Å\91I\91ð\82µ\82½ */\r
-#define WM_DIAL_MSG (WM_USER+4) /* \83_\83C\83A\83\8b\92\86\82Ì\83X\83e\81[\83^\83X\92Ê\92m */\r
+#define WM_CHANGE_COND (WM_USER+1) /* ファイル一覧を変更するコマンド */\r
+#define WM_SET_PACKET (WM_USER+2) /* 現在使用している転送パケットのアドレスを通知 */\r
+#define WM_SELECT_HOST (WM_USER+3) /* ホストをダブルクリックで選択した */\r
+#define WM_DIAL_MSG (WM_USER+4) /* ダイアル中のステータス通知 */\r
\r
#define WM_ASYNC_SOCKET (WM_USER+5)\r
#define WM_ASYNC_DBASE (WM_USER+6)\r
#define WM_REFRESH_LOCAL_FLG (WM_USER+7)\r
#define WM_REFRESH_REMOTE_FLG (WM_USER+8)\r
\r
-/*===== \83z\83X\83g\94Ô\8d\86 =====*/\r
-/* \83z\83X\83g\94Ô\8d\86\82Í 0\81` \82Ì\92l\82ð\8eæ\82é */\r
-\r
-#define HOSTNUM_NOENTRY (-1) /* \83z\83X\83g\88ê\97\97\82É\96³\82¢\82Æ\82«\82Ì\83z\83X\83g\94Ô\8d\86 */\r
-\r
-/*===== \83o\83b\83t\83@\83T\83C\83Y =====*/\r
-\r
-#define BUFSIZE 4096 /* \83t\83@\83C\83\8b\93]\91\97\83o\83b\83t\83@\82Ì\83T\83C\83Y(4k\88È\8fã) */\r
-\r
-#define HOST_NAME_LEN 40 /* \88ê\97\97\82É\95\\8e¦\82·\82é\83z\83X\83g\82Ì\96¼\91O */\r
-#define HOST_ADRS_LEN 80 /* \83z\83X\83g\96¼ */\r
-#define USER_NAME_LEN 80 /* \83\86\81[\83U\96¼ */\r
-#define PASSWORD_LEN 80 /* \83p\83X\83\8f\81[\83h */\r
-#define ACCOUNT_LEN 80 /* \83A\83J\83E\83\93\83g */\r
-#define HOST_TYPE_LEN 1 /* \83z\83X\83g\82Ì\8eí\97Þ */\r
-#define INIT_DIR_LEN (FMAX_PATH-40) /* \8f\89\8aú\83f\83B\83\8c\83N\83g\83\8a */\r
-#define USER_MAIL_LEN 80 /* \83\86\81[\83U\82Ì\83\81\81[\83\8b\83A\83h\83\8c\83X */\r
- /* PASSWORD_LEN \82Æ\93¯\82¶\82É\82·\82é\82±\82Æ */\r
-#define ASCII_EXT_LEN 400 /* \83A\83X\83L\81[\83\82\81[\83h\93]\91\97\82Ì\83t\83@\83C\83\8b\96¼\97ñ */\r
-#define FILTER_EXT_LEN 400 /* \83t\83B\83\8b\83^\82Ì\83t\83@\83C\83\8b\96¼\97ñ */\r
-#define BOOKMARK_SIZE 2048 /* \83u\83b\83N\83}\81[\83N */\r
-#define CHMOD_CMD_LEN 40 /* \91®\90«\95Ï\8dX\83R\83}\83\93\83h */\r
-#define MIRROR_LEN 400 /* \83~\83\89\81[\83\8a\83\93\83O\82Ì\90Ý\92è\97p */\r
-#define NLST_NAME_LEN 40 /* NLST\82É\95t\82¯\82é\83t\83@\83C\83\8b\96¼\81^\83I\83v\83V\83\87\83\93 */\r
-#define DEFATTRLIST_LEN 800 /* \91®\90«\83\8a\83X\83g\82Ì\92·\82³ */\r
-#define INITCMD_LEN 256 /* \8f\89\8aú\89»\83R\83}\83\93\83h */\r
-#define OWNER_NAME_LEN 40 /* \83I\81[\83i\96¼ */\r
-#define RAS_NAME_LEN 256 /* RAS\82Ì\83G\83\93\83g\83\8a\96¼\82Ì\92·\82³ */\r
+/*===== ホスト番号 =====*/\r
+/* ホスト番号は 0~ の値を取る */\r
+\r
+#define HOSTNUM_NOENTRY (-1) /* ホスト一覧に無いときのホスト番号 */\r
+\r
+/*===== バッファサイズ =====*/\r
+\r
+#define BUFSIZE 4096 /* ファイル転送バッファのサイズ(4k以上) */\r
+\r
+#define HOST_NAME_LEN 40 /* 一覧に表示するホストの名前 */\r
+#define HOST_ADRS_LEN 80 /* ホスト名 */\r
+#define USER_NAME_LEN 80 /* ユーザ名 */\r
+#define PASSWORD_LEN 80 /* パスワード */\r
+#define ACCOUNT_LEN 80 /* アカウント */\r
+#define HOST_TYPE_LEN 1 /* ホストの種類 */\r
+#define INIT_DIR_LEN (FMAX_PATH-40) /* 初期ディレクトリ */\r
+#define USER_MAIL_LEN 80 /* ユーザのメールアドレス */\r
+ /* PASSWORD_LEN と同じにすること */\r
+#define ASCII_EXT_LEN 400 /* アスキーモード転送のファイル名列 */\r
+#define FILTER_EXT_LEN 400 /* フィルタのファイル名列 */\r
+#define BOOKMARK_SIZE 2048 /* ブックマーク */\r
+#define CHMOD_CMD_LEN 40 /* 属性変更コマンド */\r
+#define MIRROR_LEN 400 /* ミラーリングの設定用 */\r
+#define NLST_NAME_LEN 40 /* NLSTに付けるファイル名/オプション */\r
+#define DEFATTRLIST_LEN 800 /* 属性リストの長さ */\r
+#define INITCMD_LEN 256 /* 初期化コマンド */\r
+#define OWNER_NAME_LEN 40 /* オーナ名 */\r
+#define RAS_NAME_LEN 256 /* RASのエントリ名の長さ */\r
\r
#define FMAX_PATH 1024\r
\r
#define ONELINE_BUF_SIZE (10*1024)\r
\r
-/*===== \8f\89\8aú\92l =====*/\r
+/*===== 初期値 =====*/\r
\r
-#define SAMBA_HEX_TAG ':' /* Samba-HEX \82Ì\8bæ\90Ø\82è\95¶\8e\9a */\r
-#define CHMOD_CMD_NOR "SITE CHMOD" /* \91®\90«\95Ï\8dX\83R\83}\83\93\83h */\r
-#define PORT_NOR 21 /* \83|\81[\83g\94Ô\8d\86 */\r
-#define LS_FNAME "-alL" /* NLST\82É\95t\82¯\82é\82à\82Ì */\r
+#define SAMBA_HEX_TAG ':' /* Samba-HEX の区切り文字 */\r
+#define CHMOD_CMD_NOR "SITE CHMOD" /* 属性変更コマンド */\r
+#define PORT_NOR 21 /* ポート番号 */\r
+#define LS_FNAME "-alL" /* NLSTに付けるもの */\r
\r
-/*===== \93¯\82¶\96¼\91O\82Ì\83t\83@\83C\83\8b\82ª\82 \82Á\82½\8e\9e\82Ì\8f\88\97\9d =====*/\r
+/*===== 同じ名前のファイルがあった時の処理 =====*/\r
\r
-#define EXIST_OVW 0 /* \8fã\8f\91\82« */\r
-#define EXIST_NEW 1 /* \90V\82µ\82¯\82ê\82Î\8fã\8f\91\82« */\r
-#define EXIST_RESUME 2 /* \83\8c\83W\83\85\81[\83\80 */\r
-#define EXIST_IGNORE 3 /* \96³\8e\8b */\r
-#define EXIST_UNIQUE 4 /* \83z\83X\83g\82ª\96¼\91O\82ð\95t\82¯\82é */\r
-#define EXIST_ABORT 5 /* \91S\82Ä\92\86\8e~ */\r
+#define EXIST_OVW 0 /* 上書き */\r
+#define EXIST_NEW 1 /* 新しければ上書き */\r
+#define EXIST_RESUME 2 /* レジューム */\r
+#define EXIST_IGNORE 3 /* 無視 */\r
+#define EXIST_UNIQUE 4 /* ホストが名前を付ける */\r
+#define EXIST_ABORT 5 /* 全て中止 */\r
\r
-/*===== \83t\83@\83C\83\8b\96¼\82Ì\94ä\8ar\83\82\81[\83h =====*/\r
+/*===== ファイル名の比較モード =====*/\r
\r
-#define COMP_IGNORE 0 /* \91å\95¶\8e\9a/\8f¬\95¶\8e\9a\82Í\8bæ\95Ê\82µ\82È\82¢ */\r
-#define COMP_STRICT 1 /* \91å\95¶\8e\9a/\8f¬\95¶\8e\9a\82ð\8bæ\95Ê\82·\82é */\r
-#define COMP_LOWERMATCH 2 /* \91å\95¶\8e\9a/\8f¬\95¶\8e\9a\82ð\8bæ\95Ê\82µ\82È\82¢\81i\95Ð\91¤\82Í\91S\82Ä\8f¬\95¶\8e\9a\81j */\r
+#define COMP_IGNORE 0 /* 大文字/小文字は区別しない */\r
+#define COMP_STRICT 1 /* 大文字/小文字を区別する */\r
+#define COMP_LOWERMATCH 2 /* 大文字/小文字を区別しない(片側は全て小文字) */\r
\r
-/*===== FTP\82Ì\89\9e\93\9a\83R\81[\83h\82Ì\93ª\82P\8c\85 =====*/\r
+/*===== FTPの応答コードの頭1桁 =====*/\r
\r
#define FTP_PRELIM 1 /* */\r
#define FTP_COMPLETE 2 /* */\r
#define FTP_RETRY 4 /* */\r
#define FTP_ERROR 5 /* */\r
\r
-/*===== \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\83m\81[\83h\91®\90« =====*/\r
+/*===== ファイルリストのノード属性 =====*/\r
\r
-#define NODE_DIR 0 /* \83f\83B\83\8c\83N\83g\83\8a */\r
-#define NODE_FILE 1 /* \83t\83@\83C\83\8b */\r
-#define NODE_DRIVE 2 /* \83h\83\89\83C\83u */\r
-#define NODE_NONE (-1) /* \82È\82µ */\r
+#define NODE_DIR 0 /* ディレクトリ */\r
+#define NODE_FILE 1 /* ファイル */\r
+#define NODE_DRIVE 2 /* ドライブ */\r
+#define NODE_NONE (-1) /* なし */\r
\r
-/*===== \8fã\8f\91\82«\8am\94F\95û\96@\82Ì\90Ý\92è\92l =====*/\r
+/*===== 上書き確認方法の設定値 =====*/\r
\r
-#define TRANS_OVW 0 /* \8fã\8f\91\82« */\r
-#define TRANS_DLG 1 /* \83_\83C\83A\83\8d\83O\82ð\8fo\82· */\r
+#define TRANS_OVW 0 /* 上書き */\r
+#define TRANS_DLG 1 /* ダイアログを出す */\r
\r
-/*===== \83z\83X\83g\93à\83t\83@\83C\83\8b\88Ú\93®\8am\94F\95û\96@\82Ì\90Ý\92è\92l =====*/\r
+/*===== ホスト内ファイル移動確認方法の設定値 =====*/\r
\r
-#define MOVE_NODLG 0 /* \83_\83C\83A\83\8d\83O\82ð\8fo\82³\82È\82¢ */\r
-#define MOVE_DLG 1 /* \83_\83C\83A\83\8d\83O\82ð\8fo\82· */\r
-#define MOVE_DISABLE 2 /* \8b@\94\\8eg\97p\8bÖ\8e~ */\r
+#define MOVE_NODLG 0 /* ダイアログを出さない */\r
+#define MOVE_DLG 1 /* ダイアログを出す */\r
+#define MOVE_DISABLE 2 /* 機能使用禁止 */\r
\r
-/*===== \93]\91\97\95û\96@ =====*/\r
+/*===== 転送方法 =====*/\r
\r
-#define TYPE_I 'I' /* \83o\83C\83i\83\8a\83\82\81[\83h */\r
-#define TYPE_A 'A' /* \83A\83X\83L\81[\83\82\81[\83h */\r
-#define TYPE_X 'X' /* \8e©\93®\94»\95Ê */\r
+#define TYPE_I 'I' /* バイナリモード */\r
+#define TYPE_A 'A' /* アスキーモード */\r
+#define TYPE_X 'X' /* 自動判別 */\r
\r
-#define TYPE_DEFAULT NUL /* \90Ý\92è\82µ\82È\82¢ DirectConnectProc()\82Ì\88ø\90\94\82Æ\82µ\82Ä\97L\8cø */\r
+#define TYPE_DEFAULT NUL /* 設定しない DirectConnectProc()の引数として有効 */\r
\r
-/*===== \83\\81[\83g\95û\96@ =====*/\r
-/* \94Ô\8d\86\82ÍListView\82Ì\83J\83\89\83\80\94Ô\8d\86\82Æ\8d\87\82í\82¹\82Ä\82 \82é */\r
+/*===== ソート方法 =====*/\r
+/* 番号はListViewのカラム番号と合わせてある */\r
\r
-#define SORT_NAME 0 /* \96¼\91O\8f\87 */\r
-#define SORT_DATE 1 /* \93ú\95t\8f\87 */\r
-#define SORT_SIZE 2 /* \83T\83C\83Y\8f\87 */\r
-#define SORT_EXT 3 /* \8ag\92£\8eq\8f\87 */\r
+#define SORT_NAME 0 /* 名前順 */\r
+#define SORT_DATE 1 /* 日付順 */\r
+#define SORT_SIZE 2 /* サイズ順 */\r
+#define SORT_EXT 3 /* 拡張子順 */\r
\r
-#define SORT_ASCENT 0x00 /* \8f¸\8f\87 */\r
-#define SORT_DESCENT 0x80 /* \8d~\8f\87 */\r
+#define SORT_ASCENT 0x00 /* 昇順 */\r
+#define SORT_DESCENT 0x80 /* 降順 */\r
\r
-#define SORT_MASK_ORD 0x7F /* \82\98\82\98\8f\87\82ð\8eæ\82è\8fo\82·\83}\83X\83N */\r
-#define SORT_GET_ORD 0x80 /* \8f¸\8f\87\81^\8d~\8f\87\82ð\8eæ\82è\8fo\82·\83}\83X\83N */\r
+#define SORT_MASK_ORD 0x7F /* xx順を取り出すマスク */\r
+#define SORT_GET_ORD 0x80 /* 昇順/降順を取り出すマスク */\r
\r
-#define SORT_NOTSAVED ((ulong)0xFFFFFFFF) /* \83z\83X\83g\96\88\82Ì\83Z\81[\83u\95û\96@\82ð\95Û\91¶\82µ\82Ä\82¢\82È\82¢\8e\9e\82Ì\92l */\r
+#define SORT_NOTSAVED ((ulong)0xFFFFFFFF) /* ホスト毎のセーブ方法を保存していない時の値 */\r
\r
-/*===== \83\\81[\83g\82·\82é\8fê\8f\8a =====*/\r
+/*===== ソートする場所 =====*/\r
\r
-#define ITEM_LFILE 0 /* \83\8d\81[\83J\83\8b\82Ì\96¼\91O */\r
-#define ITEM_LDIR 1 /* \83\8d\81[\83J\83\8b\82Ì\83f\83B\83\8c\83N\83g\83\8a */\r
-#define ITEM_RFILE 2 /* \83z\83X\83g\82Ì\96¼\91O */\r
-#define ITEM_RDIR 3 /* \83z\83X\83g\82Ì\83f\83B\83\8c\83N\83g\83\8a */\r
+#define ITEM_LFILE 0 /* ローカルの名前 */\r
+#define ITEM_LDIR 1 /* ローカルのディレクトリ */\r
+#define ITEM_RFILE 2 /* ホストの名前 */\r
+#define ITEM_RDIR 3 /* ホストのディレクトリ */\r
\r
-/*===== \83E\83C\83\93\83h\83E\94Ô\8d\86 =====*/\r
+/*===== ウインドウ番号 =====*/\r
\r
-#define WIN_LOCAL 0 /* \83\8d\81[\83J\83\8b */\r
-#define WIN_REMOTE 1 /* \83z\83X\83g */\r
-#define WIN_BOTH 2 /* \97¼\95û */\r
+#define WIN_LOCAL 0 /* ローカル */\r
+#define WIN_REMOTE 1 /* ホスト */\r
+#define WIN_BOTH 2 /* 両方 */\r
\r
-/*===== \83t\83@\83C\83\8b\91I\91ð\95û\96@ =====*/\r
+/*===== ファイル選択方法 =====*/\r
\r
-#define SELECT_ALL 0 /* \91S\91I\91ð */\r
-#define SELECT_REGEXP 1 /* \8c\9f\8dõ\8e®\82ð\93ü\97Í\82µ\82Ä\91I\91ð */\r
+#define SELECT_ALL 0 /* 全選択 */\r
+#define SELECT_REGEXP 1 /* 検索式を入力して選択 */\r
\r
-/*===== \8c\9f\8dõ\95û\96@ =====*/\r
+/*===== 検索方法 =====*/\r
\r
-#define FIND_FIRST 0 /* \8dÅ\8f\89\82Ì\8c\9f\8dõ */\r
-#define FIND_NEXT 1 /* \8e\9f\82ð\8c\9f\8dõ */\r
+#define FIND_FIRST 0 /* 最初の検索 */\r
+#define FIND_NEXT 1 /* 次を検索 */\r
\r
-/*===== \83t\83@\83C\83\8b\96¼\82Ì\91å\95¶\8e\9a\81^\8f¬\95¶\8e\9a\95Ï\8a· =====*/\r
+/*===== ファイル名の大文字/小文字変換 =====*/\r
\r
-#define FNAME_NOCNV 0 /* \95Ï\8a·\82µ\82È\82¢ */\r
-#define FNAME_LOWER 1 /* \8f¬\95¶\8e\9a\82É\95Ï\8a· */\r
-#define FNAME_UPPER 2 /* \91å\95¶\8e\9a\82É\95Ï\8a· */\r
+#define FNAME_NOCNV 0 /* 変換しない */\r
+#define FNAME_LOWER 1 /* 小文字に変換 */\r
+#define FNAME_UPPER 2 /* 大文字に変換 */\r
\r
-/*===== \83t\83@\83C\83\8b\88ê\97\97\82Ì\8c`\8e® =====*/\r
+/*===== ファイル一覧の形式 =====*/\r
\r
-#define LIST_UNKNOWN (-1) /* \95s\96¾ */\r
+#define LIST_UNKNOWN (-1) /* 不明 */\r
\r
#define LIST_UNIX_10 0 /* UNIX 10 */\r
#define LIST_UNIX_11 1 /* UNIX 11 */\r
#define LIST_ACOS 25 /* ACOS */\r
#define LIST_AS400 26 /* AS/400 */\r
#define LIST_M1800 27 /* Fujitu M1800 (OS IV/MSP E20) */\r
-#define LIST_CHAMELEON 28 /* Win3.1\97p Chameleon FTP server */\r
+#define LIST_CHAMELEON 28 /* Win3.1用 Chameleon FTP server */\r
#define LIST_GP6000 29 /* Fujitu GP6000 Model 900 */\r
#define LIST_OS2 30 /* OS/2 */\r
#define LIST_VMS 31 /* VAX VMS */\r
\r
#define LIST_MASKFLG 0xFF\r
\r
-/* \83t\83@\83C\83\8b\88ê\97\97\8fî\95ñ\97á ---------------\r
+/* ファイル一覧情報例 ---------------\r
\r
*LIST_UNIX_10\r
0 1 2 3 4 5 6 7 8\r
-------------------------------------------------------\r
drwxr-xr-x 15 owner group 1024 Nov 6 14:21 Linux/\r
-rwxrwx--- 5 owner group 12 Nov 6 1996 test.txt\r
- drwxr-xr-x 15 owner group 1024 11\8c\8e 6\93ú 14:21 Linux/\r
- drwxr-xr-x 15 owner group 1024 11\8c\8e 6\93ú 14\8e\9e21\95ª Linux/\r
- -rwxrwx--- 5 owner group 12 11\8c\8e 6\93ú 1996\94N test.txt\r
- drwxrwxr-x 6 root sys 512 1\8c\8e 26 03:10 adm (\8c\8e\82ÍGB\83R\81[\83h\82Å0xD4C2)\r
+ drwxr-xr-x 15 owner group 1024 11月 6日 14:21 Linux/\r
+ drwxr-xr-x 15 owner group 1024 11月 6日 14時21分 Linux/\r
+ -rwxrwx--- 5 owner group 12 11月 6日 1996年 test.txt\r
+ drwxrwxr-x 6 root sys 512 1月 26 03:10 adm (月はGBコードで0xD4C2)\r
\r
*LIST_UNIX_11\r
0 1 2 3 4 5 6 7\r
-------------------------------------------------------\r
- drwxr-xr-x 15 owner group 1024 11\8c\8e12\93ú 14\8e\9e21\95ª Linux/\r
- -rwxrwx--- 5 owner group 12 11\8c\8e12\93ú 1996\94N test.txt\r
+ drwxr-xr-x 15 owner group 1024 11月12日 14時21分 Linux/\r
+ -rwxrwx--- 5 owner group 12 11月12日 1996年 test.txt\r
\r
*LIST_UNIX_12\r
0 1 2 3 4 5 6 7\r
-------------------------------------------------------\r
drwxr-xr-x123 owner group 1024 Nov 6 14:21 Linux/\r
-rwxrwx---132 owner group 12 Nov 6 1996 test.txt\r
- drwxr-xr-x123 owner group 1024 11\8c\8e 6\93ú 14:21 Linux/\r
- drwxr-xr-x123 owner group 1024 11\8c\8e 6\93ú 14\8e\9e21\95ª Linux/\r
- -rwxrwx---132 owner group 12 11\8c\8e 6\93ú 1996\94N test.txt\r
+ drwxr-xr-x123 owner group 1024 11月 6日 14:21 Linux/\r
+ drwxr-xr-x123 owner group 1024 11月 6日 14時21分 Linux/\r
+ -rwxrwx---132 owner group 12 11月 6日 1996年 test.txt\r
\r
*LIST_UNIX_13\r
0 1 2 3 4 5 6\r
-------------------------------------------------------\r
- drwxr-xr-x123 owner group 1024 11\8c\8e12\93ú 14\8e\9e21\95ª Linux/\r
- -rwxrwx---132 owner group 12 11\8c\8e12\93ú 1996\94N test.txt\r
+ drwxr-xr-x123 owner group 1024 11月12日 14時21分 Linux/\r
+ -rwxrwx---132 owner group 12 11月12日 1996年 test.txt\r
\r
*LIST_UNIX_14\r
0 1 2 3 4 5 6 7 8\r
-------------------------------------------------------\r
- drwxr-xr-x 15 owner group 512 2001 6\8c\8e 18 audit (\8c\8e\82ÍGB\83R\81[\83h\82Å0xD4C2)\r
+ drwxr-xr-x 15 owner group 512 2001 6月 18 audit (月はGBコードで0xD4C2)\r
\r
*LIST_UNIX_15\r
0 1 2 3 4 5 6 7\r
-------------------------------------------------------\r
- drwxr-xr-x15 owner group 512 2001 6\8c\8e 18 audit (\8c\8e\82ÍGB\83R\81[\83h\82Å0xD4C2)\r
+ drwxr-xr-x15 owner group 512 2001 6月 18 audit (月はGBコードで0xD4C2)\r
\r
\r
\r
-------------------------------------------------------\r
drwxr-xr-x 15 owner 1024 Nov 6 14:21 Linux/\r
-rwxrwx--- 5 owner 12 Nov 6 1996 test.txt\r
- drwxr-xr-x 15 owner 1024 11\8c\8e 6\93ú 14:21 Linux/\r
- drwxr-xr-x 15 owner 1024 11\8c\8e 6\93ú 14\8e\9e21\95ª Linux/\r
- -rwxrwx--- 5 owner 12 11\8c\8e 6\93ú 1996\94N test.txt\r
+ drwxr-xr-x 15 owner 1024 11月 6日 14:21 Linux/\r
+ drwxr-xr-x 15 owner 1024 11月 6日 14時21分 Linux/\r
+ -rwxrwx--- 5 owner 12 11月 6日 1996年 test.txt\r
\r
*LIST_UNIX_21\r
0 1 2 3 4 5 6\r
-------------------------------------------------------\r
- drwxr-xr-x 15 owner 1024 11\8c\8e12\93ú 14\8e\9e21\95ª Linux/\r
- -rwxrwx--- 5 owner 12 11\8c\8e12\93ú 1996\94N test.txt\r
+ drwxr-xr-x 15 owner 1024 11月12日 14時21分 Linux/\r
+ -rwxrwx--- 5 owner 12 11月12日 1996年 test.txt\r
\r
*LIST_UNIX_22\r
0 1 2 3 4 5 6\r
-------------------------------------------------------\r
drwxr-xr-x123 owner 1024 Nov 6 14:21 Linux/\r
-rwxrwx---132 owner 12 Nov 6 1996 test.txt\r
- drwxr-xr-x123 owner 1024 11\8c\8e 6\93ú 14:21 Linux/\r
- drwxr-xr-x123 owner 1024 11\8c\8e 6\93ú 14\8e\9e21\95ª Linux/\r
- -rwxrwx---132 owner 12 11\8c\8e 6\93ú 1996\94N test.txt\r
+ drwxr-xr-x123 owner 1024 11月 6日 14:21 Linux/\r
+ drwxr-xr-x123 owner 1024 11月 6日 14時21分 Linux/\r
+ -rwxrwx---132 owner 12 11月 6日 1996年 test.txt\r
\r
*LIST_UNIX_23\r
0 1 2 3 4 5\r
-------------------------------------------------------\r
- drwxr-xr-x123 owner 1024 11\8c\8e12\93ú 14\8e\9e21\95ª Linux/\r
- -rwxrwx---132 owner 12 11\8c\8e12\93ú 1996\94N test.txt\r
+ drwxr-xr-x123 owner 1024 11月12日 14時21分 Linux/\r
+ -rwxrwx---132 owner 12 11月12日 1996年 test.txt\r
\r
*LIST_UNIX_24\r
0 1 2 3 4 5 6 7\r
-------------------------------------------------------\r
- drwxr-xr-x 15 owner 512 2001 6\8c\8e 18 audit (\8c\8e\82ÍGB\83R\81[\83h\82Å0xD4C2)\r
+ drwxr-xr-x 15 owner 512 2001 6月 18 audit (月はGBコードで0xD4C2)\r
\r
*LIST_UNIX_25\r
0 1 2 3 4 5 6\r
-------------------------------------------------------\r
- drwxr-xr-x15 owner 512 2001 6\8c\8e 18 audit (\8c\8e\82ÍGB\83R\81[\83h\82Å0xD4C2)\r
+ drwxr-xr-x15 owner 512 2001 6月 18 audit (月はGBコードで0xD4C2)\r
\r
\r
\r
-------------------------------------------------------\r
drwxr-xr-x owner 1024 Nov 6 14:21 Linux/\r
-rwxrwx--- owner 12 Nov 6 1996 test.txt\r
- drwxr-xr-x owner 1024 11\8c\8e 6\93ú 14:21 Linux/\r
- drwxr-xr-x owner 1024 11\8c\8e 6\93ú 14\8e\9e21\95ª Linux/\r
- -rwxrwx--- owner 12 11\8c\8e 6\93ú 1996\94N test.txt\r
+ drwxr-xr-x owner 1024 11月 6日 14:21 Linux/\r
+ drwxr-xr-x owner 1024 11月 6日 14時21分 Linux/\r
+ -rwxrwx--- owner 12 11月 6日 1996年 test.txt\r
\r
*LIST_UNIX_51\r
0 1 2 3 4 5\r
-------------------------------------------------------\r
- drwxr-xr-x owner 1024 11\8c\8e12\93ú 14\8e\9e21\95ª Linux/\r
- -rwxrwx--- owner 12 11\8c\8e12\93ú 1996\94N test.txt\r
+ drwxr-xr-x owner 1024 11月12日 14時21分 Linux/\r
+ -rwxrwx--- owner 12 11月12日 1996年 test.txt\r
\r
0 1 2 3 4 5\r
-------------------------------------------------------\r
*LIST_UNIX_54\r
0 1 2 3 4 5 6\r
-------------------------------------------------------\r
- drwxr-xr-x owner 512 2001 6\8c\8e 18 audit (\8c\8e\82ÍGB\83R\81[\83h\82Å0xD4C2)\r
+ drwxr-xr-x owner 512 2001 6月 18 audit (月はGBコードで0xD4C2)\r
\r
\r
\r
*LIST_UNIX_61\r
0 1 2 3 4 5 6 7 8 9\r
-------------------------------------------------------\r
- drwxr-xr-x 123 owner m group g 1024 11\8c\8e12\93ú 14:21 Linux/\r
- -rwxrwx--- 132 owner m group g 12 11\8c\8e12\93ú 1996 test.txt\r
+ drwxr-xr-x 123 owner m group g 1024 11月12日 14:21 Linux/\r
+ -rwxrwx--- 132 owner m group g 12 11月12日 1996 test.txt\r
\r
*LIST_UNIX_62\r
0 1 2 3 4 5 6 7 8 9\r
*LIST_UNIX_63\r
0 1 2 3 4 5 6 7 8\r
-------------------------------------------------------\r
- drwxr-xr-x123 owner m group g 1024 11\8c\8e12\93ú 14:21 Linux/\r
- -rwxrwx---132 owner m group g 12 11\8c\8e12\93ú 1996 test.txt\r
+ drwxr-xr-x123 owner m group g 1024 11月12日 14:21 Linux/\r
+ -rwxrwx---132 owner m group g 12 11月12日 1996 test.txt\r
\r
*LIST_UNIX_64\r
0 1 2 3 4 5 6 7 8 9 10\r
-------------------------------------------------------\r
- drwxr-xr-x 15 owner m group g 512 2001 6\8c\8e 18 audit (\8c\8e\82ÍGB\83R\81[\83h\82Å0xD4C2)\r
+ drwxr-xr-x 15 owner m group g 512 2001 6月 18 audit (月はGBコードで0xD4C2)\r
\r
*LIST_UNIX_65\r
0 1 2 3 4 5 6 7 8 9\r
-------------------------------------------------------\r
- drwxr-xr-x15 owner m group g 512 2001 6\8c\8e 18 audit (\8c\8e\82ÍGB\83R\81[\83h\82Å0xD4C2)\r
+ drwxr-xr-x15 owner m group g 512 2001 6月 18 audit (月はGBコードで0xD4C2)\r
\r
\r
\r
*LIST_UNIX_71\r
0 1 2 3 4 5 6 7 8\r
-------------------------------------------------------\r
- drwxr-xr-x 123 owner group g 1024 11\8c\8e12\93ú 14:21 Linux/\r
- -rwxrwx--- 132 owner group g 12 11\8c\8e12\93ú 1996 test.txt\r
+ drwxr-xr-x 123 owner group g 1024 11月12日 14:21 Linux/\r
+ -rwxrwx--- 132 owner group g 12 11月12日 1996 test.txt\r
\r
*LIST_UNIX_72\r
0 1 2 3 4 5 6 7 8\r
*LIST_UNIX_73\r
0 1 2 3 4 5 6 7\r
-------------------------------------------------------\r
- drwxr-xr-x123 owner group g 1024 11\8c\8e12\93ú 14:21 Linux/\r
- -rwxrwx---132 owner group g 12 11\8c\8e12\93ú 1996 test.txt\r
+ drwxr-xr-x123 owner group g 1024 11月12日 14:21 Linux/\r
+ -rwxrwx---132 owner group g 12 11月12日 1996 test.txt\r
\r
*LIST_UNIX_74\r
0 1 2 3 4 5 6 7 8 9\r
-------------------------------------------------------\r
- drwxr-xr-x 15 owner group g 512 2001 6\8c\8e 18 audit (\8c\8e\82ÍGB\83R\81[\83h\82Å0xD4C2)\r
+ drwxr-xr-x 15 owner group g 512 2001 6月 18 audit (月はGBコードで0xD4C2)\r
\r
*LIST_UNIX_75\r
0 1 2 3 4 5 6 7 8\r
-------------------------------------------------------\r
- drwxr-xr-x15 owner group g 512 2001 6\8c\8e 18 audit (\8c\8e\82ÍGB\83R\81[\83h\82Å0xD4C2)\r
+ drwxr-xr-x15 owner group g 512 2001 6月 18 audit (月はGBコードで0xD4C2)\r
\r
\r
\r
\r
\r
\r
-*unix\8cn\82Å\88È\89º\82Ì\82æ\82¤\82È\93ú\95t\r
+*unix系で以下のような日付\r
0 1 2 3 4 5 6\r
-------------------------------------------------------\r
drwxr-xr-x123 owner 1024 11/ 6 14:21 Linux/\r
0\r
-------------------------------------------------------\r
test.txt\r
-\81@\81@\83f\83B\83\8c\83N\83g\83\8a\82È\82µ\81A\r
+ ディレクトリなし、\r
\r
*LIST_AS400\r
0 1 2 3 4 5\r
QSECOFR 0 98/05/15 16:01:15 *STMF WWWTEST.BAK\r
\r
*LIST_M1800\r
- 0 1 2 3 4 5 6 (\83t\83@\83C\83\8b\96¼\82Ì\8cã\82ë\82É\83X\83y\81[\83X\82 \82è\81j\r
+ 0 1 2 3 4 5 6 (ファイル名の後ろにスペースあり)\r
-------------------------------------------------------\r
drwx F 400 400 PO 93.10.27 COMMON.PDL.EXCEL/ \r
-rw- F 10000 10000 DA 97.03.04 DTSLOG1.FNA \r
0 1 2 3 4\r
-------------------------------------------------------\r
345 A 12-02-98 10:59 VirtualDevice.java\r
- 0 DIR 12-09-98 09:43 \83f\83B\83\8c\83N\83g\83\8a\r
- 0 DIR 12-09-100 09:43 \83f\83B\83\8c\83N\83g\83\8a\r
+ 0 DIR 12-09-98 09:43 ディレクトリ\r
+ 0 DIR 12-09-100 09:43 ディレクトリ\r
\r
*LIST_MELCOM\r
0 1 2 3 4 5 6 7 8\r
(RWED,RWED,RE,)\r
MAIL.DIR;1 104/248 18-SEP-2001 16:19:39 [CIM,MIZOTE]\r
(RWE,RWE,,)\r
- \81¦VMS\82Ì\8fê\8d\87\88ê\97\97\82ª\95¡\90\94\8ds\82É\95Ê\82ê\82é\8fê\8d\87\82ª\82 \82é\r
+ ※VMSの場合一覧が複数行に別れる場合がある\r
\r
*LIST_OS7_1\r
0 1 2 3\r
\r
------------------------------------*/\r
\r
-/*===== \90Ú\91±\83E\83C\83\93\83h\83E\82Ì\8c`\8e® =====*/\r
+/*===== 接続ウインドウの形式 =====*/\r
\r
-#define DLG_TYPE_CON 0 /* \8aÈ\88Õ\81i\83z\83X\83g\95Ò\8fW\82È\82µ\81j */\r
-#define DLG_TYPE_SET 1 /* \83z\83X\83g\95Ò\8fW\82 \82è */\r
+#define DLG_TYPE_CON 0 /* 簡易(ホスト編集なし) */\r
+#define DLG_TYPE_SET 1 /* ホスト編集あり */\r
\r
-/*===== \83t\83@\83C\83\8b\88ê\97\97\8eæ\93¾\83\82\81[\83h =====*/\r
+/*===== ファイル一覧取得モード =====*/\r
\r
-#define CACHE_NORMAL 0 /* \92Ê\8fí\81i\83L\83\83\83b\83V\83\85\82É\82 \82ê\82Î\8eg\97p\81A\82È\82¯\82ê\82Î\93Ç\82Ý\8d\9e\82Ý\81j */\r
-#define CACHE_REFRESH 1 /* \8fí\82É\93Ç\82Ý\8d\9e\82Ý */\r
-#define CACHE_LASTREAD 2 /* \8dÅ\8cã\82É\93Ç\82Ý\8d\9e\82ñ\82¾\82à\82Ì\82ð\8eg\97p */\r
+#define CACHE_NORMAL 0 /* 通常(キャッシュにあれば使用、なければ読み込み) */\r
+#define CACHE_REFRESH 1 /* 常に読み込み */\r
+#define CACHE_LASTREAD 2 /* 最後に読み込んだものを使用 */\r
\r
-/*===== \8a¿\8e\9a\83R\81[\83h\95Ï\8a· =====*/\r
+/*===== 漢字コード変換 =====*/\r
\r
#define KANJI_SJIS 0 /* SJIS */\r
#define KANJI_JIS 1 /* JIS */\r
#define KANJI_SMB_CAP 4 /* Samba-CAP */\r
#define KANJI_UTF8N 5 /* UTF-8 */\r
\r
-#define KANJI_NOCNV -1 /* \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\82È\82µ */\r
+#define KANJI_NOCNV -1 /* 漢字コード変換なし */\r
\r
#define KANJI_AUTO -1\r
\r
-/*===== \83T\83E\83\93\83h =====*/\r
+/*===== サウンド =====*/\r
\r
-#define SND_CONNECT 0 /* \90Ú\91±\8e\9e\82Ì\83T\83E\83\93\83h */\r
-#define SND_TRANS 1 /* \93]\91\97\8fI\97¹\8e\9e\82Ì\83T\83E\83\93\83h */\r
-#define SND_ERROR 2 /* \83G\83\89\81[\8e\9e\82Ì\83T\83E\83\93\83h */\r
+#define SND_CONNECT 0 /* 接続時のサウンド */\r
+#define SND_TRANS 1 /* 転送終了時のサウンド */\r
+#define SND_ERROR 2 /* エラー時のサウンド */\r
\r
-#define SOUND_TYPES 3 /* \83T\83E\83\93\83h\82Ì\8eí\97Þ */\r
+#define SOUND_TYPES 3 /* サウンドの種類 */\r
\r
-/*===== \83r\83\85\81[\83\8f =====*/\r
+/*===== ビューワ =====*/\r
\r
-#define VIEWERS 3 /* \83r\83\85\81[\83\8f\82Ì\90\94 */\r
+#define VIEWERS 3 /* ビューワの数 */\r
\r
-/*===== \83u\83b\83N\83}\81[\83N =====*/\r
+/*===== ブックマーク =====*/\r
\r
-#define BMARK_SUB_MENU 2 /* \83u\83b\83N\83}\81[\83N\83\81\83j\83\85\81[\82Ì\83T\83u\83\81\83j\83\85\81[\94Ô\8d\86 */\r
-#define DEFAULT_BMARK_ITEM 5 /* \83u\83b\83N\83}\81[\83N\83\81\83j\83\85\81[\82É\82 \82é\8cÅ\92è\95\94\95ª\82Ì\90\94 */\r
-#define MENU_BMARK_TOP 30000 /* 3000\88È\8d~(3100\82\82ç\82¢\82Ü\82Å)\82Í\97\\96ñ\82·\82é */\r
- /* resource.h \82Ì\92è\8b`\82Æ\8fd\82È\82ç\82È\82¢\82æ\82¤\82É */\r
+#define BMARK_SUB_MENU 2 /* ブックマークメニューのサブメニュー番号 */\r
+#define DEFAULT_BMARK_ITEM 5 /* ブックマークメニューにある固定部分の数 */\r
+#define MENU_BMARK_TOP 30000 /* 3000以降(3100くらいまで)は予約する */\r
+ /* resource.h の定義と重ならないように */\r
\r
-#define BMARK_TYPE_NONE 0 /* \83u\83b\83N\83}\81[\83N\96³\82µ */\r
-#define BMARK_TYPE_LOCAL 1 /* \83\8d\81[\83J\83\8b\91¤\82Ì\83u\83b\83N\83}\81[\83N */\r
-#define BMARK_TYPE_REMOTE 2 /* \83z\83X\83g\91¤\82Ì\83u\83b\83N\83}\81[\83N */\r
-#define BMARK_TYPE_BOTH 3 /* \97¼\95û\82Ì\83u\83b\83N\83}\81[\83N */\r
+#define BMARK_TYPE_NONE 0 /* ブックマーク無し */\r
+#define BMARK_TYPE_LOCAL 1 /* ローカル側のブックマーク */\r
+#define BMARK_TYPE_REMOTE 2 /* ホスト側のブックマーク */\r
+#define BMARK_TYPE_BOTH 3 /* 両方のブックマーク */\r
\r
-#define BMARK_MARK_LOCAL "L " /* \83\8d\81[\83J\83\8b\91¤\82Ì\88ó */\r
-#define BMARK_MARK_REMOTE "H " /* \83z\83X\83g\91¤\82Ì\88ó */\r
-#define BMARK_MARK_BOTH "W " /* \97¼\95û\82Ì\88ó */\r
-#define BMARK_MARK_LEN 2 /* \88ó\82Ì\95¶\8e\9a\90\94 */\r
+#define BMARK_MARK_LOCAL "L " /* ローカル側の印 */\r
+#define BMARK_MARK_REMOTE "H " /* ホスト側の印 */\r
+#define BMARK_MARK_BOTH "W " /* 両方の印 */\r
+#define BMARK_MARK_LEN 2 /* 印の文字数 */\r
\r
-#define BMARK_SEP " <> " /* \83\8d\81[\83J\83\8b\91¤\82Æ\83z\83X\83g\91¤\82Ì\8bæ\90Ø\82è */\r
-#define BMARK_SEP_LEN 4 /* \8bæ\90Ø\82è\82Ì\95¶\8e\9a\90\94 */\r
+#define BMARK_SEP " <> " /* ローカル側とホスト側の区切り */\r
+#define BMARK_SEP_LEN 4 /* 区切りの文字数 */\r
\r
-/*===== \83\8c\83W\83X\83g\83\8a\82Ì\83^\83C\83v =====*/\r
+/*===== レジストリのタイプ =====*/\r
\r
-#define REGTYPE_REG 0 /* \83\8c\83W\83X\83g\83\8a */\r
-#define REGTYPE_INI 1 /* INI\83t\83@\83C\83\8b */\r
+#define REGTYPE_REG 0 /* レジストリ */\r
+#define REGTYPE_INI 1 /* INIファイル */\r
\r
-#define REG_SECT_MAX (16*1024) /* \83\8c\83W\83X\83g\83\8a\82Ì\82P\83Z\83N\83V\83\87\83\93\82Ì\8dÅ\91å\83f\81[\83^\83T\83C\83Y */\r
+#define REG_SECT_MAX (16*1024) /* レジストリの1セクションの最大データサイズ */\r
\r
-/*===== \83z\83X\83g\90Ý\92è\82Å\96¾\8e¦\93I\82É\8ew\92è\82·\82é\83z\83X\83g\82Ì\83^\83C\83v =====*/\r
+/*===== ホスト設定で明示的に指定するホストのタイプ =====*/\r
\r
-#define HTYPE_AUTO 0 /* \8e©\93® */\r
-#define HTYPE_ACOS 1 /* ACOS (\91Ò\8b@\8c\8b\8d\87\83t\83@\83C\83\8b\82Ì\8ew\92è\82ª\95K\97v) */\r
+#define HTYPE_AUTO 0 /* 自動 */\r
+#define HTYPE_ACOS 1 /* ACOS (待機結合ファイルの指定が必要) */\r
#define HTYPE_VMS 2 /* VAX VMS */\r
#define HTYPE_IRMX 3 /* IRMX */\r
-#define HTYPE_ACOS_4 4 /* ACOS \83t\83@\83C\83\8b\96¼\82ð('')\82Å\8a\87\82ç\82È\82¢ */\r
+#define HTYPE_ACOS_4 4 /* ACOS ファイル名を('')で括らない */\r
#define HTYPE_STRATUS 5 /* Stratus */\r
#define HTYPE_AGILENT 6 /* Agilent Logic analyzer */\r
#define HTYPE_SHIBASOKU 7 /* Shibasoku LSI test system */\r
\r
-/*===== \83R\83}\83\93\83h\83\89\83C\83\93\83I\83v\83V\83\87\83\93 =====*/\r
+/*===== コマンドラインオプション =====*/\r
\r
-#define OPT_MIRROR 0x0001 /* \83~\83\89\81[\83\8a\83\93\83O\83A\83b\83v\83\8d\81[\83h\82ð\8ds\82¤ */\r
-#define OPT_FORCE 0x0002 /* \83~\83\89\81[\83\8a\83\93\83O\8aJ\8en\82Ì\8am\94F\82ð\82µ\82È\82¢ */\r
-#define OPT_QUIT 0x0004 /* \8fI\97¹\8cã\83v\83\8d\83O\83\89\83\80\8fI\97¹ */\r
-#define OPT_EUC 0x0008 /* \8a¿\8e\9a\83R\81[\83h\82ÍEUC */\r
-#define OPT_JIS 0x0010 /* \8a¿\8e\9a\83R\81[\83h\82ÍJIS */\r
-#define OPT_ASCII 0x0020 /* \83A\83X\83L\81[\93]\91\97\83\82\81[\83h */\r
-#define OPT_BINARY 0x0040 /* \83o\83C\83i\83\8a\93]\91\97\83\82\81[\83h */\r
-#define OPT_AUTO 0x0080 /* \8e©\93®\94»\95Ê */\r
-#define OPT_KANA 0x0100 /* \94¼\8ap\82©\82È\82ð\82»\82Ì\82Ü\82Ü\92Ê\82· */\r
-#define OPT_EUC_NAME 0x0200 /* \83t\83@\83C\83\8b\96¼\82ÍEUC */\r
-#define OPT_JIS_NAME 0x0400 /* \83t\83@\83C\83\8b\96¼\82ÍJIS */\r
-#define OPT_MIRRORDOWN 0x0800 /* \83~\83\89\81[\83\8a\83\93\83O\83_\83E\83\93\83\8d\81[\83h\82ð\8ds\82¤ */\r
-#define OPT_SAVEOFF 0x1000 /* \90Ý\92è\82Ì\95Û\91¶\82ð\92\86\8e~\82·\82é */\r
-#define OPT_SAVEON 0x2000 /* \90Ý\92è\82Ì\95Û\91¶\82ð\8dÄ\8aJ\82·\82é */\r
+#define OPT_MIRROR 0x0001 /* ミラーリングアップロードを行う */\r
+#define OPT_FORCE 0x0002 /* ミラーリング開始の確認をしない */\r
+#define OPT_QUIT 0x0004 /* 終了後プログラム終了 */\r
+#define OPT_EUC 0x0008 /* 漢字コードはEUC */\r
+#define OPT_JIS 0x0010 /* 漢字コードはJIS */\r
+#define OPT_ASCII 0x0020 /* アスキー転送モード */\r
+#define OPT_BINARY 0x0040 /* バイナリ転送モード */\r
+#define OPT_AUTO 0x0080 /* 自動判別 */\r
+#define OPT_KANA 0x0100 /* 半角かなをそのまま通す */\r
+#define OPT_EUC_NAME 0x0200 /* ファイル名はEUC */\r
+#define OPT_JIS_NAME 0x0400 /* ファイル名はJIS */\r
+#define OPT_MIRRORDOWN 0x0800 /* ミラーリングダウンロードを行う */\r
+#define OPT_SAVEOFF 0x1000 /* 設定の保存を中止する */\r
+#define OPT_SAVEON 0x2000 /* 設定の保存を再開する */\r
\r
-/*===== \83z\83X\83g\82Ì\83q\83X\83g\83\8a =====*/\r
+/*===== ホストのヒストリ =====*/\r
\r
-#define HISTORY_MAX 20 /* \83t\83@\83C\83\8b\82Ì\83q\83X\83g\83\8a\82Ì\8dÅ\91å\8cÂ\90\94 */\r
-#define DEF_FMENU_ITEMS 8 /* File\83\81\83j\83\85\81[\82É\82 \82é\8d\80\96Ú\90\94\82Ì\8f\89\8aú\92l */\r
+#define HISTORY_MAX 20 /* ファイルのヒストリの最大個数 */\r
+#define DEF_FMENU_ITEMS 8 /* Fileメニューにある項目数の初期値 */\r
\r
/*===== SOCKS4 =====*/\r
\r
-#define SOCKS4_VER 4 /* SOCKS\82Ì\83o\81[\83W\83\87\83\93 */\r
+#define SOCKS4_VER 4 /* SOCKSのバージョン */\r
\r
-#define SOCKS4_CMD_CONNECT 1 /* CONNECT\83R\83}\83\93\83h */\r
-#define SOCKS4_CMD_BIND 2 /* BIND\83R\83}\83\93\83h */\r
+#define SOCKS4_CMD_CONNECT 1 /* CONNECTコマンド */\r
+#define SOCKS4_CMD_BIND 2 /* BINDコマンド */\r
\r
-/* \83\8a\83U\83\8b\83g\83R\81[\83h */\r
-#define SOCKS4_RES_OK 90 /* \97v\8b\81\82Í\8b\96\89Â\82³\82ê\82½ */\r
- /* \82»\82Ì\91¼\82Ì\83R\81[\83h\82Í\83`\83F\83b\83N\82µ\82È\82¢\82Ì\82Å\92è\8b`\82µ\82È\82¢ */\r
+/* リザルトコード */\r
+#define SOCKS4_RES_OK 90 /* 要求は許可された */\r
+ /* その他のコードはチェックしないので定義しない */\r
\r
/*===== SOCKS5 =====*/\r
\r
-#define SOCKS5_VER 5 /* SOCKS\82Ì\83o\81[\83W\83\87\83\93 */\r
+#define SOCKS5_VER 5 /* SOCKSのバージョン */\r
\r
-#define SOCKS5_CMD_CONNECT 1 /* CONNECT\83R\83}\83\93\83h */\r
-#define SOCKS5_CMD_BIND 2 /* BIND\83R\83}\83\93\83h */\r
+#define SOCKS5_CMD_CONNECT 1 /* CONNECTコマンド */\r
+#define SOCKS5_CMD_BIND 2 /* BINDコマンド */\r
\r
-#define SOCKS5_AUTH_NONE 0 /* \94F\8fØ\96³\82µ */\r
+#define SOCKS5_AUTH_NONE 0 /* 認証無し */\r
#define SOCKS5_AUTH_GSSAPI 1 /* GSS-API */\r
#define SOCKS5_AUTH_USER 2 /* Username/Password */\r
\r
#define SOCKS5_ADRS_NAME 3 /* Domain name */\r
#define SOCKS5_ADRS_IPV6 4 /* IP V6 address */\r
\r
-#define SOCKS5_USERAUTH_VER 1 /* Username\Password\94F\8fØ\82Ì\83o\81[\83W\83\87\83\93 */\r
+#define SOCKS5_USERAUTH_VER 1 /* Username\Password認証のバージョン */\r
\r
-/* \83\8a\83U\83\8b\83g\83R\81[\83h */\r
+/* リザルトコード */\r
#define SOCKS5_RES_OK 0x00 /* succeeded */\r
- /* \82»\82Ì\91¼\82Ì\83R\81[\83h\82Í\83`\83F\83b\83N\82µ\82È\82¢\82Ì\82Å\92è\8b`\82µ\82È\82¢ */\r
+ /* その他のコードはチェックしないので定義しない */\r
\r
-/*===== \92\86\92f\83R\81[\83h =====*/\r
+/*===== 中断コード =====*/\r
\r
-#define ABORT_NONE 0 /* \93]\91\97\92\86\92f\82È\82µ */\r
-#define ABORT_USER 1 /* \83\86\81[\83U\82É\82æ\82é\92\86\92f */\r
-#define ABORT_ERROR 2 /* \83G\83\89\81[\82É\82æ\82é\92\86\92f */\r
-#define ABORT_DISKFULL 3 /* \83f\83B\83X\83N\83t\83\8b\82æ\82é\92\86\92f */\r
+#define ABORT_NONE 0 /* 転送中断なし */\r
+#define ABORT_USER 1 /* ユーザによる中断 */\r
+#define ABORT_ERROR 2 /* エラーによる中断 */\r
+#define ABORT_DISKFULL 3 /* ディスクフルよる中断 */\r
\r
-/*===== FireWall\82Ì\8eí\97Þ =====*/\r
+/*===== FireWallの種類 =====*/\r
\r
-#define FWALL_NONE 0 /* \82È\82µ */\r
-#define FWALL_FU_FP_SITE 1 /* FW user \81¨ FW pass \81¨ SITE host */\r
-#define FWALL_FU_FP_USER 2 /* FW user \81¨ FW pass \81¨ USER user@host */\r
+#define FWALL_NONE 0 /* なし */\r
+#define FWALL_FU_FP_SITE 1 /* FW user → FW pass → SITE host */\r
+#define FWALL_FU_FP_USER 2 /* FW user → FW pass → USER user@host */\r
#define FWALL_USER 3 /* USER user@host */\r
#define FWALL_OPEN 4 /* OPEN host */\r
#define FWALL_SOCKS4 5 /* SOCKS4 */\r
-#define FWALL_SOCKS5_NOAUTH 6 /* SOCKS5 (\94F\8fØ\82È\82µ) */\r
-#define FWALL_SOCKS5_USER 7 /* SOCKS5 (Username/Password\94F\8fØ) */\r
-#define FWALL_FU_FP 8 /* FW user \81¨ FW pass */\r
+#define FWALL_SOCKS5_NOAUTH 6 /* SOCKS5 (認証なし) */\r
+#define FWALL_SOCKS5_USER 7 /* SOCKS5 (Username/Password認証) */\r
+#define FWALL_FU_FP 8 /* FW user → FW pass */\r
#define FWALL_SIDEWINDER 9 /* USER FWuser:FWpass@host */\r
\r
-/*===== \83\8f\83\93\83^\83C\83\80\83p\83X\83\8f\81[\83h =====*/\r
+/*===== ワンタイムパスワード =====*/\r
\r
-/* \83R\81[\83h\82Ì\8eí\97Þ */\r
-#define SECURITY_DISABLE 0 /* \8eg\97p\82µ\82È\82¢ */\r
-#define SECURITY_AUTO 1 /* \8e©\93®\94F\8e¯ */\r
+/* コードの種類 */\r
+#define SECURITY_DISABLE 0 /* 使用しない */\r
+#define SECURITY_AUTO 1 /* 自動認識 */\r
#define MD4 2 /* MD4 */\r
#define MD5 3 /* MD5 */\r
#define SHA1 4 /* SHA-1 */\r
\r
-#define MAX_SEED_LEN 16 /* Seed\82Ì\95¶\8e\9a\90\94 */\r
+#define MAX_SEED_LEN 16 /* Seedの文字数 */\r
\r
-/*===== \8dÄ\8bA\93I\82È\83t\83@\83C\83\8b\8c\9f\8dõ\82Ì\95û\96@ =====*/\r
+/*===== 再帰的なファイル検索の方法 =====*/\r
\r
-#define RDIR_NONE 0 /* \8dÄ\8bA\8c\9f\8dõ\82È\82µ */\r
+#define RDIR_NONE 0 /* 再帰検索なし */\r
#define RDIR_NLST 1 /* NLST -R */\r
-#define RDIR_CWD 2 /* CWD\82Å\88Ú\93® */\r
+#define RDIR_CWD 2 /* CWDで移動 */\r
\r
-/*===== VAX VMS \8aÖ\8cW =====*/\r
+/*===== VAX VMS 関係 =====*/\r
\r
-#define BLOCK_SIZE 512 /* 1\83u\83\8d\83b\83N\82Ì\83o\83C\83g\90\94 */\r
+#define BLOCK_SIZE 512 /* 1ブロックのバイト数 */\r
\r
-/*===== \90Ý\92è\82Ì\83\8c\83x\83\8b =====*/\r
+/*===== 設定のレベル =====*/\r
\r
-#define SET_LEVEL_GROUP 0x8000 /* \83O\83\8b\81[\83v\82Ì\83t\83\89\83O */\r
+#define SET_LEVEL_GROUP 0x8000 /* グループのフラグ */\r
#define SET_LEVEL_MASK 0x7FFF\r
#define SET_LEVEL_SAME 0x7FFF\r
\r
-/*===== \93ú\95t\81A\90\94\92l\82Ì\95\\8e¦\8c`\8e® =====*/\r
+/*===== 日付、数値の表示形式 =====*/\r
\r
-#define DISPFORM_LEGACY 0 /* \8cÅ\92è\8f\91\8e® */\r
-#define DISPFORM_LOCALE 1 /* \83R\83\93\83g\83\8d\81[\83\8b\83p\83l\83\8b\82É\8f]\82¤ */\r
+#define DISPFORM_LEGACY 0 /* 固定書式 */\r
+#define DISPFORM_LOCALE 1 /* コントロールパネルに従う */\r
\r
-/*===== \83t\83@\83C\83\8b\88ê\97\97\82É\91¶\8dÝ\82µ\82½\8fî\95ñ =====*/\r
+/*===== ファイル一覧に存在した情報 =====*/\r
\r
-#define FINFO_DATE 0x01 /* \93ú\95t */\r
-#define FINFO_TIME 0x02 /* \8e\9e\8aÔ */\r
-#define FINFO_SIZE 0x04 /* \83T\83C\83Y */\r
-#define FINFO_ATTR 0x08 /* \91®\90« */\r
-#define FINFO_ALL 0xFF /* \91S\82Ä */\r
+#define FINFO_DATE 0x01 /* 日付 */\r
+#define FINFO_TIME 0x02 /* 時間 */\r
+#define FINFO_SIZE 0x04 /* サイズ */\r
+#define FINFO_ATTR 0x08 /* 属性 */\r
+#define FINFO_ALL 0xFF /* 全て */\r
\r
-/*===== GetMasterPasswordStatus\82Å\8eg\82¤\83R\81[\83h =====*/\r
+/*===== GetMasterPasswordStatusで使うコード =====*/\r
#define PASSWORD_OK 0\r
#define PASSWORD_UNMATCH 2\r
#define BAD_PASSWORD_HASH 3\r
\r
-/*===== \88Ã\8d\86\89»\83p\83X\83\8f\81[\83h\90Ý\92è =====*/\r
+/*===== 暗号化パスワード設定 =====*/\r
#define DEFAULT_PASSWORD "DefaultPassword"\r
#define MAX_PASSWORD_LEN 128\r
\r
-// \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+// 暗号化通信対応\r
#define CRYPT_NONE 0\r
#define CRYPT_FTPES 1\r
#define CRYPT_FTPIS 2\r
\r
\r
/*=================================================\r
-* \83X\83g\83\89\83N\83`\83\83\r
+* ストラクチャ\r
*=================================================*/\r
\r
-/*===== \83z\83X\83g\90Ý\92è\83f\81[\83^ =====*/\r
+/*===== ホスト設定データ =====*/\r
\r
typedef struct {\r
- int Level; /* \90Ý\92è\82Ì\83\8c\83x\83\8b */\r
- /* \92Ê\8fí\82Í\83O\83\8b\81[\83v\82Ì\83t\83\89\83O\82Ì\82Ý\82ª\97L\8cø */\r
- /* \83\8c\83x\83\8b\90\94\82Í\90Ý\92è\82Ì\93o\98^\81^\8cÄ\8fo\8e\9e\82Ì\82Ý\82Å\8eg\97p */\r
- char HostName[HOST_NAME_LEN+1]; /* \90Ý\92è\96¼ */\r
- char HostAdrs[HOST_ADRS_LEN+1]; /* \83z\83X\83g\96¼ */\r
- char UserName[USER_NAME_LEN+1]; /* \83\86\81[\83U\96¼ */\r
- char PassWord[PASSWORD_LEN+1]; /* \83p\83X\83\8f\81[\83h */\r
- char Account[ACCOUNT_LEN+1]; /* \83A\83J\83E\83\93\83g */\r
- char LocalInitDir[INIT_DIR_LEN+1]; /* \83\8d\81[\83J\83\8b\82Ì\8aJ\8en\83f\83B\83\8c\83N\83g\83\8a */\r
- char RemoteInitDir[INIT_DIR_LEN+1]; /* \83z\83X\83g\82Ì\8aJ\8en\83f\83B\83\8c\83N\83g\83\8a */\r
- char BookMark[BOOKMARK_SIZE]; /* \83u\83b\83N\83}\81[\83N */\r
- char ChmodCmd[CHMOD_CMD_LEN+1]; /* \91®\90«\95Ï\8dX\83R\83}\83\93\83h */\r
- char LsName[NLST_NAME_LEN+1]; /* NLST\82É\95t\82¯\82é\83t\83@\83C\83\8b\96¼/\83I\83v\83V\83\87\83\93*/\r
- char InitCmd[INITCMD_LEN+1]; /* \83z\83X\83g\82Ì\8f\89\8aú\89»\83R\83}\83\93\83h */\r
- int Port; /* \83|\81[\83g\94Ô\8d\86 */\r
- int Anonymous; /* Anonymous\83t\83\89\83O */\r
- int KanjiCode; /* \83z\83X\83g\82Ì\8a¿\8e\9a\83R\81[\83h (KANJI_xxx) */\r
- int KanaCnv; /* \94¼\8ap\83J\83i\82ð\91S\8ap\82É\95Ï\8a·(YES/NO) */\r
- int NameKanjiCode; /* \83t\83@\83C\83\8b\96¼\82Ì\8a¿\8e\9a\83R\81[\83h (KANJI_xxx) */\r
- int NameKanaCnv; /* \83t\83@\83C\83\8b\96¼\82Ì\94¼\8ap\83J\83i\82ð\91S\8ap\82É\95Ï\8a·(YES/NO) */\r
- int Pasv; /* PASV\83\82\81[\83h (YES/NO) */\r
- int FireWall; /* FireWall\82ð\8eg\82¤ (YES/NO) */\r
- int ListCmdOnly; /* "LIST"\83R\83}\83\93\83h\82Ì\82Ý\8eg\97p\82·\82é */\r
- int UseNLST_R; /* "NLST -R"\83R\83}\83\93\83h\82ð\8eg\97p\82·\82é */\r
- int LastDir; /* \8dÅ\8cã\82É\83A\83N\83Z\83X\82µ\82½\83t\83H\83\8b\83_\82ð\95Û\91¶ */\r
- int TimeZone; /* \83^\83C\83\80\83]\81[\83\93 (-12\81`12) */\r
- int HostType; /* \83z\83X\83g\82Ì\83^\83C\83v (HTYPE_xxx) */\r
- int SyncMove; /* \83t\83H\83\8b\83_\93¯\8e\9e\88Ú\93® (YES/NO) */\r
- int NoFullPath; /* \83t\83\8b\83p\83X\82Å\83t\83@\83C\83\8b\83A\83N\83Z\83X\82µ\82È\82¢ (YES/NO) */\r
- ulong Sort; /* \83\\81[\83g\95û\96@ (0x11223344 : 11=LFsort 22=LDsort 33=RFsort 44=RFsort) */\r
- int Security; /* \83Z\83L\83\85\83\8a\83e\83B (SECURITY_xxx , MDx) */\r
- int Dialup; /* \83_\83C\83A\83\8b\83A\83b\83v\90Ú\91±\82·\82é\82©\82Ç\82¤\82© (YES/NO) */\r
- int DialupAlways; /* \8fí\82É\82±\82Ì\83G\83\93\83g\83\8a\82Ö\90Ú\91±\82·\82é\82©\82Ç\82¤\82© (YES/NO) */\r
- int DialupNotify; /* \8dÄ\90Ú\91±\82Ì\8dÛ\82É\8am\94F\82·\82é (YES/NO) */\r
- char DialEntry[RAS_NAME_LEN+1]; /* \83_\83C\83A\83\8b\83A\83b\83v\83G\83\93\83g\83\8a */\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
- int CryptMode; /* \88Ã\8d\86\89»\92Ê\90M\83\82\81[\83h (CRYPT_xxx) */\r
- int UseFTPES; /* FTPES\82Å\90Ú\91±\82·\82é (YES/NO) */\r
- int UseFTPIS; /* FTPIS\82Å\90Ú\91±\82·\82é (YES/NO) */\r
- int UseSFTP; /* SFTP\82Å\90Ú\91±\82·\82é (YES/NO) */\r
+ int Level; /* 設定のレベル */\r
+ /* 通常はグループのフラグのみが有効 */\r
+ /* レベル数は設定の登録/呼出時のみで使用 */\r
+ char HostName[HOST_NAME_LEN+1]; /* 設定名 */\r
+ char HostAdrs[HOST_ADRS_LEN+1]; /* ホスト名 */\r
+ char UserName[USER_NAME_LEN+1]; /* ユーザ名 */\r
+ char PassWord[PASSWORD_LEN+1]; /* パスワード */\r
+ char Account[ACCOUNT_LEN+1]; /* アカウント */\r
+ char LocalInitDir[INIT_DIR_LEN+1]; /* ローカルの開始ディレクトリ */\r
+ char RemoteInitDir[INIT_DIR_LEN+1]; /* ホストの開始ディレクトリ */\r
+ char BookMark[BOOKMARK_SIZE]; /* ブックマーク */\r
+ char ChmodCmd[CHMOD_CMD_LEN+1]; /* 属性変更コマンド */\r
+ char LsName[NLST_NAME_LEN+1]; /* NLSTに付けるファイル名/オプション*/\r
+ char InitCmd[INITCMD_LEN+1]; /* ホストの初期化コマンド */\r
+ int Port; /* ポート番号 */\r
+ int Anonymous; /* Anonymousフラグ */\r
+ int KanjiCode; /* ホストの漢字コード (KANJI_xxx) */\r
+ int KanaCnv; /* 半角カナを全角に変換(YES/NO) */\r
+ int NameKanjiCode; /* ファイル名の漢字コード (KANJI_xxx) */\r
+ int NameKanaCnv; /* ファイル名の半角カナを全角に変換(YES/NO) */\r
+ int Pasv; /* PASVモード (YES/NO) */\r
+ int FireWall; /* FireWallを使う (YES/NO) */\r
+ int ListCmdOnly; /* "LIST"コマンドのみ使用する */\r
+ int UseNLST_R; /* "NLST -R"コマンドを使用する */\r
+ int LastDir; /* 最後にアクセスしたフォルダを保存 */\r
+ int TimeZone; /* タイムゾーン (-12~12) */\r
+ int HostType; /* ホストのタイプ (HTYPE_xxx) */\r
+ int SyncMove; /* フォルダ同時移動 (YES/NO) */\r
+ int NoFullPath; /* フルパスでファイルアクセスしない (YES/NO) */\r
+ ulong Sort; /* ソート方法 (0x11223344 : 11=LFsort 22=LDsort 33=RFsort 44=RFsort) */\r
+ int Security; /* セキュリティ (SECURITY_xxx , MDx) */\r
+ int Dialup; /* ダイアルアップ接続するかどうか (YES/NO) */\r
+ int DialupAlways; /* 常にこのエントリへ接続するかどうか (YES/NO) */\r
+ int DialupNotify; /* 再接続の際に確認する (YES/NO) */\r
+ char DialEntry[RAS_NAME_LEN+1]; /* ダイアルアップエントリ */\r
+ // 暗号化通信対応\r
+ int CryptMode; /* 暗号化通信モード (CRYPT_xxx) */\r
+ int UseFTPES; /* FTPESで接続する (YES/NO) */\r
+ int UseFTPIS; /* FTPISで接続する (YES/NO) */\r
+ int UseSFTP; /* SFTPで接続する (YES/NO) */\r
} HOSTDATA;\r
\r
\r
-/*===== \83z\83X\83g\90Ý\92è\83\8a\83X\83g =====*/\r
+/*===== ホスト設定リスト =====*/\r
\r
typedef struct hostlistdata {\r
- HOSTDATA Set; /* \83z\83X\83g\90Ý\92è\83f\81[\83^ */\r
+ HOSTDATA Set; /* ホスト設定データ */\r
struct hostlistdata *Next;\r
struct hostlistdata *Prev;\r
struct hostlistdata *Child;\r
} HOSTLISTDATA;\r
\r
\r
-/*===== \90Ú\91±\83q\83X\83g\83\8a\83\8a\83X\83g =====*/\r
+/*===== 接続ヒストリリスト =====*/\r
\r
typedef struct historydata {\r
- char HostAdrs[HOST_ADRS_LEN+1]; /* \83z\83X\83g\96¼ */\r
- char UserName[USER_NAME_LEN+1]; /* \83\86\81[\83U\96¼ */\r
- char PassWord[PASSWORD_LEN+1]; /* \83p\83X\83\8f\81[\83h */\r
- char Account[ACCOUNT_LEN+1]; /* \83A\83J\83E\83\93\83g */\r
- char LocalInitDir[INIT_DIR_LEN+1]; /* \83f\83B\83\8c\83N\83g\83\8a */\r
- char RemoteInitDir[INIT_DIR_LEN+1]; /* \83f\83B\83\8c\83N\83g\83\8a */\r
- char ChmodCmd[CHMOD_CMD_LEN+1]; /* \91®\90«\95Ï\8dX\83R\83}\83\93\83h */\r
- char LsName[NLST_NAME_LEN+1]; /* NLST\82É\95t\82¯\82é\83t\83@\83C\83\8b\96¼/\83I\83v\83V\83\87\83\93*/\r
- char InitCmd[INITCMD_LEN+1]; /* \83z\83X\83g\82Ì\8f\89\8aú\89»\83R\83}\83\93\83h */\r
- int Port; /* \83|\81[\83g\94Ô\8d\86 */\r
- int KanjiCode; /* \83z\83X\83g\82Ì\8a¿\8e\9a\83R\81[\83h (KANJI_xxx) */\r
- int KanaCnv; /* \94¼\8ap\83J\83i\82ð\91S\8ap\82É\95Ï\8a·(YES/NO) */\r
- int NameKanjiCode; /* \83t\83@\83C\83\8b\96¼\82Ì\8a¿\8e\9a\83R\81[\83h (KANJI_xxx) */\r
- int NameKanaCnv; /* \83t\83@\83C\83\8b\96¼\82Ì\94¼\8ap\83J\83i\82ð\91S\8ap\82É\95Ï\8a·(YES/NO) */\r
- int Pasv; /* PASV\83\82\81[\83h (YES/NO) */\r
- int FireWall; /* FireWall\82ð\8eg\82¤ (YES/NO) */\r
- int ListCmdOnly; /* "LIST"\83R\83}\83\93\83h\82Ì\82Ý\8eg\97p\82·\82é */\r
- int UseNLST_R; /* "NLST -R"\83R\83}\83\93\83h\82ð\8eg\97p\82·\82é */\r
- int TimeZone; /* \83^\83C\83\80\83]\81[\83\93 (-12\81`12) */\r
- int HostType; /* \83z\83X\83g\82Ì\83^\83C\83v (HTYPE_xxx) */\r
- int SyncMove; /* \83t\83H\83\8b\83_\93¯\8e\9e\88Ú\93® (YES/NO) */\r
- int NoFullPath; /* \83t\83\8b\83p\83X\82Å\83t\83@\83C\83\8b\83A\83N\83Z\83X\82µ\82È\82¢ (YES/NO) */\r
- ulong Sort; /* \83\\81[\83g\95û\96@ (0x11223344 : 11=LFsort 22=LDsort 33=RFsort 44=RFsort) */\r
- int Security; /* \83Z\83L\83\85\83\8a\83e\83B (OTP_xxx , MDx) */\r
- int Type; /* \93]\91\97\95û\96@ (TYPE_xx) */\r
- int Dialup; /* \83_\83C\83A\83\8b\83A\83b\83v\90Ú\91±\82·\82é\82©\82Ç\82¤\82© (YES/NO) */\r
- int DialupAlways; /* \8fí\82É\82±\82Ì\83G\83\93\83g\83\8a\82Ö\90Ú\91±\82·\82é\82©\82Ç\82¤\82© (YES/NO) */\r
- int DialupNotify; /* \8dÄ\90Ú\91±\82Ì\8dÛ\82É\8am\94F\82·\82é (YES/NO) */\r
- char DialEntry[RAS_NAME_LEN+1]; /* \83_\83C\83A\83\8b\83A\83b\83v\83G\83\93\83g\83\8a */\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
- int UseFTPES; /* FTPES\82Å\90Ú\91±\82·\82é (YES/NO) */\r
- int UseFTPIS; /* FTPIS\82Å\90Ú\91±\82·\82é (YES/NO) */\r
- int UseSFTP; /* SFTP\82Å\90Ú\91±\82·\82é (YES/NO) */\r
+ char HostAdrs[HOST_ADRS_LEN+1]; /* ホスト名 */\r
+ char UserName[USER_NAME_LEN+1]; /* ユーザ名 */\r
+ char PassWord[PASSWORD_LEN+1]; /* パスワード */\r
+ char Account[ACCOUNT_LEN+1]; /* アカウント */\r
+ char LocalInitDir[INIT_DIR_LEN+1]; /* ディレクトリ */\r
+ char RemoteInitDir[INIT_DIR_LEN+1]; /* ディレクトリ */\r
+ char ChmodCmd[CHMOD_CMD_LEN+1]; /* 属性変更コマンド */\r
+ char LsName[NLST_NAME_LEN+1]; /* NLSTに付けるファイル名/オプション*/\r
+ char InitCmd[INITCMD_LEN+1]; /* ホストの初期化コマンド */\r
+ int Port; /* ポート番号 */\r
+ int KanjiCode; /* ホストの漢字コード (KANJI_xxx) */\r
+ int KanaCnv; /* 半角カナを全角に変換(YES/NO) */\r
+ int NameKanjiCode; /* ファイル名の漢字コード (KANJI_xxx) */\r
+ int NameKanaCnv; /* ファイル名の半角カナを全角に変換(YES/NO) */\r
+ int Pasv; /* PASVモード (YES/NO) */\r
+ int FireWall; /* FireWallを使う (YES/NO) */\r
+ int ListCmdOnly; /* "LIST"コマンドのみ使用する */\r
+ int UseNLST_R; /* "NLST -R"コマンドを使用する */\r
+ int TimeZone; /* タイムゾーン (-12~12) */\r
+ int HostType; /* ホストのタイプ (HTYPE_xxx) */\r
+ int SyncMove; /* フォルダ同時移動 (YES/NO) */\r
+ int NoFullPath; /* フルパスでファイルアクセスしない (YES/NO) */\r
+ ulong Sort; /* ソート方法 (0x11223344 : 11=LFsort 22=LDsort 33=RFsort 44=RFsort) */\r
+ int Security; /* セキュリティ (OTP_xxx , MDx) */\r
+ int Type; /* 転送方法 (TYPE_xx) */\r
+ int Dialup; /* ダイアルアップ接続するかどうか (YES/NO) */\r
+ int DialupAlways; /* 常にこのエントリへ接続するかどうか (YES/NO) */\r
+ int DialupNotify; /* 再接続の際に確認する (YES/NO) */\r
+ char DialEntry[RAS_NAME_LEN+1]; /* ダイアルアップエントリ */\r
+ // 暗号化通信対応\r
+ int UseFTPES; /* FTPESで接続する (YES/NO) */\r
+ int UseFTPIS; /* FTPISで接続する (YES/NO) */\r
+ int UseSFTP; /* SFTPで接続する (YES/NO) */\r
struct historydata *Next;\r
} HISTORYDATA;\r
\r
\r
-/*===== \93]\91\97\83t\83@\83C\83\8b\83\8a\83X\83g =====*/\r
+/*===== 転送ファイルリスト =====*/\r
\r
typedef struct transpacket {\r
SOCKET ctrl_skt; /* Socket */\r
char Cmd[40]; /* STOR/RETR/MKD */\r
- char RemoteFile[FMAX_PATH+1]; /* \83z\83X\83g\91¤\82Ì\83t\83@\83C\83\8b\96¼\81i\83t\83\8b\83p\83X\81j */\r
- /* VMS\82Ì\8e\9e\82Í ddd[xxx.yyy]/yyy/zzz \82Ì\82æ\82¤\82É */\r
- /* \82È\82Á\82Ä\82é\82Ì\82Å\92\8d\88Ó */\r
- char LocalFile[FMAX_PATH+1]; /* \83\8d\81[\83J\83\8b\91¤\82Ì\83t\83@\83C\83\8b\96¼\81i\83t\83\8b\83p\83X\81j */\r
- int Type; /* \93]\91\97\95û\96@ (TYPE_xx) */\r
- LONGLONG Size; /* \83t\83@\83C\83\8b\82Ì\83T\83C\83Y */\r
- LONGLONG ExistSize; /* \82·\82Å\82É\91¶\8dÝ\82·\82é\83t\83@\83C\83\8b\82Ì\83T\83C\83Y */\r
- /* \93]\91\97\92\86\82Í\81A\93]\91\97\82µ\82½\83t\83@\83C\83\8b\82Ì\83T\83C\83Y\82ð\8ai\94[\82·\82é */\r
- FILETIME Time; /* \83t\83@\83C\83\8b\82Ì\8e\9e\8aÔ(UTC) */\r
- int Attr; /* \83t\83@\83C\83\8b\82Ì\91®\90« */\r
- int KanjiCode; /* \8a¿\8e\9a\83R\81[\83h (KANJI_xxx) */\r
- // UTF-8\91Î\89\9e\r
- int KanjiCodeDesired; /* \83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h (KANJI_xxx) */\r
- int KanaCnv; /* \94¼\8ap\83J\83i\82ð\91S\8ap\82É\95Ï\8a·(YES/NO) */\r
- int Mode; /* \93]\91\97\83\82\81[\83h (EXIST_xxx) */\r
- HWND hWndTrans; /* \93]\91\97\92\86\83_\83C\83A\83\8d\83O\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b */\r
- int Abort; /* \93]\91\97\92\86\8e~\83t\83\89\83O (ABORT_xxx) */\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
- int CryptMode; /* \88Ã\8d\86\89»\92Ê\90M\83\82\81[\83h (CRYPT_xxx) */\r
+ char RemoteFile[FMAX_PATH+1]; /* ホスト側のファイル名(フルパス) */\r
+ /* VMSの時は ddd[xxx.yyy]/yyy/zzz のように */\r
+ /* なってるので注意 */\r
+ char LocalFile[FMAX_PATH+1]; /* ローカル側のファイル名(フルパス) */\r
+ int Type; /* 転送方法 (TYPE_xx) */\r
+ LONGLONG Size; /* ファイルのサイズ */\r
+ LONGLONG ExistSize; /* すでに存在するファイルのサイズ */\r
+ /* 転送中は、転送したファイルのサイズを格納する */\r
+ FILETIME Time; /* ファイルの時間(UTC) */\r
+ int Attr; /* ファイルの属性 */\r
+ int KanjiCode; /* 漢字コード (KANJI_xxx) */\r
+ // UTF-8対応\r
+ int KanjiCodeDesired; /* ローカルの漢字コード (KANJI_xxx) */\r
+ int KanaCnv; /* 半角カナを全角に変換(YES/NO) */\r
+ int Mode; /* 転送モード (EXIST_xxx) */\r
+ HWND hWndTrans; /* 転送中ダイアログのウインドウハンドル */\r
+ int Abort; /* 転送中止フラグ (ABORT_xxx) */\r
+ // 暗号化通信対応\r
+ int CryptMode; /* 暗号化通信モード (CRYPT_xxx) */\r
struct transpacket *Next;\r
} TRANSPACKET;\r
\r
\r
-/*===== \83t\83@\83C\83\8b\83\8a\83X\83g =====*/\r
+/*===== ファイルリスト =====*/\r
\r
typedef struct filelist {\r
- char File[FMAX_PATH+1]; /* \83t\83@\83C\83\8b\96¼ */\r
- char Node; /* \8eí\97Þ (NODE_xxx) */\r
- char Link; /* \83\8a\83\93\83N\83t\83@\83C\83\8b\82©\82Ç\82¤\82© (YES/NO) */\r
- LONGLONG Size; /* \83t\83@\83C\83\8b\83T\83C\83Y */\r
- int Attr; /* \91®\90« */\r
- FILETIME Time; /* \8e\9e\8aÔ(UTC) */\r
- char Owner[OWNER_NAME_LEN+1]; /* \83I\81[\83i\96¼ */\r
- char InfoExist; /* \83t\83@\83C\83\8b\88ê\97\97\82É\91¶\8dÝ\82µ\82½\8fî\95ñ\82Ì\83t\83\89\83O (FINFO_xxx) */\r
+ char File[FMAX_PATH+1]; /* ファイル名 */\r
+ char Node; /* 種類 (NODE_xxx) */\r
+ char Link; /* リンクファイルかどうか (YES/NO) */\r
+ LONGLONG Size; /* ファイルサイズ */\r
+ int Attr; /* 属性 */\r
+ FILETIME Time; /* 時間(UTC) */\r
+ char Owner[OWNER_NAME_LEN+1]; /* オーナ名 */\r
+ char InfoExist; /* ファイル一覧に存在した情報のフラグ (FINFO_xxx) */\r
struct filelist *Next;\r
} FILELIST;\r
\r
\r
-/*===== \83R\81[\83h\95Ï\8a·\8fî\95ñ\83p\83P\83b\83g =====*/\r
+/*===== コード変換情報パケット =====*/\r
\r
typedef char * (*funcptr)(struct codeconvinfo *, char , char *);\r
\r
typedef struct codeconvinfo {\r
- char *Str; /* \95¶\8e\9a\97ñ */\r
- int StrLen; /* \95¶\8e\9a\97ñ\82Ì\92·\82³ */\r
- int KanaCnv; /* \94¼\8ap\83J\83^\83J\83i\82ð\91S\8ap\82É\95Ï\8a·\82·\82é\82©\82Ç\82¤\82© (YES/NO) */\r
- char *Buf; /* \95Ï\8a·\8cã\82Ì\95¶\8e\9a\97ñ\82ð\8ai\94[\82·\82é\83o\83b\83t\83@ */\r
- int BufSize; /* \95Ï\8a·\8cã\82Ì\95¶\8e\9a\97ñ\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\82Ì\83T\83C\83Y */\r
- int OutLen; /* \95Ï\8a·\8cã\82Ì\95¶\8e\9a\97ñ\82Ì\83T\83C\83Y */\r
- int KanjiMode; /* \8a¿\8e\9a\83\82\81[\83h\83t\83\89\83O(YES/NO) (\93à\95\94\8f\88\97\9d\97p\83\8f\81[\83N) */\r
- int EscProc; /* \83G\83X\83P\81[\83v\83V\81[\83P\83\93\83X\95¶\8e\9a\90\94 (0\81`) (\93à\95\94\8f\88\97\9d\97p\83\8f\81[\83N) */\r
- char EscCode[2]; /* \83G\83X\83P\81[\83v\83V\81[\83P\83\93\83X\95¶\8e\9a\95Û\91¶\97p (\93à\95\94\8f\88\97\9d\97p\83\8f\81[\83N) */\r
- char KanjiFst; /* \8a¿\8e\9a\83R\81[\83h\82P\83o\83C\83g\96Ú\95Û\91¶\97p (\93à\95\94\8f\88\97\9d\97p\83\8f\81[\83N) */\r
- char KanaPrev; /* \94¼\8ap\83J\83^\83J\83i\95Û\91¶\97p (\93à\95\94\8f\88\97\9d\97p\83\8f\81[\83N) */\r
- funcptr KanaProc; /* \94¼\8ap\83J\83^\83J\83i\8f\88\97\9d\83\8b\81[\83`\83\93 (\93à\95\94\8f\88\97\9d\97p\83\8f\81[\83N) */\r
+ char *Str; /* 文字列 */\r
+ int StrLen; /* 文字列の長さ */\r
+ int KanaCnv; /* 半角カタカナを全角に変換するかどうか (YES/NO) */\r
+ char *Buf; /* 変換後の文字列を格納するバッファ */\r
+ int BufSize; /* 変換後の文字列を格納するバッファのサイズ */\r
+ int OutLen; /* 変換後の文字列のサイズ */\r
+ int KanjiMode; /* 漢字モードフラグ(YES/NO) (内部処理用ワーク) */\r
+ int EscProc; /* エスケープシーケンス文字数 (0~) (内部処理用ワーク) */\r
+ char EscCode[2]; /* エスケープシーケンス文字保存用 (内部処理用ワーク) */\r
+ char KanjiFst; /* 漢字コード1バイト目保存用 (内部処理用ワーク) */\r
+ char KanaPrev; /* 半角カタカナ保存用 (内部処理用ワーク) */\r
+ funcptr KanaProc; /* 半角カタカナ処理ルーチン (内部処理用ワーク) */\r
char EscUTF8[8];\r
int EscUTF8Len;\r
} CODECONVINFO;\r
\r
\r
-/*===== \89ü\8ds\83R\81[\83h\95Ï\8a·\8fî\95ñ\83p\83P\83b\83g =====*/\r
+/*===== 改行コード変換情報パケット =====*/\r
\r
typedef struct termcodeconvinfo {\r
- char *Str; /* \95¶\8e\9a\97ñ */\r
- int StrLen; /* \95¶\8e\9a\97ñ\82Ì\92·\82³ */\r
- char *Buf; /* \95Ï\8a·\8cã\82Ì\95¶\8e\9a\97ñ\82ð\8ai\94[\82·\82é\83o\83b\83t\83@ */\r
- int BufSize; /* \95Ï\8a·\8cã\82Ì\95¶\8e\9a\97ñ\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\82Ì\83T\83C\83Y */\r
- int OutLen; /* \95Ï\8a·\8cã\82Ì\95¶\8e\9a\97ñ\82Ì\83T\83C\83Y */\r
- char Term; /* \89ü\8ds\83R\81[\83h\82P\83o\83C\83g\96Ú\95Û\91¶\97p (\93à\95\94\8f\88\97\9d\97p\83\8f\81[\83N) */\r
+ char *Str; /* 文字列 */\r
+ int StrLen; /* 文字列の長さ */\r
+ char *Buf; /* 変換後の文字列を格納するバッファ */\r
+ int BufSize; /* 変換後の文字列を格納するバッファのサイズ */\r
+ int OutLen; /* 変換後の文字列のサイズ */\r
+ char Term; /* 改行コード1バイト目保存用 (内部処理用ワーク) */\r
} TERMCODECONVINFO;\r
\r
\r
-/*===== \83e\83\93\83|\83\89\83\8a\83t\83@\83C\83\8b\83\8a\83X\83g =====*/\r
+/*===== テンポラリファイルリスト =====*/\r
\r
typedef struct tempfilelist {\r
- char *Fname; /* \83t\83@\83C\83\8b\96¼ */\r
+ char *Fname; /* ファイル名 */\r
struct tempfilelist *Next;\r
} TEMPFILELIST;\r
\r
\r
-/*===== \83T\83E\83\93\83h\83t\83@\83C\83\8b =====*/\r
+/*===== サウンドファイル =====*/\r
\r
typedef struct {\r
- int On; /* ON/OFF\83X\83C\83b\83` */\r
- char Fname[FMAX_PATH+1]; /* \83t\83@\83C\83\8b\96¼ */\r
+ int On; /* ON/OFFスイッチ */\r
+ char Fname[FMAX_PATH+1]; /* ファイル名 */\r
} SOUNDFILE;\r
\r
\r
-/*===== \83\89\83W\83I\83{\83^\83\93\82Ì\90Ý\92è =====*/\r
+/*===== ラジオボタンの設定 =====*/\r
\r
typedef struct {\r
- int ButID; /* \83{\83^\83\93\82ÌID */\r
- int Value; /* \92l */\r
+ int ButID; /* ボタンのID */\r
+ int Value; /* 値 */\r
} RADIOBUTTON;\r
\r
\r
/*===== SOCKS4 =====*/\r
\r
-/* \83R\83}\83\93\83h\83p\83P\83b\83g */\r
+/* コマンドパケット */\r
typedef struct {\r
- char Ver; /* \83o\81[\83W\83\87\83\93 (SOCKS4_VER) */\r
- char Cmd; /* \83R\83}\83\93\83h (SOCKS4_CMD_xxx) */\r
- ushort Port; /* \83|\81[\83g */\r
- ulong AdrsInt; /* \83A\83h\83\8c\83X */\r
- char UserID[USER_NAME_LEN+1]; /* \83\86\81[\83UID */\r
+ char Ver; /* バージョン (SOCKS4_VER) */\r
+ char Cmd; /* コマンド (SOCKS4_CMD_xxx) */\r
+ ushort Port; /* ポート */\r
+ ulong AdrsInt; /* アドレス */\r
+ char UserID[USER_NAME_LEN+1]; /* ユーザID */\r
} SOCKS4CMD;\r
\r
\r
-/* \95Ô\90M\83p\83P\83b\83g */\r
+/* 返信パケット */\r
typedef struct {\r
- char Ver; /* \83o\81[\83W\83\87\83\93 */\r
- char Result; /* \83\8a\83U\83\8b\83g\83R\81[\83h (SOCKS4_RES_xxx) */\r
- ushort Port; /* \83|\81[\83g */\r
- ulong AdrsInt; /* \83A\83h\83\8c\83X */\r
+ char Ver; /* バージョン */\r
+ char Result; /* リザルトコード (SOCKS4_RES_xxx) */\r
+ ushort Port; /* ポート */\r
+ ulong AdrsInt; /* アドレス */\r
} SOCKS4REPLY;\r
\r
#define SOCKS4REPLY_SIZE 8\r
\r
/*===== SOCKS5 =====*/\r
\r
-/* Method request\83p\83P\83b\83g */\r
+/* Method requestパケット */\r
typedef struct {\r
- char Ver; /* \83o\81[\83W\83\87\83\93 (SOCKS5_VER) */\r
- char Num; /* \83\81\83\\83b\83h\82Ì\90\94 */\r
- uchar Methods[1]; /* \83\81\83\\83b\83h */\r
+ char Ver; /* バージョン (SOCKS5_VER) */\r
+ char Num; /* メソッドの数 */\r
+ uchar Methods[1]; /* メソッド */\r
} SOCKS5METHODREQUEST;\r
\r
#define SOCKS5METHODREQUEST_SIZE 3\r
\r
\r
-/* Method reply\83p\83P\83b\83g */\r
+/* Method replyパケット */\r
typedef struct {\r
- char Ver; /* \83o\81[\83W\83\87\83\93 (SOCKS5_VER) */\r
- uchar Method; /* \83\81\83\\83b\83h */\r
+ char Ver; /* バージョン (SOCKS5_VER) */\r
+ uchar Method; /* メソッド */\r
} SOCKS5METHODREPLY;\r
\r
#define SOCKS5METHODREPLY_SIZE 2\r
\r
\r
-/* Request\83p\83P\83b\83g */\r
+/* Requestパケット */\r
typedef struct {\r
- char Ver; /* \83o\81[\83W\83\87\83\93 (SOCKS5_VER) */\r
- char Cmd; /* \83R\83}\83\93\83h (SOCKS5_CMD_xxx) */\r
- char Rsv; /* \81i\97\\96ñ\81j */\r
- char Type; /* \83A\83h\83\8c\83X\82Ì\83^\83C\83v */\r
- /* \88È\8cã\81i\89Â\95Ï\92·\95\94\95ª\81j */\r
- char _dummy[255+1+2]; /* \83A\83h\83\8c\83X\81A\83|\81[\83g */\r
+ char Ver; /* バージョン (SOCKS5_VER) */\r
+ char Cmd; /* コマンド (SOCKS5_CMD_xxx) */\r
+ char Rsv; /* (予約) */\r
+ char Type; /* アドレスのタイプ */\r
+ /* 以後(可変長部分) */\r
+ char _dummy[255+1+2]; /* アドレス、ポート */\r
} SOCKS5REQUEST;\r
\r
-#define SOCKS5REQUEST_SIZE 4 /* \8dÅ\8f\89\82Ì\8cÅ\92è\95\94\95ª\82Ì\83T\83C\83Y */\r
+#define SOCKS5REQUEST_SIZE 4 /* 最初の固定部分のサイズ */\r
\r
\r
-/* Reply\83p\83P\83b\83g */\r
+/* Replyパケット */\r
typedef struct {\r
- char Ver; /* \83o\81[\83W\83\87\83\93 */\r
- char Result; /* \83\8a\83U\83\8b\83g\83R\81[\83h (SOCKS4_RES_xxx) */\r
- char Rsv; /* \81i\97\\96ñ\81j */\r
- char Type; /* \83A\83h\83\8c\83X\82Ì\83^\83C\83v */\r
- /* \88È\8cã\81i\89Â\95Ï\92·\95\94\95ª\81j */\r
- ulong AdrsInt; /* \83A\83h\83\8c\83X */\r
- ushort Port; /* \83|\81[\83g */\r
+ char Ver; /* バージョン */\r
+ char Result; /* リザルトコード (SOCKS4_RES_xxx) */\r
+ char Rsv; /* (予約) */\r
+ char Type; /* アドレスのタイプ */\r
+ /* 以後(可変長部分) */\r
+ ulong AdrsInt; /* アドレス */\r
+ ushort Port; /* ポート */\r
char _dummy[2]; /* dummy */\r
} SOCKS5REPLY;\r
\r
-#define SOCKS5REPLY_SIZE 4 /* \8dÅ\8f\89\82Ì\8cÅ\92è\95\94\95ª\82Ì\83T\83C\83Y */\r
+#define SOCKS5REPLY_SIZE 4 /* 最初の固定部分のサイズ */\r
\r
\r
-/* Username/Password\94F\8fØstatus\83p\83P\83b\83g */\r
+/* Username/Password認証statusパケット */\r
typedef struct {\r
- char Ver; /* \83o\81[\83W\83\87\83\93 */\r
- uchar Status; /* \83X\83e\81[\83^\83X */\r
+ char Ver; /* バージョン */\r
+ uchar Status; /* ステータス */\r
} SOCKS5USERPASSSTATUS;\r
\r
#define SOCKS5USERPASSSTATUS_SIZE 2\r
\r
\r
\r
-/*===== \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\95Ï\8dX\8f\88\97\9d\97p =====*/\r
+/*===== ダイアログボックス変更処理用 =====*/\r
\r
typedef struct {\r
- int HorMoveList[10]; /* \90\85\95½\82É\93®\82©\82·\95\94\95i\82Ì\83\8a\83X\83g */\r
- int VarMoveList[10]; /* \90\82\92¼\82É\93®\82©\82·\95\94\95i\82Ì\83\8a\83X\83g */\r
- int ResizeList[10]; /* \83T\83C\83Y\95Ï\8dX\82·\82é\95\94\95i\82Ì\83\8a\83X\83g */\r
- SIZE MinSize; /* \8dÅ\8f\83T\83C\83Y */\r
- SIZE CurSize; /* \8c»\8dÝ\82Ì\83T\83C\83Y */\r
+ int HorMoveList[10]; /* 水平に動かす部品のリスト */\r
+ int VarMoveList[10]; /* 垂直に動かす部品のリスト */\r
+ int ResizeList[10]; /* サイズ変更する部品のリスト */\r
+ SIZE MinSize; /* 最少サイズ */\r
+ SIZE CurSize; /* 現在のサイズ */\r
} DIALOGSIZE;\r
\r
\r
-/*===== \90\94\92l\95Ï\8a·\97p =====*/\r
+/*===== 数値変換用 =====*/\r
\r
typedef struct {\r
int Num1;\r
\r
\r
/*=================================================\r
-* \83v\83\8d\83g\83^\83C\83v\r
+* プロトタイプ\r
*=================================================*/\r
\r
/*===== main.c =====*/\r
int BackgrndMessageProc(void);\r
void ResetAutoExitFlg(void);\r
int AskAutoExit(void);\r
-// \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+// 暗号化通信対応\r
BOOL __stdcall SSLTimeoutCallback();\r
\r
/*===== filelist.c =====*/\r
void DispHostKanjiCode(void);\r
int AskHostKanjiCode(void);\r
void HideHostKanjiButton(void);\r
-// \83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\r
+// ローカルの漢字コード\r
void SetLocalKanjiCodeImm(int Mode);\r
void SetLocalKanjiCode(int Type);\r
void DispLocalKanjiCode(void);\r
int AskLocalKanjiCode(void);\r
void HideLocalKanjiButton(void);\r
-// \82±\82±\82Ü\82Å\r
+// ここまで\r
void SetHostKanaCnvImm(int Mode);\r
void SetHostKanaCnv(void);\r
void DispHostKanaCnv(void);\r
SOCKET GetFTPListenSocket(SOCKET ctrl_skt, int *CancelCheckWork);\r
int AskTryingConnect(void);\r
int SocksGet2ndBindReply(SOCKET Socket, SOCKET *Data);\r
-// \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+// 暗号化通信対応\r
int AskCryptMode(void);\r
int AskUseFTPES(void);\r
int AskUseFTPIS(void);\r
int ConvEUCtoSJIS(CODECONVINFO *cInfo);\r
int ConvJIStoSJIS(CODECONVINFO *cInfo);\r
int ConvSMBtoSJIS(CODECONVINFO *cInfo);\r
-int ConvUTF8NtoSJIS(CODECONVINFO *cInfo); // UTF-8\91Î\89\9e\r
+int ConvUTF8NtoSJIS(CODECONVINFO *cInfo); // UTF-8対応\r
int ConvSJIStoEUC(CODECONVINFO *cInfo);\r
int ConvSJIStoJIS(CODECONVINFO *cInfo);\r
int ConvSJIStoSMB_HEX(CODECONVINFO *cInfo);\r
int ConvSJIStoSMB_CAP(CODECONVINFO *cInfo);\r
-int ConvSJIStoUTF8N(CODECONVINFO *cInfo); // UTF-8\91Î\89\9e\r
+int ConvSJIStoUTF8N(CODECONVINFO *cInfo); // UTF-8対応\r
void ConvAutoToSJIS(char *Text, int Pref);\r
int CheckKanjiCode(char *Text, int Size, int Pref);\r
\r
-\r
-/* OPENVMS\97p\82Ì\83R\81[\83h\82ð\97L\8cø\82É\82·\82é\81B\94ó\8cû\93a\8dì\90¬\82Ì\83p\83b\83`\82ð\91g\82Ý\8d\9e\82Ý\82Ü\82µ\82½\81B */\r
+\r
+/* OPENVMS用のコードを有効にする。樋口殿作成のパッチを組み込みました。 */\r
#define HAVE_OPENVMS\r
\r
-// \91S\91Ì\82É\89e\8b¿\82·\82é\90Ý\92è\82Í\82±\82±\82É\8bL\8fq\82·\82é\97\\92è\r
-// \93à\95\94\82ðUTF-8\82Æ\82µ\82Ä\88µ\82¢\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\83\8f\83C\83h\95¶\8e\9aAPI\83\89\83b\83p\81[\82ð\8eg\97p\82·\82é\r
+// 全体に影響する設定はここに記述する予定\r
+// 内部をUTF-8として扱いマルチバイト文字ワイド文字APIラッパーを使用する\r
#include "mbswrapper.h"\r
-// OpenSSL\97p\83\\83P\83b\83g\83\89\83b\83p\81[\82ð\8eg\97p\82·\82é\r
+// OpenSSL用ソケットラッパーを使用する\r
#include "socketwrapper.h"\r
-// \8eg\97p\82·\82éCPU\82ð1\8cÂ\82É\8cÀ\92è\82·\82é\81i\83}\83\8b\83`\83R\83ACPU\82Ì\93Á\92è\8aÂ\8b«\89º\82Å\83t\83@\83C\83\8b\92Ê\90M\92\86\82É\83N\83\89\83b\83V\83\85\82·\82é\83o\83O\91Î\8dô\81j\r
+// 使用するCPUを1個に限定する(マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策)\r
#define DISABLE_MULTI_CPUS\r
-// \83t\83@\83C\83\8b\93]\91\97\97p\82Ì\83l\83b\83g\83\8f\81[\83N\83o\83b\83t\83@\82ð\96³\8cø\82É\82·\82é\81i\92Ê\90M\92\86\8e~\8cã\82É\83\8a\83\82\81[\83g\82Ì\83f\83B\83\8c\83N\83g\83\8a\82ª\95\\8e¦\82³\82ê\82È\82¢\83o\83O\91Î\8dô\81j\r
+// ファイル転送用のネットワークバッファを無効にする(通信中止後にリモートのディレクトリが表示されないバグ対策)\r
//#define DISABLE_TRANSFER_NETWORK_BUFFERS\r
-// \83R\83\93\83g\83\8d\81[\83\8b\97p\82Ì\83l\83b\83g\83\8f\81[\83N\83o\83b\83t\83@\82ð\96³\8cø\82É\82·\82é\81i\83t\83\8a\81[\83Y\91Î\8dô\81j\r
+// コントロール用のネットワークバッファを無効にする(フリーズ対策)\r
#define DISABLE_CONTROL_NETWORK_BUFFERS\r
-// JRE32.DLL\82ð\96³\8cø\82É\82·\82é\81iUTF-8\82É\94ñ\91Î\89\9e\82Ì\82½\82ß\81j\r
+// JRE32.DLLを無効にする(UTF-8に非対応のため)\r
#define DISABLE_JRE32DLL\r
\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83z\83X\83g\82Ö\82Ì\90Ú\91±\81^\90Ø\92f\r
+* ホストへの接続/切断\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include <htmlhelp.h>\r
#include "helpid.h"\r
\r
-// UTF-8\91Î\89\9e\r
+// UTF-8対応\r
#undef __MBSWRAPPER_H__\r
#include "mbswrapper.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static BOOL CALLBACK QuickConDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static int SendInitCommand(char *Cmd);\r
static int Socks4GetCmdReply(SOCKET Socket, SOCKS4REPLY *Packet);\r
static int Socks5SelMethod(SOCKET Socket, int *CancelCheckWork);\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
extern char FilterStr[FILTER_EXT_LEN+1];\r
extern char TitleHostName[HOST_ADRS_LEN+1];\r
extern int CancelFlg;\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
extern char UserMailAdrs[USER_MAIL_LEN+1];\r
extern char FwallHost[HOST_ADRS_LEN+1];\r
extern char FwallUser[USER_NAME_LEN+1];\r
extern int PasvDefault;\r
extern int QuickAnonymous;\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static int Anonymous;\r
static int TryConnect = NO;\r
static SOCKET TrnCtrlSocket = INVALID_SOCKET;\r
static HOSTDATA CurHost;\r
\r
-/* \90Ú\91±\92\86\82Ì\90Ú\91±\90æ\81ASOCKS\83T\81[\83o\82Ì\83A\83h\83\8c\83X\8fî\95ñ\82ð\95Û\91¶\82µ\82Ä\82¨\82 */\r
-/* \82±\82Ì\8fî\95ñ\82Ílisten\83\\83P\83b\83g\82ð\8eæ\93¾\82·\82é\8dÛ\82É\97p\82¢\82é */\r
-static struct sockaddr_in SocksSockAddr; /* SOCKS\83T\81[\83o\82Ì\83A\83h\83\8c\83X\8fî\95ñ */\r
-static struct sockaddr_in CurSockAddr; /* \90Ú\91±\90æ\83z\83X\83g\82Ì\83A\83h\83\8c\83X\8fî\95ñ */\r
+/* 接続中の接続先、SOCKSサーバのアドレス情報を保存しておく */\r
+/* この情報はlistenソケットを取得する際に用いる */\r
+static struct sockaddr_in SocksSockAddr; /* SOCKSサーバのアドレス情報 */\r
+static struct sockaddr_in CurSockAddr; /* 接続先ホストのアドレス情報 */\r
\r
static int UseIPadrs;\r
static char DomainName[HOST_ADRS_LEN+1];\r
\r
\r
\r
-/*----- \83z\83X\83g\88ê\97\97\82ð\8eg\82Á\82Ä\83z\83X\83g\82Ö\90Ú\91± ----------------------------------------\r
+/*----- ホスト一覧を使ってホストへ接続 ----------------------------------------\r
*\r
* Parameter\r
-* int Type : \83_\83C\83A\83\8d\83O\82Ì\83^\83C\83v (DLG_TYPE_xxx)\r
-* int Num : \90Ú\91±\82·\82é\83z\83X\83g\94Ô\8d\86(0\81`, -1=\83_\83C\83A\83\8d\83O\82ð\8fo\82·)\r
+* int Type : ダイアログのタイプ (DLG_TYPE_xxx)\r
+* int Num : 接続するホスト番号(0~, -1=ダイアログを出す)\r
\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ConnectProc(int Type, int Num)\r
if(Num >= 0)\r
SetCurrentHost(Num);\r
\r
- /* \90Ú\91±\92\86\82È\82ç\90Ø\92f\82·\82é */\r
+ /* 接続中なら切断する */\r
if(CmdCtrlSocket != INVALID_SOCKET)\r
DisconnectProc();\r
\r
InitPWDcommand();\r
CopyHostFromList(AskCurrentHost(), &CurHost);\r
\r
- if(ConnectRas(CurHost.Dialup, CurHost.DialupAlways, CurHost.DialupNotify, CurHost.DialEntry) == SUCCESS)\r
+ if(ConnectRas(CurHost.Dialup, CurHost.DialupAlways, CurHost.DialupNotify, CurHost.DialEntry) == FFFTP_SUCCESS)\r
{\r
SetHostKanaCnvImm(CurHost.KanaCnv);\r
SetHostKanjiCodeImm(CurHost.KanjiCode);\r
}\r
\r
\r
-/*----- \83z\83X\83g\96¼\82ð\93ü\97Í\82µ\82Ä\83z\83X\83g\82Ö\90Ú\91± ----------------------------------------\r
+/*----- ホスト名を入力してホストへ接続 ----------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void QuickConnectProc(void)\r
\r
if(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(hostname_dlg), GetMainHwnd(), QuickConDialogCallBack, (LPARAM)Tmp) == YES)\r
{\r
- /* \90Ú\91±\92\86\82È\82ç\90Ø\92f\82·\82é */\r
+ /* 接続中なら切断する */\r
if(CmdCtrlSocket != INVALID_SOCKET)\r
DisconnectProc();\r
\r
\r
InitPWDcommand();\r
CopyDefaultHost(&CurHost);\r
- if(SplitUNCpath(Tmp, CurHost.HostAdrs, CurHost.RemoteInitDir, File, CurHost.UserName, CurHost.PassWord, &CurHost.Port) == SUCCESS)\r
+ if(SplitUNCpath(Tmp, CurHost.HostAdrs, CurHost.RemoteInitDir, File, CurHost.UserName, CurHost.PassWord, &CurHost.Port) == FFFTP_SUCCESS)\r
{\r
if(strlen(CurHost.UserName) == 0)\r
{\r
}\r
\r
\r
-/*----- \83N\83C\83b\83N\90Ú\91±\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------------\r
+/*----- クイック接続ダイアログのコールバック ----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
SendDlgItemMessage(hDlg, QHOST_PASV, BM_SETCHECK, PasvDefault, 0);\r
for(i = 0; i < HISTORY_MAX; i++)\r
{\r
- if(GetHistoryByNum(i, &Tmp) == SUCCESS)\r
+ if(GetHistoryByNum(i, &Tmp) == FFFTP_SUCCESS)\r
{\r
//sprintf(Str, "%s (%s) %s", Tmp.HostAdrs, Tmp.UserName, Tmp.RemoteInitDir);\r
//SendDlgItemMessage(hDlg, QHOST_HOST, CB_ADDSTRING, 0, (LPARAM)Str);\r
}\r
\r
\r
-/*----- \8ew\92è\82µ\82½\83z\83X\83g\96¼\82Å\83z\83X\83g\82Ö\90Ú\91± ----------------------------------------\r
+/*----- 指定したホスト名でホストへ接続 ----------------------------------------\r
*\r
* Parameter\r
-* char *unc : UNC\95¶\8e\9a\97ñ\r
-* int Kanji : \83z\83X\83g\82Ì\8a¿\8e\9a\83R\81[\83h (KANJI_xxx)\r
-* int Kana : \94¼\8ap\82©\82È\81¨\91S\8ap\95Ï\8a·\83\82\81[\83h (YES/NO)\r
-* int Fkanji : \83t\83@\83C\83\8b\96¼\82Ì\8a¿\8e\9a\83R\81[\83h (KANJI_xxx)\r
-* int TrMode : \93]\91\97\83\82\81[\83h (TYPE_xx)\r
+* char *unc : UNC文字列\r
+* int Kanji : ホストの漢字コード (KANJI_xxx)\r
+* int Kana : 半角かな→全角変換モード (YES/NO)\r
+* int Fkanji : ファイル名の漢字コード (KANJI_xxx)\r
+* int TrMode : 転送モード (TYPE_xx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DirectConnectProc(char *unc, int Kanji, int Kana, int Fkanji, int TrMode)\r
SaveBookMark();\r
SaveCurrentSetToHost();\r
\r
- /* \90Ú\91±\92\86\82È\82ç\90Ø\92f\82·\82é */\r
+ /* 接続中なら切断する */\r
if(CmdCtrlSocket != INVALID_SOCKET)\r
DisconnectProc();\r
\r
SetTaskMsg("----------------------------");\r
\r
InitPWDcommand();\r
- if(SplitUNCpath(unc, Host, Path, File, User, Pass, &Port) == SUCCESS)\r
+ if(SplitUNCpath(unc, Host, Path, File, User, Pass, &Port) == FFFTP_SUCCESS)\r
{\r
if(strlen(User) == 0)\r
{\r
CurHost.KanjiCode = Kanji;\r
CurHost.KanaCnv = Kana;\r
CurHost.NameKanjiCode = Fkanji;\r
- CurHost.KanaCnv = YES; /* \82Æ\82è\82 \82¦\82¸ */\r
+ CurHost.KanaCnv = YES; /* とりあえず */\r
\r
SetHostKanaCnvImm(CurHost.KanaCnv);\r
SetHostKanjiCodeImm(CurHost.KanjiCode);\r
}\r
\r
\r
-/*----- \83z\83X\83g\82Ì\83q\83X\83g\83\8a\82Å\8ew\92è\82³\82ê\82½\83z\83X\83g\82Ö\90Ú\91± ------------------------------\r
+/*----- ホストのヒストリで指定されたホストへ接続 ------------------------------\r
*\r
* Parameter\r
-* int MenuCmd : \8eæ\82è\8fo\82·\83q\83X\83g\83\8a\82É\8a\84\82è\93\96\82Ä\82ç\82ê\82½\83\81\83j\83\85\81[\83R\83}\83\93\83h\r
+* int MenuCmd : 取り出すヒストリに割り当てられたメニューコマンド\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void HistoryConnectProc(int MenuCmd)\r
int RFSort;\r
int RDSort;\r
\r
- if(GetHistoryByCmd(MenuCmd, &Hist) == SUCCESS)\r
+ if(GetHistoryByCmd(MenuCmd, &Hist) == FFFTP_SUCCESS)\r
{\r
SaveBookMark();\r
SaveCurrentSetToHost();\r
\r
- /* \90Ú\91±\92\86\82È\82ç\90Ø\92f\82·\82é */\r
+ /* 接続中なら切断する */\r
if(CmdCtrlSocket != INVALID_SOCKET)\r
DisconnectProc();\r
\r
InitPWDcommand();\r
CopyHistoryToHost(&Hist, &CurHost);\r
\r
- if(ConnectRas(CurHost.Dialup, CurHost.DialupAlways, CurHost.DialupNotify, CurHost.DialEntry) == SUCCESS)\r
+ if(ConnectRas(CurHost.Dialup, CurHost.DialupAlways, CurHost.DialupNotify, CurHost.DialEntry) == FFFTP_SUCCESS)\r
{\r
SetCurrentHost(HOSTNUM_NOENTRY);\r
SetHostKanaCnvImm(CurHost.KanaCnv);\r
}\r
\r
\r
-/*----- \83z\83X\83g\82Ì\8f\89\8aú\89»\83R\83}\83\93\83h\82ð\91\97\82é ------------------------------------------\r
+/*----- ホストの初期化コマンドを送る ------------------------------------------\r
*\r
* Parameter\r
-* int Cmd : \8f\89\8aú\89»\83R\83}\83\93\83h\83X\r
+* int Cmd : 初期化コマンドス\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* NOte\r
-* \8f\89\8aú\89»\83R\83}\83\93\83h\82Í\88È\89º\82Ì\82æ\82¤\82È\83t\83H\81[\83}\83b\83g\82Å\82 \82é\82±\82Æ\r
+* 初期化コマンドは以下のようなフォーマットであること\r
* cmd1\0\r
* cmd1\r\ncmd2\r\n\0\r
*----------------------------------------------------------------------------*/\r
}\r
\r
\r
-/*----- \8ew\92è\82Ì\83z\83X\83g\82ÍFireWall\82ð\8eg\82¤\90Ý\92è\82©\82Ç\82¤\82©\82ð\95Ô\82· ------------------------\r
+/*----- 指定のホストはFireWallを使う設定かどうかを返す ------------------------\r
*\r
* Parameter\r
-* char *Hots : \83z\83X\83g\96¼\r
-* int *Fire : FireWall\82ð\8eg\82¤\82©\82Ç\82¤\82©\82ð\95Ô\82·\83\8f\81[\83N\r
-* int *Pasv : PASV\83\82\81[\83h\82ð\95Ô\82·\83\8f\81[\83N\r
-* int *List : LIST\83R\83}\83\93\83h\82Ì\82Ý\8eg\97p\83t\83\89\83O\r
+* char *Hots : ホスト名\r
+* int *Fire : FireWallを使うかどうかを返すワーク\r
+* int *Pasv : PASVモードを返すワーク\r
+* int *List : LISTコマンドのみ使用フラグ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void AskUseFireWall(char *Host, int *Fire, int *Pasv, int *List)\r
*List = NO;\r
\r
i = 0;\r
- while(CopyHostFromList(i, &Tmp) == SUCCESS)\r
+ while(CopyHostFromList(i, &Tmp) == FFFTP_SUCCESS)\r
{\r
if(strcmp(Host, Tmp.HostAdrs) == 0)\r
{\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82Ì\83A\83h\83\8c\83X\82ð\95Ô\82· ------------------------------------\r
+/*----- 接続しているホストのアドレスを返す ------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* char *\83z\83X\83g\82Ì\83A\83h\83\8c\83X\r
+* char *ホストのアドレス\r
*----------------------------------------------------------------------------*/\r
\r
char *AskHostAdrs(void)\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82Ì\83|\81[\83g\82ð\95Ô\82· --------------------------------------\r
+/*----- 接続しているホストのポートを返す --------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83z\83X\83g\82Ì\83|\81[\83g\r
+* int ホストのポート\r
*----------------------------------------------------------------------------*/\r
\r
int AskHostPort(void)\r
return(CurHost.Port);\r
}\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82Ì\83t\83@\83C\83\8b\96¼\82Ì\8a¿\8e\9a\83R\81[\83h\82ð\95Ô\82· ----------------------\r
+/*----- 接続しているホストのファイル名の漢字コードを返す ----------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \8a¿\8e\9a\83R\81[\83h (KANJI_xxx)\r
+* int 漢字コード (KANJI_xxx)\r
*----------------------------------------------------------------------------*/\r
\r
int AskHostNameKanji(void)\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82Ì\83t\83@\83C\83\8b\96¼\82Ì\94¼\8ap\83J\83i\95Ï\8a·\83t\83\89\83O\82ð\95Ô\82· --------------\r
+/*----- 接続しているホストのファイル名の半角カナ変換フラグを返す --------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \94¼\8ap\83J\83i\82ð\91S\8ap\82É\95Ï\8a·\82·\82é\82©\82Ç\82¤\82© (YES/NO)\r
+* int 半角カナを全角に変換するかどうか (YES/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int AskHostNameKana(void)\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82ÌLIST\83R\83}\83\93\83h\83\82\81[\83h\82ð\95Ô\82· --------------------------\r
+/*----- 接続しているホストのLISTコマンドモードを返す --------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int LIST\83R\83}\83\93\83h\83\82\81[\83h (YES/NO)\r
+* int LISTコマンドモード (YES/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int AskListCmdMode(void)\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82ÅNLST -R\82ð\8eg\82¤\82©\82Ç\82¤\82©\82ð\95Ô\82· ------------------------\r
+/*----- 接続しているホストでNLST -Rを使うかどうかを返す ------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int NLST -R\82ð\8eg\82¤\82©\82Ç\82¤\82© (YES/NO)\r
+* int NLST -Rを使うかどうか (YES/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int AskUseNLST_R(void)\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82ÌChmod\83R\83}\83\93\83h\82ð\95Ô\82· -------------------------------\r
+/*----- 接続しているホストのChmodコマンドを返す -------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* char *Chmod\83R\83}\83\93\83h\r
+* char *Chmodコマンド\r
*----------------------------------------------------------------------------*/\r
\r
char *AskHostChmodCmd(void)\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82Ì\83^\83C\83\80\83]\81[\83\93\82ð\95Ô\82· --------------------------------\r
+/*----- 接続しているホストのタイムゾーンを返す --------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83^\83C\83\80\83]\81[\83\93\r
+* int タイムゾーン\r
*----------------------------------------------------------------------------*/\r
\r
int AskHostTimeZone(void)\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82ÌPASV\83\82\81[\83h\82ð\95Ô\82· ----------------------------------\r
+/*----- 接続しているホストのPASVモードを返す ----------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int PASV\83\82\81[\83h\82©\82Ç\82¤\82© (YES/NO)\r
+* int PASVモードかどうか (YES/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int AskPasvMode(void)\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82ÌLNST\83t\83@\83C\83\8b\96¼\82ð\95Ô\82· ------------------------------\r
+/*----- 接続しているホストのLNSTファイル名を返す ------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* char *\83t\83@\83C\83\8b\96¼\81^\83I\83v\83V\83\87\83\93\r
+* char *ファイル名/オプション\r
*----------------------------------------------------------------------------*/\r
\r
char *AskHostLsName(void)\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82Ì\83z\83X\83g\83^\83C\83v\82ð\95Ô\82· --------------------------------\r
+/*----- 接続しているホストのホストタイプを返す --------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* char *\83t\83@\83C\83\8b\96¼\81^\83I\83v\83V\83\87\83\93\r
+* char *ファイル名/オプション\r
*----------------------------------------------------------------------------*/\r
\r
int AskHostType(void)\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82ÍFireWall\82ð\8eg\82¤\83z\83X\83g\82©\82Ç\82¤\82©\82ð\95Ô\82· ----------------\r
+/*----- 接続しているホストはFireWallを使うホストかどうかを返す ----------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int FireWall\82ð\8eg\82¤\82©\82Ç\82¤\82© (YES/NO)\r
+* int FireWallを使うかどうか (YES/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int AskHostFireWall(void)\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83z\83X\83g\82Å\83t\83\8b\83p\83X\82Å\83t\83@\83C\83\8b\83A\83N\83Z\83X\82µ\82È\82¢\82©\82Ç\82¤\82©\82ð\95Ô\82· ----\r
+/*----- 接続しているホストでフルパスでファイルアクセスしないかどうかを返す ----\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83t\83\8b\83p\83X\82Å\83A\83N\83Z\83X\82µ\82È\82¢ (YES=\83t\83\8b\83p\83X\8bÖ\8e~/NO)\r
+* int フルパスでアクセスしない (YES=フルパス禁止/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int AskNoFullPathMode(void)\r
}\r
\r
\r
-/*----- \90Ú\91±\82µ\82Ä\82¢\82é\83\86\81[\83U\96¼\82ð\95Ô\82· --------------------------------------------\r
+/*----- 接続しているユーザ名を返す --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* char *\83\86\81[\83U\96¼\r
+* char *ユーザ名\r
*----------------------------------------------------------------------------*/\r
\r
char *AskHostUserName(void)\r
}\r
\r
\r
-/*----- \8c»\8dÝ\82Ì\90Ý\92è\82ð\83z\83X\83g\82Ì\90Ý\92è\82É\83Z\83b\83g\82·\82é ----------------------------------\r
+/*----- 現在の設定をホストの設定にセットする ----------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\81A\83\\81[\83g\95û\96@\82ð\83z\83X\83g\82Ì\90Ý\92è\82É\83Z\83b\83g\82·\82é\r
+* カレントディレクトリ、ソート方法をホストの設定にセットする\r
*----------------------------------------------------------------------------*/\r
\r
void SaveCurrentSetToHost(void)\r
}\r
\r
\r
-/*----- \8c»\8dÝ\82Ì\90Ý\92è\82ð\83q\83X\83g\83\8a\82É\83Z\83b\83g\82·\82é --------------------------------------\r
+/*----- 現在の設定をヒストリにセットする --------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void SaveCurrentSetToHistory(void)\r
}\r
\r
\r
-/*----- \83R\83}\83\93\83h\83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\82Ì\8dÄ\90Ú\91± ----------------------------------\r
+/*----- コマンドコントロールソケットの再接続 ----------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int ReConnectCmdSkt(void)\r
}\r
\r
\r
-/*----- \93]\91\97\83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\82Ì\8dÄ\90Ú\91± --------------------------------------\r
+/*----- 転送コントロールソケットの再接続 --------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
//int ReConnectTrnSkt(void)\r
//}\r
\r
\r
-/*----- \89ñ\90ü\82Ì\8dÄ\90Ú\91± ----------------------------------------------------------\r
+/*----- 回線の再接続 ----------------------------------------------------------\r
*\r
* Parameter\r
-* SOCKET *Skt : \90Ú\91±\82µ\82½\83\\83P\83b\83g\82ð\95Ô\82·\83\8f\81[\83N\r
+* SOCKET *Skt : 接続したソケットを返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int ReConnectSkt(SOCKET *Skt)\r
char Path[FMAX_PATH+1];\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
\r
SetTaskMsg(MSGJPN003);\r
\r
DisableUserOpe();\r
- /* \8c»\8dÝ\82Ì\83\\83P\83b\83g\82Í\90Ø\92f */\r
+ /* 現在のソケットは切断 */\r
if(*Skt != INVALID_SOCKET)\r
do_closesocket(*Skt);\r
- /* \8dÄ\90Ú\91± */\r
+ /* 再接続 */\r
if((*Skt = DoConnect(CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security)) != INVALID_SOCKET)\r
{\r
AskRemoteCurDir(Path, FMAX_PATH);\r
DoCWD(Path, YES, YES, YES);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
else\r
SoundPlay(SND_ERROR);\r
}\r
\r
\r
-/*----- \83R\83}\83\93\83h\83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\82ð\95Ô\82· ------------------------------------\r
+/*----- コマンドコントロールソケットを返す ------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* SOCKET \83R\83}\83\93\83h\83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\r
+* SOCKET コマンドコントロールソケット\r
*----------------------------------------------------------------------------*/\r
\r
SOCKET AskCmdCtrlSkt(void)\r
}\r
\r
\r
-/*----- \93]\91\97\83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\82ð\95Ô\82· ----------------------------------------\r
+/*----- 転送コントロールソケットを返す ----------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* SOCKET \93]\91\97\83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\r
+* SOCKET 転送コントロールソケット\r
*----------------------------------------------------------------------------*/\r
\r
SOCKET AskTrnCtrlSkt(void)\r
}\r
\r
\r
-/*----- \83R\83}\83\93\83h\81^\93]\91\97\83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\82Ì\8b¤\97L\82ð\89ð\8f\9c ------------------------\r
+/*----- コマンド/転送コントロールソケットの共有を解除 ------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SktShareProh(void)\r
}\r
\r
\r
-/*----- \83R\83}\83\93\83h\81^\93]\91\97\83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\82Ì\8b¤\97L\82ª\89ð\8f\9c\82³\82ê\82Ä\82¢\82é\82©\83`\83F\83b\83N ----\r
+/*----- コマンド/転送コントロールソケットの共有が解除されているかチェック ----\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* YES=\8b¤\97L\89ð\8f\9c/NO=\8b¤\97L\r
+* int ステータス\r
+* YES=共有解除/NO=共有\r
*----------------------------------------------------------------------------*/\r
\r
int AskShareProh(void)\r
}\r
\r
\r
-/*----- \83z\83X\83g\82©\82ç\90Ø\92f --------------------------------------------------------\r
+/*----- ホストから切断 --------------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DisconnectProc(void)\r
}\r
\r
\r
-/*----- \83\\83P\83b\83g\82ª\8b\90§\90Ø\92f\82³\82ê\82½\82Æ\82«\82Ì\8f\88\97\9d ------------------------------------\r
+/*----- ソケットが強制切断されたときの処理 ------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DisconnectSet(void)\r
}\r
\r
\r
-/*----- \83z\83X\83g\82É\90Ú\91±\92\86\82©\82Ç\82¤\82©\82ð\95Ô\82· ------------------------------------------\r
+/*----- ホストに接続中かどうかを返す ------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (YES/NO)\r
+* int ステータス (YES/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int AskConnecting(void)\r
}\r
\r
\r
-/*----- \83z\83X\83g\82Ö\90Ú\91±\82·\82é ------------------------------------------------------\r
+/*----- ホストへ接続する ------------------------------------------------------\r
*\r
* Parameter\r
-* char *Host : \83z\83X\83g\96¼\r
-* char *User : \83\86\81[\83U\96¼\r
-* char *Pass : \83p\83X\83\8f\81[\83h\r
-* char *Acct : \83A\83J\83E\83\93\83g\r
-* int Port : \83|\81[\83g\r
-* int Fwall : FireWall\82ð\8eg\82¤\82©\82Ç\82¤\82© (YES/NO)\r
-* int SavePass : \83p\83X\83\8f\81[\83h\82ð\8dÄ\93ü\97Í\82µ\82½\8e\9e\82É\95Û\91¶\82·\82é\82©\82Ç\82¤\82© (YES/NO)\r
-* int Security : \83Z\83L\83\85\83\8a\83e\83B (SECURITY_xxx, MDx)\r
+* char *Host : ホスト名\r
+* char *User : ユーザ名\r
+* char *Pass : パスワード\r
+* char *Acct : アカウント\r
+* int Port : ポート\r
+* int Fwall : FireWallを使うかどうか (YES/NO)\r
+* int SavePass : パスワードを再入力した時に保存するかどうか (YES/NO)\r
+* int Security : セキュリティ (SECURITY_xxx, MDx)\r
*\r
* Return Value\r
-* SOCKET \83\\83P\83b\83g\r
+* SOCKET ソケット\r
*\r
* Note\r
-* \83z\83X\83g\96¼\81A\83\86\81[\83U\96¼\81A\83p\83X\83\8f\81[\83h\82ª\8ew\92è\82³\82ê\82Ä\82¢\82È\82©\82Á\82½\82Æ\82«\82Í\81A\90Ú\91±\82É\8eg\97p\r
-* \82µ\82½\82à\82Ì\82ð\83R\83s\81[\82µ\82Ä\82©\82¦\82·\r
-* char *Host : \83z\83X\83g\96¼\r
-* char *User : \83\86\81[\83U\96¼\r
-* char *Pass : \83p\83X\83\8f\81[\83h\r
-* char *Acct : \83A\83J\83E\83\93\83g\r
-*\r
-* FireWall\82Í\8e\9f\82Ì\82æ\82¤\82É\93®\8dì\82·\82é\r
-* TYPE1 Connect fire \81¨ USER user(f) \81¨ PASS pass(f) \81¨ SITE host \81¨ USER user(h) \81¨ PASS pass(h) \81¨ ACCT acct\r
-* TYPE2 Connect fire \81¨ USER user(f) \81¨ PASS pass(f) \81¨ USER user(h)@host \81¨ PASS pass(h) \81¨ ACCT acct\r
-* TYPE3 Connect fire \81¨ USER user(h)@host \81¨ PASS pass(h) \81¨ ACCT acct\r
-* TYPE4 Connect fire \81¨ OPEN host \81¨ USER user(h) \81¨ PASS pass(h) \81¨ ACCT acct\r
+* ホスト名、ユーザ名、パスワードが指定されていなかったときは、接続に使用\r
+* したものをコピーしてかえす\r
+* char *Host : ホスト名\r
+* char *User : ユーザ名\r
+* char *Pass : パスワード\r
+* char *Acct : アカウント\r
+*\r
+* FireWallは次のように動作する\r
+* TYPE1 Connect fire → USER user(f) → PASS pass(f) → SITE host → USER user(h) → PASS pass(h) → ACCT acct\r
+* TYPE2 Connect fire → USER user(f) → PASS pass(f) → USER user(h)@host → PASS pass(h) → ACCT acct\r
+* TYPE3 Connect fire → USER user(h)@host → PASS pass(h) → ACCT acct\r
+* TYPE4 Connect fire → OPEN host → USER user(h) → PASS pass(h) → ACCT acct\r
* TYPE5 SOCKS4\r
-* none Connect host \81¨ USER user(h) \81¨ PASS pass(h) \81¨ ACCT acct\r
+* none Connect host → USER user(h) → PASS pass(h) → ACCT acct\r
*----------------------------------------------------------------------------*/\r
\r
static SOCKET DoConnect(char *Host, char *User, char *Pass, char *Acct, int Port, int Fwall, int SavePass, int Security)\r
{\r
if((ContSock = connectsock(Tmp, Port, "", &CancelFlg)) != INVALID_SOCKET)\r
{\r
- // \83o\83b\83t\83@\82ð\96³\8cø\r
+ // バッファを無効\r
#ifdef DISABLE_CONTROL_NETWORK_BUFFERS\r
int BufferSize = 0;\r
setsockopt(ContSock, SOL_SOCKET, SO_SNDBUF, (char*)&BufferSize, sizeof(int));\r
Flg = 1;\r
if(setsockopt(ContSock, SOL_SOCKET, SO_OOBINLINE, (LPSTR)&Flg, sizeof(Flg)) == SOCKET_ERROR)\r
ReportWSError("setsockopt", WSAGetLastError());\r
- // \83f\81[\83^\93]\91\97\97p\83\\83P\83b\83g\82ÌTCP\92x\89\84\93]\91\97\82ª\96³\8cø\82³\82ê\82Ä\82¢\82é\82Ì\82Å\94O\82Ì\82½\82ß\r
+ // データ転送用ソケットのTCP遅延転送が無効されているので念のため\r
if(setsockopt(ContSock, IPPROTO_TCP, TCP_NODELAY, (LPSTR)&Flg, sizeof(Flg)) == SOCKET_ERROR)\r
ReportWSError("setsockopt", WSAGetLastError());\r
#pragma aaa\r
///////\r
\r
\r
- /*===== \94F\8fØ\82ð\8ds\82È\82¤ =====*/\r
+ /*===== 認証を行なう =====*/\r
\r
Sts = FTP_COMPLETE;\r
if((Fwall == FWALL_FU_FP_SITE) ||\r
else\r
strcpy(Buf, User);\r
\r
- // FTPES\91Î\89\9e\r
- // 2\89ñ\88È\8fã\8cÄ\82Î\82ê\82é\8e\96\82ª\82 \82é\82½\82ß\8aù\82ÉFTPES\82Å\90Ú\91±\82µ\82Ä\82¢\82Ä\82à\8dÄ\8am\94F\r
+ // FTPES対応\r
+ // 2回以上呼ばれる事があるため既にFTPESで接続していても再確認\r
if(CurHost.CryptMode == CRYPT_NONE || CurHost.CryptMode == CRYPT_FTPES)\r
{\r
if(IsOpenSSLLoaded() && CurHost.UseFTPES == YES && (Sts = command(ContSock, Reply, &CancelFlg, "AUTH TLS")) == 234)\r
{\r
- // SSL\82É\90Ø\82è\91Ö\82¦\r
+ // SSLに切り替え\r
SetTaskMsg(MSGJPN315);\r
CurHost.CryptMode = CRYPT_FTPES;\r
if(AttachSSL(ContSock))\r
}\r
else\r
{\r
- // \88Ã\8d\86\89»\82È\82µ\r
+ // 暗号化なし\r
CurHost.CryptMode = CRYPT_NONE;\r
SetTaskMsg(MSGJPN314);\r
}\r
{\r
CheckOneTimePassword(Pass, Reply, Security);\r
\r
- /* \83p\83X\83\8f\81[\83h\82ª\83X\83y\81[\83X1\8cÂ\82Ì\8e\9e\82Í\83p\83X\83\8f\81[\83h\82Ì\8eÀ\91Ì\82È\82µ\82Æ\82·\82é */\r
+ /* パスワードがスペース1個の時はパスワードの実体なしとする */\r
if(strcmp(Reply, " ") == 0)\r
strcpy(Reply, "");\r
\r
else\r
{\r
//#pragma aaa\r
- SetTaskMsg(MSGJPN009/*"\90Ú\91±\82Å\82«\82Ü\82¹\82ñ(1) %x", ContSock*/);\r
+ SetTaskMsg(MSGJPN009/*"接続できません(1) %x", ContSock*/);\r
DoClose(ContSock);\r
ContSock = INVALID_SOCKET;\r
}\r
}\r
\r
\r
-/*----- \83\8f\83\93\83^\83C\83\80\83p\83X\83\8f\81[\83h\82Ì\83`\83F\83b\83N ----------------------------------------\r
+/*----- ワンタイムパスワードのチェック ----------------------------------------\r
*\r
* Parameter\r
-* chat *Pass : \83p\83X\83\8f\81[\83h\81^\83p\83X\83t\83\8c\81[\83Y\r
-* char *Reply : USER\83R\83}\83\93\83h\82ð\91\97\82Á\82½\82 \82Æ\82Ì\83\8a\83v\83\89\83C\95¶\8e\9a\97ñ\r
-* \81^PASS\83R\83}\83\93\83h\82Å\91\97\82é\83p\83X\83\8f\81[\83h\82ð\95Ô\82·\83o\83b\83t\83@\r
-* int Type : \83^\83C\83v (SECURITY_xxx, MDx)\r
+* chat *Pass : パスワード/パスフレーズ\r
+* char *Reply : USERコマンドを送ったあとのリプライ文字列\r
+* /PASSコマンドで送るパスワードを返すバッファ\r
+* int Type : タイプ (SECURITY_xxx, MDx)\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*\r
* Note\r
-* \83\8f\83\93\83^\83C\83\80\83p\83X\83\8f\81[\83h\82Å\82È\82¢\8e\9e\82ÍPass\82ð\82»\82Ì\82Ü\82ÜReply\82É\83R\83s\81[\r
+* ワンタイムパスワードでない時はPassをそのままReplyにコピー\r
*----------------------------------------------------------------------------*/\r
\r
static int CheckOneTimePassword(char *Pass, char *Reply, int Type)\r
char Seed[MAX_SEED_LEN+1];\r
int i;\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
Pos = NULL;\r
\r
if(Type == SECURITY_AUTO)\r
\r
if((Type == MD4) || (Type == MD5) || (Type == SHA1))\r
{\r
- /* \83V\81[\83P\83\93\83X\94Ô\8d\86\82ð\8c©\82Â\82¯\82é\83\8b\81[\83v */\r
+ /* シーケンス番号を見つけるループ */\r
DoPrintf("Analize OTP");\r
DoPrintf("%s", Pos);\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
while((Pos = GetNextField(Pos)) != NULL)\r
{\r
if(IsDigit(*Pos))\r
/* Seed */\r
if((Pos = GetNextField(Pos)) != NULL)\r
{\r
- if(GetOneField(Pos, Seed, MAX_SEED_LEN) == SUCCESS)\r
+ if(GetOneField(Pos, Seed, MAX_SEED_LEN) == FFFTP_SUCCESS)\r
{\r
- /* Seed\82Í\89p\90\94\8e\9a\82Ì\82Ý\97L\8cø\82Æ\82·\82é */\r
+ /* Seedは英数字のみ有効とする */\r
for(i = strlen(Seed)-1; i >= 0; i--)\r
{\r
if((IsAlpha(Seed[i]) == 0) && (IsDigit(Seed[i]) == 0))\r
Make6WordPass(Seq, Seed, Pass, Type, Reply);\r
DoPrintf("Response=%s", Reply);\r
\r
- /* \83V\81[\83P\83\93\83X\94Ô\8d\86\82Ì\83`\83F\83b\83N\82Æ\8cx\8d\90 */\r
+ /* シーケンス番号のチェックと警告 */\r
if(Seq <= 10)\r
DialogBox(GetFtpInst(), MAKEINTRESOURCE(otp_notify_dlg), GetMainHwnd(), ExeEscDialogProc);\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
}\r
}\r
}\r
\r
- if(Sts == FAIL)\r
+ if(Sts == FFFTP_FAIL)\r
SetTaskMsg(MSGJPN015);\r
}\r
else\r
\r
\r
\r
-/*----- \83\\83P\83b\83g\82ð\90Ú\91±\82·\82é ----------------------------------------------------\r
+/*----- ソケットを接続する ----------------------------------------------------\r
*\r
* Parameter\r
-* char *host : \83z\83X\83g\96¼\r
-* int port : \83|\81[\83g\94Ô\8d\86\r
-* char *PreMsg : \83\81\83b\83Z\81[\83W\82Ì\91O\94¼\95\94\95ª\r
+* char *host : ホスト名\r
+* int port : ポート番号\r
+* char *PreMsg : メッセージの前半部分\r
*\r
* Return Value\r
-* SOCKET \83\\83P\83b\83g\r
+* SOCKET ソケット\r
*----------------------------------------------------------------------------*/\r
\r
SOCKET connectsock(char *host, int port, char *PreMsg, int *CancelCheckWork)\r
SOCKS5REPLY Socks5Reply;\r
\r
//////////////////////////////\r
- // \83z\83X\83g\96¼\89ð\8c\88\82Æ\90Ú\91±\82Ì\8f\80\94õ\r
+ // ホスト名解決と接続の準備\r
//////////////////////////////\r
\r
Fwall = FWALL_NONE;\r
CurSockAddr.sin_family = AF_INET;\r
if((CurSockAddr.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE)\r
{\r
- // \83z\83X\83g\96¼\82ª\8ew\92è\82³\82ê\82½\r
- // \83z\83X\83g\96¼\82©\82ç\83A\83h\83\8c\83X\82ð\8b\81\82ß\82é\r
+ // ホスト名が指定された\r
+ // ホスト名からアドレスを求める\r
if(((Fwall == FWALL_SOCKS5_NOAUTH) || (Fwall == FWALL_SOCKS5_USER)) &&\r
(FwallResolv == YES))\r
{\r
- // \83z\83X\83g\96¼\89ð\8c\88\82ÍSOCKS\83T\81[\83o\82É\94C\82¹\82é\r
+ // ホスト名解決はSOCKSサーバに任せる\r
pHostEntry = NULL;\r
}\r
else\r
{\r
- // \83A\83h\83\8c\83X\82ð\8eæ\93¾\r
+ // アドレスを取得\r
SetTaskMsg(MSGJPN016, DomainName);\r
pHostEntry = do_gethostbyname(host, HostEntry, MAXGETHOSTSTRUCT, CancelCheckWork);\r
}\r
\r
if((Fwall == FWALL_SOCKS4) || (Fwall == FWALL_SOCKS5_NOAUTH) || (Fwall == FWALL_SOCKS5_USER))\r
{\r
- // SOCKS\82ð\8eg\82¤\r
- // SOCKS\82É\90Ú\91±\82·\82é\8f\80\94õ\r
+ // SOCKSを使う\r
+ // SOCKSに接続する準備\r
if(Fwall == FWALL_SOCKS4)\r
{\r
Socks4Cmd.Ver = SOCKS4_VER;\r
SocksSockAddr.sin_port = htons((u_short)FwallPort);\r
SocksSockAddr.sin_family = AF_INET;\r
SetTaskMsg(MSGJPN022, inet_ntoa(SocksSockAddr.sin_addr), ntohs(SocksSockAddr.sin_port));\r
- // connect\82Å\90Ú\91±\82·\82é\90æ\82ÍSOCKS\83T\81[\83o\r
+ // connectで接続する先はSOCKSサーバ\r
memcpy(&saSockAddr, &SocksSockAddr, sizeof(SocksSockAddr));\r
}\r
else\r
{\r
- // connect\82Å\90Ú\91±\82·\82é\82Ì\82Í\90Ú\91±\90æ\82Ì\83z\83X\83g\r
+ // connectで接続するのは接続先のホスト\r
memcpy(&saSockAddr, &CurSockAddr, sizeof(CurSockAddr));\r
}\r
\r
/////////////\r
- // \90Ú\91±\8eÀ\8ds\r
+ // 接続実行\r
/////////////\r
\r
if((sSocket = do_socket(AF_INET, SOCK_STREAM, TCP_PORT)) != INVALID_SOCKET)\r
if(Fwall == FWALL_SOCKS4)\r
{\r
Socks4Reply.Result = -1;\r
- if((SocksSendCmd(sSocket, &Socks4Cmd, Len, CancelCheckWork) != SUCCESS) ||\r
- (Socks4GetCmdReply(sSocket, &Socks4Reply) != SUCCESS) || \r
+ if((SocksSendCmd(sSocket, &Socks4Cmd, Len, CancelCheckWork) != FFFTP_SUCCESS) ||\r
+ (Socks4GetCmdReply(sSocket, &Socks4Reply) != FFFTP_SUCCESS) || \r
(Socks4Reply.Result != SOCKS4_RES_OK))\r
{\r
SetTaskMsg(MSGJPN023, Socks4Reply.Result);\r
}\r
else if((Fwall == FWALL_SOCKS5_NOAUTH) || (Fwall == FWALL_SOCKS5_USER))\r
{\r
- if(Socks5SelMethod(sSocket, CancelCheckWork) == FAIL)\r
+ if(Socks5SelMethod(sSocket, CancelCheckWork) == FFFTP_FAIL)\r
{\r
DoClose(sSocket);\r
sSocket = INVALID_SOCKET;\r
}\r
\r
Socks5Reply.Result = -1;\r
- if((SocksSendCmd(sSocket, &Socks5Cmd, Len, CancelCheckWork) != SUCCESS) ||\r
- (Socks5GetCmdReply(sSocket, &Socks5Reply) != SUCCESS) || \r
+ if((SocksSendCmd(sSocket, &Socks5Cmd, Len, CancelCheckWork) != FFFTP_SUCCESS) ||\r
+ (Socks5GetCmdReply(sSocket, &Socks5Reply) != FFFTP_SUCCESS) || \r
(Socks5Reply.Result != SOCKS5_RES_OK))\r
{\r
SetTaskMsg(MSGJPN024, Socks5Reply.Result);\r
else\r
{\r
//#pragma aaa\r
- SetTaskMsg(MSGJPN026/*"\90Ú\91±\82Å\82«\82Ü\82¹\82ñ(2) %x", sSocket*/);\r
+ SetTaskMsg(MSGJPN026/*"接続できません(2) %x", sSocket*/);\r
DoClose(sSocket);\r
sSocket = INVALID_SOCKET;\r
}\r
}\r
\r
\r
-/*----- \83\8a\83b\83X\83\93\83\\83P\83b\83g\82ð\8eæ\93¾ ------------------------------------------------\r
+/*----- リッスンソケットを取得 ------------------------------------------------\r
*\r
* Parameter\r
-* SOCKET ctrl_skt : \83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\r
+* SOCKET ctrl_skt : コントロールソケット\r
*\r
* Return Value\r
-* SOCKET \83\8a\83b\83X\83\93\83\\83P\83b\83g\r
+* SOCKET リッスンソケット\r
*----------------------------------------------------------------------------*/\r
\r
SOCKET GetFTPListenSocket(SOCKET ctrl_skt, int *CancelCheckWork)\r
{\r
if(Fwall == FWALL_SOCKS4)\r
{\r
- /*===== SOCKS4\82ð\8eg\82¤ =====*/\r
+ /*===== SOCKS4を使う =====*/\r
DoPrintf("Use SOCKS4 BIND");\r
if(do_connect(listen_skt, (struct sockaddr *)&SocksSockAddr, sizeof(SocksSockAddr), CancelCheckWork) != SOCKET_ERROR)\r
{\r
Len = offsetof(SOCKS4CMD, UserID) + strlen(FwallUser) + 1;\r
\r
Socks4Reply.Result = -1;\r
- if((SocksSendCmd(listen_skt, &Socks4Cmd, Len, CancelCheckWork) != SUCCESS) ||\r
- (Socks4GetCmdReply(listen_skt, &Socks4Reply) != SUCCESS) || \r
+ if((SocksSendCmd(listen_skt, &Socks4Cmd, Len, CancelCheckWork) != FFFTP_SUCCESS) ||\r
+ (Socks4GetCmdReply(listen_skt, &Socks4Reply) != FFFTP_SUCCESS) || \r
(Socks4Reply.Result != SOCKS4_RES_OK))\r
{\r
SetTaskMsg(MSGJPN028, Socks4Reply.Result);\r
}\r
else if((Fwall == FWALL_SOCKS5_NOAUTH) || (Fwall == FWALL_SOCKS5_USER))\r
{\r
- /*===== SOCKS5\82ð\8eg\82¤ =====*/\r
+ /*===== SOCKS5を使う =====*/\r
DoPrintf("Use SOCKS5 BIND");\r
if(do_connect(listen_skt, (struct sockaddr *)&SocksSockAddr, sizeof(SocksSockAddr), CancelCheckWork) != SOCKET_ERROR)\r
{\r
- if(Socks5SelMethod(listen_skt, CancelCheckWork) == FAIL)\r
+ if(Socks5SelMethod(listen_skt, CancelCheckWork) == FFFTP_FAIL)\r
{\r
DoClose(listen_skt);\r
listen_skt = INVALID_SOCKET;\r
Len = Socks5MakeCmdPacket(&Socks5Cmd, SOCKS5_CMD_BIND, UseIPadrs, CurSockAddr.sin_addr.s_addr, DomainName, CurSockAddr.sin_port);\r
\r
Socks5Reply.Result = -1;\r
- if((SocksSendCmd(listen_skt, &Socks5Cmd, Len, CancelCheckWork) != SUCCESS) ||\r
- (Socks5GetCmdReply(listen_skt, &Socks5Reply) != SUCCESS) || \r
+ if((SocksSendCmd(listen_skt, &Socks5Cmd, Len, CancelCheckWork) != FFFTP_SUCCESS) ||\r
+ (Socks5GetCmdReply(listen_skt, &Socks5Reply) != FFFTP_SUCCESS) || \r
(Socks5Reply.Result != SOCKS5_RES_OK))\r
{\r
SetTaskMsg(MSGJPN029, Socks5Reply.Result);\r
}\r
else\r
{\r
- /*===== SOCKS\82ð\8eg\82í\82È\82¢ =====*/\r
+ /*===== SOCKSを使わない =====*/\r
DoPrintf("Use normal BIND");\r
saCtrlAddr.sin_port = htons(0);\r
saCtrlAddr.sin_family = AF_INET;\r
}\r
\r
\r
-/*----- \83z\83X\83g\82Ö\90Ú\91±\8f\88\97\9d\92\86\82©\82Ç\82¤\82©\82ð\95Ô\82·---------------------------------------\r
+/*----- ホストへ接続処理中かどうかを返す---------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* YES/NO\r
*----------------------------------------------------------------------------*/\r
\r
\r
\r
#if 0\r
-///*----- \83u\83\8d\83b\83L\83\93\83O\83R\81[\83\8b\82Ì\83t\83b\83N\83R\81[\83\8b\83o\83b\83N --------------------------------\r
+///*----- ブロッキングコールのフックコールバック --------------------------------\r
//*\r
//* Parameter\r
-//* \82È\82µ\r
+//* なし\r
//*\r
//* Return Value\r
//* BOOL FALSE\r
\r
\r
\r
-/*----- SOCKS5\82Ì\83R\83}\83\93\83h\83p\83P\83b\83g\82ð\8dì\90¬\82·\82é ------------------------------------\r
+/*----- SOCKS5のコマンドパケットを作成する ------------------------------------\r
*\r
* Parameter\r
-* SOCKS5REQUEST *Packet : \83p\83P\83b\83g\82ð\8dì\90¬\82·\82é\83\8f\81[\83N\r
-* char Cmd : \83R\83}\83\93\83h\r
-* int ValidIP : IP\83A\83h\83\8c\83X\82ð\8eg\82¤\82©\82Ç\82¤\82©(YES/NO)\r
-* ulong IP : IP\83A\83h\83\8c\83X\r
-* char *Host : \83z\83X\83g\96¼\r
-* ushort Port : \83|\81[\83g\r
+* SOCKS5REQUEST *Packet : パケットを作成するワーク\r
+* char Cmd : コマンド\r
+* int ValidIP : IPアドレスを使うかどうか(YES/NO)\r
+* ulong IP : IPアドレス\r
+* char *Host : ホスト名\r
+* ushort Port : ポート\r
*\r
* Return Value\r
-* int \83R\83}\83\93\83h\83p\83P\83b\83g\82Ì\92·\82³\r
+* int コマンドパケットの長さ\r
*----------------------------------------------------------------------------*/\r
\r
static int Socks5MakeCmdPacket(SOCKS5REQUEST *Packet, char Cmd, int ValidIP, ulong IP, char *Host, ushort Port)\r
\r
Pos = (uchar *)Packet;\r
Pos += SOCKS5REQUEST_SIZE;\r
- TotalLen = SOCKS5REQUEST_SIZE + 2; /* +2\82Í\83|\81[\83g\82Ì\95ª */\r
+ TotalLen = SOCKS5REQUEST_SIZE + 2; /* +2はポートの分 */\r
\r
Packet->Ver = SOCKS5_VER;\r
Packet->Cmd = Cmd;\r
Packet->Rsv = 0;\r
if(ValidIP == YES)\r
{\r
- /* IP\83A\83h\83\8c\83X\82ð\8ew\92è */\r
+ /* IPアドレスを指定 */\r
Packet->Type = SOCKS5_ADRS_IPV4;\r
*((ulong *)Pos) = IP;\r
Pos += 4;\r
}\r
else\r
{\r
- /* \83z\83X\83g\96¼\82ð\8ew\92è */\r
+ /* ホスト名を指定 */\r
Packet->Type = SOCKS5_ADRS_NAME;\r
Len = strlen(Host);\r
*Pos++ = Len;\r
}\r
\r
\r
-/*----- SOCKS\82Ì\83R\83}\83\93\83h\82ð\91\97\82é -------------------------------------------------\r
+/*----- SOCKSのコマンドを送る -------------------------------------------------\r
*\r
* Parameter\r
-* SOCKET Socket : \83\\83P\83b\83g\r
-* void *Data : \91\97\82é\83f\81[\83^\r
-* int Size : \83T\83C\83Y\r
+* SOCKET Socket : ソケット\r
+* void *Data : 送るデータ\r
+* int Size : サイズ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (SUCCESS/FAIL)\r
+* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL)\r
*----------------------------------------------------------------------------*/\r
\r
static int SocksSendCmd(SOCKET Socket, void *Data, int Size, int *CancelCheckWork)\r
\r
Ret = SendData(Socket, (char *)Data, Size, 0, CancelCheckWork);\r
\r
- if(Ret != SUCCESS)\r
+ if(Ret != FFFTP_SUCCESS)\r
SetTaskMsg(MSGJPN033, *((short *)Data));\r
\r
return(Ret);\r
}\r
\r
\r
-/*----- SOCKS5\82Ì\83R\83}\83\93\83h\82É\91Î\82·\82é\83\8a\83v\83\89\83C\83p\83P\83b\83g\82ð\8eó\90M\82·\82é --------------------\r
+/*----- SOCKS5のコマンドに対するリプライパケットを受信する --------------------\r
*\r
* Parameter\r
-* SOCKET Socket : \83\\83P\83b\83g\r
-* SOCKS5REPLY *Packet : \83p\83P\83b\83g\r
+* SOCKET Socket : ソケット\r
+* SOCKS5REPLY *Packet : パケット\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (SUCCESS/FAIL)\r
+* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL)\r
*----------------------------------------------------------------------------*/\r
\r
static int Socks5GetCmdReply(SOCKET Socket, SOCKS5REPLY *Packet)\r
Pos = (uchar *)Packet;\r
Pos += SOCKS5REPLY_SIZE;\r
\r
- if((Ret = ReadNchar(Socket, (char *)Packet, SOCKS5REPLY_SIZE, &CancelFlg)) == SUCCESS)\r
+ if((Ret = ReadNchar(Socket, (char *)Packet, SOCKS5REPLY_SIZE, &CancelFlg)) == FFFTP_SUCCESS)\r
{\r
if(Packet->Type == SOCKS5_ADRS_IPV4)\r
Len = 4 + 2;\r
Len = 6 + 2;\r
else\r
{\r
- if((Ret = ReadNchar(Socket, (char *)Pos, 1, &CancelFlg)) == SUCCESS)\r
+ if((Ret = ReadNchar(Socket, (char *)Pos, 1, &CancelFlg)) == FFFTP_SUCCESS)\r
{\r
Len = *Pos + 2;\r
Pos++;\r
}\r
}\r
\r
- if(Ret == SUCCESS)\r
+ if(Ret == FFFTP_SUCCESS)\r
Ret = ReadNchar(Socket, (char *)Pos, Len, &CancelFlg);\r
}\r
\r
- if(Ret != SUCCESS)\r
+ if(Ret != FFFTP_SUCCESS)\r
SetTaskMsg(MSGJPN034);\r
\r
return(Ret);\r
}\r
\r
\r
-/*----- SOCKS4\82Ì\83R\83}\83\93\83h\82É\91Î\82·\82é\83\8a\83v\83\89\83C\83p\83P\83b\83g\82ð\8eó\90M\82·\82é --------------------\r
+/*----- SOCKS4のコマンドに対するリプライパケットを受信する --------------------\r
*\r
* Parameter\r
-* SOCKET Socket : \83\\83P\83b\83g\r
-* SOCKS5REPLY *Packet : \83p\83P\83b\83g\r
+* SOCKET Socket : ソケット\r
+* SOCKS5REPLY *Packet : パケット\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (SUCCESS/FAIL)\r
+* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL)\r
*----------------------------------------------------------------------------*/\r
\r
static int Socks4GetCmdReply(SOCKET Socket, SOCKS4REPLY *Packet)\r
\r
Ret = ReadNchar(Socket, (char *)Packet, SOCKS4REPLY_SIZE, &CancelFlg);\r
\r
- if(Ret != SUCCESS)\r
+ if(Ret != FFFTP_SUCCESS)\r
DoPrintf(MSGJPN035);\r
\r
return(Ret);\r
}\r
\r
\r
-/*----- SOCKS5\82Ì\94F\8fØ\82ð\8ds\82¤ ----------------------------------------------------\r
+/*----- SOCKS5の認証を行う ----------------------------------------------------\r
*\r
* Parameter\r
-* SOCKET Socket : \83\\83P\83b\83g\r
+* SOCKET Socket : ソケット\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (SUCCESS/FAIL)\r
+* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL)\r
*----------------------------------------------------------------------------*/\r
\r
static int Socks5SelMethod(SOCKET Socket, int *CancelCheckWork)\r
int Len;\r
int Len2;\r
\r
- Ret = SUCCESS;\r
+ Ret = FFFTP_SUCCESS;\r
Socks5Method.Ver = SOCKS5_VER;\r
Socks5Method.Num = 1;\r
if(FwallType == FWALL_SOCKS5_NOAUTH)\r
else\r
Socks5Method.Methods[0] = SOCKS5_AUTH_USER;\r
\r
- if((SocksSendCmd(Socket, &Socks5Method, SOCKS5METHODREQUEST_SIZE, CancelCheckWork) != SUCCESS) ||\r
- (ReadNchar(Socket, (char *)&Socks5MethodReply, SOCKS5METHODREPLY_SIZE, &CancelFlg) != SUCCESS) ||\r
+ if((SocksSendCmd(Socket, &Socks5Method, SOCKS5METHODREQUEST_SIZE, CancelCheckWork) != FFFTP_SUCCESS) ||\r
+ (ReadNchar(Socket, (char *)&Socks5MethodReply, SOCKS5METHODREPLY_SIZE, &CancelFlg) != FFFTP_SUCCESS) ||\r
(Socks5MethodReply.Method == (uchar)0xFF))\r
{\r
SetTaskMsg(MSGJPN036);\r
- Ret = FAIL;\r
+ Ret = FFFTP_FAIL;\r
}\r
else if(Socks5MethodReply.Method == SOCKS5_AUTH_USER)\r
{\r
Buf[2 + Len] = Len2;\r
strcpy(Buf+3+Len, FwallPass);\r
\r
- if((SocksSendCmd(Socket, &Buf, Len+Len2+3, CancelCheckWork) != SUCCESS) ||\r
- (ReadNchar(Socket, (char *)&Socks5Status, SOCKS5USERPASSSTATUS_SIZE, &CancelFlg) != SUCCESS) ||\r
+ if((SocksSendCmd(Socket, &Buf, Len+Len2+3, CancelCheckWork) != FFFTP_SUCCESS) ||\r
+ (ReadNchar(Socket, (char *)&Socks5Status, SOCKS5USERPASSSTATUS_SIZE, &CancelFlg) != FFFTP_SUCCESS) ||\r
(Socks5Status.Status != 0))\r
{\r
SetTaskMsg(MSGJPN037);\r
- Ret = FAIL;\r
+ Ret = FFFTP_FAIL;\r
}\r
}\r
else\r
}\r
\r
\r
-/*----- SOCKS\82ÌBIND\82Ì\91æ\82Q\83\8a\83v\83\89\83C\83\81\83b\83Z\81[\83W\82ð\8eó\82¯\8eæ\82é -------------------------\r
+/*----- SOCKSのBINDの第2リプライメッセージを受け取る -------------------------\r
*\r
* Parameter\r
-* SOCKET Socket : \83\\83P\83b\83g\r
-* SOCKET *Data : \83f\81[\83^\83\\83P\83b\83g\82ð\95Ô\82·\83\8f\81[\83N\r
+* SOCKET Socket : ソケット\r
+* SOCKET *Data : データソケットを返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (SUCCESS/FAIL)\r
+* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL)\r
*----------------------------------------------------------------------------*/\r
\r
int SocksGet2ndBindReply(SOCKET Socket, SOCKET *Data)\r
int Ret;\r
char Buf[300];\r
\r
- Ret = FAIL;\r
+ Ret = FFFTP_FAIL;\r
if((AskHostFireWall() == YES) && (FwallType == FWALL_SOCKS4))\r
{\r
Socks4GetCmdReply(Socket, (SOCKS4REPLY *)Buf);\r
*Data = Socket;\r
- Ret = SUCCESS;\r
+ Ret = FFFTP_SUCCESS;\r
}\r
else if((AskHostFireWall() == YES) &&\r
((FwallType == FWALL_SOCKS5_NOAUTH) || (FwallType == FWALL_SOCKS5_USER)))\r
{\r
Socks5GetCmdReply(Socket, (SOCKS5REPLY *)Buf);\r
*Data = Socket;\r
- Ret = SUCCESS;\r
+ Ret = FFFTP_SUCCESS;\r
}\r
return(Ret);\r
}\r
\r
\r
\r
-// \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+// 暗号化通信対応\r
int AskCryptMode(void)\r
{\r
return(CurHost.CryptMode);\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \82c\82h\82r\82j\82Ì\83t\83\8a\81[\83X\83y\81[\83X\82ð\93¾\82é\r
+* DISKのフリースペースを得る\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
\r
typedef DWORD (WINAPI*FUNC_GETDISKFREESPACEEX) (LPCTSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER);\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static HINSTANCE m_hDll = NULL;\r
\r
\r
\r
\r
-/*----- KERNEL32\82ð\83\8d\81[\83h\82·\82é --------------------------------------------------\r
+/*----- KERNEL32をロードする --------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void LoadKernelLib(void)\r
}\r
\r
\r
-/*----- KERNEL32\82ð\83\8a\83\8a\81[\83X\82·\82é -------------------------------------------------\r
+/*----- KERNEL32をリリースする -------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ReleaseKernelLib(void)\r
}\r
\r
\r
-/*----- \83t\83\8a\81[\83G\83\8a\83A\82Ì\83T\83C\83Y\82ð\95\\82í\82·\95¶\8e\9a\97ñ\82ð\95Ô\82·-------------------------------\r
+/*----- フリーエリアのサイズを表わす文字列を返す-------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* char *\95¶\8e\9a\97ñ\r
+* char *文字列\r
*----------------------------------------------------------------------------*/\r
\r
char *AskLocalFreeSpace(char *Path)\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83T\83C\83Y\95Ï\8dX\8f\88\97\9d\r
+* ダイアログボックスのサイズ変更処理\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
\r
\r
/*---------------------------------------------------------------------------*/\r
-/* \83T\83C\83Y\95Ï\8dX\89Â\94\\82Æ\82·\82é\83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Í WS_CLIPCHILDREN \83X\83^\83C\83\8b\82ð\92Ç\89Á\82· */\r
-/* \82é\82±\82Æ */\r
+/* サイズ変更可能とするダイアログボックスは WS_CLIPCHILDREN スタイルを追加す */\r
+/* ること */\r
/*---------------------------------------------------------------------------*/\r
\r
\r
-/*----- \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\8f\89\8aú\83T\83C\83Y\82ð\90Ý\92è ----------------------------------\r
+/*----- ダイアログボックスの初期サイズを設定 ----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* DIALOGSIZE *Dt : \83_\83C\83A\83\8d\83O\83T\83C\83Y\90Ý\92è\83p\83\89\83\81\81[\83^\r
-* SIZE *Size : \83_\83C\83A\83\8d\83O\82Ì\83T\83C\83Y\r
+* HWND hDlg : ウインドウハンドル\r
+* DIALOGSIZE *Dt : ダイアログサイズ設定パラメータ\r
+* SIZE *Size : ダイアログのサイズ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DlgSizeInit(HWND hDlg, DIALOGSIZE *Dt, SIZE *Size)\r
}\r
\r
\r
-/*----- \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83T\83C\83Y\82ð\95Ô\82· --------------------------------------\r
+/*----- ダイアログボックスのサイズを返す --------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* DIALOGSIZE *Dt : \83_\83C\83A\83\8d\83O\83T\83C\83Y\90Ý\92è\83p\83\89\83\81\81[\83^\r
-* SIZE *Size : \83_\83C\83A\83\8d\83O\82Ì\83T\83C\83Y\82ð\95Ô\82·\83\8f\81[\83N\r
+* HWND hDlg : ウインドウハンドル\r
+* DIALOGSIZE *Dt : ダイアログサイズ設定パラメータ\r
+* SIZE *Size : ダイアログのサイズを返すワーク\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void AskDlgSize(HWND hDlg, DIALOGSIZE *Dt, SIZE *Size)\r
\r
\r
\r
-/*----- \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83T\83C\83Y\95Ï\8dX\8f\88\97\9d ------------------------------------\r
+/*----- ダイアログボックスのサイズ変更処理 ------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* DIALOGSIZE *Dt : \83_\83C\83A\83\8d\83O\83T\83C\83Y\90Ý\92è\83p\83\89\83\81\81[\83^\r
-* RECT *New : \90V\82µ\82¢\83_\83C\83A\83\8d\83O\82Ì\83T\83C\83Y\r
-* int Flg : \83T\83C\83Y\95Ï\8dX\95û\8cü (WMSZ_xxx)\r
+* HWND hDlg : ウインドウハンドル\r
+* DIALOGSIZE *Dt : ダイアログサイズ設定パラメータ\r
+* RECT *New : 新しいダイアログのサイズ\r
+* int Flg : サイズ変更方向 (WMSZ_xxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82É WM_SIZING \83\81\83b\83Z\81[\83W\82ª\97\88\82½\8e\9e\82É\8cÄ\82Ô\8e\96\r
+* ダイアログボックスに WM_SIZING メッセージが来た時に呼ぶ事\r
*----------------------------------------------------------------------------*/\r
\r
void DlgSizeChange(HWND hDlg, DIALOGSIZE *Dt, RECT *New, int Flg)\r
RECT Rect;\r
POINT Point;\r
\r
- /* \8dÅ\8f\83T\83C\83Y\82æ\82è\8f¬\82³\82\82È\82ç\82È\82¢\82æ\82¤\82É\82·\82é\8f\88\97\9d */\r
+ /* 最少サイズより小さくならないようにする処理 */\r
if((New->right - New->left) < Dt->MinSize.cx)\r
{\r
if((Flg == WMSZ_LEFT) || (Flg == WMSZ_TOPLEFT) || (Flg == WMSZ_BOTTOMLEFT))\r
New->bottom = New->top + Dt->MinSize.cy;\r
}\r
\r
- /* \90\85\95½\95û\8cü\82É\88Ú\93®\82·\82é\95\94\95i\82Ì\8f\88\97\9d */\r
+ /* 水平方向に移動する部品の処理 */\r
if(Dt->CurSize.cx != New->right - New->left)\r
{\r
Win = Dt->HorMoveList;\r
}\r
}\r
\r
- /* \90\82\92¼\95û\8cü\82É\88Ú\93®\82·\82é\95\94\95i\82Ì\8f\88\97\9d */\r
+ /* 垂直方向に移動する部品の処理 */\r
if(Dt->CurSize.cy != New->bottom - New->top)\r
{\r
Win = Dt->VarMoveList;\r
}\r
}\r
\r
- /* \91å\82«\82³\82ð\95Ï\8dX\82·\82é\95\94\95i\82Ì\8f\88\97\9d */\r
+ /* 大きさを変更する部品の処理 */\r
if((Dt->CurSize.cx != New->right - New->left) ||\r
(Dt->CurSize.cy != New->bottom - New->top))\r
{\r
--- /dev/null
+========================================================================
+ コンソール アプリケーション : encutf8 プロジェクトの概要
+========================================================================
+
+この encutf8 アプリケーションは、AppWizard によって作成されました。
+
+このファイルには、encutf8 アプリケーションを構成する各ファイル
+の内容の概略が記述されています。
+
+
+encutf8.vcproj
+ これは、アプリケーション ウィザードを使用して生成された VC++ プロジェクトのメイン プロジェクト ファイルです。
+ ファイルを生成した Visual C++ のバージョンに関する情報と、アプリケーション ウィザードで選択されたプラットフォーム、構成、およびプロジェクト機能に関する情報が含まれています。
+
+encutf8.cpp
+ これは、メインのアプリケーション ソース ファイルです。
+
+/////////////////////////////////////////////////////////////////////////////
+その他の標準ファイル :
+
+StdAfx.h, StdAfx.cpp
+ これらのファイルは、プリコンパイル済みヘッダー (PCH) ファイル encutf8.pch とプリコンパイル済み型ファイル StdAfx.obj をビルドするために使用されます。
+
+/////////////////////////////////////////////////////////////////////////////
+その他のメモ :
+
+AppWizard では、ユーザーが追加またはカスタマイズする必要のあるソース コードの部分を示すために、"TODO:" コメントを使用します。
+
+/////////////////////////////////////////////////////////////////////////////
--- /dev/null
+// encutf8.cpp : \83R\83\93\83\\81[\83\8b \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\83G\83\93\83g\83\8a \83|\83C\83\93\83g\82ð\92è\8b`\82µ\82Ü\82·\81B
+//
+
+#include "stdafx.h"
+
+
+int _tmain(int argc, _TCHAR* argv[])
+{
+ FILE* fpIn;
+ FILE* fpOut;
+ fpos_t Length;
+ int InLength;
+ char* pInBuffer;
+ int UTF16Length;
+ wchar_t* pUTF16Buffer;
+ int OutLength;
+ char* pOutBuffer;
+ _tsetlocale(LC_ALL, _T(""));
+ if(argc != 3)
+ {
+ _tprintf(_T("\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\81i\83R\81[\83h\83y\81[\83W932\82Ü\82½\82ÍShift JIS\81j\82Å\8f\91\82©\82ê\82½\83e\83L\83X\83g\83t\83@\83C\83\8b\82ðUTF-8\82É\83G\83\93\83R\81[\83h\82µ\82Ü\82·\81B\n"));
+ _tprintf(_T("\83R\83}\83\93\83h\83\89\83C\83\93\n"));
+ _tprintf(_T("encutf8 [in] [out]\n"));
+ _tprintf(_T("[in] \8c³\82Ì\83\\81[\83X\83t\83@\83C\83\8b\82Ì\83t\83@\83C\83\8b\96¼\n"));
+ _tprintf(_T("[out] \95Û\91¶\90æ\82Ì\83t\83@\83C\83\8b\96¼\n"));
+ return 0;
+ }
+ fpIn = _tfopen(argv[1], _T("rb"));
+ if(!fpIn)
+ {
+ _tprintf(_T("\83t\83@\83C\83\8b\"%s\"\82ª\8aJ\82¯\82Ü\82¹\82ñ\81B\n"), argv[1]);
+ return 0;
+ }
+ fseek(fpIn, 0, SEEK_END);
+ fgetpos(fpIn, &Length);
+ fseek(fpIn, 0, SEEK_SET);
+ InLength = Length / sizeof(char);
+ pInBuffer = new char[InLength];
+ UTF16Length = InLength;
+ pUTF16Buffer = new wchar_t[InLength];
+ OutLength = InLength * 4;
+ pOutBuffer = new char[OutLength];
+ if(!pInBuffer || !pUTF16Buffer || !pOutBuffer)
+ {
+ _tprintf(_T("\83\81\83\82\83\8a\82ª\8am\95Û\82Å\82«\82Ü\82¹\82ñ\81B\n"));
+ return 0;
+ }
+ fread(pInBuffer, 1, InLength, fpIn);
+ fclose(fpIn);
+ fpOut = _tfopen(argv[2], _T("wb"));
+ if(!fpIn)
+ {
+ _tprintf(_T("\83t\83@\83C\83\8b\"%s\"\82ª\8dì\90¬\82Å\82«\82Ü\82¹\82ñ\81B\n"), argv[2]);
+ return 0;
+ }
+ fwrite("\xEF\xBB\xBF", 1, 3, fpOut);
+ UTF16Length = MultiByteToWideChar(CP_ACP, 0, pInBuffer, InLength / sizeof(char), pUTF16Buffer, UTF16Length);
+ OutLength = WideCharToMultiByte(CP_UTF8, 0, pUTF16Buffer, UTF16Length, pOutBuffer, OutLength / sizeof(char), NULL, NULL);
+ fwrite(pOutBuffer, sizeof(char), OutLength, fpOut);
+ fclose(fpOut);
+ return 0;
+}
+
--- /dev/null
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encutf8", "encutf8.vcproj", "{655A8FD3-5998-472F-8906-F0A028B70C4F}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {655A8FD3-5998-472F-8906-F0A028B70C4F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {655A8FD3-5998-472F-8906-F0A028B70C4F}.Debug|Win32.Build.0 = Debug|Win32
+ {655A8FD3-5998-472F-8906-F0A028B70C4F}.Release|Win32.ActiveCfg = Release|Win32
+ {655A8FD3-5998-472F-8906-F0A028B70C4F}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
--- /dev/null
+<?xml version="1.0" encoding="shift_jis"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="encutf8"
+ ProjectGUID="{655A8FD3-5998-472F-8906-F0A028B70C4F}"
+ RootNamespace="encutf8"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="\83\\81[\83X \83t\83@\83C\83\8b"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\encutf8.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="\83w\83b\83_\81[ \83t\83@\83C\83\8b"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath=".\stdafx.h"
+ >
+ </File>
+ <File
+ RelativePath=".\targetver.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="\83\8a\83\\81[\83X \83t\83@\83C\83\8b"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ <File
+ RelativePath=".\ReadMe.txt"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null
+// stdafx.cpp : \95W\8f\80\83C\83\93\83N\83\8b\81[\83h encutf8.pch \82Ì\82Ý\82ð
+// \8aÜ\82Þ\83\\81[\83X \83t\83@\83C\83\8b\82Í\81A\83v\83\8a\83R\83\93\83p\83C\83\8b\8dÏ\82Ý\83w\83b\83_\81[\82É\82È\82è\82Ü\82·\81B
+// stdafx.obj \82É\82Í\83v\83\8a\83R\83\93\83p\83C\83\8b\8dÏ\82Ý\8c^\8fî\95ñ\82ª\8aÜ\82Ü\82ê\82Ü\82·\81B
+
+#include "stdafx.h"
+
+// TODO: \82±\82Ì\83t\83@\83C\83\8b\82Å\82Í\82È\82\81ASTDAFX.H \82Å\95K\97v\82È
+// \92Ç\89Á\83w\83b\83_\81[\82ð\8eQ\8fÆ\82µ\82Ä\82\82¾\82³\82¢\81B
--- /dev/null
+// stdafx.h : \95W\8f\80\82Ì\83V\83X\83e\83\80 \83C\83\93\83N\83\8b\81[\83h \83t\83@\83C\83\8b\82Ì\83C\83\93\83N\83\8b\81[\83h \83t\83@\83C\83\8b\81A\82Ü\82½\82Í
+// \8eQ\8fÆ\89ñ\90\94\82ª\91½\82\81A\82©\82Â\82 \82Ü\82è\95Ï\8dX\82³\82ê\82È\82¢\81A\83v\83\8d\83W\83F\83N\83g\90ê\97p\82Ì\83C\83\93\83N\83\8b\81[\83h \83t\83@\83C\83\8b
+// \82ð\8bL\8fq\82µ\82Ü\82·\81B
+//
+
+#pragma once
+
+#include "targetver.h"
+
+#include <stdio.h>
+#include <tchar.h>
+
+
+
+// TODO: \83v\83\8d\83O\83\89\83\80\82É\95K\97v\82È\92Ç\89Á\83w\83b\83_\81[\82ð\82±\82±\82Å\8eQ\8fÆ\82µ\82Ä\82\82¾\82³\82¢\81B
+
+#include <locale.h>
+#include <windows.h>
+
--- /dev/null
+#pragma once
+
+// \88È\89º\82Ì\83}\83N\83\8d\82Í\81A\8dÅ\92á\8cÀ\95K\97v\82È\83v\83\89\83b\83g\83t\83H\81[\83\80\82ð\92è\8b`\82µ\82Ü\82·\81B\8dÅ\92á\8cÀ\95K\97v\82È\83v\83\89\83b\83g\83t\83H\81[\83\80\82Æ\82Í\81A
+// \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ð\8eÀ\8ds\82·\82é\82½\82ß\82É\95K\97v\82È\8b@\94\\82ð\94õ\82¦\82½\8dÅ\82à\8cÃ\82¢\83o\81[\83W\83\87\83\93\82Ì Windows \82â Internet Explorer \82È\82Ç
+// \82ð\82¢\82¢\82Ü\82·\81B\82±\82ê\82ç\82Ì\83}\83N\83\8d\82Í\81A\8ew\92è\82µ\82½\83o\81[\83W\83\87\83\93\82Æ\81A\82»\82ê\88È\91O\82Ì\83o\81[\83W\83\87\83\93\82Ì\83v\83\89\83b\83g\83t\83H\81[\83\80\8fã\82Å\97\98\97p\82Å\82«\82é\82·\82×\82Ä\82Ì\8b@\94\\82ð\97L\8cø\82É\82·\82é\82±\82Æ\82É\82æ\82Á\82Ä
+// \93®\8dì\82µ\82Ü\82·\81B
+
+// \89º\82Å\8ew\92è\82³\82ê\82½\92è\8b`\82Ì\91O\82É\91Î\8fÛ\83v\83\89\83b\83g\83t\83H\81[\83\80\82ð\8ew\92è\82µ\82È\82¯\82ê\82Î\82È\82ç\82È\82¢\8fê\8d\87\81A\88È\89º\82Ì\92è\8b`\82ð\95Ï\8dX\82µ\82Ä\82\82¾\82³\82¢\81B
+// \88Ù\82È\82é\83v\83\89\83b\83g\83t\83H\81[\83\80\82É\91Î\89\9e\82·\82é\92l\82É\8aÖ\82·\82é\8dÅ\90V\8fî\95ñ\82É\82Â\82¢\82Ä\82Í\81AMSDN \82ð\8eQ\8fÆ\82µ\82Ä\82\82¾\82³\82¢\81B
+#ifndef _WIN32_WINNT // \8dÅ\92á\8cÀ\95K\97v\82È\83v\83\89\83b\83g\83t\83H\81[\83\80\82ª Windows Vista \82Å\82 \82é\82±\82Æ\82ð\8ew\92è\82µ\82Ü\82·\81B
+#define _WIN32_WINNT 0x0600 // \82±\82ê\82ð Windows \82Ì\91¼\82Ì\83o\81[\83W\83\87\83\93\8cü\82¯\82É\93K\90Ø\82È\92l\82É\95Ï\8dX\82µ\82Ä\82\82¾\82³\82¢\81B
+#endif
+
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83t\83@\83C\83\8b\88ê\97\97\r
+* ファイル一覧\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include "OleDragDrop.h"\r
#include "common.h"\r
\r
-// UTF-8\91Î\89\9e\r
+// UTF-8対応\r
#undef __MBSWRAPPER_H__\r
#include "mbswrapper.h"\r
\r
#define WM_DRAGOVER (WM_APP + 102)\r
\r
\r
-/*===== \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\83\8a\83X\83g\97p\83X\83g\83\89\83N\83`\83\83 =====*/\r
+/*===== ファイルリストのリスト用ストラクチャ =====*/\r
\r
typedef struct {\r
- FILELIST *Top; /* \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª */\r
- int Files; /* \83t\83@\83C\83\8b\82Ì\90\94 */\r
+ FILELIST *Top; /* ファイルリストの先頭 */\r
+ int Files; /* ファイルの数 */\r
} FLISTANCHOR;\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static LRESULT CALLBACK LocalWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\r
static LRESULT CALLBACK RemoteWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\r
static BOOL CALLBACK FilterWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static int atoi_n(const char *Str, int Len);\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
extern int SepaWidth;\r
extern int RemoteWidth;\r
extern char FilterStr[FILTER_EXT_LEN+1];\r
extern HWND hHelpWin;\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
extern int LocalWidth;\r
extern int LocalTabWidth[4];\r
extern int RemoteTabWidth[6];\r
extern int DispDrives;\r
extern int MoveMode;\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static HWND hWndListLocal = NULL;\r
static HWND hWndListRemote = NULL;\r
\r
static HIMAGELIST ListImg = NULL;\r
\r
-static char FindStr[40+1] = { "*" }; /* \8c\9f\8dõ\95¶\8e\9a\97ñ */\r
+static char FindStr[40+1] = { "*" }; /* 検索文字列 */\r
static int IgnoreNew = NO;\r
static int IgnoreOld = NO;\r
static int IgnoreExist = NO;\r
\r
static int Dragging = NO;\r
\r
-static int StratusMode; /* 0=\83t\83@\83C\83\8b, 1=\83f\83B\83\8c\83N\83g\83\8a, 2=\83\8a\83\93\83N */\r
+static int StratusMode; /* 0=ファイル, 1=ディレクトリ, 2=リンク */\r
\r
\r
-// \83\8a\83\82\81[\83g\83t\83@\83C\83\8b\83\8a\83X\83g (2007.9.3 yutaka)\r
+// リモートファイルリスト (2007.9.3 yutaka)\r
static FILELIST *remoteFileListBase;\r
static FILELIST *remoteFileListBaseNoExpand;\r
static char remoteFileDir[FMAX_PATH + 1];\r
\r
\r
-/*----- \83t\83@\83C\83\8b\83\8a\83X\83g\83E\83C\83\93\83h\83E\82ð\8dì\90¬\82·\82é ------------------------------------\r
+/*----- ファイルリストウインドウを作成する ------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \90e\83E\83C\83\93\83h\83E\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* HINSTANCE hInst : \83C\83\93\83X\83^\83\93\83X\83n\83\93\83h\83\8b\r
+* HWND hWnd : 親ウインドウのウインドウハンドル\r
+* HINSTANCE hInst : インスタンスハンドル\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int MakeListWin(HWND hWnd, HINSTANCE hInst)\r
LV_COLUMN LvCol;\r
long Tmp;\r
\r
- /*===== \83\8d\81[\83J\83\8b\91¤\82Ì\83\8a\83X\83g\83r\83\85\81[ =====*/\r
+ /*===== ローカル側のリストビュー =====*/\r
\r
hWndListLocal = CreateWindowEx(/*WS_EX_STATICEDGE*/WS_EX_CLIENTEDGE,\r
WC_LISTVIEWA, NULL,\r
SendMessage(hWndListLocal, LVM_INSERTCOLUMN, 3, (LPARAM)&LvCol);\r
}\r
\r
- /*===== \83z\83X\83g\91¤\82Ì\83\8a\83X\83g\83r\83\85\81[ =====*/\r
+ /*===== ホスト側のリストビュー =====*/\r
\r
hWndListRemote = CreateWindowEx(/*WS_EX_STATICEDGE*/WS_EX_CLIENTEDGE,\r
WC_LISTVIEWA, NULL,\r
SendMessage(hWndListRemote, LVM_INSERTCOLUMN, 5, (LPARAM)&LvCol);\r
}\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
if((hWndListLocal == NULL) ||\r
(hWndListRemote == NULL))\r
{\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\83\8a\83X\83g\83E\83C\83\93\83h\83E\82ð\8dí\8f\9c ----------------------------------------\r
+/*----- ファイルリストウインドウを削除 ----------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DeleteListWin(void)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· ------------------\r
+/*----- ローカル側のファイルリストのウインドウハンドルを返す ------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetLocalHwnd(void)\r
}\r
\r
\r
-/*----- \83z\83X\83g\91¤\82Ì\83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· --------------------\r
+/*----- ホスト側のファイルリストのウインドウハンドルを返す --------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetRemoteHwnd(void)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83t\83@\83C\83\8b\83\8a\83X\83g\83E\83C\83\93\83h\83E\82Ì\83\81\83b\83Z\81[\83W\8f\88\97\9d ------------------\r
+/*----- ローカル側のファイルリストウインドウのメッセージ処理 ------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hWnd : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
-* \83\81\83b\83Z\81[\83W\82É\91Î\89\9e\82·\82é\96ß\82è\92l\r
+* メッセージに対応する戻り値\r
*----------------------------------------------------------------------------*/\r
\r
static LRESULT CALLBACK LocalWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)\r
}\r
\r
\r
-/*----- \83z\83X\83g\91¤\82Ì\83t\83@\83C\83\8b\83\8a\83X\83g\83E\83C\83\93\83h\83E\82Ì\83\81\83b\83Z\81[\83W\8f\88\97\9d --------------------\r
+/*----- ホスト側のファイルリストウインドウのメッセージ処理 --------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hWnd : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
-* \83\81\83b\83Z\81[\83W\82É\91Î\89\9e\82·\82é\96ß\82è\92l\r
+* メッセージに対応する戻り値\r
*----------------------------------------------------------------------------*/\r
\r
static LRESULT CALLBACK RemoteWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)\r
}\r
\r
\r
-// \83_\83C\83A\83\8d\83O\83v\83\8d\83V\81[\83W\83\83\r
+// ダイアログプロシージャ\r
static BOOL CALLBACK doOleDlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)\r
{\r
-#define TIMER_ID (100) // \8dì\90¬\82·\82é\83^\83C\83}\82Ì\8e¯\95ÊID\r
-#define TIMER_ELAPSE (100) // WM_TIMER\82Ì\94\90¶\8aÔ\8au\r
+#define TIMER_ID (100) // 作成するタイマの識別ID\r
+#define TIMER_ELAPSE (100) // WM_TIMERの発生間隔\r
MSG message;\r
\r
switch( msg ){\r
- case WM_INITDIALOG: // \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82ª\8dì\90¬\82³\82ê\82½\82Æ\82«\r
+ case WM_INITDIALOG: // ダイアログボックスが作成されたとき\r
SetTimer( hDlg, TIMER_ID, 0, NULL);\r
return TRUE;\r
\r
case WM_TIMER:\r
- ShowWindow(hDlg, SW_HIDE); // \83_\83C\83A\83\8d\83O\82Í\89B\82·\r
+ ShowWindow(hDlg, SW_HIDE); // ダイアログは隠す\r
\r
if (wp != TIMER_ID)\r
break;\r
SetTimer( hDlg, TIMER_ID, TIMER_ELAPSE, NULL );\r
return TRUE;\r
\r
- case WM_COMMAND: // \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\93à\82Ì\89½\82©\82ª\91I\91ð\82³\82ê\82½\82Æ\82«\r
+ case WM_COMMAND: // ダイアログボックス内の何かが選択されたとき\r
switch( LOWORD( wp ) ){\r
-// case IDOK: // \81uOK\81v\83{\83^\83\93\82ª\91I\91ð\82³\82ê\82½\r
- case IDCANCEL: // \81u\83L\83\83\83\93\83Z\83\8b\81v\83{\83^\83\93\82ª\91I\91ð\82³\82ê\82½\r
- // \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82ð\8fÁ\82·\r
+// case IDOK: // 「OK」ボタンが選択された\r
+ case IDCANCEL: // 「キャンセル」ボタンが選択された\r
+ // ダイアログボックスを消す\r
EndDialog( hDlg, 0 );\r
break;\r
}\r
return TRUE;\r
}\r
\r
- return FALSE; // DefWindowProc()\82Å\82Í\82È\82\81AFALSE\82ð\95Ô\82·\82±\82Æ\81I\r
+ return FALSE; // DefWindowProc()ではなく、FALSEを返すこと!\r
#undef TIMER_ID \r
#undef TIMER_ELAPSE \r
}\r
int i;\r
DWORD pid;\r
\r
- // \82·\82Å\82É\83\8a\83\82\81[\83g\82©\82ç\93]\91\97\8dÏ\82Ý\82È\82ç\89½\82à\82µ\82È\82¢\81B(2007.9.3 yutaka)\r
+ // すでにリモートから転送済みなら何もしない。(2007.9.3 yutaka)\r
if (remoteFileListBase != NULL)\r
return;\r
\r
// set temporary folder\r
AskLocalCurDir(LocDir, FMAX_PATH);\r
\r
- // \83A\83v\83\8a\82ð\91½\8fd\8bN\93®\82µ\82Ä\82à\83R\83\93\83t\83\8a\83N\83g\82µ\82È\82¢\82æ\82¤\82É\81A\83e\83\93\83|\83\89\83\8a\83t\83H\83\8b\83_\96¼\82É\83v\83\8d\83Z\83XID\r
- // \82ð\95t\89Á\82·\82é\81B(2007.9.13 yutaka)\r
+ // アプリを多重起動してもコンフリクトしないように、テンポラリフォルダ名にプロセスID\r
+ // を付加する。(2007.9.13 yutaka)\r
GetTempPath(sizeof(TmpDir), TmpDir);\r
pid = GetCurrentProcessId();\r
_snprintf_s(buf, sizeof(buf), _TRUNCATE, "ffftp%d", pid);\r
}\r
#endif\r
\r
- // \8aù\91¶\82Ì\83t\83@\83C\83\8b\82ð\8dí\8f\9c\82·\82é\r
+ // 既存のファイルを削除する\r
for (pf = FileListBase ; pf ; pf = pf->Next) {\r
char fn[FMAX_PATH+1];\r
\r
remove(fn);\r
}\r
\r
- // \83_\83E\83\93\83\8d\81[\83h\90æ\82ð\83e\83\93\83|\83\89\83\8a\82É\90Ý\92è\r
+ // ダウンロード先をテンポラリに設定\r
SetLocalDirHist(TmpDir);\r
\r
- // FFFTP\82É\83_\83E\83\93\83\8d\81[\83h\97v\8b\81\82ð\8fo\82µ\81A\83_\83E\83\93\83\8d\81[\83h\82Ì\8a®\97¹\82ð\91Ò\82Â\81B\r
+ // FFFTPにダウンロード要求を出し、ダウンロードの完了を待つ。\r
PostMessage(GetMainHwnd(), WM_COMMAND, MAKEWPARAM(MENU_DOWNLOAD, 0), 0);\r
\r
for (i = 0 ; i < 10 ; i++) {\r
DispatchMessage(&msg);\r
\r
} else {\r
- // \93]\91\97\83X\83\8c\83b\83h\82ª\93®\82«\8fo\82µ\82½\82ç\94²\82¯\82é\81B\r
+ // 転送スレッドが動き出したら抜ける。\r
if (AskTransferNow() == YES)\r
break;\r
}\r
Sleep(10);\r
}\r
\r
- // OLE D&D\92\86\82É\83\81\83C\83\93\83E\83B\83\93\83h\83E\82ð\83\86\81[\83U\82É\91\80\8dì\82³\82¹\82é\82Æ\81A\82¨\82©\82µ\82\82È\82é\82Ì\82Å\81A\r
- // \89B\82µ\83\82\81[\83_\83\8b\83_\83C\83A\83\8d\83O\82ð\8dì\82é\81B\r
+ // OLE D&D中にメインウィンドウをユーザに操作させると、おかしくなるので、\r
+ // 隠しモーダルダイアログを作る。\r
// (2007.9.11 yutaka)\r
DialogBox(GetFtpInst(), MAKEINTRESOURCE(IDD_OLEDRAG), GetMainHwnd(), (DLGPROC)doOleDlgProc);\r
\r
- // \83_\83E\83\93\83\8d\81[\83h\90æ\82ð\8c³\82É\96ß\82·\r
+ // ダウンロード先を元に戻す\r
SetLocalDirHist(LocDir);\r
SetCurrentDirAsDirHist();\r
\r
- remoteFileListBase = FileListBase; // \82 \82Æ\82Å\83t\83\8a\81[\82·\82é\82±\82Æ\r
- remoteFileListBaseNoExpand = FileListBaseNoExpand; // \82 \82Æ\82Å\83t\83\8a\81[\82·\82é\82±\82Æ\r
+ remoteFileListBase = FileListBase; // あとでフリーすること\r
+ remoteFileListBaseNoExpand = FileListBaseNoExpand; // あとでフリーすること\r
strncpy_s(remoteFileDir, sizeof(remoteFileDir), TmpDir, _TRUNCATE);\r
\r
#if 0\r
return 0;\r
}\r
\r
-// \83e\83\93\83|\83\89\83\8a\82Ì\83t\83@\83C\83\8b\82¨\82æ\82Ñ\83t\83H\83\8b\83_\82ð\8dí\8f\9c\82·\82é\81B\r
+// テンポラリのファイルおよびフォルダを削除する。\r
void doDeleteRemoteFile(void)\r
{\r
if (remoteFileListBase != NULL) {\r
strncat_s(fn, sizeof(fn), "\\", _TRUNCATE);\r
strncat_s(fn, sizeof(fn), pf->File, _TRUNCATE);\r
if (isDirectory(fn)) {\r
- if (_rmdir(fn) == 0) { // \83f\83B\83\8c\83N\83g\83\8a\82ð\8fÁ\82¹\82½\82ç\83J\83E\83\93\83g\83A\83b\83v\r
+ if (_rmdir(fn) == 0) { // ディレクトリを消せたらカウントアップ\r
count++;\r
- if (count >= dirs) // \82·\82×\82Ä\8fÁ\82¹\82½\82ç\8fI\82í\82è\r
+ if (count >= dirs) // すべて消せたら終わり\r
goto skip;\r
}\r
}\r
}\r
}\r
skip:\r
- _rmdir(remoteFileDir); // \8e©\95ª\82Å\8dì\82Á\82½\83f\83B\83\8c\83N\83g\83\8a\82à\8fÁ\82·\r
+ _rmdir(remoteFileDir); // 自分で作ったディレクトリも消す\r
#else\r
SHFILEOPSTRUCT FileOp = { NULL, FO_DELETE, remoteFileDir, NULL, \r
FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI, \r
\r
// yutaka\r
// cf. http://www.nakka.com/lib/\r
-/* \83h\83\8d\83b\83v\83t\83@\83C\83\8b\82Ì\8dì\90¬ */\r
+/* ドロップファイルの作成 */\r
static HDROP APIPRIVATE CreateDropFileMem(char **FileName,int cnt,BOOL fWide)\r
{\r
HDROP hDrop;\r
int i;\r
\r
if(fWide == TRUE){\r
- /* \83\8f\83C\83h\83L\83\83\83\89 */\r
+ /* ワイドキャラ */\r
for(i = 0;i < cnt;i++){\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
// MultiByteToWideChar(CP_ACP,0,FileName[i],-1,wbuf,BUF_SIZE);\r
// flen += (wcslen(wbuf) + 1) * sizeof(wchar_t);\r
flen += sizeof(wchar_t) * MtoW(NULL, 0, FileName[i], -1);\r
}\r
flen++;\r
}else{\r
- /* \83}\83\8b\83`\83o\83C\83g */\r
+ /* マルチバイト */\r
for(i = 0;i < cnt;i++){\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
// flen += lstrlen(FileName[i]) + 1;\r
MtoW(wbuf, BUF_SIZE, FileName[i], -1);\r
flen += sizeof(char) * WtoA(NULL, 0, wbuf, -1);\r
}\r
\r
lpDropFile = (LPDROPFILES) GlobalLock(hDrop);\r
- lpDropFile->pFiles = sizeof(DROPFILES); /* \83t\83@\83C\83\8b\96¼\82Ì\83\8a\83X\83g\82Ü\82Å\82Ì\83I\83t\83Z\83b\83g */\r
+ lpDropFile->pFiles = sizeof(DROPFILES); /* ファイル名のリストまでのオフセット */\r
lpDropFile->pt.x = 0;\r
lpDropFile->pt.y = 0;\r
lpDropFile->fNC = FALSE;\r
- lpDropFile->fWide = fWide; /* \83\8f\83C\83h\83L\83\83\83\89\82Ì\8fê\8d\87\82Í TRUE */\r
+ lpDropFile->fWide = fWide; /* ワイドキャラの場合は TRUE */\r
\r
- /* \8d\\91¢\91Ì\82Ì\8cã\82ë\82É\83t\83@\83C\83\8b\96¼\82Ì\83\8a\83X\83g\82ð\83R\83s\81[\82·\82é\81B(\83t\83@\83C\83\8b\96¼\0\83t\83@\83C\83\8b\96¼\0\83t\83@\83C\83\8b\96¼\0\0) */\r
+ /* 構造体の後ろにファイル名のリストをコピーする。(ファイル名\0ファイル名\0ファイル名\0\0) */\r
if(fWide == TRUE){\r
- /* \83\8f\83C\83h\83L\83\83\83\89 */\r
+ /* ワイドキャラ */\r
wchar_t *buf;\r
\r
buf = (wchar_t *)(&lpDropFile[1]);\r
for(i = 0;i < cnt;i++){\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
// MultiByteToWideChar(CP_ACP,0,FileName[i],-1,wbuf,BUF_SIZE);\r
// wcscpy(buf,wbuf);\r
// buf += wcslen(wbuf) + 1;\r
buf += MtoW(buf, BUF_SIZE, FileName[i], -1);\r
}\r
}else{\r
- /* \83}\83\8b\83`\83o\83C\83g */\r
+ /* マルチバイト */\r
char *buf;\r
\r
buf = (char *)(&lpDropFile[1]);\r
for(i = 0;i < cnt;i++){\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
// lstrcpy(buf,FileName[i]);\r
// buf += lstrlen(FileName[i]) + 1;\r
MtoW(wbuf, BUF_SIZE, FileName[i], -1);\r
}\r
\r
\r
-// OLE D&D\82ð\8aJ\8en\82·\82é \r
+// OLE D&Dを開始する \r
// (2007.8.30 yutaka)\r
static void doDragDrop(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
POINT pt;\r
int ret;\r
\r
- // \83e\83\93\83|\83\89\83\8a\82ð\82«\82ê\82¢\82É\82·\82é (2007.9.3 yutaka)\r
+ // テンポラリをきれいにする (2007.9.3 yutaka)\r
doDeleteRemoteFile();\r
\r
- /* \83h\83\89\83b\83O&\83h\83\8d\83b\83v\82Ì\8aJ\8en */\r
+ /* ドラッグ&ドロップの開始 */\r
cf[0] = CF_HDROP;\r
- cf[1] = CF_HDROP; /* \83t\83@\83C\83\8b */\r
+ cf[1] = CF_HDROP; /* ファイル */\r
if((ret = OLE_IDropSource_Start(hWnd,WM_GETDATA, WM_DRAGOVER, cf,1,DROPEFFECT_COPY | DROPEFFECT_MOVE | DROPEFFECT_LINK)) == DROPEFFECT_MOVE){\r
}\r
\r
- // \83h\83\8d\83b\83v\90æ\82Ì\83A\83v\83\8a\82É WM_LBUTTONUP \82ð\94ò\82Î\82·\81B\r
+ // ドロップ先のアプリに WM_LBUTTONUP を飛ばす。\r
GetCursorPos(&pt);\r
ScreenToClient(hWnd, &pt);\r
PostMessage(hWnd,WM_LBUTTONUP,0,MAKELPARAM(pt.x,pt.y));\r
\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\83E\83C\83\93\83h\83E\82Ì\8b¤\92Ê\83\81\83b\83Z\81[\83W\8f\88\97\9d ----------------------------\r
+/*----- ファイル一覧ウインドウの共通メッセージ処理 ----------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hWnd : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
-* \83\81\83b\83Z\81[\83W\82É\91Î\89\9e\82·\82é\96ß\82è\92l\r
+* メッセージに対応する戻り値\r
*----------------------------------------------------------------------------*/\r
\r
static LRESULT FileListCommonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)\r
return(CallWindowProc(ProcPtr, hWnd, message, wParam, lParam));\r
\r
case WM_DROPFILES :\r
- // \83h\83\89\83b\83O\92\86\82Í\8f\88\97\9d\82µ\82È\82¢\81B\83h\83\89\83b\83O\8cã\82ÉWM_LBUTTONDOWN\82ª\94ò\82ñ\82Å\82\82é\82½\82ß\81A\82»\82±\82Å\8f\88\97\9d\82·\82é\81B\r
+ // ドラッグ中は処理しない。ドラッグ後にWM_LBUTTONDOWNが飛んでくるため、そこで処理する。\r
if (Dragging == YES) \r
return (FALSE);\r
\r
} else if(hWndPnt == hWndListLocal) {\r
PostMessage(GetMainHwnd(), WM_COMMAND, MAKEWPARAM(MENU_DOWNLOAD, 0), 0);\r
}\r
- } else { // \93¯\88ê\83E\83B\83\93\83h\83E\93à\82Ì\8fê\8d\87 (yutaka)\r
+ } else { // 同一ウィンドウ内の場合 (yutaka)\r
if (hWndDragStart == hWndListRemote && hWndPnt == hWndListRemote) {\r
- // remote <-> remote\82Ì\8fê\8d\87\82Í\81A\83T\81[\83o\82Å\82Ì\83t\83@\83C\83\8b\82Ì\88Ú\93®\82ð\8ds\82¤\81B(2007.9.5 yutaka)\r
+ // remote <-> remoteの場合は、サーバでのファイルの移動を行う。(2007.9.5 yutaka)\r
if (RemoteDropFileIndex != -1) {\r
ListView_SetItemState(hWnd, RemoteDropFileIndex, 0, LVIS_DROPHILITED);\r
MoveRemoteFileProc(RemoteDropFileIndex);\r
return(CallWindowProc(ProcPtr, hWnd, message, wParam, lParam));\r
\r
case WM_DRAGDROP: \r
- // OLE D&D\82ð\8aJ\8en\82·\82é (yutaka)\r
+ // OLE D&Dを開始する (yutaka)\r
doDragDrop(hWnd, message, wParam, lParam);\r
return (TRUE);\r
break;\r
\r
- case WM_GETDATA: // \83t\83@\83C\83\8b\82Ì\83p\83X\82ðD&D\90æ\82Ì\83A\83v\83\8a\82Ö\95Ô\82· (yutaka)\r
+ case WM_GETDATA: // ファイルのパスをD&D先のアプリへ返す (yutaka)\r
switch(wParam)\r
{\r
- case CF_HDROP: /* \83t\83@\83C\83\8b */\r
+ case CF_HDROP: /* ファイル */\r
{\r
OSVERSIONINFO os_info;\r
BOOL NTFlag = FALSE;\r
char LocDir[FMAX_PATH+1];\r
char *PathDir;\r
\r
- // \95Ï\90\94\82ª\96¢\8f\89\8aú\89»\82Ì\83o\83O\8fC\90³\r
+ // 変数が未初期化のバグ修正\r
FileListBaseNoExpand = NULL;\r
- // \83\8d\81[\83J\83\8b\91¤\82Å\91I\82Î\82ê\82Ä\82¢\82é\83t\83@\83C\83\8b\82ðFileListBase\82É\93o\98^\r
+ // ローカル側で選ばれているファイルをFileListBaseに登録\r
if (hWndDragStart == hWndListLocal) {\r
AskLocalCurDir(LocDir, FMAX_PATH);\r
PathDir = LocDir;\r
FileListBase = NULL;\r
\r
} else {\r
- // \91I\91ð\82³\82ê\82Ä\82¢\82é\83\8a\83\82\81[\83g\83t\83@\83C\83\8b\82Ì\83\8a\83X\83g\83A\83b\83v\r
- // \82±\82Ì\83^\83C\83~\83\93\83O\82Å\83\8a\83\82\81[\83g\82©\82ç\83\8d\81[\83J\83\8b\82Ì\88ê\8e\9e\83t\83H\83\8b\83_\82Ö\83_\83E\83\93\83\8d\81[\83h\82·\82é\r
+ // 選択されているリモートファイルのリストアップ\r
+ // このタイミングでリモートからローカルの一時フォルダへダウンロードする\r
// (2007.8.31 yutaka)\r
doTransferRemoteFile();\r
PathDir = remoteFileDir;\r
for (filenum = 0; pf ; filenum++) {\r
pf = pf->Next;\r
}\r
- // \83t\83@\83C\83\8b\82ª\96¢\91I\91ð\82Ì\8fê\8d\87\82Í\89½\82à\82µ\82È\82¢\81B(yutaka)\r
+ // ファイルが未選択の場合は何もしない。(yutaka)\r
if (filenum <= 0) {\r
*((HANDLE *)lParam) = NULL;\r
return (FALSE);\r
}\r
\r
- /* \83t\83@\83C\83\8b\96¼\82Ì\94z\97ñ\82ð\8dì\90¬\82·\82é */\r
- // TODO: GlobalAlloc\82ª\95Ô\82·\82Ì\82Í\83\81\83\82\83\8a\83|\83C\83\93\83^\82Å\82Í\82È\82\83n\83\93\83h\83\8b\82¾\82ª\8eÀ\8dÛ\82Í\93¯\82¶\92l\r
+ /* ファイル名の配列を作成する */\r
+ // TODO: GlobalAllocが返すのはメモリポインタではなくハンドルだが実際は同じ値\r
FileNameList = (char **)GlobalAlloc(GPTR,sizeof(char *) * filenum);\r
if(FileNameList == NULL){\r
abort();\r
pf = pf->Next;\r
#if 0\r
if (FileListBase->Node == NODE_DIR) { \r
- // \83t\83H\83\8b\83_\82ð\92Í\82ñ\82¾\8fê\8d\87\82Í\82»\82ê\88È\8d~\93W\8aJ\82µ\82È\82¢\r
+ // フォルダを掴んだ場合はそれ以降展開しない\r
filenum = 1;\r
break;\r
}\r
NTFlag = TRUE;\r
}\r
\r
- /* \83h\83\8d\83b\83v\83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\8dì\90¬ */\r
- /* NT\82Ì\8fê\8d\87\82ÍUNICODE\82É\82È\82é\82æ\82¤\82É\82·\82é */\r
+ /* ドロップファイルリストの作成 */\r
+ /* NTの場合はUNICODEになるようにする */\r
*((HANDLE *)lParam) = CreateDropFileMem(FileNameList, filenum, NTFlag);\r
\r
- /* \83t\83@\83C\83\8b\96¼\82Ì\94z\97ñ\82ð\89ð\95ú\82·\82é */\r
+ /* ファイル名の配列を解放する */\r
for (i = 0; i < filenum ; i++) {\r
GlobalFree(FileNameList[i]);\r
}\r
if (hWndDragStart == hWndListLocal) {\r
DeleteFileList(&FileListBase);\r
} else {\r
- // \82 \82Æ\82Å\83t\83@\83C\83\8b\8dí\8f\9c\82µ\82Ä\83t\83\8a\81[\82·\82é\r
+ // あとでファイル削除してフリーする\r
}\r
\r
return (TRUE);\r
int Node, index;\r
static int prev_index = -1;\r
\r
- // \93¯\88ê\83E\83B\83\93\83h\83E\93à\82Å\82ÌD&D\82Í\83\8a\83\82\81[\83g\91¤\82Ì\82Ý\r
+ // 同一ウィンドウ内でのD&Dはリモート側のみ\r
if (Win != WIN_REMOTE)\r
break;\r
\r
\r
hi.pt = Point;\r
\r
- // \88È\91O\82Ì\91I\91ð\82ð\8fÁ\82·\r
+ // 以前の選択を消す\r
ListView_SetItemState(hWnd, prev_index, 0, LVIS_DROPHILITED);\r
RemoteDropFileIndex = -1;\r
\r
break;\r
\r
case WM_RBUTTONDOWN :\r
- /* \82±\82±\82Å\83t\83@\83C\83\8b\82ð\91I\82Ô */\r
+ /* ここでファイルを選ぶ */\r
CallWindowProc(ProcPtr, hWnd, message, wParam, lParam);\r
\r
EraseListViewTips();\r
if((hWndPnt == hWndListRemote) || (hWndPnt == hWndListLocal))\r
SetCursor(hCsrDrg);\r
else {\r
- // \83}\83E\83X\83|\83C\83\93\83^\82Ì\81~\95\\8e¦\82ð\82â\82ß\82é (yutaka)\r
+ // マウスポインタの×表示をやめる (yutaka)\r
#if 0\r
SetCursor(hCsrNoDrg);\r
#endif\r
}\r
\r
- // OLE D&D\82Ì\8aJ\8en\82ð\8ew\8e¦\82·\82é\r
+ // OLE D&Dの開始を指示する\r
PostMessage(hWnd, WM_DRAGDROP, MAKEWPARAM(wParam, lParam), 0);\r
\r
}\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\83^\83u\95\9d\82ð\8eæ\93¾\82·\82é --------------------------------------\r
+/*----- ファイルリストのタブ幅を取得する --------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void GetListTabWidth(void)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\95û\96@\82É\82µ\82½\82ª\82Á\82Ä\83\8a\83X\83g\83r\83\85\81[\82ð\90Ý\92è\82·\82é --------------------\r
+/*----- ファイル一覧方法にしたがってリストビューを設定する --------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetListViewType(void)\r
}\r
\r
\r
-/*----- \83z\83X\83g\91¤\82Ì\83t\83@\83C\83\8b\88ê\97\97\83E\83C\83\93\83h\83E\82É\83t\83@\83C\83\8b\96¼\82ð\83Z\83b\83g ------------------\r
+/*----- ホスト側のファイル一覧ウインドウにファイル名をセット ------------------\r
*\r
* Parameter\r
-* int Mode : \83L\83\83\83b\83V\83\85\83\82\81[\83h (CACHE_xxx)\r
+* int Mode : キャッシュモード (CACHE_xxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void GetRemoteDirForWnd(int Mode, int *CancelCheckWork)\r
{\r
ListType = LIST_UNKNOWN;\r
\r
- while(GetListOneLine(Str, FMAX_PATH, fd) == SUCCESS)\r
+ while(GetListOneLine(Str, FMAX_PATH, fd) == FFFTP_SUCCESS)\r
{\r
if((ListType = AnalizeFileInfo(Str)) != LIST_UNKNOWN)\r
{\r
DispFileList2View(GetRemoteHwnd(), &Anchor);\r
EraseDispFileList(&Anchor);\r
\r
- // \90æ\93ª\82Ì\83A\83C\83e\83\80\82ð\91I\91ð\r
+ // 先頭のアイテムを選択\r
ListView_SetItemState(GetRemoteHwnd(), 0, LVIS_FOCUSED, LVIS_FOCUSED);\r
}\r
else\r
else\r
{\r
#if defined(HAVE_OPENVMS)\r
- /* OpenVMS\82Ì\8fê\8d\87\8bó\83f\83B\83\8c\83N\83g\83\8a\88Ú\93®\82Ì\8e\9e\82É\8fo\82é\82Ì\82Å\81A\83\81\83b\83Z\81[\83W\82¾\82¯\8fo\82³\82È\82¢\r
- * \82æ\82¤\82É\82·\82é(VIEW\82Í\83N\83\8a\83A\82µ\82Ä\97Ç\82¢) */\r
+ /* OpenVMSの場合空ディレクトリ移動の時に出るので、メッセージだけ出さない\r
+ * ようにする(VIEWはクリアして良い) */\r
if (AskHostType() != HTYPE_VMS)\r
#endif\r
SetTaskMsg(MSGJPN049);\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83t\83@\83C\83\8b\88ê\97\97\83E\83C\83\93\83h\83E\82É\83t\83@\83C\83\8b\96¼\82ð\83Z\83b\83g ----------------\r
+/*----- ローカル側のファイル一覧ウインドウにファイル名をセット ----------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void GetLocalDirForWnd(void)\r
SetLocalDirHist(Scan);\r
DispLocalFreeSpace(Scan);\r
\r
- /* \83f\83B\83\8c\83N\83g\83\8a\81^\83t\83@\83C\83\8b */\r
+ /* ディレクトリ/ファイル */\r
\r
SetYenTail(Scan);\r
strcat(Scan, "*");\r
FindClose(fHnd);\r
}\r
\r
- /* \83h\83\89\83C\83u */\r
+ /* ドライブ */\r
if(DispDrives)\r
{\r
GetLogicalDriveStrings(FMAX_PATH, Scan);\r
DispFileList2View(GetLocalHwnd(), &Anchor);\r
EraseDispFileList(&Anchor);\r
\r
- // \90æ\93ª\82Ì\83A\83C\83e\83\80\82ð\91I\91ð\r
+ // 先頭のアイテムを選択\r
ListView_SetItemState(GetLocalHwnd(), 0, LVIS_FOCUSED, LVIS_FOCUSED);\r
\r
return;\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\8fî\95ñ\82ð\83t\83@\83C\83\8b\88ê\97\97\97p\83\8a\83X\83g\82É\93o\98^\82·\82é --------------------------\r
+/*----- ファイル情報をファイル一覧用リストに登録する --------------------------\r
*\r
* Parameter\r
-* FLISTANCHOR *Anchor : \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª\r
-* char *Name : \83t\83@\83C\83\8b\96¼\r
-* FILETIME *Time : \93ú\95t\r
-* LONGLONG Size : \83T\83C\83Y\r
-* int Attr : \91®\90«\r
-* int Type : \83^\83C\83v (NODE_xxxx)\r
-* int Link : \83\8a\83\93\83N\82©\82Ç\82¤\82© (YES/NO)\r
-* char *Owner : \83I\81[\83i\96¼\r
-* int InfoExist : \8fî\95ñ\82ª\82 \82é\82©\82Ç\82¤\82© (FINFO_xxx)\r
-* int Win : \83E\83B\83\93\83h\83E\94Ô\8d\86 (WIN_xxxx)\r
+* FLISTANCHOR *Anchor : ファイルリストの先頭\r
+* char *Name : ファイル名\r
+* FILETIME *Time : 日付\r
+* LONGLONG Size : サイズ\r
+* int Attr : 属性\r
+* int Type : タイプ (NODE_xxxx)\r
+* int Link : リンクかどうか (YES/NO)\r
+* char *Owner : オーナ名\r
+* int InfoExist : 情報があるかどうか (FINFO_xxx)\r
+* int Win : ウィンドウ番号 (WIN_xxxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void AddDispFileList(FLISTANCHOR *Anchor, char *Name, FILETIME *Time, LONGLONG Size, int Attr, int Type, int Link, char *Owner, int InfoExist, int Win)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\97p\83\8a\83X\83g\82ð\83N\83\8a\83A\82·\82é --------------------------------------\r
+/*----- ファイル一覧用リストをクリアする --------------------------------------\r
*\r
* Parameter\r
-* FLISTANCHOR *Anchor : \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª\r
+* FLISTANCHOR *Anchor : ファイルリストの先頭\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void EraseDispFileList(FLISTANCHOR *Anchor)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\97p\83\8a\83X\83g\82Ì\93à\97e\82ð\83t\83@\83C\83\8b\88ê\97\97\83E\83C\83\93\83h\83E\82É\83Z\83b\83g ------------\r
+/*----- ファイル一覧用リストの内容をファイル一覧ウインドウにセット ------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* FLISTANCHOR *Anchor : \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª\r
+* HWND hWnd : ウインドウハンドル\r
+* FLISTANCHOR *Anchor : ファイルリストの先頭\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DispFileList2View(HWND hWnd, FLISTANCHOR *Anchor)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\83E\83C\83\93\83h\83E\81i\83\8a\83X\83g\83r\83\85\81[\81j\82É\92Ç\89Á --------------------------\r
+/*----- ファイル一覧ウインドウ(リストビュー)に追加 --------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* int Pos : \91}\93ü\88Ê\92u\r
-* char *Name : \96¼\91O\r
-* int Type : \83^\83C\83v (NIDE_xxxx)\r
-* LONGLONG Size : \83T\83C\83Y\r
-* FILETIME *Time : \93ú\95t\r
-* int Attr : \91®\90«\r
-* char Owner : \83I\81[\83i\96¼\r
-* int Link : \83\8a\83\93\83N\82©\82Ç\82¤\82©\r
-* int InfoExist : \8fî\95ñ\82ª\82 \82é\82©\82Ç\82¤\82© (FINFO_xxx)\r
+* HWND hWnd : ウインドウハンドル\r
+* int Pos : 挿入位置\r
+* char *Name : 名前\r
+* int Type : タイプ (NIDE_xxxx)\r
+* LONGLONG Size : サイズ\r
+* FILETIME *Time : 日付\r
+* int Attr : 属性\r
+* char Owner : オーナ名\r
+* int Link : リンクかどうか\r
+* int InfoExist : 情報があるかどうか (FINFO_xxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void AddListView(HWND hWnd, int Pos, char *Name, int Type, LONGLONG Size, FILETIME *Time, int Attr, char *Owner, int Link, int InfoExist)\r
if(Pos == -1)\r
Pos = SendMessage(hWnd, LVM_GETITEMCOUNT, 0, 0);\r
\r
- /* \83A\83C\83R\83\93/\83t\83@\83C\83\8b\96¼ */\r
+ /* アイコン/ファイル名 */\r
LvItem.mask = LVIF_TEXT | LVIF_IMAGE;\r
LvItem.iItem = Pos;\r
LvItem.iSubItem = 0;\r
LvItem.iImage = 4;\r
LvItem.iItem = SendMessage(hWnd, LVM_INSERTITEM, 0, (LPARAM)&LvItem);\r
\r
- /* \93ú\95t/\8e\9e\8d\8f */\r
+ /* 日付/時刻 */\r
FileTime2TimeString(Time, Tmp, DISPFORM_LEGACY, InfoExist);\r
LvItem.mask = LVIF_TEXT;\r
LvItem.iItem = Pos;\r
LvItem.pszText = Tmp;\r
LvItem.iItem = SendMessage(hWnd, LVM_SETITEM, 0, (LPARAM)&LvItem);\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
if(Type == NODE_DIR)\r
strcpy(Tmp, "<DIR>");\r
else if(Type == NODE_DRIVE)\r
LvItem.pszText = Tmp;\r
LvItem.iItem = SendMessage(hWnd, LVM_SETITEM, 0, (LPARAM)&LvItem);\r
\r
- /* \8ag\92£\8eq */\r
+ /* 拡張子 */\r
LvItem.mask = LVIF_TEXT;\r
LvItem.iItem = Pos;\r
LvItem.iSubItem = 3;\r
\r
if(hWnd == GetRemoteHwnd())\r
{\r
- /* \91®\90« */\r
+ /* 属性 */\r
strcpy(Tmp, "");\r
if(InfoExist & FINFO_ATTR)\r
AttrValue2String(Attr, Tmp);\r
LvItem.pszText = Tmp;\r
LvItem.iItem = SendMessage(hWnd, LVM_SETITEM, 0, (LPARAM)&LvItem);\r
\r
- /* \83I\81[\83i\96¼ */\r
+ /* オーナ名 */\r
LvItem.mask = LVIF_TEXT;\r
LvItem.iItem = Pos;\r
LvItem.iSubItem = 5;\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\96¼\88ê\97\97\83E\83C\83\93\83h\83E\82ð\83\\81[\83g\82µ\92¼\82· --------------------------------\r
+/*----- ファイル名一覧ウインドウをソートし直す --------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83B\83\93\83h\83E\94Ô\8d\86 (WIN_xxxx)\r
+* int Win : ウィンドウ番号 (WIN_xxxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ReSortDispList(int Win, int *CancelCheckWork)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\83E\83C\83\93\83h\83E\82Ì\83t\83@\83C\83\8b\82ð\91I\91ð\82·\82é ----------------------------\r
+/*----- ファイル一覧ウインドウのファイルを選択する ----------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* int Type : \91I\91ð\95û\96@ (SELECT_xxx)\r
+* HWND hWnd : ウインドウハンドル\r
+* int Type : 選択方法 (SELECT_xxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SelectFileInList(HWND hWnd, int Type)\r
LvItem.state = 0;\r
if(GetNodeType(Win, i) != NODE_DRIVE)\r
{\r
- if(((FindMode == 0) && (CheckFname(Name, RegExp) == SUCCESS)) ||\r
+ if(((FindMode == 0) && (CheckFname(Name, RegExp) == FFFTP_SUCCESS)) ||\r
((FindMode != 0) && (JreGetStrMatchInfo(Name, 0) != NULL)))\r
{\r
LvItem.state = LVIS_SELECTED;\r
}\r
\r
\r
-/*----- \91I\91ð\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------------\r
+/*----- 選択ダイアログのコールバック ------------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\83E\83C\83\93\83h\83E\82Ì\83t\83@\83C\83\8b\82ð\8c\9f\8dõ\82·\82é ----------------------------\r
+/*----- ファイル一覧ウインドウのファイルを検索する ----------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* int Type : \8c\9f\8dõ\95û\96@ (FIND_xxx)\r
+* HWND hWnd : ウインドウハンドル\r
+* int Type : 検索方法 (FIND_xxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void FindFileInList(HWND hWnd, int Type)\r
_mbslwr(Name);\r
\r
LvItem.state = 0;\r
- if(((FindMode == 0) && (CheckFname(Name, RegExp) == SUCCESS)) ||\r
+ if(((FindMode == 0) && (CheckFname(Name, RegExp) == FFFTP_SUCCESS)) ||\r
((FindMode != 0) && (JreGetStrMatchInfo(Name, 0) != NULL)))\r
{\r
LvItem.mask = LVIF_STATE;\r
_mbslwr(Name);\r
\r
LvItem.state = 0;\r
- if(((FindMode == 0) && (CheckFname(Name, RegExp) == SUCCESS)) ||\r
+ if(((FindMode == 0) && (CheckFname(Name, RegExp) == FFFTP_SUCCESS)) ||\r
((FindMode != 0) && (JreGetStrMatchInfo(Name, 0) != NULL)))\r
{\r
LvItem.mask = LVIF_STATE;\r
\r
\r
#if 0\r
-/*----- \83\8f\83C\83\8b\83h\83J\81[\83h\82ð\90³\8bK\95\\8c»\82É\95Ï\8a·\82·\82é ------------------------------------\r
+/*----- ワイルドカードを正規表現に変換する ------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void WildCard2RegExp(char *Str)\r
#endif\r
\r
\r
-/*----- \83J\81[\83\\83\8b\88Ê\92u\82Ì\83A\83C\83e\83\80\94Ô\8d\86\82ð\95Ô\82· --------------------------------------\r
+/*----- カーソル位置のアイテム番号を返す --------------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83B\83\93\83h\83E\94Ô\8d\86 (WIN_xxxx)\r
+* int Win : ウィンドウ番号 (WIN_xxxx)\r
*\r
* Return Value\r
-* int \83A\83C\83e\83\80\94Ô\8d\86\r
+* int アイテム番号\r
*----------------------------------------------------------------------------*/\r
\r
int GetCurrentItem(int Win)\r
}\r
\r
\r
-/*----- \83A\83C\83e\83\80\90\94\82ð\95Ô\82· ------------------------------------------------------\r
+/*----- アイテム数を返す ------------------------------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83B\83\93\83h\83E\94Ô\8d\86 (WIN_xxxx)\r
+* int Win : ウィンドウ番号 (WIN_xxxx)\r
*\r
* Return Value\r
-* int \83A\83C\83e\83\80\90\94\r
+* int アイテム数\r
*----------------------------------------------------------------------------*/\r
\r
int GetItemCount(int Win)\r
}\r
\r
\r
-/*----- \91I\91ð\82³\82ê\82Ä\82¢\82é\83A\83C\83e\83\80\90\94\82ð\95Ô\82· ----------------------------------------\r
+/*----- 選択されているアイテム数を返す ----------------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83B\83\93\83h\83E\94Ô\8d\86 (WIN_xxxx)\r
+* int Win : ウィンドウ番号 (WIN_xxxx)\r
*\r
* Return Value\r
-* int \91I\91ð\82³\82ê\82Ä\82¢\82é\83A\83C\83e\83\80\90\94\r
+* int 選択されているアイテム数\r
*----------------------------------------------------------------------------*/\r
\r
int GetSelectedCount(int Win)\r
}\r
\r
\r
-/*----- \91I\91ð\82³\82ê\82Ä\82¢\82é\8dÅ\8f\89\82Ì\83A\83C\83e\83\80\94Ô\8d\86\82ð\95Ô\82· --------------------------------\r
+/*----- 選択されている最初のアイテム番号を返す --------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83B\83\93\83h\83E\94Ô\8d\86 (WIN_xxxx)\r
-* int All : \91I\82Î\82ê\82Ä\82¢\82È\82¢\82à\82Ì\82ð\8aÜ\82ß\82é\r
+* int Win : ウィンドウ番号 (WIN_xxxx)\r
+* int All : 選ばれていないものを含める\r
*\r
* Return Value\r
-* int \83A\83C\83e\83\80\94Ô\8d\86\r
-* -1 = \91I\91ð\82³\82ê\82Ä\82¢\82È\82¢\r
+* int アイテム番号\r
+* -1 = 選択されていない\r
*----------------------------------------------------------------------------*/\r
\r
int GetFirstSelected(int Win, int All)\r
}\r
\r
\r
-/*----- \91I\91ð\82³\82ê\82Ä\82¢\82é\8e\9f\82Ì\83A\83C\83e\83\80\94Ô\8d\86\82ð\95Ô\82· ----------------------------------\r
+/*----- 選択されている次のアイテム番号を返す ----------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83B\83\93\83h\83E\94Ô\8d\86 (WIN_xxxx)\r
-* int Pos : \8d¡\82Ì\83A\83C\83e\83\80\94Ô\8d\86\r
-* int All : \91I\82Î\82ê\82Ä\82¢\82È\82¢\82à\82Ì\82à\8aÜ\82ß\82é\r
+* int Win : ウィンドウ番号 (WIN_xxxx)\r
+* int Pos : 今のアイテム番号\r
+* int All : 選ばれていないものも含める\r
*\r
* Return Value\r
-* int \83A\83C\83e\83\80\94Ô\8d\86\r
-* -1 = \91I\91ð\82³\82ê\82Ä\82¢\82È\82¢\r
+* int アイテム番号\r
+* -1 = 選択されていない\r
*----------------------------------------------------------------------------*/\r
\r
int GetNextSelected(int Win, int Pos, int All)\r
}\r
\r
\r
-/*----- \8ew\92è\82³\82ê\82½\96¼\91O\82Ì\83A\83C\83e\83\80\82ð\92T\82· ----------------------------------------\r
+/*----- 指定された名前のアイテムを探す ----------------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
-* char *Name : \96¼\91O\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
+* char *Name : 名前\r
*\r
* Return Value\r
-* int \83A\83C\83e\83\80\94Ô\8d\86\r
-* -1=\8c©\82Â\82©\82ç\82È\82©\82Á\82½\r
+* int アイテム番号\r
+* -1=見つからなかった\r
*----------------------------------------------------------------------------*/\r
\r
int FindNameNode(int Win, char *Name)\r
}\r
\r
\r
-/*----- \8ew\92è\88Ê\92u\82Ì\83A\83C\83e\83\80\82Ì\96¼\91O\82ð\95Ô\82· ----------------------------------------\r
+/*----- 指定位置のアイテムの名前を返す ----------------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
-* int Pos : \88Ê\92u\r
-* char *Buf : \96¼\91O\82ð\95Ô\82·\83o\83b\83t\83@\r
-* int Max : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
+* int Pos : 位置\r
+* char *Buf : 名前を返すバッファ\r
+* int Max : バッファのサイズ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void GetNodeName(int Win, int Pos, char *Buf, int Max)\r
}\r
\r
\r
-/*----- \8ew\92è\88Ê\92u\82Ì\83A\83C\83e\83\80\82Ì\93ú\95t\82ð\95Ô\82· ----------------------------------------\r
+/*----- 指定位置のアイテムの日付を返す ----------------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
-* int Pos : \88Ê\92u\r
-* FILETIME *Buf : \93ú\95t\82ð\95Ô\82·\83o\83b\83t\83@\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
+* int Pos : 位置\r
+* FILETIME *Buf : 日付を返すバッファ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* YES/NO=\93ú\95t\8fî\95ñ\82ª\82È\82©\82Á\82½\r
+* int ステータス\r
+* YES/NO=日付情報がなかった\r
*----------------------------------------------------------------------------*/\r
\r
int GetNodeTime(int Win, int Pos, FILETIME *Buf)\r
}\r
\r
\r
-/*----- \8ew\92è\88Ê\92u\82Ì\83A\83C\83e\83\80\82Ì\83T\83C\83Y\82ð\95Ô\82· --------------------------------------\r
+/*----- 指定位置のアイテムのサイズを返す --------------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
-* int Pos : \88Ê\92u\r
-* int *Buf : \83T\83C\83Y\82ð\95Ô\82·\83\8f\81[\83N\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
+* int Pos : 位置\r
+* int *Buf : サイズを返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* YES/NO=\83T\83C\83Y\8fî\95ñ\82ª\82È\82©\82Á\82½\r
+* int ステータス\r
+* YES/NO=サイズ情報がなかった\r
*----------------------------------------------------------------------------*/\r
\r
int GetNodeSize(int Win, int Pos, LONGLONG *Buf)\r
}\r
\r
\r
-/*----- \8ew\92è\88Ê\92u\82Ì\83A\83C\83e\83\80\82Ì\91®\90«\82ð\95Ô\82· ----------------------------------------\r
+/*----- 指定位置のアイテムの属性を返す ----------------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
-* int Pos : \88Ê\92u\r
-* int *Buf : \91®\90«\82ð\95Ô\82·\83\8f\81[\83N\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
+* int Pos : 位置\r
+* int *Buf : 属性を返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* YES/NO=\83T\83C\83Y\8fî\95ñ\82ª\82È\82©\82Á\82½\r
+* int ステータス\r
+* YES/NO=サイズ情報がなかった\r
*----------------------------------------------------------------------------*/\r
\r
int GetNodeAttr(int Win, int Pos, int *Buf)\r
}\r
\r
\r
-/*----- \8ew\92è\88Ê\92u\82Ì\83A\83C\83e\83\80\82Ì\83^\83C\83v\82ð\95Ô\82· --------------------------------------\r
+/*----- 指定位置のアイテムのタイプを返す --------------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
-* int Pos : \88Ê\92u\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
+* int Pos : 位置\r
*\r
* Return Value\r
-* int \83^\83C\83v (NODE_xxx)\r
+* int タイプ (NODE_xxx)\r
*----------------------------------------------------------------------------*/\r
\r
int GetNodeType(int Win, int Pos)\r
}\r
\r
\r
-/*----- \8ew\92è\88Ê\92u\82Ì\83A\83C\83e\83\80\82Ì\83I\81[\83i\96¼\82ð\95Ô\82· ------------------------------------\r
+/*----- 指定位置のアイテムのオーナ名を返す ------------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
-* int Pos : \88Ê\92u\r
-* char *Buf : \83I\81[\83i\96¼\82ð\95Ô\82·\83o\83b\83t\83@\r
-* int Max : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
+* int Pos : 位置\r
+* char *Buf : オーナ名を返すバッファ\r
+* int Max : バッファのサイズ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void GetNodeOwner(int Win, int Pos, char *Buf, int Max)\r
}\r
\r
\r
-/*----- \83z\83X\83g\91¤\82Ì\83t\83@\83C\83\8b\88ê\97\97\83E\83C\83\93\83h\83E\82ð\83N\83\8a\83A ------------------------------\r
+/*----- ホスト側のファイル一覧ウインドウをクリア ------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void EraseRemoteDirForWnd(void)\r
}\r
\r
\r
-/*----- \91I\91ð\82³\82ê\82Ä\82¢\82é\83t\83@\83C\83\8b\82Ì\91\8d\83T\83C\83Y\82ð\95Ô\82· --------------------------------\r
+/*----- 選択されているファイルの総サイズを返す --------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
*\r
* Return Value\r
-* double \83T\83C\83Y\r
+* double サイズ\r
*----------------------------------------------------------------------------*/\r
\r
double GetSelectedTotalSize(int Win)\r
\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\82Å\91I\82Î\82ê\82Ä\82¢\82é\83t\83@\83C\83\8b\82ð\83\8a\83X\83g\82É\93o\98^\82·\82é ------------------\r
+/*----- ファイル一覧で選ばれているファイルをリストに登録する ------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
-* int Expand : \83T\83u\83f\83B\83\8c\83N\83g\83\8a\82ð\93W\8aJ\82·\82é (YES/NO)\r
-* int All : \91I\82Î\82ê\82Ä\82¢\82È\82¢\82à\82Ì\82à\82·\82×\82Ä\93o\98^\82·\82é (YES/NO)\r
-* FILELIST **Base : \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
+* int Expand : サブディレクトリを展開する (YES/NO)\r
+* int All : 選ばれていないものもすべて登録する (YES/NO)\r
+* FILELIST **Base : ファイルリストの先頭\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *CancelCheckWork)\r
\r
if((All == YES) || (GetSelectedCount(Win) > 0))\r
{\r
- /*===== \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82Ì\83t\83@\83C\83\8b =====*/\r
+ /*===== カレントディレクトリのファイル =====*/\r
\r
Pos = GetFirstSelected(Win, All);\r
while(Pos != -1)\r
\r
if(Expand == YES)\r
{\r
- /*===== \83f\83B\83\8c\83N\83g\83\8a\83c\83\8a\81[ =====*/\r
+ /*===== ディレクトリツリー =====*/\r
\r
Pos = GetFirstSelected(Win, All);\r
while(Pos != -1)\r
}\r
\r
\r
-/* \83f\83o\83b\83O\97p */\r
-/* \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\93à\97e\82ð\95\\8e¦ */\r
+/* デバッグ用 */\r
+/* ファイルリストの内容を表示 */\r
static void DispListList(FILELIST *Pos, char *Title)\r
{\r
DoPrintf("############ %s ############", Title);\r
}\r
\r
\r
-/*----- Drag&Drop\82³\82ê\82½\83t\83@\83C\83\8b\82ð\83\8a\83X\83g\82É\93o\98^\82·\82é -----------------------------\r
+/*----- Drag&Dropされたファイルをリストに登録する -----------------------------\r
*\r
* Parameter\r
-* WPARAM wParam : \83h\83\8d\83b\83v\82³\82ê\82½\83t\83@\83C\83\8b\82Ì\8fî\95ñ\r
-* char *Cur : \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ð\95Ô\82·\83o\83b\83t\83@\r
-* FILELIST **Base : \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª\r
+* WPARAM wParam : ドロップされたファイルの情報\r
+* char *Cur : カレントディレクトリを返すバッファ\r
+* FILELIST **Base : ファイルリストの先頭\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void MakeDroppedFileList(WPARAM wParam, char *Cur, FILELIST **Base)\r
}\r
\r
\r
-/*----- Drag&Drop\82³\82ê\82½\83t\83@\83C\83\8b\82ª\82 \82é\83t\83H\83\8b\83_\82ð\8eæ\93¾\82·\82é -----------------------\r
+/*----- Drag&Dropされたファイルがあるフォルダを取得する -----------------------\r
*\r
* Parameter\r
-* WPARAM wParam : \83h\83\8d\83b\83v\82³\82ê\82½\83t\83@\83C\83\8b\82Ì\8fî\95ñ\r
-* char *Cur : \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ð\95Ô\82·\83o\83b\83t\83@\r
+* WPARAM wParam : ドロップされたファイルの情報\r
+* char *Cur : カレントディレクトリを返すバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void MakeDroppedDir(WPARAM wParam, char *Cur)\r
}\r
\r
\r
-/*----- \83z\83X\83g\91¤\82Ì\83T\83u\83f\83B\83\8c\83N\83g\83\8a\88È\89º\82Ì\83t\83@\83C\83\8b\82ð\83\8a\83X\83g\82É\93o\98^\82·\82é\81i\82P\81j-------\r
+/*----- ホスト側のサブディレクトリ以下のファイルをリストに登録する(1)-------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
-* char *Cur : \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\r
-* FILELIST **Base : \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª\r
+* char *Path : パス名\r
+* char *Cur : カレントディレクトリ\r
+* FILELIST **Base : ファイルリストの先頭\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* NLST -alLR \82ð\8eg\82¤\r
+* NLST -alLR を使う\r
*----------------------------------------------------------------------------*/\r
\r
static void MakeRemoteTree1(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork)\r
\r
if(DoCWD(Path, NO, NO, NO) == FTP_COMPLETE)\r
{\r
- /* \83T\83u\83t\83H\83\8b\83_\82à\8aÜ\82ß\82½\83\8a\83X\83g\82ð\8eæ\93¾ */\r
+ /* サブフォルダも含めたリストを取得 */\r
Sts = DoDirListCmdSkt("R", "", 999, CancelCheckWork); /* NLST -alLR*/\r
DoCWD(Cur, NO, NO, NO);\r
\r
}\r
\r
\r
-/*----- \83z\83X\83g\91¤\82Ì\83T\83u\83f\83B\83\8c\83N\83g\83\8a\88È\89º\82Ì\83t\83@\83C\83\8b\82ð\83\8a\83X\83g\82É\93o\98^\82·\82é\81i\82Q\81j-------\r
+/*----- ホスト側のサブディレクトリ以下のファイルをリストに登録する(2)-------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
-* char *Cur : \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\r
-* FILELIST **Base : \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª\r
+* char *Path : パス名\r
+* char *Cur : カレントディレクトリ\r
+* FILELIST **Base : ファイルリストの先頭\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \8ae\83t\83H\83\8b\83_\82É\88Ú\93®\82µ\82Ä\83\8a\83X\83g\82ð\8eæ\93¾\r
+* 各フォルダに移動してリストを取得\r
*----------------------------------------------------------------------------*/\r
\r
static void MakeRemoteTree2(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork)\r
FILELIST *Pos;\r
FILELIST Pkt;\r
\r
- /* VAX VMS \82Í CWD xxx/yyy \82Æ\82¢\82¤\8ew\92è\82ª\82Å\82«\82È\82¢\82Ì\82Å */\r
- /* CWD xxx, Cwd yyy \82Æ\95¡\90\94\82É\95ª\82¯\82é */\r
+ /* VAX VMS は CWD xxx/yyy という指定ができないので */\r
+ /* CWD xxx, Cwd yyy と複数に分ける */\r
if(AskHostType() != HTYPE_VMS)\r
Sts = DoCWD(Path, NO, NO, NO);\r
else\r
{\r
#if defined(HAVE_OPENVMS)\r
- /* OpenVMS\82Ì\8fê\8d\87\81A\83f\83B\83\8c\83N\83g\83\8a\88Ú\93®\8e\9e\82Í"HOGE.DIR;1"\82ð"HOGE"\82É\82·\82é */\r
+ /* OpenVMSの場合、ディレクトリ移動時は"HOGE.DIR;1"を"HOGE"にする */\r
ReformVMSDirName(Path, TRUE);\r
#endif\r
Sts = DoCWDStepByStep(Path, Cur);\r
{\r
if(Pos->Node == NODE_DIR)\r
{\r
- /* \82Ü\82¸\83f\83B\83\8c\83N\83g\83\8a\96¼\82ð\83Z\83b\83g */\r
+ /* まずディレクトリ名をセット */\r
strcpy(Pkt.File, Pos->File);\r
Pkt.Node = NODE_DIR;\r
Pkt.Size = 0;\r
memset(&Pkt.Time, 0, sizeof(FILETIME));\r
AddFileList(&Pkt, Base);\r
\r
- /* \82»\82Ì\83f\83B\83\8c\83N\83g\83\8a\82Ì\92\86\82ð\8c\9f\8dõ */\r
+ /* そのディレクトリの中を検索 */\r
MakeRemoteTree2(Pos->File, Cur, Base, CancelCheckWork);\r
}\r
Pos = Pos->Next;\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\93à\97e\82ð\95Ê\82Ì\83t\83@\83C\83\8b\83\8a\83X\83g\82É\83R\83s\81[ ----------------------\r
+/*----- ファイルリストの内容を別のファイルリストにコピー ----------------------\r
*\r
* Parameter\r
-* FILELIST **Base : \83R\83s\81[\90æ\r
-* FILELIST *List : \83R\83s\81[\8c³\r
+* FILELIST **Base : コピー先\r
+* FILELIST *List : コピー元\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \83R\83s\81[\82·\82é\82Ì\82Í\83t\83@\83C\83\8b\82Ì\8fî\95ñ\82¾\82¯\r
-* \83f\83B\83\8c\83N\83g\83\8a\82Ì\8fî\95ñ\82Í\83R\83s\81[\82µ\82È\82¢\r
+* コピーするのはファイルの情報だけ\r
+* ディレクトリの情報はコピーしない\r
*----------------------------------------------------------------------------*/\r
\r
static void CopyTmpListToFileList(FILELIST **Base, FILELIST *List)\r
}\r
\r
\r
-/*----- \83z\83X\83g\91¤\82Ì\83t\83@\83C\83\8b\8fî\95ñ\82ð\83t\83@\83C\83\8b\83\8a\83X\83g\82É\93o\98^ --------------------------\r
+/*----- ホスト側のファイル情報をファイルリストに登録 --------------------------\r
*\r
* Parameter\r
-* int Num : \83e\83\93\83|\83\89\83\8a\83t\83@\83C\83\8b\82Ì\83t\83@\83C\83\8b\96¼\94Ô\8d\86 (_ffftp.???)\r
-* char *Path : \83p\83X\96¼\r
-* int IncDir : \8dÄ\8bA\8c\9f\8dõ\82Ì\95û\96@ (RDIR_xxx)\r
-* FILELIST **Base : \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª\r
+* int Num : テンポラリファイルのファイル名番号 (_ffftp.???)\r
+* char *Path : パス名\r
+* int IncDir : 再帰検索の方法 (RDIR_xxx)\r
+* FILELIST **Base : ファイルリストの先頭\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void AddRemoteTreeToFileList(int Num, char *Path, int IncDir, FILELIST **Base)\r
\r
ListType = LIST_UNKNOWN;\r
\r
- while(GetListOneLine(Str, FMAX_PATH, fd) == SUCCESS)\r
+ while(GetListOneLine(Str, FMAX_PATH, fd) == FFFTP_SUCCESS)\r
{\r
if((ListType = AnalizeFileInfo(Str)) == LIST_UNKNOWN)\r
{\r
- if(MakeDirPath(Str, ListType, Path, Dir) == SUCCESS)\r
+ if(MakeDirPath(Str, ListType, Path, Dir) == FFFTP_SUCCESS)\r
{\r
if(IncDir == RDIR_NLST)\r
{\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\8fî\95ñ\82Ì\82P\8ds\82ð\8eæ\93¾ ------------------------------------------\r
+/*----- ファイル一覧情報の1行を取得 ------------------------------------------\r
*\r
* Parameter\r
-* char *Buf : \82P\8ds\82Ì\8fî\95ñ\82ð\83Z\83b\83g\82·\82é\83o\83b\83t\83@\r
-* int Max : \8dÅ\91å\95¶\8e\9a\90\94\r
-* FILE *Fd : \83X\83g\83\8a\81[\83\80\r
+* char *Buf : 1行の情報をセットするバッファ\r
+* int Max : 最大文字数\r
+* FILE *Fd : ストリーム\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (SUCCESS/FAIL)\r
+* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL)\r
*\r
* Note\r
-* VAX VMS\88È\8aO\82Ì\8e\9e\82Í fgets(Buf, Max, Fd) \82Æ\93¯\82¶\r
-* Vax VMS\82Ì\8e\9e\82Í\81A\95¡\90\94\8ds\82Ì\83t\83@\83C\83\8b\8fî\95ñ\82ð\82P\8ds\82É\82Ü\82Æ\82ß\82é\r
+* VAX VMS以外の時は fgets(Buf, Max, Fd) と同じ\r
+* Vax VMSの時は、複数行のファイル情報を1行にまとめる\r
*----------------------------------------------------------------------------*/\r
\r
static int GetListOneLine(char *Buf, int Max, FILE *Fd)\r
char Tmp[FMAX_PATH+1];\r
int Sts;\r
\r
- Sts = FAIL;\r
- while((Sts == FAIL) && (fgets(Buf, Max, Fd) != NULL))\r
+ Sts = FFFTP_FAIL;\r
+ while((Sts == FFFTP_FAIL) && (fgets(Buf, Max, Fd) != NULL))\r
{\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
RemoveReturnCode(Buf);\r
ReplaceAll(Buf, '\x08', ' ');\r
\r
- /* VAX VMS\82Å\82Í\83t\83@\83C\83\8b\8fî\95ñ\82ª\95¡\90\94\8ds\82É\82í\82©\82ê\82Ä\82¢\82é */\r
- /* \82»\82ê\82ð\82P\8ds\82É\82Ü\82Æ\82ß\82é */\r
+ /* VAX VMSではファイル情報が複数行にわかれている */\r
+ /* それを1行にまとめる */\r
if(AskHostType() == HTYPE_VMS)\r
{\r
- if(strchr(Buf, ';') == NULL) /* \83t\83@\83C\83\8b\96¼\88È\8aO\82Ì\8ds */\r
- Sts = FAIL;\r
+ if(strchr(Buf, ';') == NULL) /* ファイル名以外の行 */\r
+ Sts = FFFTP_FAIL;\r
else\r
{\r
Max -= strlen(Buf);\r
}\r
\r
\r
-/*----- \83T\83u\83f\83B\83\8c\83N\83g\83\8a\8fî\95ñ\82Ì\89ð\90Í --------------------------------------------\r
+/*----- サブディレクトリ情報の解析 --------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \83t\83@\83C\83\8b\8fî\95ñ\81i\82P\8ds\81j\r
-* int ListType : \83\8a\83X\83g\82Ì\83^\83C\83v\r
-* char *Path : \90æ\93ª\82©\82ç\82Ì\83p\83X\96¼\r
-* char *Dir : \83f\83B\83\8c\83N\83g\83\8a\96¼\r
+* char *Str : ファイル情報(1行)\r
+* int ListType : リストのタイプ\r
+* char *Path : 先頭からのパス名\r
+* char *Dir : ディレクトリ名\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL=\83f\83B\83\8c\83N\83g\83\8a\8fî\95ñ\82Å\82È\82¢\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL=ディレクトリ情報でない\r
*----------------------------------------------------------------------------*/\r
\r
static int MakeDirPath(char *Str, int ListType, char *Path, char *Dir)\r
{\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
switch(ListType)\r
{\r
case LIST_ACOS :\r
break;\r
\r
default:\r
- if(*(Str + strlen(Str) - 1) == ':') /* \8dÅ\8cã\82ª : \82È\82ç\83T\83u\83f\83B\83\8c\83N\83g\83\8a */\r
+ if(*(Str + strlen(Str) - 1) == ':') /* 最後が : ならサブディレクトリ */\r
{\r
if(strcmp(Str, ".:") != 0)\r
{\r
ReplaceAll(Dir, '\\', '/');\r
}\r
}\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
break;\r
}\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83T\83u\83f\83B\83\8c\83N\83g\83\8a\88È\89º\82Ì\83t\83@\83C\83\8b\82ð\83\8a\83X\83g\82É\93o\98^\82·\82é ----------\r
+/*----- ローカル側のサブディレクトリ以下のファイルをリストに登録する ----------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
-* FILELIST **Base : \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª\r
+* char *Path : パス名\r
+* FILELIST **Base : ファイルリストの先頭\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void MakeLocalTree(char *Path, FILELIST **Base)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\83\8a\83X\83g\82É\8fî\95ñ\82ð\93o\98^\82·\82é ----------------------------------------\r
+/*----- ファイルリストに情報を登録する ----------------------------------------\r
*\r
* Parameter\r
-* FILELIST *Pkt : \93o\98^\82·\82é\83t\83@\83C\83\8b\8fî\95ñ\r
-* FILELIST **Base : \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª\r
+* FILELIST *Pkt : 登録するファイル情報\r
+* FILELIST **Base : ファイルリストの先頭\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void AddFileList(FILELIST *Pkt, FILELIST **Base)\r
\r
DoPrintf("FileList : NODE=%d : %s", Pkt->Node, Pkt->File);\r
\r
- /* \83\8a\83X\83g\82Ì\8fd\95¡\82ð\8eæ\82è\8f\9c\82 */\r
+ /* リストの重複を取り除く */\r
Pos = *Base;\r
while(Pos != NULL)\r
{\r
Pos = Pos->Next;\r
}\r
\r
- if(Pos == NULL) /* \8fd\95¡\82µ\82Ä\82¢\82È\82¢\82Ì\82Å\93o\98^\82·\82é */\r
+ if(Pos == NULL) /* 重複していないので登録する */\r
{\r
if((Pos = malloc(sizeof(FILELIST))) != NULL)\r
{\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\83\8a\83X\83g\82ð\83N\83\8a\83A\82·\82é --------------------------------------------\r
+/*----- ファイルリストをクリアする --------------------------------------------\r
*\r
* Parameter\r
-* FILELIST **Base : \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª\r
+* FILELIST **Base : ファイルリストの先頭\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DeleteFileList(FILELIST **Base)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\83\8a\83X\83g\82É\8ew\92è\82Ì\83t\83@\83C\83\8b\82ª\82 \82é\82©\83`\83F\83b\83N ------------------------\r
+/*----- ファイルリストに指定のファイルがあるかチェック ------------------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
-* FILELIST *Base : \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\90æ\93ª\r
-* int Caps : \91å\95¶\8e\9a/\8f¬\95¶\8e\9a\82Ì\8bæ\95Ê\83\82\81[\83h (COMP_xxx)\r
+* char *Fname : ファイル名\r
+* FILELIST *Base : ファイルリストの先頭\r
+* int Caps : 大文字/小文字の区別モード (COMP_xxx)\r
*\r
* Return Value\r
-* FILELIST *\8c©\82Â\82©\82Á\82½\83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\83f\81[\83^\r
-* NULL=\8c©\82Â\82©\82ç\82È\82¢\r
+* FILELIST *見つかったファイルリストのデータ\r
+* NULL=見つからない\r
*----------------------------------------------------------------------------*/\r
\r
FILELIST *SearchFileList(char *Fname, FILELIST *Base, int Caps)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\8fî\95ñ\82©\82ç\83\8a\83X\83g\83^\83C\83v\82ð\8b\81\82ß\82é ----------------------------------\r
+/*----- ファイル情報からリストタイプを求める ----------------------------------\r
*\r
* Parameter\r
-* char *Str : \83t\83@\83C\83\8b\8fî\95ñ\81i\82P\8ds\81j\r
+* char *Str : ファイル情報(1行)\r
*\r
* Return Value\r
-* int \83\8a\83X\83g\83^\83C\83v (LIST_xxx)\r
+* int リストタイプ (LIST_xxx)\r
*----------------------------------------------------------------------------*/\r
\r
static int AnalizeFileInfo(char *Str)\r
Ret = LIST_SHIBASOKU;\r
else\r
{\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_UNIX_10, LIST_UNIX_20, LIST_UNIX_12, LIST_UNIX_22, LIST_UNIX_50, LIST_UNIX_60 */\r
/* MELCOM80 */\r
\r
- if(FindField(Str, Tmp, 0, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 0, NO) == FFFTP_SUCCESS)\r
{\r
- /* MELCOM80\82Í "d rwxrwxrwx" \82Ì\82æ\82¤\82É\83X\83y\81[\83X\82ª\8bó\82¢\82Ä\82¢\82é */\r
+ /* MELCOM80は "d rwxrwxrwx" のようにスペースが空いている */\r
Flag1 = NO;\r
if((strlen(Tmp) == 1) && (strchr("-dDlL", Tmp[0]) != NULL))\r
{\r
- if(FindField(Str, Tmp, 1, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 1, NO) == FFFTP_SUCCESS)\r
{\r
if((strlen(Tmp) == 9) ||\r
((strlen(Tmp) > 9) && (IsDigit(Tmp[9]) != 0)))\r
Add1 = 0;\r
if((strlen(Tmp) > 10) && (IsDigit(Tmp[10]) != 0))\r
{\r
- /* \82±\82¤\82¢\82¤\8e\9e */\r
+ /* こういう時 */\r
/* drwxr-xr-x1234 owner group 1024 Nov 6 14:21 Linux/ */\r
Add1 = -1;\r
}\r
\r
////////////\r
// LIST_UNIX_60 support\r
- if(FindField(Str, Tmp, 7+Add1, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 7+Add1, NO) == FFFTP_SUCCESS)\r
{\r
GetMonth(Tmp, &Month, &Day);\r
if(Month != 0)\r
////////////\r
// LIST_UNIX_12 support\r
if((Ret == LIST_UNKNOWN) &&\r
- (FindField(Str, Tmp, 6+Add1, NO) == SUCCESS))\r
+ (FindField(Str, Tmp, 6+Add1, NO) == FFFTP_SUCCESS))\r
{\r
GetMonth(Tmp, &Month, &Day);\r
if(Month != 0)\r
////////////\r
// LIST_UNIX_70 support\r
if((Ret == LIST_UNKNOWN) &&\r
- (FindField(Str, Tmp, 6+Add1, NO) == SUCCESS))\r
+ (FindField(Str, Tmp, 6+Add1, NO) == FFFTP_SUCCESS))\r
{\r
GetMonth(Tmp, &Month, &Day);\r
if(Month != 0)\r
///////////\r
\r
if((Ret == LIST_UNKNOWN) &&\r
- (FindField(Str, Tmp, 5+Add1, NO) == SUCCESS))\r
+ (FindField(Str, Tmp, 5+Add1, NO) == FFFTP_SUCCESS))\r
{\r
GetMonth(Tmp, &Month, &Day);\r
if(Month != 0)\r
}\r
\r
if((Ret == LIST_UNKNOWN) &&\r
- (FindField(Str, Tmp, 4+Add1, NO) == SUCCESS))\r
+ (FindField(Str, Tmp, 4+Add1, NO) == FFFTP_SUCCESS))\r
{\r
GetMonth(Tmp, &Month, &Day);\r
if(Month != 0)\r
}\r
\r
if((Ret == LIST_UNKNOWN) &&\r
- (FindField(Str, Tmp, 3+Add1, NO) == SUCCESS))\r
+ (FindField(Str, Tmp, 3+Add1, NO) == FFFTP_SUCCESS))\r
{\r
GetMonth(Tmp, &Month, &Day);\r
if(Month != 0)\r
}\r
}\r
\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_AS400 */\r
\r
if(Ret == LIST_UNKNOWN)\r
{\r
- if((FindField(Str, Tmp, 2, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 2, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, NO) != 0))\r
{\r
- if((FindField(Str, Tmp, 3, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 3, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, NO) != 0))\r
{\r
- if((FindField(Str, Tmp, 1, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 1, NO) == FFFTP_SUCCESS) &&\r
(IsDigit(Tmp[0]) != 0))\r
{\r
- if(FindField(Str, Tmp, 5, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 5, NO) == FFFTP_SUCCESS)\r
{\r
Ret = LIST_AS400;\r
}\r
}\r
}\r
\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_M1800 */\r
\r
if(Ret == LIST_UNKNOWN)\r
{\r
- if((FindField(Str, Tmp, 5, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 5, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, '*', NO) != 0))\r
{\r
- if((FindField(Str, Tmp, 2, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 2, NO) == FFFTP_SUCCESS) &&\r
((IsDigit(Tmp[0]) != 0) || (StrAllSameChar(Tmp, '*') == YES)))\r
{\r
- if((FindField(Str, Tmp, 3, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 3, NO) == FFFTP_SUCCESS) &&\r
((IsDigit(Tmp[0]) != 0) || (StrAllSameChar(Tmp, '*') == YES)))\r
{\r
- if((FindField(Str, Tmp, 0, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 0, NO) == FFFTP_SUCCESS) &&\r
(strlen(Tmp) == 4))\r
{\r
- if(FindField(Str, Tmp, 6, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 6, NO) == FFFTP_SUCCESS)\r
{\r
Ret = LIST_M1800;\r
}\r
}\r
}\r
\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_GP6000 */\r
\r
if(Ret == LIST_UNKNOWN)\r
{\r
- if((FindField(Str, Tmp, 1, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 1, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, NO) != 0))\r
{\r
- if((FindField(Str, Tmp, 2, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 2, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, NO) != 0))\r
{\r
- if((FindField(Str, Tmp, 5, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 5, NO) == FFFTP_SUCCESS) &&\r
(IsDigit(Tmp[0]) != 0))\r
{\r
- if(FindField(Str, Tmp, 6, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 6, NO) == FFFTP_SUCCESS)\r
{\r
Ret = LIST_GP6000;\r
}\r
}\r
}\r
\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_DOS_1, LIST_DOS_2 */\r
\r
if(Ret == LIST_UNKNOWN)\r
{\r
- if((FindField(Str, Tmp, 1, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 1, NO) == FFFTP_SUCCESS) &&\r
(CheckHHMMformat(Tmp) == YES))\r
{\r
- if((FindField(Str, Tmp, 2, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 2, NO) == FFFTP_SUCCESS) &&\r
((Tmp[0] == '<') || (IsDigit(Tmp[0]) != 0)))\r
{\r
- if(FindField(Str, Tmp, 3, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 3, NO) == FFFTP_SUCCESS)\r
{\r
- if((FindField(Str, Tmp, 0, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 0, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, YES) != 0))\r
{\r
TmpInt = atoi(Tmp);\r
}\r
}\r
\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_DOS_3 */\r
\r
if(Ret == LIST_UNKNOWN)\r
{\r
- if((FindField(Str, Tmp, 3, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 3, NO) == FFFTP_SUCCESS) &&\r
(CheckHHMMformat(Tmp) == YES))\r
{\r
- if((FindField(Str, Tmp, 1, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 1, NO) == FFFTP_SUCCESS) &&\r
((Tmp[0] == '<') || (IsDigit(Tmp[0]) != 0)))\r
{\r
- if((FindField(Str, Tmp, 2, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 2, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, YES) != 0))\r
{\r
Ret = LIST_DOS_3;\r
}\r
}\r
\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_DOS_4 */\r
\r
if(Ret == LIST_UNKNOWN)\r
{\r
- if((FindField(Str, Tmp, 0, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 0, NO) == FFFTP_SUCCESS) &&\r
(CheckYYYYMMDDformat(Tmp, NUL) == YES))\r
{\r
- if((FindField(Str, Tmp, 1, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 1, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, NO) != 0))\r
{\r
- if((FindField(Str, Tmp, 2, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 2, NO) == FFFTP_SUCCESS) &&\r
((Tmp[0] == '<') || (IsDigit(Tmp[0]) != 0)))\r
{\r
- if(FindField(Str, Tmp, 3, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 3, NO) == FFFTP_SUCCESS)\r
{\r
Ret = LIST_DOS_4;\r
}\r
}\r
}\r
\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_CHAMELEON */\r
\r
if(Ret == LIST_UNKNOWN)\r
{\r
- if(FindField(Str, Tmp, 2, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 2, NO) == FFFTP_SUCCESS)\r
{\r
GetMonth(Tmp, &Month, &Day);\r
if((Month != 0) && (Day == 0))\r
{\r
- if((FindField(Str, Tmp, 1, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 1, NO) == FFFTP_SUCCESS) &&\r
((Tmp[0] == '<') || (IsDigit(Tmp[0]) != 0)))\r
{\r
- if((FindField(Str, Tmp, 5, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 5, NO) == FFFTP_SUCCESS) &&\r
(CheckHHMMformat(Tmp) == YES))\r
{\r
Ret = LIST_CHAMELEON;\r
}\r
}\r
\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_OS2 */\r
\r
if(Ret == LIST_UNKNOWN)\r
{\r
- if((FindField(Str, Tmp, 3, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 3, NO) == FFFTP_SUCCESS) &&\r
(CheckHHMMformat(Tmp) == YES))\r
{\r
- if((FindField(Str, Tmp, 0, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 0, NO) == FFFTP_SUCCESS) &&\r
(IsDigit(Tmp[0]) != 0))\r
{\r
- if((FindField(Str, Tmp, 2, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 2, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, YES) != 0))\r
{\r
- if(FindField(Str, Tmp, 4, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 4, NO) == FFFTP_SUCCESS)\r
{\r
Ret = LIST_OS2;\r
}\r
}\r
}\r
\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_OS7 */\r
\r
if(Ret == LIST_UNKNOWN)\r
{\r
- if((FindField(Str, Tmp, 0, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 0, NO) == FFFTP_SUCCESS) &&\r
(strlen(Tmp) == 10))\r
{\r
- if((FindField(Str, Tmp, 3, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 3, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, NO) != 0))\r
{\r
- if((FindField(Str, Tmp, 4, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 4, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, NO) != 0))\r
{\r
- if((FindField(Str, Tmp, 2, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 2, NO) == FFFTP_SUCCESS) &&\r
(IsDigit(Tmp[0]) != 0))\r
{\r
- if(FindField(Str, Tmp, 5, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 5, NO) == FFFTP_SUCCESS)\r
{\r
Ret = LIST_OS7_2;\r
}\r
}\r
}\r
}\r
- else if((FindField(Str, Tmp, 1, NO) == SUCCESS) &&\r
+ else if((FindField(Str, Tmp, 1, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, NO) != 0))\r
{\r
- if((FindField(Str, Tmp, 2, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 2, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, NO) != 0))\r
{\r
- if(FindField(Str, Tmp, 3, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 3, NO) == FFFTP_SUCCESS)\r
{\r
Ret = LIST_OS7_1;\r
}\r
}\r
}\r
\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_ALLIED */\r
\r
if(Ret == LIST_UNKNOWN)\r
{\r
- if((FindField(Str, Tmp, 0, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 0, NO) == FFFTP_SUCCESS) &&\r
((Tmp[0] == '<') || (IsDigit(Tmp[0]) != 0)))\r
{\r
- if((FindField(Str, Tmp, 5, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 5, NO) == FFFTP_SUCCESS) &&\r
(CheckHHMMformat(Tmp) == YES))\r
{\r
- if(FindField(Str, Tmp, 3, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 3, NO) == FFFTP_SUCCESS)\r
{\r
GetMonth(Tmp, &Month, &Day);\r
if(Month != 0)\r
{\r
- if((FindField(Str, Tmp, 6, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 6, NO) == FFFTP_SUCCESS) &&\r
(IsDigit(Tmp[0]) != 0))\r
{\r
Ret = LIST_ALLIED;\r
}\r
}\r
\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_OS9 */\r
\r
if(Ret == LIST_UNKNOWN)\r
{\r
- if((FindField(Str, Tmp, 1, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 1, NO) == FFFTP_SUCCESS) &&\r
(CheckYYMMDDformat(Tmp, NUL, NO) != 0))\r
{\r
- if((FindField(Str, Tmp, 2, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 2, NO) == FFFTP_SUCCESS) &&\r
(IsDigit(Tmp[0]) != 0) && (strlen(Tmp) == 4))\r
{\r
- if((FindField(Str, Tmp, 5, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 5, NO) == FFFTP_SUCCESS) &&\r
(IsDigit(Tmp[0]) != 0))\r
{\r
- if(FindField(Str, Tmp, 6, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 6, NO) == FFFTP_SUCCESS)\r
{\r
Ret = LIST_OS9;\r
}\r
}\r
}\r
\r
- /* \88È\89º\82Ì\83t\83H\81[\83}\83b\83g\82ð\83`\83F\83b\83N */\r
+ /* 以下のフォーマットをチェック */\r
/* LIST_IBM */\r
\r
if(Ret == LIST_UNKNOWN)\r
{\r
- if((FindField(Str, Tmp, 2, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 2, NO) == FFFTP_SUCCESS) &&\r
(CheckYYYYMMDDformat(Tmp, NUL) == YES))\r
{\r
- if((FindField(Str, Tmp, 1, NO) == SUCCESS) && IsDigit(Tmp[0]))\r
+ if((FindField(Str, Tmp, 1, NO) == FFFTP_SUCCESS) && IsDigit(Tmp[0]))\r
{\r
- if((FindField(Str, Tmp, 7, NO) == SUCCESS) && IsDigit(Tmp[0]))\r
+ if((FindField(Str, Tmp, 7, NO) == FFFTP_SUCCESS) && IsDigit(Tmp[0]))\r
{\r
- if(FindField(Str, Tmp, 9, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 9, NO) == FFFTP_SUCCESS)\r
{\r
Ret = LIST_IBM;\r
}\r
}\r
\r
\r
-/*----- UNIX\8cn\83\8a\83X\83g\83^\83C\83v\82Ì\83`\83F\83b\83N\82ð\8ds\82È\82¤ ----------------------------------\r
+/*----- UNIX系リストタイプのチェックを行なう ----------------------------------\r
*\r
* Parameter\r
-* char *Str : \83t\83@\83C\83\8b\8fî\95ñ\81i\82P\8ds\81j\r
-* char *Tmp : \88ê\8e\9e\83\8f\81[\83N\r
-* int Add1 : \89Á\8eZ\83p\83\89\83\81\81[\83^1\r
-* int Add2 : \89Á\8eZ\83p\83\89\83\81\81[\83^2\r
-* int Day : \93ú (0=\82±\82±\82Å\8eæ\93¾\82·\82é)\r
+* char *Str : ファイル情報(1行)\r
+* char *Tmp : 一時ワーク\r
+* int Add1 : 加算パラメータ1\r
+* int Add2 : 加算パラメータ2\r
+* int Day : 日 (0=ここで取得する)\r
*\r
* Return Value\r
-* int \83\8a\83X\83g\83^\83C\83v (LIST_xxx)\r
+* int リストタイプ (LIST_xxx)\r
*----------------------------------------------------------------------------*/\r
\r
static int CheckUnixType(char *Str, char *Tmp, int Add1, int Add2, int Day)\r
Flag = 0;\r
Ret = LIST_UNKNOWN;\r
\r
-//Day\82É\82æ\82Á\82ÄAdd3\82ð\95Ï\82¦\82é\r
+//DayによってAdd3を変える\r
\r
Add3 = 0;\r
if(Day != 0)\r
Add3 = -1;\r
\r
- // unix\8cn\83`\83F\83b\83N\r
+ // unix系チェック\r
if((Day != 0) ||\r
- ((FindField(Str, Tmp, 6+Add1+Add2+Add3, NO) == SUCCESS) &&\r
+ ((FindField(Str, Tmp, 6+Add1+Add2+Add3, NO) == FFFTP_SUCCESS) &&\r
((atoi(Tmp) >= 1) && (atoi(Tmp) <= 31))))\r
{\r
- if((FindField(Str, Tmp, 7+Add1+Add2+Add3, NO) == SUCCESS) &&\r
- ((atoi(Tmp) >= 1900) || (GetHourAndMinute(Tmp, &Hour, &Minute) == SUCCESS)))\r
+ if((FindField(Str, Tmp, 7+Add1+Add2+Add3, NO) == FFFTP_SUCCESS) &&\r
+ ((atoi(Tmp) >= 1900) || (GetHourAndMinute(Tmp, &Hour, &Minute) == FFFTP_SUCCESS)))\r
{\r
- if(FindField(Str, Tmp, 8+Add1+Add2+Add3, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 8+Add1+Add2+Add3, NO) == FFFTP_SUCCESS)\r
{\r
Flag = 1;\r
}\r
}\r
}\r
\r
- // \92\86\8d\91\8cêSolaris\90ê\97p\r
+ // 中国語Solaris専用\r
if(Flag == 0)\r
{\r
- if((FindField(Str, Tmp, 7+Add1+Add2+Add3, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 7+Add1+Add2+Add3, NO) == FFFTP_SUCCESS) &&\r
((atoi(Tmp) >= 1) && (atoi(Tmp) <= 31)))\r
{\r
- if((FindField(Str, Tmp, 5+Add1+Add2+Add3, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 5+Add1+Add2+Add3, NO) == FFFTP_SUCCESS) &&\r
(atoi(Tmp) >= 1900))\r
{\r
- if((FindField(Str, Tmp, 6+Add1+Add2+Add3, NO) == SUCCESS) &&\r
+ if((FindField(Str, Tmp, 6+Add1+Add2+Add3, NO) == FFFTP_SUCCESS) &&\r
(((atoi(Tmp) >= 1) && (atoi(Tmp) <= 9) && \r
((unsigned char)Tmp[1] == 0xD4) &&\r
((unsigned char)Tmp[2] == 0xC2)) ||\r
((unsigned char)Tmp[2] == 0xD4) && \r
((unsigned char)Tmp[3] == 0xC2))))\r
{\r
- if(FindField(Str, Tmp, 8+Add1+Add2+Add3, NO) == SUCCESS)\r
+ if(FindField(Str, Tmp, 8+Add1+Add2+Add3, NO) == FFFTP_SUCCESS)\r
{\r
Flag = 2;\r
}\r
}\r
\r
\r
-/*----- HH:MM \8c`\8e®\82Ì\95¶\8e\9a\97ñ\82©\82Ç\82¤\82©\82ð\83`\83F\83b\83N ----------------------------------\r
+/*----- HH:MM 形式の文字列かどうかをチェック ----------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (YES/NO)\r
+* int ステータス (YES/NO)\r
*\r
* Note\r
-* \8bæ\90Ø\82è\95¶\8e\9a\82Í\89½\82Å\82à\82æ\82¢\r
-* \8e\9e\95ª\82Å\82È\82\82Ä\82à\82æ\82¢\r
-* \8cã\82ë\82É\97]\95ª\82È\95¶\8e\9a\82ª\95t\82¢\82Ä\82¢\82Ä\82à\82æ\82¢\r
+* 区切り文字は何でもよい\r
+* 時分でなくてもよい\r
+* 後ろに余分な文字が付いていてもよい\r
*----------------------------------------------------------------------------*/\r
\r
static int CheckHHMMformat(char *Str)\r
}\r
\r
\r
-/*----- YY/MM/DD \8c`\8e®\82Ì\95¶\8e\9a\97ñ\82©\82Ç\82¤\82©\82ð\83`\83F\83b\83N -------------------------------\r
+/*----- YY/MM/DD 形式の文字列かどうかをチェック -------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* char Sym : \90\94\8e\9a\82Ì\91ã\82í\82è\82É\8eg\82¦\82é\8bL\8d\86 (NUL=\90\94\8e\9a\88È\8aO\8eg\82¦\82È\82¢)\r
-* int Dig3 : 3\8c\85\82Ì\94N\82ð\8b\96\89Â\r
+* char *Str : 文字列\r
+* char Sym : 数字の代わりに使える記号 (NUL=数字以外使えない)\r
+* int Dig3 : 3桁の年を許可\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* 0 = \8aY\93\96\82µ\82È\82¢\r
+* int ステータス\r
+* 0 = 該当しない\r
* 1 = ??/??/??, ??/??/???\r
* 2 = ???/??/??\r
*\r
* Note\r
-* \8bæ\90Ø\82è\95¶\8e\9a\82Í\89½\82Å\82à\82æ\82¢\r
-* \94N\8c\8e\93ú\82Å\82È\82\82Ä\82à\82æ\82¢\r
+* 区切り文字は何でもよい\r
+* 年月日でなくてもよい\r
*----------------------------------------------------------------------------*/\r
\r
static int CheckYYMMDDformat(char *Str, char Sym, int Dig3)\r
}\r
\r
\r
-/*----- YYYY/MM/DD \8c`\8e®\82Ì\95¶\8e\9a\97ñ\82©\82Ç\82¤\82©\82ð\83`\83F\83b\83N -----------------------------\r
+/*----- YYYY/MM/DD 形式の文字列かどうかをチェック -----------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* char Sym : \90\94\8e\9a\82Ì\91ã\82í\82è\82É\8eg\82¦\82é\8bL\8d\86 (NUL=\90\94\8e\9a\88È\8aO\8eg\82¦\82È\82¢)\r
+* char *Str : 文字列\r
+* char Sym : 数字の代わりに使える記号 (NUL=数字以外使えない)\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (YES/NO)\r
+* int ステータス (YES/NO)\r
*\r
* Note\r
-* \8bæ\90Ø\82è\95¶\8e\9a\82Í\89½\82Å\82à\82æ\82¢\r
-* \94N\8c\8e\93ú\82Å\82È\82\82Ä\82à\82æ\82¢\r
+* 区切り文字は何でもよい\r
+* 年月日でなくてもよい\r
*----------------------------------------------------------------------------*/\r
\r
static int CheckYYYYMMDDformat(char *Str, char Sym)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\8fî\95ñ\82©\82ç\83t\83@\83C\83\8b\96¼\81A\83T\83C\83Y\82È\82Ç\82ð\8eæ\82è\8fo\82· ----------------------\r
+/*----- ファイル情報からファイル名、サイズなどを取り出す ----------------------\r
*\r
* Parameter\r
-* char *Str : \83t\83@\83C\83\8b\8fî\95ñ\81i\82P\8ds\81j\r
-* int ListType : \83\8a\83X\83g\82Ì\83^\83C\83v\r
-* char *Name : \83t\83@\83C\83\8b\96¼\82Ì\83R\83s\81[\90æ\r
-* LONGLONG *Size : \83T\83C\83Y\82Ì\83R\83s\81[\90æ\r
-* FILETIME *Time : \93ú\95t\82Ì\83R\83s\81[\90æ\r
-* int *Attr : \91®\90«\82Ì\83R\83s\81[\90æ\r
-* char *Owner : \83I\81[\83i\96¼\r
-* int *Link : \83\8a\83\93\83N\82©\82Ç\82¤\82© (YES/NO)\r
-* int *InfoExist : \8e\9e\8d\8f\82Ì\8fî\95ñ\82ª\82 \82Á\82½\82©\82Ç\82¤\82© (YES/NO)\r
+* char *Str : ファイル情報(1行)\r
+* int ListType : リストのタイプ\r
+* char *Name : ファイル名のコピー先\r
+* LONGLONG *Size : サイズのコピー先\r
+* FILETIME *Time : 日付のコピー先\r
+* int *Attr : 属性のコピー先\r
+* char *Owner : オーナ名\r
+* int *Link : リンクかどうか (YES/NO)\r
+* int *InfoExist : 時刻の情報があったかどうか (YES/NO)\r
*\r
* Return Value\r
-* int \8eí\97Þ (NODE_xxxx)\r
+* int 種類 (NODE_xxxx)\r
*----------------------------------------------------------------------------*/\r
\r
static int ResolvFileInfo(char *Str, int ListType, char *Fname, LONGLONG *Size, FILETIME *Time, int *Attr, char *Owner, int *Link, int *InfoExist)\r
static const int DosDate[3][3][2] = { { {0, 0}, {3, 4}, {6, 7} }, { {6, 7}, {0, 0}, {3, 4} }, { {6, 7}, {0, 0}, {3, 4} } };\r
static const int DosLongFname[3] = { YES, YES, NO };\r
\r
- /* \82Ü\82¸\83N\83\8a\83A\82µ\82Ä\82¨\82 */\r
+ /* まずクリアしておく */\r
Ret = NODE_NONE;\r
*Size = -1;\r
*Attr = 0;\r
\r
*InfoExist |= (FINFO_DATE | FINFO_SIZE);\r
\r
- /* \8e\9e\8d\8f */\r
+ /* 時刻 */\r
FindField(Str, Buf, DosPos[offs][0], NO);\r
if((Pos = strchr(Buf, ':')) != NULL)\r
{\r
}\r
}\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
FindField(Str, Buf, DosPos[offs][1], NO);\r
if((offs2 = CheckYYMMDDformat(Buf, NUL, YES)) == 0)\r
break;\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, DosPos[offs][2], NO);\r
*Size = _atoi64(Buf);\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, DosPos[offs][3], DosLongFname[offs]) == SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, DosPos[offs][3], DosLongFname[offs]) == FFFTP_SUCCESS)\r
{\r
Ret = NODE_FILE;\r
if(Buf[0] == '<')\r
case LIST_DOS_4 :\r
*InfoExist |= (FINFO_TIME | FINFO_DATE | FINFO_SIZE);\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
FindField(Str, Buf, 0, NO);\r
sTime.wYear = atoi(Buf);\r
sTime.wMonth = atoi(Buf+5);\r
sTime.wDay = atoi(Buf+8);\r
\r
- /* \8e\9e\8d\8f */\r
+ /* 時刻 */\r
*InfoExist |= FINFO_TIME;\r
FindField(Str, Buf, 1, NO);\r
sTime.wHour = atoi(Buf);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, 2, NO);\r
*Size = _atoi64(Buf);\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 3, YES) == SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 3, YES) == FFFTP_SUCCESS)\r
{\r
Ret = NODE_FILE;\r
if(Buf[0] == '<')\r
case LIST_OS2 :\r
*InfoExist |= (FINFO_DATE | FINFO_SIZE);\r
\r
- /* \8e\9e\8d\8f */\r
+ /* 時刻 */\r
FindField(Str, Buf, 3, NO);\r
if((Pos = strchr(Buf, ':')) != NULL)\r
{\r
sTime.wMilliseconds = 0;\r
}\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
FindField(Str, Buf, 2, NO);\r
sTime.wYear = Assume1900or2000(atoi(Buf+6));\r
sTime.wMonth = atoi(Buf+0);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, 0, NO);\r
*Size = _atoi64(Buf);\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 4, YES) == SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 4, YES) == FFFTP_SUCCESS)\r
{\r
FindField(Str, Buf, 1, NO);\r
Ret = NODE_FILE;\r
case LIST_CHAMELEON :\r
*InfoExist |= (FINFO_TIME | FINFO_DATE | FINFO_SIZE | FINFO_ATTR);\r
\r
- /* \91®\90« */\r
+ /* 属性 */\r
FindField(Str, Buf, 6, NO);\r
strcat(Buf, "------");\r
*Attr = AttrString2Value(Buf+1);\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
FindField(Str, Buf, 2, NO);\r
- GetMonth(Buf, &sTime.wMonth, &sTime.wDay); /* wDay\82Í\8fí\82É0 */\r
+ GetMonth(Buf, &sTime.wMonth, &sTime.wDay); /* wDayは常に0 */\r
FindField(Str, Buf, 3, NO);\r
sTime.wDay = atoi(Buf);\r
FindField(Str, Buf, 4, NO);\r
sTime.wYear = atoi(Buf);\r
\r
- /* \8e\9e\8d\8f */\r
+ /* 時刻 */\r
FindField(Str, Buf, 5, NO);\r
sTime.wHour = atoi(Buf);\r
sTime.wMinute = atoi(Buf+3);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, 1, NO);\r
*Size = _atoi64(Buf);\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 0, NO) == SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 0, NO) == FFFTP_SUCCESS)\r
{\r
Ret = NODE_FILE;\r
if(Buf[0] == '<')\r
case LIST_AS400 :\r
*InfoExist |= (FINFO_TIME | FINFO_DATE | FINFO_SIZE);\r
\r
- /* \83I\81[\83i\96¼ */\r
+ /* オーナ名 */\r
FindField(Str, Buf, 0, NO);\r
strncpy(Owner, Buf, OWNER_NAME_LEN);\r
\r
- /* \8e\9e\8d\8f */\r
+ /* 時刻 */\r
FindField(Str, Buf, 3, NO);\r
sTime.wHour = atoi(Buf);\r
sTime.wMinute = atoi(Buf+3);\r
sTime.wSecond = 0;\r
sTime.wMilliseconds = 0;\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
FindField(Str, Buf, 2, NO);\r
sTime.wYear = Assume1900or2000(atoi(Buf));\r
sTime.wMonth = atoi(Buf + 3);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, 1, NO);\r
*Size = _atoi64(Buf);\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 5, YES) == SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 5, YES) == FFFTP_SUCCESS)\r
{\r
Ret = NODE_FILE;\r
if((Pos = strchr(Fname, '/')) != NULL)\r
case LIST_M1800 :\r
*InfoExist |= FINFO_ATTR;\r
\r
- /* \91®\90« */\r
+ /* 属性 */\r
FindField(Str, Buf, 0, NO);\r
strcat(Buf, "------");\r
*Attr = AttrString2Value(Buf+1);\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
Time->dwLowDateTime = 0;\r
Time->dwHighDateTime = 0;\r
FindField(Str, Buf, 5, NO);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
}\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 6, YES) == SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 6, YES) == FFFTP_SUCCESS)\r
{\r
RemoveTailingSpaces(Fname);\r
Ret = NODE_FILE;\r
case LIST_GP6000 :\r
*InfoExist |= (FINFO_TIME | FINFO_DATE | FINFO_SIZE | FINFO_ATTR);\r
\r
- /* \83I\81[\83i\96¼ */\r
+ /* オーナ名 */\r
FindField(Str, Buf, 3, NO);\r
strncpy(Owner, Buf, OWNER_NAME_LEN);\r
\r
- /* \8e\9e\8d\8f */\r
+ /* 時刻 */\r
FindField(Str, Buf, 2, NO);\r
sTime.wHour = atoi(Buf);\r
sTime.wMinute = atoi(Buf+3);\r
sTime.wSecond = 0;\r
sTime.wMilliseconds = 0;\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
FindField(Str, Buf, 1, NO);\r
sTime.wYear = Assume1900or2000(atoi(Buf));\r
sTime.wMonth = atoi(Buf + 3);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, 5, NO);\r
*Size = _atoi64(Buf);\r
\r
- /* \91®\90« */\r
+ /* 属性 */\r
FindField(Str, Buf, 0, NO);\r
*Attr = AttrString2Value(Buf+1);\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 6, YES) == SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 6, YES) == FFFTP_SUCCESS)\r
{\r
Ret = NODE_FILE;\r
if(strchr("dl", Buf[0]) != NULL)\r
\r
case LIST_ACOS :\r
case LIST_ACOS_4 :\r
- /* \96¼\91O */\r
+ /* 名前 */\r
FindField(Str, Fname, 0, NO);\r
Ret = NODE_FILE;\r
break;\r
case LIST_VMS :\r
*InfoExist |= (FINFO_TIME | FINFO_DATE | FINFO_SIZE);\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, 1, NO);\r
*Size = _atoi64(Buf) * BLOCK_SIZE;\r
\r
- /* \8e\9e\8d\8f\81^\93ú\95t */\r
+ /* 時刻/日付 */\r
FindField(Str, Buf, 2, NO);\r
GetVMSdate(Buf, &sTime.wYear, &sTime.wMonth, &sTime.wDay);\r
\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \96¼\91O */\r
+ /* 名前 */\r
FindField(Str, Fname, 0, NO);\r
\r
Ret = NODE_FILE;\r
{\r
if(_strnicmp(Pos, ".DIR;", 5) == 0)\r
{\r
- /* OpenVMS\82Ì\8fê\8d\87\81A\83t\83@\83C\83\8b/\83f\83B\83\8c\83N\83g\83\8a\8dí\8f\9c\8e\9e\82É\82Í".DIR;?"\82Ü\82Å\82È\82¢\82Æ\r
- * \8dí\8f\9c\82Å\82«\82È\82¢\82Ì\82Å\81A\82±\82±\82Å\82Í\82Â\82Ô\82³\82È\82¢ */\r
+ /* OpenVMSの場合、ファイル/ディレクトリ削除時には".DIR;?"までないと\r
+ * 削除できないので、ここではつぶさない */\r
#if !defined(HAVE_OPENVMS)\r
*Pos = NUL;\r
#endif\r
*InfoExist |= FINFO_SIZE;\r
offs = 2;\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, 2, NO);\r
*Size = _atoi64(Buf);\r
- /* \82±\82±\82Ébreak\82Í\82È\82¢ */\r
+ /* ここにbreakはない */\r
\r
case LIST_OS7_1 :\r
*InfoExist |= (FINFO_TIME | FINFO_DATE | FINFO_ATTR);\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
FindField(Str, Buf, 1+offs, NO);\r
sTime.wYear = Assume1900or2000(atoi(Buf));\r
sTime.wMonth = atoi(Buf + 3);\r
sTime.wDay = atoi(Buf + 6);\r
\r
- /* \8e\9e\8d\8f */\r
+ /* 時刻 */\r
FindField(Str, Buf, 2+offs, NO);\r
sTime.wHour = atoi(Buf);\r
sTime.wMinute = atoi(Buf+3);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \91®\90« */\r
+ /* 属性 */\r
FindField(Str, Buf, 0, NO);\r
*Attr = AttrString2Value(Buf+1);\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 3+offs, YES) == SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 3+offs, YES) == FFFTP_SUCCESS)\r
{\r
RemoveTailingSpaces(Fname);\r
Ret = NODE_FILE;\r
break;\r
\r
case LIST_STRATUS :\r
- if(FindField(Str, Buf, 0, NO) != SUCCESS)\r
+ if(FindField(Str, Buf, 0, NO) != FFFTP_SUCCESS)\r
break;\r
if(_strnicmp(Buf, "Files:", 6) == 0)\r
StratusMode = 0;\r
\r
*InfoExist |= (FINFO_TIME | FINFO_DATE);\r
\r
- /* \93ú\95t */\r
- if(FindField(Str, Buf, 2+offs, NO) != SUCCESS)\r
+ /* 日付 */\r
+ if(FindField(Str, Buf, 2+offs, NO) != FFFTP_SUCCESS)\r
break;\r
sTime.wYear = Assume1900or2000(atoi(Buf));\r
sTime.wMonth = atoi(Buf + 3);\r
sTime.wDay = atoi(Buf + 6);\r
\r
- /* \8e\9e\8d\8f */\r
- if(FindField(Str, Buf, 3+offs, NO) != SUCCESS)\r
+ /* 時刻 */\r
+ if(FindField(Str, Buf, 3+offs, NO) != FFFTP_SUCCESS)\r
break;\r
sTime.wHour = atoi(Buf);\r
sTime.wMinute = atoi(Buf+3);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 4+offs, YES) != SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 4+offs, YES) != FFFTP_SUCCESS)\r
break;\r
\r
if(StratusMode == 0)\r
{\r
*InfoExist |= FINFO_SIZE;\r
\r
- /* \83T\83C\83Y */\r
- if(FindField(Str, Buf, 1, NO) != SUCCESS)\r
+ /* サイズ */\r
+ if(FindField(Str, Buf, 1, NO) != FFFTP_SUCCESS)\r
break;\r
*Size = _atoi64(Buf) * 4096;\r
\r
- /* \8eí\97Þ\81i\83I\81[\83i\96¼\82Ì\83t\83B\81[\83\8b\83h\82É\82¢\82ê\82é\81j */\r
- if(FindField(Str, Buf, 2, NO) != SUCCESS)\r
+ /* 種類(オーナ名のフィールドにいれる) */\r
+ if(FindField(Str, Buf, 2, NO) != FFFTP_SUCCESS)\r
break;\r
strncpy(Owner, Buf, OWNER_NAME_LEN);\r
\r
case LIST_IRMX :\r
*InfoExist |= (FINFO_DATE | FINFO_SIZE);\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
for(offs = 11; offs > 7; offs--)\r
{\r
- if((err = FindField(Str, Buf, offs, NO)) == SUCCESS)\r
+ if((err = FindField(Str, Buf, offs, NO)) == FFFTP_SUCCESS)\r
break;\r
}\r
- if(err != SUCCESS)\r
+ if(err != FFFTP_SUCCESS)\r
break;\r
if(IsDigit(*Buf) == 0)\r
break;\r
sTime.wYear = Assume1900or2000(atoi(Buf));\r
- if(FindField(Str, Buf, --offs, NO) != SUCCESS)\r
+ if(FindField(Str, Buf, --offs, NO) != FFFTP_SUCCESS)\r
break;\r
GetMonth(Buf, &sTime.wMonth, &sTime.wDay);\r
- if(FindField(Str, Buf, --offs, NO) != SUCCESS)\r
+ if(FindField(Str, Buf, --offs, NO) != FFFTP_SUCCESS)\r
break;\r
if(IsDigit(*Buf) == 0)\r
break;\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \83I\81[\83i\96¼ */\r
- if(FindField(Str, Buf, --offs, NO) != SUCCESS)\r
+ /* オーナ名 */\r
+ if(FindField(Str, Buf, --offs, NO) != FFFTP_SUCCESS)\r
break;\r
strncpy(Owner, Buf, OWNER_NAME_LEN);\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
do\r
{\r
- if((err = FindField(Str, Buf, --offs, NO)) != SUCCESS)\r
+ if((err = FindField(Str, Buf, --offs, NO)) != FFFTP_SUCCESS)\r
break;\r
}\r
while(IsDigit(*Buf) == 0);\r
--offs;\r
- if((err = FindField(Str, Buf, --offs, NO)) != SUCCESS)\r
+ if((err = FindField(Str, Buf, --offs, NO)) != FFFTP_SUCCESS)\r
break;\r
RemoveComma(Buf);\r
*Size = _atoi64(Buf);\r
- if((err = FindField(Str, Buf, --offs, NO)) != SUCCESS)\r
+ if((err = FindField(Str, Buf, --offs, NO)) != FFFTP_SUCCESS)\r
break;\r
if(IsDigit(*Buf) == 0)\r
break;\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 0, NO) != SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 0, NO) != FFFTP_SUCCESS)\r
break;\r
- /* \8eí\97Þ */\r
+ /* 種類 */\r
if(offs == 0)\r
Ret = NODE_FILE;\r
else\r
{\r
- if((FindField(Str, Buf, 1, NO) == SUCCESS) &&\r
+ if((FindField(Str, Buf, 1, NO) == FFFTP_SUCCESS) &&\r
(strcmp(Buf, "DR") == 0))\r
Ret = NODE_DIR;\r
else\r
case LIST_ALLIED :\r
*InfoExist |= (FINFO_TIME | FINFO_DATE | FINFO_SIZE);\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
FindField(Str, Buf, 3, NO);\r
- GetMonth(Buf, &sTime.wMonth, &sTime.wDay); /* wDay\82Í\8fí\82É0 */\r
+ GetMonth(Buf, &sTime.wMonth, &sTime.wDay); /* wDayは常に0 */\r
FindField(Str, Buf, 4, NO);\r
sTime.wDay = atoi(Buf);\r
FindField(Str, Buf, 6, NO);\r
sTime.wYear = atoi(Buf);\r
\r
- /* \8e\9e\8d\8f */\r
+ /* 時刻 */\r
FindField(Str, Buf, 5, NO);\r
sTime.wHour = atoi(Buf);\r
sTime.wMinute = atoi(Buf+3);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, 0, NO);\r
*Size = _atoi64(Buf);\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 1, NO) == SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 1, NO) == FFFTP_SUCCESS)\r
{\r
Ret = NODE_FILE;\r
if(Buf[0] == '<')\r
case LIST_OS9 :\r
*InfoExist |= (FINFO_TIME | FINFO_DATE | FINFO_SIZE);\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
FindField(Str, Buf, 1, NO);\r
sTime.wYear = Assume1900or2000(atoi(Buf));\r
sTime.wMonth = atoi(Buf + 3);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \8e\9e\8d\8f */\r
+ /* 時刻 */\r
FindField(Str, Buf, 2, NO);\r
sTime.wHour = atoi_n(Buf, 2);\r
sTime.wMinute = atoi(Buf+2);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, 5, NO);\r
*Size = _atoi64(Buf);\r
\r
- /* \83I\81[\83i\96¼ */\r
+ /* オーナ名 */\r
FindField(Str, Buf, 0, NO);\r
strncpy(Owner, Buf, OWNER_NAME_LEN);\r
\r
- /* \83I\81[\83i\96¼ */\r
+ /* オーナ名 */\r
FindField(Str, Buf, 3, NO);\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 6, NO) == SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 6, NO) == FFFTP_SUCCESS)\r
{\r
if((Buf[0] == 'd') || (Buf[0] == 'D'))\r
Ret = NODE_DIR;\r
*InfoExist |= FINFO_DATE;\r
\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
FindField(Str, Buf, 2, NO);\r
sTime.wYear = atoi(Buf);\r
sTime.wMonth = atoi(Buf + 5);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \96¼\91O */\r
+ /* 名前 */\r
FindField(Str, Buf, 8, NO);\r
- if(FindField(Str, Fname, 9, NO) == SUCCESS)\r
+ if(FindField(Str, Fname, 9, NO) == FFFTP_SUCCESS)\r
{\r
if(strcmp(Buf, "PO") == 0)\r
Ret = NODE_DIR;\r
case LIST_AGILENT :\r
*InfoExist |= (FINFO_SIZE | FINFO_ATTR);\r
\r
- /* \83I\81[\83i\96¼ */\r
+ /* オーナ名 */\r
FindField(Str, Buf, 2, NO);\r
strncpy(Owner, Buf, OWNER_NAME_LEN);\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, 4, NO);\r
*Size = _atoi64(Buf);\r
\r
- /* \91®\90« */\r
+ /* 属性 */\r
FindField(Str, Buf, 0, NO);\r
*Attr = AttrString2Value(Buf+1);\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 5, YES) == SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 5, YES) == FFFTP_SUCCESS)\r
{\r
Ret = NODE_FILE;\r
if(strchr("dl", Buf[0]) != NULL)\r
case LIST_SHIBASOKU :\r
*InfoExist |= (FINFO_TIME | FINFO_DATE | FINFO_SIZE);\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, 0, NO);\r
if(IsDigit(Buf[0]))\r
{\r
*Size = _atoi64(Buf);\r
\r
- /* \93ú\95t */\r
+ /* 日付 */\r
FindField(Str, Buf, 1, NO);\r
Buf[3] = '\0';\r
GetMonth(Buf, &sTime.wMonth, &sTime.wDay);\r
sTime.wDay = atoi(Buf+4);\r
sTime.wYear = atoi(Buf+7);\r
\r
- /* \8e\9e\8d\8f */\r
+ /* 時刻 */\r
FindField(Str, Buf, 2, NO);\r
sTime.wHour = atoi(Buf);\r
sTime.wMinute = atoi(Buf+3);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \96¼\91O */\r
+ /* 名前 */\r
FindField(Str, Fname, 3, NO);\r
\r
- /* \8eí\97Þ */\r
+ /* 種類 */\r
Ret = NODE_FILE;\r
- if(FindField(Str, Buf, 4, NO) == SUCCESS)\r
+ if(FindField(Str, Buf, 4, NO) == FFFTP_SUCCESS)\r
{\r
if(strcmp(Buf, "<DIR>") == 0)\r
Ret = NODE_DIR;\r
case LIST_UNIX_73 :\r
case LIST_UNIX_74 :\r
case LIST_UNIX_75 :\r
-// MELCOM\82Í\83r\83b\83g\83t\83\89\83O\82É\82È\82Á\82Ä\82¢\82é\r
+// MELCOMはビットフラグになっている\r
// case LIST_MELCOM :\r
default:\r
- /* offs\82Í\83T\83C\83Y\82Ì\88Ê\92u, offs=0\82Í\83J\83\89\83\804 */\r
+ /* offsはサイズの位置, offs=0はカラム4 */\r
offs = 0;\r
if((ListType == LIST_UNIX_12) ||\r
(ListType == LIST_UNIX_13) ||\r
(ListType == LIST_UNIX_74))\r
offs = 1;\r
\r
- /* offs2\82Í\8e\9e\8aÔ(\82à\82µ\82\82Í\94N)\82Ì\88Ê\92u */\r
+ /* offs2は時間(もしくは年)の位置 */\r
offs2 = 0;\r
if((ListType == LIST_UNIX_11) ||\r
(ListType == LIST_UNIX_13) ||\r
(ListType == LIST_UNIX_73))\r
offs2 = -1;\r
\r
- /* offs3\82Í\83I\81[\83i\96¼\82Ì\88Ê\92u */\r
+ /* offs3はオーナ名の位置 */\r
offs3 = 0;\r
if((ListType == LIST_UNIX_12) ||\r
(ListType == LIST_UNIX_13) ||\r
\r
*InfoExist |= (FINFO_DATE | FINFO_SIZE | FINFO_ATTR);\r
\r
- /* \91®\90« */\r
+ /* 属性 */\r
FindField(Str, Buf, 0, NO);\r
*Attr = AttrString2Value(Buf+1);\r
\r
- /* \83I\81[\83i\96¼ */\r
+ /* オーナ名 */\r
FindField(Str, Buf, 2+offs3, NO);\r
strncpy(Owner, Buf, OWNER_NAME_LEN);\r
\r
- /* \83T\83C\83Y */\r
+ /* サイズ */\r
FindField(Str, Buf, 4+offs, NO);\r
Pos = Buf;\r
if((*Pos != NUL) && (IsDigit(*Pos) == 0))\r
\r
if(Flag2 == 0)\r
{\r
- /* \8e\9e\8d\8f\81^\93ú\95t */\r
+ /* 時刻/日付 */\r
GetLocalTime(&sTime);\r
memcpy(&sTimeNow, &sTime, sizeof(SYSTEMTIME));\r
sTime.wSecond = 0;\r
sTime.wMilliseconds = 0;\r
\r
FindField(Str, Buf, 5+offs, NO);\r
- /* \93ú\95t\82ª yy/mm/dd \82Ì\8fê\8d\87\82É\91Î\89\9e */\r
- if(GetYearMonthDay(Buf, &sTime.wYear, &sTime.wMonth, &sTime.wDay) == SUCCESS)\r
+ /* 日付が yy/mm/dd の場合に対応 */\r
+ if(GetYearMonthDay(Buf, &sTime.wYear, &sTime.wMonth, &sTime.wDay) == FFFTP_SUCCESS)\r
{\r
sTime.wYear = Assume1900or2000(sTime.wYear);\r
\r
FindField(Str, Buf, 7+offs+offs2, NO);\r
- if(GetHourAndMinute(Buf, &sTime.wHour, &sTime.wMinute) == SUCCESS)\r
+ if(GetHourAndMinute(Buf, &sTime.wHour, &sTime.wMinute) == FFFTP_SUCCESS)\r
*InfoExist |= FINFO_TIME;\r
}\r
else\r
}\r
\r
FindField(Str, Buf, 7+offs+offs2, NO);\r
- if(GetHourAndMinute(Buf, &sTime.wHour, &sTime.wMinute) == FAIL)\r
+ if(GetHourAndMinute(Buf, &sTime.wHour, &sTime.wMinute) == FFFTP_FAIL)\r
{\r
sTime.wYear = atoi(Buf);\r
}\r
{\r
*InfoExist |= FINFO_TIME;\r
\r
- /* \94N\82ª\82È\82¢ */\r
- /* \8c»\8dÝ\82Ì\93ú\95t\82©\82ç\90\84\92è */\r
+ /* 年がない */\r
+ /* 現在の日付から推定 */\r
if((sTimeNow.wMonth == 12) && (sTime.wMonth == 1))\r
sTime.wYear++;\r
else if(sTimeNow.wMonth+1 == sTime.wMonth)\r
\r
\r
//#################\r
- /* \8d¡\94N\82Ì\8d¡\93ú\88È\8d~\82Ì\83t\83@\83C\83\8b\82Í\81A\8eÀ\82Í\8b\8e\94N\82Ì\83t\83@\83C\83\8b */\r
+ /* 今年の今日以降のファイルは、実は去年のファイル */\r
if((sTime.wYear == sTimeNow.wYear) &&\r
((sTime.wMonth > sTimeNow.wMonth) ||\r
((sTime.wMonth == sTimeNow.wMonth) && (sTime.wDay > sTimeNow.wDay))))\r
}\r
else\r
{\r
- /* LIST_UNIX_?4, LIST_UNIX_?5 \82Ì\8e\9e */\r
+ /* LIST_UNIX_?4, LIST_UNIX_?5 の時 */\r
FindField(Str, Buf, 5+offs, NO);\r
sTime.wYear = atoi(Buf);\r
FindField(Str, Buf, 6+offs, NO);\r
SystemTimeToFileTime(&sTime, Time);\r
SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
- /* \96¼\91O */\r
- if(FindField(Str, Fname, 8+offs+offs2, YES) == SUCCESS)\r
+ /* 名前 */\r
+ if(FindField(Str, Fname, 8+offs+offs2, YES) == FFFTP_SUCCESS)\r
{\r
Flag = 'B';\r
if(OrgListType & LIST_MELCOM)\r
}\r
\r
\r
-/*----- \8ew\92è\82Ì\94Ô\8d\86\82Ì\83t\83B\81[\83\8b\83h\82ð\8b\81\82ß\82é ----------------------------------------\r
+/*----- 指定の番号のフィールドを求める ----------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* char *Buf : \95¶\8e\9a\97ñ\82Ì\83R\83s\81[\90æ\r
-* int Num : \83t\83B\81[\83\8b\83h\94Ô\8d\86\r
-* int ToLast : \95¶\8e\9a\97ñ\82Ì\8dÅ\8cã\82Ü\82Å\83R\83s\81[ (YES/NO)\r
+* char *Str : 文字列\r
+* char *Buf : 文字列のコピー先\r
+* int Num : フィールド番号\r
+* int ToLast : 文字列の最後までコピー (YES/NO)\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int FindField(char *Str, char *Buf, int Num, int ToLast)\r
char *Pos;\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
*Buf = NUL;\r
if(Num >= 0)\r
{\r
strncpy(Buf, Str, Pos - Str);\r
*(Buf + (Pos - Str)) = NUL;\r
}\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82©\82ç\8c\8e\82ð\8b\81\82ß\82é --------------------------------------------------\r
+/*----- 文字列から月を求める --------------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* WORD *Month : \8c\8e (0=\8c\8e\82ð\95\\82·\95¶\8e\9a\97ñ\82Å\82Í\82È\82¢)\r
-* WORD *Day : \93ú (0=\93ú\82Í\8aÜ\82Ü\82ê\82Ä\82¢\82È\82¢)\r
+* char *Str : 文字列\r
+* WORD *Month : 月 (0=月を表す文字列ではない)\r
+* WORD *Day : 日 (0=日は含まれていない)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void GetMonth(char *Str, WORD *Month, WORD *Day)\r
}\r
else\r
{\r
- /* \81u10\8c\8e\81v\82Ì\82æ\82¤\82È\93ú\95t\82ð\95Ô\82·\82à\82Ì\82ª\82 \82é */\r
- /* \8a¿\8e\9a\82ªJIS\82Ì\8e\9e\82Ì\82ÝSJIS\82É\95Ï\8a· */\r
+ /* 「10月」のような日付を返すものがある */\r
+ /* 漢字がJISの時のみSJISに変換 */\r
ConvAutoToSJIS(Str, KANJI_NOCNV);\r
\r
Pos = Str;\r
{\r
if(!IsDigit(*Pos))\r
{\r
- // UTF-8\91Î\89\9e\r
-// if((_mbsncmp(Pos, "\8c\8e", 1) == 0) ||\r
-// (memcmp(Pos, "\xB7\xEE", 2) == 0) || /* EUC\82Ì\81u\8c\8e\81v */\r
-// (memcmp(Pos, "\xD4\xC2", 2) == 0)) /* GB\83R\81[\83h\82Ì\81u\8c\8e\81v */\r
+ // UTF-8対応\r
+// if((_mbsncmp(Pos, "月", 1) == 0) ||\r
+// (memcmp(Pos, "\xB7\xEE", 2) == 0) || /* EUCの「月」 */\r
+// (memcmp(Pos, "\xD4\xC2", 2) == 0)) /* GBコードの「月」 */\r
if(memcmp(Pos, "\xE6\x9C\x88", 3) == 0 || memcmp(Pos, "\x8C\x8E", 2) == 0 || memcmp(Pos, "\xB7\xEE", 2) == 0 || memcmp(Pos, "\xD4\xC2", 2) == 0)\r
{\r
Pos += 2;\r
*Month = 0;\r
else\r
{\r
- /* \81u10\8c\8e11\93ú\81v\82Ì\82æ\82¤\82É\93ú\82ª\82\82Á\82Â\82¢\82Ä\82¢\82é\8e\96\82ª\82 \82é */\r
+ /* 「10月11日」のように日がくっついている事がある */\r
if(*Pos != NUL)\r
{\r
*Day = atoi(Pos);\r
}\r
else if(_mbsncmp(Pos, "/", 1) == 0)\r
{\r
- /* \81u10/\81v\82Ì\82æ\82¤\82È\93ú\95t\82ð\95Ô\82·\82à\82Ì\82ª\82 \82é */\r
+ /* 「10/」のような日付を返すものがある */\r
Pos += 1;\r
*Month = atoi(Str);\r
if((*Month < 1) || (*Month > 12))\r
*Month = 0;\r
else\r
{\r
- /* \81u10/11\81v\82Ì\82æ\82¤\82É\93ú\82ª\82\82Á\82Â\82¢\82Ä\82¢\82é\8e\96\82ª\82 \82é */\r
+ /* 「10/11」のように日がくっついている事がある */\r
if(*Pos != NUL)\r
{\r
*Day = atoi(Pos);\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82©\82ç\94N\8c\8e\93ú\82ð\8b\81\82ß\82é ----------------------------------------------\r
+/*----- 文字列から年月日を求める ----------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* WORD *Year : \94N\r
-* WORD *Month : \8c\8e\r
-* WORD *Day : \93ú\r
+* char *Str : 文字列\r
+* WORD *Year : 年\r
+* WORD *Month : 月\r
+* WORD *Day : 日\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (SUCCESS/FAIL=\93ú\95t\82ð\95\\82·\95¶\8e\9a\82Å\82Í\82È\82¢)\r
+* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL=日付を表す文字ではない)\r
*\r
* Note\r
-* \88È\89º\82Ì\8c`\8e®\82ð\83T\83|\81[\83g\r
+* 以下の形式をサポート\r
* 01/07/25\r
-* FAIL\82ð\95Ô\82·\8e\9e\82Í *Year = 0; *Month = 0; *Day = 0\r
+* FFFTP_FAILを返す時は *Year = 0; *Month = 0; *Day = 0\r
*----------------------------------------------------------------------------*/\r
static int GetYearMonthDay(char *Str, WORD *Year, WORD *Month, WORD *Day)\r
{\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(strlen(Str) == 8)\r
{\r
if(IsDigit(Str[0]) && IsDigit(Str[1]) && !IsDigit(Str[2]) &&\r
*Year = atoi(&Str[0]);\r
*Month = atoi(&Str[3]);\r
*Day = atoi(&Str[6]);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82©\82ç\8e\9e\8d\8f\82ð\8eæ\82è\8fo\82· ----------------------------------------------\r
+/*----- 文字列から時刻を取り出す ----------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* WORD *Hour : \8e\9e\r
-* WORD *Minute : \95ª\r
+* char *Str : 文字列\r
+* WORD *Hour : 時\r
+* WORD *Minute : 分\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (SUCCESS/FAIL=\8e\9e\8d\8f\82ð\95\\82·\95¶\8e\9a\82Å\82Í\82È\82¢)\r
+* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL=時刻を表す文字ではない)\r
*\r
* Note\r
-* \88È\89º\82Ì\8c`\8e®\82ð\83T\83|\81[\83g\r
+* 以下の形式をサポート\r
* HH:MM\r
-* HH\8e\9eMM\95ª\r
-* FAIL\82ð\95Ô\82·\8e\9e\82Í *Hour = 0; *Minute = 0\r
+* HH時MM分\r
+* FFFTP_FAILを返す時は *Hour = 0; *Minute = 0\r
*----------------------------------------------------------------------------*/\r
\r
static int GetHourAndMinute(char *Str, WORD *Hour, WORD *Minute)\r
int Ret;\r
char *Pos;\r
\r
- Ret = FAIL;\r
+ Ret = FFFTP_FAIL;\r
if((_mbslen(Str) >= 3) && (isdigit(Str[0]) != 0))\r
{\r
*Hour = atoi(Str);\r
{\r
*Minute = atoi(Pos);\r
if(*Minute < 60)\r
- Ret = SUCCESS;\r
+ Ret = FFFTP_SUCCESS;\r
}\r
}\r
else\r
{\r
- /* \8a¿\8e\9a\82ªJIS\82Ì\8e\9e\82Ì\82ÝSJIS\82É\95Ï\8a· */\r
+ /* 漢字がJISの時のみSJISに変換 */\r
ConvAutoToSJIS(Str, KANJI_NOCNV);\r
\r
Pos = Str;\r
{\r
if(IsDigit(*Pos) == 0)\r
{\r
- // UTF-8\91Î\89\9e\r
-// if((_mbsncmp(Pos, "\8e\9e", 1) == 0) ||\r
-// (memcmp(Pos, "\xBB\xFE", 2) == 0)) /* EUC\82Ì\81u\8e\9e\81v */\r
+ // UTF-8対応\r
+// if((_mbsncmp(Pos, "時", 1) == 0) ||\r
+// (memcmp(Pos, "\xBB\xFE", 2) == 0)) /* EUCの「時」 */\r
if(memcmp(Pos, "\xE6\x99\x82", 3) == 0 || memcmp(Pos, "\x8E\x9E", 2) == 0 || memcmp(Pos, "\xBB\xFE", 2) == 0)\r
{\r
Pos += 2;\r
{\r
*Minute = atoi(Pos);\r
if(*Minute < 60)\r
- Ret = SUCCESS;\r
+ Ret = FFFTP_SUCCESS;\r
}\r
}\r
break;\r
{\r
*Hour = 0;\r
*Minute = 0;\r
- Ret = SUCCESS;\r
+ Ret = FFFTP_SUCCESS;\r
}\r
\r
- if(Ret == FAIL)\r
+ if(Ret == FFFTP_FAIL)\r
{\r
*Hour = 0;\r
*Minute = 0;\r
}\r
\r
\r
-/*----- VAX VMS\82Ì\93ú\95t\95¶\8e\9a\97ñ\82©\82ç\93ú\95t\82ð\8eæ\82è\8fo\82· ---------------------------------\r
+/*----- VAX VMSの日付文字列から日付を取り出す ---------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* WORD *Year : \94N\r
-* WORD *Month : \8c\8e\r
-* WORD *Day : \93ú\r
+* char *Str : 文字列\r
+* WORD *Year : 年\r
+* WORD *Month : 月\r
+* WORD *Day : 日\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (SUCCESS/FAIL=\93ú\95t\82ð\95\\82·\95¶\8e\9a\82Å\82Í\82È\82¢)\r
+* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL=日付を表す文字ではない)\r
*\r
* Note\r
-* \88È\89º\82Ì\8c`\8e®\82ð\83T\83|\81[\83g\r
+* 以下の形式をサポート\r
* 18-SEP-1998\r
-* FAIL\82ð\95Ô\82·\8e\9e\82Í *Year = 0; *Month = 0; *Day = 0\r
+* FFFTP_FAILを返す時は *Year = 0; *Month = 0; *Day = 0\r
*----------------------------------------------------------------------------*/\r
\r
static int GetVMSdate(char *Str, WORD *Year, WORD *Month, WORD *Day)\r
WORD Tmp;\r
char Buf[4];\r
\r
- Ret = FAIL;\r
+ Ret = FFFTP_FAIL;\r
*Day = atoi(Str);\r
if((Pos = strchr(Str, '-')) != NULL)\r
{\r
{\r
Pos++;\r
*Year = atoi(Pos);\r
- Ret = SUCCESS;\r
+ Ret = FFFTP_SUCCESS;\r
}\r
}\r
\r
- if(Ret == FAIL)\r
+ if(Ret == FFFTP_FAIL)\r
{\r
*Year = 0;\r
*Month = 0;\r
}\r
\r
\r
-/*----- 1900\94N\91ã\82©2000\94N\91ã\82©\82ð\8c\88\82ß\82é ------------------------------------------\r
+/*----- 1900年代か2000年代かを決める ------------------------------------------\r
*\r
* Parameter\r
-* int Year : \94N\81i\82Q\8c\85\81j\r
+* int Year : 年(2桁)\r
*\r
* Return Value\r
-* int \94N\r
+* int 年\r
*----------------------------------------------------------------------------*/\r
\r
int Assume1900or2000(int Year)\r
\r
\r
\r
-/*----- "."\82â".."\82©\82Ç\82¤\82©\82ð\95Ô\82· -----------------------------------------------\r
+/*----- "."や".."かどうかを返す -----------------------------------------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
+* char *Fname : ファイル名\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (YES="."\82©".."\82Ì\82Ç\82¿\82ç\82©/NO)\r
+* int ステータス (YES="."か".."のどちらか/NO)\r
*----------------------------------------------------------------------------*/\r
\r
static int CheckSpecialDirName(char *Fname)\r
}\r
\r
\r
-/*----- \83t\83B\83\8b\83^\82É\8ew\92è\82³\82ê\82½\83t\83@\83C\83\8b\96¼\82©\82Ç\82¤\82©\82ð\95Ô\82· --------------------------\r
+/*----- フィルタに指定されたファイル名かどうかを返す --------------------------\r
*\r
* Parameter\r
-* char Fname : \83t\83@\83C\83\8b\96¼\r
-* int Type : \83t\83@\83C\83\8b\82Ì\83^\83C\83v (NODE_xxx)\r
+* char Fname : ファイル名\r
+* int Type : ファイルのタイプ (NODE_xxx)\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* YES/NO=\95\\8e¦\82µ\82È\82¢\r
+* int ステータス\r
+* YES/NO=表示しない\r
*\r
* Note\r
-* \83t\83B\83\8b\83^\95¶\8e\9a\97ñ\82Í\88È\89º\82Ì\8c`\8e®\r
+* フィルタ文字列は以下の形式\r
* *.txt;*.log\r
*----------------------------------------------------------------------------*/\r
\r
if((Pos = strchr(Tmp, ';')) != NULL)\r
*Pos = NUL;\r
\r
- if(CheckFname(Fname, Tmp) == SUCCESS)\r
+ if(CheckFname(Fname, Tmp) == FFFTP_SUCCESS)\r
{\r
Ret = YES;\r
break;\r
}\r
\r
\r
-/*----- \83t\83B\83\8b\83^\82ð\90Ý\92è\82·\82é ----------------------------------------------------\r
+/*----- フィルタを設定する ----------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetFilter(int *CancelCheckWork)\r
}\r
\r
\r
-/*----- \83t\83B\83\8b\83^\93ü\97Í\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------------\r
+/*----- フィルタ入力ダイアログのコールバック ----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \82e\82s\82o\83R\83}\83\93\83h\91\80\8dì\r
+* FTPコマンド操作\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include <htmlhelp.h>\r
#include "helpid.h"\r
\r
-// UTF-8\91Î\89\9e\r
+// UTF-8対応\r
#undef __MBSWRAPPER_H__\r
#include "mbswrapper.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static int CheckRemoteFile(TRANSPACKET *Pkt, FILELIST *ListList);\r
static BOOL CALLBACK UpExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static LRESULT CALLBACK SizeDlgWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
static int RenameUnuseableName(char *Fname);\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ ====*/\r
+/*===== 外部参照 ====*/\r
\r
extern HWND hHelpWin;\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
extern int FnameCnv;\r
extern int RecvMode;\r
extern int SendMode;\r
extern int DebugConsole;\r
extern int CancelFlg;\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
-static char TmpString[FMAX_PATH+80]; /* \83e\83\93\83|\83\89\83\8a */\r
-static int CurWin; /* \83E\83C\83\93\83h\83E\94Ô\8d\86 */\r
+static char TmpString[FMAX_PATH+80]; /* テンポラリ */\r
+static int CurWin; /* ウインドウ番号 */\r
\r
-int UpExistMode = EXIST_OVW; /* \83A\83b\83v\83\8d\81[\83h\82Å\93¯\82¶\96¼\91O\82Ì\83t\83@\83C\83\8b\82ª\82 \82é\8e\9e\82Ì\88µ\82¢\95û EXIST_xxx */\r
-int ExistMode = EXIST_OVW; /* \93¯\82¶\96¼\91O\82Ì\83t\83@\83C\83\8b\82ª\82 \82é\8e\9e\82Ì\88µ\82¢\95û EXIST_xxx */\r
-static int ExistNotify; /* \8am\94F\83_\83C\83A\83\8d\83O\82ð\8fo\82·\82©\82Ç\82¤\82© YES/NO */\r
+int UpExistMode = EXIST_OVW; /* アップロードで同じ名前のファイルがある時の扱い方 EXIST_xxx */\r
+int ExistMode = EXIST_OVW; /* 同じ名前のファイルがある時の扱い方 EXIST_xxx */\r
+static int ExistNotify; /* 確認ダイアログを出すかどうか YES/NO */\r
\r
-static double FileSize; /* \83t\83@\83C\83\8b\91\8d\97e\97Ê */\r
+static double FileSize; /* ファイル総容量 */\r
\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\82Å\8ew\92è\82³\82ê\82½\83t\83@\83C\83\8b\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é --------------------\r
+/*----- ファイル一覧で指定されたファイルをダウンロードする --------------------\r
*\r
* Parameter\r
-* int ChName : \96¼\91O\82ð\95Ï\82¦\82é\82©\82Ç\82¤\82© (YES/NO)\r
-* int ForceFile : \83f\83B\83\8c\83N\83g\83\8a\82ð\83t\83@\83C\83\8b\8c©\82È\82·\82©\82Ç\82¤\82© (YES/NO)\r
-* int All : \91S\82Ä\82ª\91I\82Î\82ê\82Ä\82¢\82é\95¨\82Æ\82µ\82Ä\88µ\82¤\82©\82Ç\82¤\82© (YES/NO)\r
+* int ChName : 名前を変えるかどうか (YES/NO)\r
+* int ForceFile : ディレクトリをファイル見なすかどうか (YES/NO)\r
+* int All : 全てが選ばれている物として扱うかどうか (YES/NO)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DownLoadProc(int ChName, int ForceFile, int All)\r
FILELIST *Pos;\r
TRANSPACKET Pkt;\r
\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
else if(FnameCnv == FNAME_UPPER)\r
_mbsupr(TmpString);\r
RemoveAfterSemicolon(TmpString);\r
- if(RenameUnuseableName(TmpString) == FAIL)\r
+ if(RenameUnuseableName(TmpString) == FFFTP_FAIL)\r
break;\r
}\r
else\r
CurWin = WIN_REMOTE;\r
if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(updown_as_dlg), GetMainHwnd(), UpDownAsDialogCallBack) == YES)\r
{\r
- if(RenameUnuseableName(TmpString) == FAIL)\r
+ if(RenameUnuseableName(TmpString) == FFFTP_FAIL)\r
break;\r
}\r
else\r
Pkt.Size = Pos->Size;\r
Pkt.Time = Pos->Time;\r
Pkt.KanjiCode = AskHostKanjiCode();\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
\r
- Pkt.Mode = CheckLocalFile(&Pkt); /* Pkt.ExistSize \82ª\83Z\83b\83g\82³\82ê\82é */\r
+ Pkt.Mode = CheckLocalFile(&Pkt); /* Pkt.ExistSize がセットされる */\r
if(Pkt.Mode == EXIST_ABORT)\r
break;\r
else if(Pkt.Mode != EXIST_IGNORE)\r
}\r
\r
\r
-/*----- \8ew\92è\82³\82ê\82½\83t\83@\83C\83\8b\82ð\88ê\82Â\83_\83E\83\93\83\8d\81[\83h\82·\82é ------------------------------\r
+/*----- 指定されたファイルを一つダウンロードする ------------------------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
+* char *Fname : ファイル名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DirectDownLoadProc(char *Fname)\r
{\r
TRANSPACKET Pkt;\r
\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
_mbsupr(TmpString);\r
RemoveAfterSemicolon(TmpString);\r
\r
- if(RenameUnuseableName(TmpString) == SUCCESS)\r
+ if(RenameUnuseableName(TmpString) == FFFTP_SUCCESS)\r
{\r
strcat(Pkt.LocalFile, TmpString);\r
ReplaceAll(Pkt.LocalFile, '/', '\\');\r
strcpy(Pkt.Cmd, "RETR-S ");\r
Pkt.Type = AskTransferTypeAssoc(Pkt.RemoteFile, AskTransferType());\r
\r
- /* \83T\83C\83Y\82Æ\93ú\95t\82Í\93]\91\97\91¤\83X\83\8c\83b\83h\82Å\8eæ\93¾\82µ\81A\83Z\83b\83g\82·\82é */\r
+ /* サイズと日付は転送側スレッドで取得し、セットする */\r
\r
Pkt.KanjiCode = AskHostKanjiCode();\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
\r
- Pkt.Mode = CheckLocalFile(&Pkt); /* Pkt.ExistSize \82ª\83Z\83b\83g\82³\82ê\82é */\r
+ Pkt.Mode = CheckLocalFile(&Pkt); /* Pkt.ExistSize がセットされる */\r
if((Pkt.Mode != EXIST_ABORT) && (Pkt.Mode != EXIST_IGNORE))\r
AddTransFileList(&Pkt);\r
}\r
}\r
\r
\r
-/*----- \93ü\97Í\82³\82ê\82½\83t\83@\83C\83\8b\96¼\82Ì\83t\83@\83C\83\8b\82ð\88ê\82Â\83_\83E\83\93\83\8d\81[\83h\82·\82é ------------------\r
+/*----- 入力されたファイル名のファイルを一つダウンロードする ------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void InputDownLoadProc(void)\r
}\r
\r
\r
-/*----- \83~\83\89\81[\83\8a\83\93\83O\83_\83E\83\93\83\8d\81[\83h\82ð\8ds\82¤ ----------------------------------------\r
+/*----- ミラーリングダウンロードを行う ----------------------------------------\r
*\r
* Parameter\r
-* int Notify : \8am\94F\82ð\8ds\82¤\82©\82Ç\82¤\82© (YES/NO)\r
+* int Notify : 確認を行うかどうか (YES/NO)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void MirrorDownloadProc(int Notify)\r
int Level;\r
int Mode;\r
\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
\r
if((Notify == YES) || (Notify == YES_LIST))\r
{\r
- /*===== \83t\83@\83C\83\8b\83\8a\83X\83g\8eæ\93¾ =====*/\r
+ /*===== ファイルリスト取得 =====*/\r
\r
LocalListBase = NULL;\r
MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
RemotePos = RemoteListBase;\r
while(RemotePos != NULL)\r
{\r
- RemotePos->Attr = YES; /* RemotePos->Attr\82Í\93]\91\97\82·\82é\82©\82Ç\82¤\82©\82Ì\83t\83\89\83O\82É\8eg\97p (YES/NO) */\r
+ RemotePos->Attr = YES; /* RemotePos->Attrは転送するかどうかのフラグに使用 (YES/NO) */\r
RemotePos = RemotePos->Next;\r
}\r
\r
}\r
else\r
{\r
- LocalPos->Attr = NO; /* LocalPos->Attr\82Í\8dí\8f\9c\82·\82é\82©\82Ç\82¤\82©\82Ì\83t\83\89\83O\82É\8eg\97p (YES/NO) */\r
+ LocalPos->Attr = NO; /* LocalPos->Attrは削除するかどうかのフラグに使用 (YES/NO) */\r
\r
if(LocalPos->Node == NODE_DIR)\r
{\r
}\r
}\r
\r
- /*===== \83t\83@\83C\83\8b\83\8a\83X\83g\94ä\8ar =====*/\r
+ /*===== ファイルリスト比較 =====*/\r
\r
RemotePos = RemoteListBase;\r
while(RemotePos != NULL)\r
\r
DispMirrorFiles(LocalListBase, RemoteListBase);\r
\r
- /*===== \8dí\8f\9c\81^\83A\83b\83v\83\8d\81[\83h =====*/\r
+ /*===== 削除/アップロード =====*/\r
\r
LocalPos = LocalListBase;\r
while(LocalPos != NULL)\r
Pkt.Time = RemotePos->Time;\r
// Pkt.Attr = 0;\r
Pkt.KanjiCode = AskHostKanjiCode();\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
Pkt.Mode = EXIST_OVW;\r
}\r
\r
\r
-/*----- \83~\83\89\81[\83\8a\83\93\83O\82Ì\83t\83@\83C\83\8b\88ê\97\97\82ð\95\\8e¦ --------------------------------------\r
+/*----- ミラーリングのファイル一覧を表示 --------------------------------------\r
*\r
* Parameter\r
-* FILELIST *Local : \83\8d\81[\83J\83\8b\91¤\r
-* FILELIST *Remote : \83\8a\83\82\81[\83g\91¤\r
+* FILELIST *Local : ローカル側\r
+* FILELIST *Remote : リモート側\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DispMirrorFiles(FILELIST *Local, FILELIST *Remote)\r
}\r
\r
\r
-/*----- \83~\83\89\81[\83\8a\83\93\83O\8e\9e\82Ì\83\8d\81[\83J\83\8b\91¤\82Ì\83t\83H\83\8b\83_\8dí\8f\9c ------------------------------\r
+/*----- ミラーリング時のローカル側のフォルダ削除 ------------------------------\r
*\r
* Parameter\r
-* FILELIST *Local : \83t\83@\83C\83\8b\83\8a\83X\83g\r
+* FILELIST *Local : ファイルリスト\r
* TRANSPACKET *Pkt : \r
* TRANSPACKET **Base : \r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void MirrorDeleteAllLocalDir(FILELIST *Local, TRANSPACKET *Pkt, TRANSPACKET **Base)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\96¼\82Ì\83Z\83~\83R\83\8d\83\93\88È\8d~\82ð\8eæ\82è\8f\9c\82 ----------------------------------\r
+/*----- ファイル名のセミコロン以降を取り除く ----------------------------------\r
*\r
* Parameter\r
-* char *Path : \83t\83@\83C\83\8b\96¼\r
+* char *Path : ファイル名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* Path\82Ì\93à\97e\82ª\8f\91\82«\8a·\82¦\82ç\82ê\82é\r
-* \83I\83v\83V\83\87\83\93\90Ý\92è\82É\82æ\82Á\82Ä\8f\88\97\9d\82ð\90Ø\91Ö\82¦\82é\r
+* Pathの内容が書き換えられる\r
+* オプション設定によって処理を切替える\r
*----------------------------------------------------------------------------*/\r
\r
static void RemoveAfterSemicolon(char *Path)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\82É\93¯\82¶\96¼\91O\82Ì\83t\83@\83C\83\8b\82ª\82È\82¢\82©\83`\83F\83b\83N --------------------------\r
+/*----- ローカルに同じ名前のファイルがないかチェック --------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
*\r
* Return Value\r
-* int \8f\88\97\9d\95û\96@\r
+* int 処理方法\r
* EXIST_OVW/EXIST_RESUME/EXIST_IGNORE\r
*\r
* Note\r
-* Pkt.ExistSize, ExistMode\81AExistNotify \82ª\95Ï\8dX\82³\82ê\82é\r
+* Pkt.ExistSize, ExistMode、ExistNotify が変更される\r
*----------------------------------------------------------------------------*/\r
\r
static int CheckLocalFile(TRANSPACKET *Pkt)\r
\r
if(Ret == EXIST_NEW)\r
{\r
- /*\83t\83@\83C\83\8b\93ú\95t\83`\83F\83b\83N */\r
+ /*ファイル日付チェック */\r
if(CompareFileTime(&Find.ftLastWriteTime, &Pkt->Time) < 0)\r
Ret = EXIST_OVW;\r
else\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\82É\93¯\82¶\96¼\91O\82Ì\83t\83@\83C\83\8b\82ª\82 \82é\8e\9e\82Ì\8am\94F\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ----\r
+/*----- ローカルに同じ名前のファイルがある時の確認ダイアログのコールバック ----\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
{\r
case IDOK_ALL :\r
ExistNotify = NO;\r
- /* \82±\82±\82É break \82Í\82È\82¢ */\r
+ /* ここに break はない */\r
\r
case IDOK :\r
ExistMode = AskRadioButtonValue(hDlg, DownExistButton, DOWNEXISTBUTTONS);\r
\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\82Å\8ew\92è\82³\82ê\82½\83t\83@\83C\83\8b\82ð\83A\83b\83v\83\8d\81[\83h\82·\82é --------------------\r
+/*----- ファイル一覧で指定されたファイルをアップロードする --------------------\r
*\r
* Parameter\r
-* int ChName : \96¼\91O\82ð\95Ï\82¦\82é\82©\82Ç\82¤\82© (YES/NO)\r
-* int All : \91S\82Ä\82ª\91I\82Î\82ê\82Ä\82¢\82é\95¨\82Æ\82µ\82Ä\88µ\82¤\82©\82Ç\82¤\82© (YES/NO)\r
+* int ChName : 名前を変えるかどうか (YES/NO)\r
+* int All : 全てが選ばれている物として扱うかどうか (YES/NO)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void UpLoadListProc(int ChName, int All)\r
char Tmp[FMAX_PATH+1];\r
int FirstAdd;\r
\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
- // \83\8d\81[\83J\83\8b\91¤\82Å\91I\82Î\82ê\82Ä\82¢\82é\83t\83@\83C\83\8b\82ðFileListBase\82É\93o\98^\r
+ // ローカル側で選ばれているファイルをFileListBaseに登録\r
FileListBase = NULL;\r
MakeSelectedFileList(WIN_LOCAL, YES, All, &FileListBase, &CancelFlg);\r
\r
- // \8c»\8dÝ\83z\83X\83g\91¤\82Ì\83t\83@\83C\83\8b\88ê\97\97\82É\95\\8e¦\82³\82ê\82Ä\82¢\82é\82à\82Ì\82ðRemoteList\82É\93o\98^\r
- // \93¯\96¼\83t\83@\83C\83\8b\83`\83F\83b\83N\97p\r
+ // 現在ホスト側のファイル一覧に表示されているものをRemoteListに登録\r
+ // 同名ファイルチェック用\r
RemoteList = NULL;\r
AddRemoteTreeToFileList(AskCurrentFileListNum(), "", RDIR_NONE, &RemoteList);\r
\r
}\r
else\r
{\r
- // \96¼\91O\82ð\95Ï\8dX\82·\82é\r
+ // 名前を変更する\r
strcpy(TmpString, Pos->File);\r
CurWin = WIN_LOCAL;\r
if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(updown_as_dlg), GetMainHwnd(), UpDownAsDialogCallBack) == YES)\r
\r
if(Pos->Node == NODE_DIR)\r
{\r
- // \83t\83H\83\8b\83_\82Ì\8fê\8d\87\r
+ // フォルダの場合\r
\r
- // \83z\83X\83g\91¤\82Ì\83t\83@\83C\83\8b\88ê\97\97\82ðRemoteList\82É\93o\98^\r
- // \93¯\96¼\83t\83@\83C\83\8b\83`\83F\83b\83N\97p\r
+ // ホスト側のファイル一覧をRemoteListに登録\r
+ // 同名ファイルチェック用\r
if(RemoteList != NULL)\r
DeleteFileList(&RemoteList);\r
RemoteList = NULL;\r
}\r
else\r
{\r
- // \83t\83H\83\8b\83_\82ð\8dì\90¬\r
+ // フォルダを作成\r
if((FirstAdd == YES) && (AskNoFullPathMode() == YES))\r
{\r
strcpy(Pkt1.Cmd, "SETCUR");\r
}\r
else if(Pos->Node == NODE_FILE)\r
{\r
- // \83t\83@\83C\83\8b\82Ì\8fê\8d\87\r
+ // ファイルの場合\r
AskLocalCurDir(Pkt.LocalFile, FMAX_PATH);\r
SetYenTail(Pkt.LocalFile);\r
strcat(Pkt.LocalFile, Pos->File);\r
Pkt.Time = Pos->Time;\r
Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);\r
Pkt.KanjiCode = AskHostKanjiCode();\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
Pkt.Mode = CheckRemoteFile(&Pkt, RemoteList);\r
}\r
\r
\r
-/*----- \83h\83\89\83b\83O\81\95\83h\83\8d\83b\83v\82Å\8ew\92è\82³\82ê\82½\83t\83@\83C\83\8b\82ð\83A\83b\83v\83\8d\81[\83h\82·\82é --------------\r
+/*----- ドラッグ&ドロップで指定されたファイルをアップロードする --------------\r
*\r
* Parameter\r
-* WPARAM wParam : \83h\83\8d\83b\83v\82³\82ê\82½\83t\83@\83C\83\8b\82Ì\8fî\95ñ\r
+* WPARAM wParam : ドロップされたファイルの情報\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void UpLoadDragProc(WPARAM wParam)\r
int FirstAdd;\r
char Cur[FMAX_PATH+1];\r
\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
- // \83\8d\81[\83J\83\8b\91¤\82Å\91I\82Î\82ê\82Ä\82¢\82é\83t\83@\83C\83\8b\82ðFileListBase\82É\93o\98^\r
+ // ローカル側で選ばれているファイルをFileListBaseに登録\r
FileListBase = NULL;\r
MakeDroppedFileList(wParam, Cur, &FileListBase);\r
\r
- // \8c»\8dÝ\83z\83X\83g\91¤\82Ì\83t\83@\83C\83\8b\88ê\97\97\82É\95\\8e¦\82³\82ê\82Ä\82¢\82é\82à\82Ì\82ðRemoteList\82É\93o\98^\r
- // \93¯\96¼\83t\83@\83C\83\8b\83`\83F\83b\83N\97p\r
+ // 現在ホスト側のファイル一覧に表示されているものをRemoteListに登録\r
+ // 同名ファイルチェック用\r
RemoteList = NULL;\r
AddRemoteTreeToFileList(AskCurrentFileListNum(), "", RDIR_NONE, &RemoteList);\r
\r
\r
if(Pos->Node == NODE_DIR)\r
{\r
- // \83t\83H\83\8b\83_\82Ì\8fê\8d\87\r
+ // フォルダの場合\r
\r
- // \83z\83X\83g\91¤\82Ì\83t\83@\83C\83\8b\88ê\97\97\82ðRemoteList\82É\93o\98^\r
- // \93¯\96¼\83t\83@\83C\83\8b\83`\83F\83b\83N\97p\r
+ // ホスト側のファイル一覧をRemoteListに登録\r
+ // 同名ファイルチェック用\r
if(RemoteList != NULL)\r
DeleteFileList(&RemoteList);\r
RemoteList = NULL;\r
}\r
else if(Pos->Node == NODE_FILE)\r
{\r
- // \83t\83@\83C\83\8b\82Ì\8fê\8d\87\r
+ // ファイルの場合\r
strcpy(Pkt.LocalFile, Cur);\r
SetYenTail(Pkt.LocalFile);\r
strcat(Pkt.LocalFile, Pos->File);\r
Pkt.Time = Pos->Time;\r
Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);\r
Pkt.KanjiCode = AskHostKanjiCode();\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
Pkt.Mode = CheckRemoteFile(&Pkt, RemoteList);\r
}\r
\r
\r
-/*----- \83~\83\89\81[\83\8a\83\93\83O\83A\83b\83v\83\8d\81[\83h\82ð\8ds\82¤ ----------------------------------------\r
+/*----- ミラーリングアップロードを行う ----------------------------------------\r
*\r
* Parameter\r
-* int Notify : \8am\94F\82ð\8ds\82¤\82©\82Ç\82¤\82© (YES/NO)\r
+* int Notify : 確認を行うかどうか (YES/NO)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void MirrorUploadProc(int Notify)\r
FILETIME TmpFtimeL;\r
FILETIME TmpFtimeR;\r
\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
\r
if((Notify == YES) || (Notify == YES_LIST))\r
{\r
- /*===== \83t\83@\83C\83\8b\83\8a\83X\83g\8eæ\93¾ =====*/\r
+ /*===== ファイルリスト取得 =====*/\r
\r
LocalListBase = NULL;\r
MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
LocalPos = LocalListBase;\r
while(LocalPos != NULL)\r
{\r
- LocalPos->Attr = YES; /* LocalPos->Attr\82Í\93]\91\97\82·\82é\82©\82Ç\82¤\82©\82Ì\83t\83\89\83O\82É\8eg\97p (YES/NO) */\r
+ LocalPos->Attr = YES; /* LocalPos->Attrは転送するかどうかのフラグに使用 (YES/NO) */\r
LocalPos = LocalPos->Next;\r
}\r
\r
}\r
else\r
{\r
- RemotePos->Attr = NO; /* RemotePos->Attr\82Í\8dí\8f\9c\82·\82é\82©\82Ç\82¤\82©\82Ì\83t\83\89\83O\82É\8eg\97p (YES/NO) */\r
+ RemotePos->Attr = NO; /* RemotePos->Attrは削除するかどうかのフラグに使用 (YES/NO) */\r
\r
if(RemotePos->Node == NODE_DIR)\r
{\r
}\r
}\r
\r
- /*===== \83t\83@\83C\83\8b\83\8a\83X\83g\94ä\8ar =====*/\r
+ /*===== ファイルリスト比較 =====*/\r
\r
LocalPos = LocalListBase;\r
while(LocalPos != NULL)\r
\r
DispMirrorFiles(LocalListBase, RemoteListBase);\r
\r
- /*===== \8dí\8f\9c\81^\83A\83b\83v\83\8d\81[\83h =====*/\r
+ /*===== 削除/アップロード =====*/\r
\r
RemotePos = RemoteListBase;\r
while(RemotePos != NULL)\r
Pkt.Time = LocalPos->Time;\r
Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);\r
Pkt.KanjiCode = AskHostKanjiCode();\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
Pkt.Mode = EXIST_OVW;\r
}\r
\r
\r
-/*----- \83~\83\89\81[\83\8a\83\93\83O\8e\9e\82Ì\83z\83X\83g\91¤\82Ì\83t\83H\83\8b\83_\8dí\8f\9c --------------------------------\r
+/*----- ミラーリング時のホスト側のフォルダ削除 --------------------------------\r
*\r
* Parameter\r
-* FILELIST *Base : \83t\83@\83C\83\8b\83\8a\83X\83g\r
+* FILELIST *Base : ファイルリスト\r
* TRANSPACKET *Pkt : \r
* TRANSPACKET **Base : \r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void MirrorDeleteAllDir(FILELIST *Remote, TRANSPACKET *Pkt, TRANSPACKET **Base)\r
}\r
\r
\r
-/*----- \83~\83\89\81[\83\8a\83\93\83O\83A\83b\83v\83\8d\81[\83h\8aJ\8en\8am\94F\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N --------------\r
+/*----- ミラーリングアップロード開始確認ウインドウのコールバック --------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83~\83\89\81[\83\8a\83\93\83O\83A\83b\83v\83\8d\81[\83h\8f\88\97\9d\93à\97e\8am\94F\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------\r
+/*----- ミラーリングアップロード処理内容確認ウインドウのコールバック ----------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
Num = SendDlgItemMessage(hDlg, MIRROR_LIST, LB_GETSELITEMS, Num, (LPARAM)List);\r
for(Num--; Num >= 0; Num--)\r
{\r
- if(RemoveTmpTransFileListItem(Base, List[Num]) == SUCCESS)\r
+ if(RemoveTmpTransFileListItem(Base, List[Num]) == FFFTP_SUCCESS)\r
SendDlgItemMessage(hDlg, MIRROR_LIST, LB_DELETESTRING, List[Num], 0);\r
else\r
MessageBeep(-1);\r
}\r
\r
\r
-/*----- \83~\83\89\81[\83\8a\83\93\83O\82Å\93]\91\97\81^\8dí\8f\9c\82·\82é\83t\83@\83C\83\8b\82Ì\90\94\82ð\90\94\82¦\83_\83C\83A\83\8d\83O\82É\95\\8e¦---------\r
+/*----- ミラーリングで転送/削除するファイルの数を数えダイアログに表示---------\r
*\r
* Parameter\r
* HWND hWnd : \r
* TRANSPACKET *Pkt : \r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void CountMirrorFiles(HWND hDlg, TRANSPACKET *Pkt)\r
\r
\r
\r
-/*----- \83~\83\89\81[\83\8a\83\93\83O\82Å\93]\91\97\81^\8dí\8f\9c\82µ\82È\82¢\83t\83@\83C\83\8b\82©\82Ç\82¤\82©\82ð\95Ô\82· ------------------\r
+/*----- ミラーリングで転送/削除しないファイルかどうかを返す ------------------\r
*\r
* Parameter\r
-* char Fname : \83t\83@\83C\83\8b\96¼\r
-* int Mode : \83\82\81[\83h\r
-* 0=\93]\91\97\82µ\82È\82¢\83t\83@\83C\83\8b, 1=\8dí\8f\9c\82µ\82È\82¢\83t\83@\83C\83\8b\r
+* char Fname : ファイル名\r
+* int Mode : モード\r
+* 0=転送しないファイル, 1=削除しないファイル\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* YES=\93]\91\97\81E\8dí\8f\9c\82µ\82È\82¢/NO\r
+* int ステータス\r
+* YES=転送・削除しない/NO\r
*----------------------------------------------------------------------------*/\r
\r
static int AskMirrorNoTrn(char *Fname, int Mode)\r
Fname = GetFileName(Fname);\r
while(*Tbl != NUL)\r
{\r
- if(CheckFname(Fname, Tbl) == SUCCESS)\r
+ if(CheckFname(Fname, Tbl) == FFFTP_SUCCESS)\r
{\r
Ret = YES;\r
break;\r
}\r
\r
\r
-/*----- \83A\83b\83v\83\8d\81[\83h\82·\82é\83t\83@\83C\83\8b\82Ì\91®\90«\82ð\95Ô\82· ----------------------------------\r
+/*----- アップロードするファイルの属性を返す ----------------------------------\r
*\r
* Parameter\r
-* char Fname : \83t\83@\83C\83\8b\96¼\r
+* char Fname : ファイル名\r
*\r
* Return Value\r
-* int \91®\90« (-1=\90Ý\92è\82È\82µ)\r
+* int 属性 (-1=設定なし)\r
*----------------------------------------------------------------------------*/\r
\r
static int AskUpLoadFileAttr(char *Fname)\r
Sts = CheckFname(Fname, Tbl);\r
Tbl += strlen(Tbl) + 1;\r
\r
- if((Sts == SUCCESS) && (*Tbl != NUL))\r
+ if((Sts == FFFTP_SUCCESS) && (*Tbl != NUL))\r
{\r
Ret = xtoi(Tbl);\r
break;\r
}\r
\r
\r
-/*----- \83z\83X\83g\82É\93¯\82¶\96¼\91O\82Ì\83t\83@\83C\83\8b\82ª\82È\82¢\82©\83`\83F\83b\83N- ---------------------------a\r
+/*----- ホストに同じ名前のファイルがないかチェック- ---------------------------a\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
* FILELIST *ListList : \r
*\r
* Return Value\r
-* int \8f\88\97\9d\95û\96@\r
+* int 処理方法\r
* EXIST_OVW/EXIST_UNIQUE/EXIST_IGNORE\r
*\r
* Note\r
-* Pkt.ExistSize, UpExistMode\81AExistNotify \82ª\95Ï\8dX\82³\82ê\82é\r
+* Pkt.ExistSize, UpExistMode、ExistNotify が変更される\r
*----------------------------------------------------------------------------*/\r
\r
static int CheckRemoteFile(TRANSPACKET *Pkt, FILELIST *ListList)\r
\r
if(Ret == EXIST_NEW)\r
{\r
- /*\83t\83@\83C\83\8b\93ú\95t\83`\83F\83b\83N */\r
+ /*ファイル日付チェック */\r
if(CompareFileTime(&Exist->Time, &Pkt->Time) < 0)\r
Ret = EXIST_OVW;\r
else\r
}\r
\r
\r
-/*----- \83z\83X\83g\82É\93¯\82¶\96¼\91O\82Ì\83t\83@\83C\83\8b\82ª\82 \82é\8e\9e\82Ì\8am\94F\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ------\r
+/*----- ホストに同じ名前のファイルがある時の確認ダイアログのコールバック ------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
{\r
case IDOK_ALL :\r
ExistNotify = NO;\r
- /* \82±\82±\82É break \82Í\82È\82¢ */\r
+ /* ここに break はない */\r
\r
case IDOK :\r
UpExistMode = AskRadioButtonValue(hDlg, UpExistButton, UPEXISTBUTTONS);\r
}\r
\r
\r
-/*----- \83A\83b\83v\83\8d\81[\83h\81^\83_\83E\83\93\83\8d\81[\83h\83t\83@\83C\83\8b\96¼\93ü\97Í\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ------\r
+/*----- アップロード/ダウンロードファイル名入力ダイアログのコールバック ------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\82Å\8ew\92è\82³\82ê\82½\83t\83@\83C\83\8b\82ð\8dí\8f\9c\82·\82é ----------------------------\r
+/*----- ファイル一覧で指定されたファイルを削除する ----------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DeleteProc(void)\r
else\r
{\r
Win = WIN_REMOTE;\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
MakeSelectedFileList(Win, YES, NO, &FileListBase, &CancelFlg);\r
else\r
Sts = NO;\r
}\r
\r
\r
-/*----- \83T\83u\83f\83B\83\8c\83N\83g\83\8a\88È\89º\82ð\91S\82Ä\8dí\8f\9c\82·\82é ------------------------------------\r
+/*----- サブディレクトリ以下を全て削除する ------------------------------------\r
*\r
* Parameter\r
-* FILELIST *Dt : \8dí\8f\9c\82·\82é\83t\83@\83C\83\8b\82Ì\83\8a\83X\83g\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
-* int *Sw : \91\80\8dì\95û\96@ (YES/NO/YES_ALL/NO_ALL)\r
-* int *Flg : \83t\83@\83C\83\8b\82ð\8dí\8f\9c\82µ\82½\82©\82Ç\82¤\82©\82Ì\83t\83\89\83O (YES/NO)\r
-* char *CurDir : \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\r
+* FILELIST *Dt : 削除するファイルのリスト\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
+* int *Sw : 操作方法 (YES/NO/YES_ALL/NO_ALL)\r
+* int *Flg : ファイルを削除したかどうかのフラグ (YES/NO)\r
+* char *CurDir : カレントディレクトリ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DeleteAllDir(FILELIST *Dt, int Win, int *Sw, int *Flg, char *CurDir)\r
}\r
\r
\r
-/*----- \8dí\8f\9c\82·\82é\82©\82Ç\82¤\82©\82Ì\8am\94F\82Æ\8dí\8f\9c\8eÀ\8ds --------------------------------------\r
+/*----- 削除するかどうかの確認と削除実行 --------------------------------------\r
*\r
* Parameter\r
-* FILELIST *Dt : \8dí\8f\9c\82·\82é\83t\83@\83C\83\8b\82Ì\83\8a\83X\83g\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
-* int *Sw : \91\80\8dì\95û\96@ (YES/NO/YES_ALL/NO_ALL)\r
-* int *Flg : \83t\83@\83C\83\8b\82ð\8dí\8f\9c\82µ\82½\82©\82Ç\82¤\82©\82Ì\83t\83\89\83O (YES/NO)\r
-* char *CurDir : \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\r
+* FILELIST *Dt : 削除するファイルのリスト\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
+* int *Sw : 操作方法 (YES/NO/YES_ALL/NO_ALL)\r
+* int *Flg : ファイルを削除したかどうかのフラグ (YES/NO)\r
+* char *CurDir : カレントディレクトリ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DelNotifyAndDo(FILELIST *Dt, int Win, int *Sw, int *Flg, char *CurDir)\r
}\r
else\r
{\r
- /* \83t\83\8b\83p\83X\82ð\8eg\82í\82È\82¢\8e\9e\82Ì\82½\82ß\82Ì\8f\88\97\9d */\r
- if(ProcForNonFullpath(Path, CurDir, GetMainHwnd(), 0) == FAIL)\r
+ /* フルパスを使わない時のための処理 */\r
+ if(ProcForNonFullpath(Path, CurDir, GetMainHwnd(), 0) == FFFTP_FAIL)\r
*Sw = NO_ALL;\r
\r
if(*Sw != NO_ALL)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\8dí\8f\9c\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------------\r
+/*----- ファイル削除ダイアログのコールバック ----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\82Å\8ew\92è\82³\82ê\82½\83t\83@\83C\83\8b\82Ì\96¼\91O\82ð\95Ï\8dX\82·\82é ----------------------\r
+/*----- ファイル一覧で指定されたファイルの名前を変更する ----------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void RenameProc(void)\r
int RenFlg;\r
int Sts;\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
if(GetFocus() == GetLocalHwnd())\r
Win = WIN_LOCAL;\r
else\r
Sts = CheckClosedAndReconnect();\r
}\r
\r
- if(Sts == SUCCESS)\r
+ if(Sts == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
\r
\r
//\r
-// \83\8a\83\82\81[\83g\91¤\82Å\82Ì\83t\83@\83C\83\8b\82Ì\88Ú\93®\81i\83\8a\83l\81[\83\80\81j\82ð\8ds\82¤\r
+// リモート側でのファイルの移動(リネーム)を行う\r
// \r
-// RenameProc()\82ð\83x\81[\83X\82É\89ü\91¢\81B(2007.9.5 yutaka)\r
+// RenameProc()をベースに改造。(2007.9.5 yutaka)\r
//\r
void MoveRemoteFileProc(int drop_index)\r
{\r
\r
AskRemoteCurDir(HostDir, FMAX_PATH);\r
\r
- // \83h\83\8d\83b\83v\90æ\82Ì\83t\83H\83\8b\83_\96¼\82ð\93¾\82é\r
+ // ドロップ先のフォルダ名を得る\r
GetNodeName(WIN_REMOTE, drop_index, Pkt.File, FMAX_PATH);\r
\r
if(MoveMode == MOVE_DLG)\r
}\r
}\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
#if 0\r
if(GetFocus() == GetLocalHwnd())\r
Win = WIN_LOCAL;\r
Sts = CheckClosedAndReconnect();\r
#endif\r
\r
- if(Sts == SUCCESS)\r
+ if(Sts == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
\r
if((Sts == YES) && (strlen(TmpString) != 0))\r
{\r
- // \83p\83X\82Ì\90Ý\92è(local)\r
+ // パスの設定(local)\r
strncpy_s(Old, sizeof(Old), HostDir, _TRUNCATE);\r
strncat_s(Old, sizeof(Old), "/", _TRUNCATE);\r
strncat_s(Old, sizeof(Old), Pos->File, _TRUNCATE);\r
\r
- // \83p\83X\82Ì\90Ý\92è(remote)\r
+ // パスの設定(remote)\r
strncpy_s(New, sizeof(New), HostDir, _TRUNCATE);\r
strncat_s(New, sizeof(New), "/", _TRUNCATE);\r
strncat_s(New, sizeof(New), Pkt.File, _TRUNCATE);\r
\r
\r
\r
-/*----- \90V\83t\83@\83C\83\8b\96¼\93ü\97Í\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------\r
+/*----- 新ファイル名入力ダイアログのコールバック ------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \90V\82µ\82¢\83f\83B\83\8c\83N\83g\83\8a\82ð\8dì\90¬\82·\82é ------------------------------------------\r
+/*----- 新しいディレクトリを作成する ------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void MkdirProc(void)\r
}\r
else\r
{\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
DoMKD(Path);\r
}\r
\r
\r
-/*----- \83q\83X\83g\83\8a\83\8a\83X\83g\82ð\8eg\82Á\82½\83f\83B\83\8c\83N\83g\83\8a\82Ì\88Ú\93® ------------------------------\r
+/*----- ヒストリリストを使ったディレクトリの移動 ------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83R\83\93\83{\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND hWnd : コンボボックスのウインドウハンドル\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ChangeDirComboProc(HWND hWnd)\r
}\r
else\r
{\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
if(DoCWD(Tmp, YES, NO, YES) < FTP_RETRY)\r
}\r
\r
\r
-/*----- \83u\83b\83N\83}\81[\83N\82ð\8eg\82Á\82½\83f\83B\83\8c\83N\83g\83\8a\82Ì\88Ú\93® --------------------------------\r
+/*----- ブックマークを使ったディレクトリの移動 --------------------------------\r
*\r
* Parameter\r
-* int MarkID : \83u\83b\83N\83}\81[\83N\82Ì\83\81\83j\83\85\81[ID\r
+* int MarkID : ブックマークのメニューID\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ChangeDirBmarkProc(int MarkID)\r
if((Sts == BMARK_TYPE_LOCAL) || (Sts == BMARK_TYPE_BOTH))\r
{\r
DisableUserOpe();\r
- if(DoLocalCWD(Local) == SUCCESS)\r
+ if(DoLocalCWD(Local) == FFFTP_SUCCESS)\r
GetLocalDirForWnd();\r
EnableUserOpe();\r
}\r
\r
if((Sts == BMARK_TYPE_REMOTE) || (Sts == BMARK_TYPE_BOTH))\r
{\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
if(DoCWD(Remote, YES, NO, YES) < FTP_RETRY)\r
}\r
\r
\r
-/*----- \83f\83B\83\8c\83N\83g\83\8a\96¼\82ð\93ü\97Í\82µ\82Ä\83f\83B\83\8c\83N\83g\83\8a\82Ì\88Ú\93® ----------------------------\r
+/*----- ディレクトリ名を入力してディレクトリの移動 ----------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ChangeDirDirectProc(int Win)\r
}\r
else\r
{\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
if(DoCWD(Path, YES, NO, YES) < FTP_RETRY)\r
}\r
\r
\r
-/*----- Drop\82³\82ê\82½\83t\83@\83C\83\8b\82É\82æ\82é\83f\83B\83\8c\83N\83g\83\8a\82Ì\88Ú\93® ----------------------------\r
+/*----- Dropされたファイルによるディレクトリの移動 ----------------------------\r
*\r
* Parameter\r
-* WPARAM wParam : \83h\83\8d\83b\83v\82³\82ê\82½\83t\83@\83C\83\8b\82Ì\8fî\95ñ\r
+* WPARAM wParam : ドロップされたファイルの情報\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ChangeDirDropFileProc(WPARAM wParam)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\82Ì\91®\90«\95Ï\8dX ----------------------------------------------------\r
+/*----- ファイルの属性変更 ----------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ChmodProc(void)\r
\r
if(GetFocus() == GetRemoteHwnd())\r
{\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
FileListBase = NULL;\r
}\r
\r
\r
-/*----- \91®\90«\95Ï\8dX\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------------------\r
+/*----- 属性変更ダイアログのコールバック --------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \91®\90«\82ð\83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82É\90Ý\92è ----------------------------------------\r
+/*----- 属性をダイアログボックスに設定 ----------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* int Attr : \91®\90«\r
+* HWND hWnd : ダイアログボックスのウインドウハンドル\r
+* int Attr : 属性\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void SetAttrToDialog(HWND hDlg, int Attr)\r
}\r
\r
\r
-/*----- \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\93à\97e\82©\82ç\91®\90«\82ð\8eæ\93¾ --------------------------------\r
+/*----- ダイアログボックスの内容から属性を取得 --------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND hWnd : ダイアログボックスのウインドウハンドル\r
*\r
* Return Value\r
-* int \91®\90«\r
+* int 属性\r
*----------------------------------------------------------------------------*/\r
\r
static int GetAttrFromDialog(HWND hDlg)\r
\r
\r
\r
-/*----- \94C\88Ó\82Ì\83R\83}\83\93\83h\82ð\91\97\82é --------------------------------------------------\r
+/*----- 任意のコマンドを送る --------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SomeCmdProc(void)\r
\r
if(GetFocus() == GetRemoteHwnd())\r
{\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
FileListBase = NULL;\r
\r
\r
\r
-/*----- \83t\83@\83C\83\8b\91\8d\97e\97Ê\82Ì\8cv\8eZ\82ð\8ds\82¤ --------------------------------------------\r
+/*----- ファイル総容量の計算を行う --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void CalcFileSizeProc(void)\r
\r
if((All = DialogBox(GetFtpInst(), MAKEINTRESOURCE(filesize_notify_dlg), GetMainHwnd(), SizeNotifyDlgWndProc)) != NO_ALL)\r
{\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
if(GetFocus() == GetLocalHwnd())\r
Win = WIN_LOCAL;\r
else\r
Sts = CheckClosedAndReconnect();\r
}\r
\r
- if(Sts == SUCCESS)\r
+ if(Sts == FFFTP_SUCCESS)\r
{\r
ListBase = NULL;\r
MakeSelectedFileList(Win, YES, All, &ListBase, &CancelFlg);\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\97e\97Ê\8c\9f\8dõ\8am\94F\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------\r
+/*----- ファイル容量検索確認ダイアログのコールバック --------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
-* \83\81\83b\83Z\81[\83W\82É\91Î\89\9e\82·\82é\96ß\82è\92l\r
+* メッセージに対応する戻り値\r
*----------------------------------------------------------------------------*/\r
\r
static LRESULT CALLBACK SizeNotifyDlgWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\97e\97Ê\8c\9f\8dõ\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------\r
+/*----- ファイル容量検索ダイアログのコールバック ------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
-* \83\81\83b\83Z\81[\83W\82É\91Î\89\9e\82·\82é\96ß\82è\92l\r
+* メッセージに対応する戻り値\r
*----------------------------------------------------------------------------*/\r
\r
static LRESULT CALLBACK SizeDlgWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
}\r
\r
\r
-/*----- \83f\83B\83\8c\83N\83g\83\8a\88Ú\93®\8e¸\94s\8e\9e\82Ì\83G\83\89\81[\82ð\95\\8e¦ ----------------------------------\r
+/*----- ディレクトリ移動失敗時のエラーを表示 ----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND hDlg : ウインドウハンドル\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispCWDerror(HWND hWnd)\r
}\r
\r
\r
-/*----- URL\82ð\83N\83\8a\83b\83v\83{\81[\83h\82É\83R\83s\81[ -------------------------------------------\r
+/*----- URLをクリップボードにコピー -------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void CopyURLtoClipBoard(void)\r
sprintf(Port, ":%d", AskHostPort());\r
\r
Set = Total;\r
- Total += strlen(Path) + strlen(Host) + strlen(Port) + 8; /* 8\82Í "ftp://\r\n" \82Ì\82Ô\82ñ */\r
+ Total += strlen(Path) + strlen(Host) + strlen(Port) + 8; /* 8は "ftp://\r\n" のぶん */\r
if(AskHostType() == HTYPE_VMS)\r
Total++;\r
\r
}\r
\r
\r
-/*----- \83t\83\8b\83p\83X\82ð\8eg\82í\82È\82¢\83t\83@\83C\83\8b\83A\83N\83Z\83X\82Ì\8f\80\94õ ------------------------------\r
+/*----- フルパスを使わないファイルアクセスの準備 ------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
-* char *CurDir : \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\r
-* HWND hWnd : \83G\83\89\81[\83E\83C\83\93\83h\83E\82ð\95\\8e¦\82·\82é\8dÛ\82Ì\90e\83E\83C\83\93\83h\83E\r
-* int Type : \8eg\97p\82·\82é\83\\83P\83b\83g\82Ì\8eí\97Þ\r
-* 0=\83R\83}\83\93\83h\83\\83P\83b\83g, 1=\93]\91\97\83\\83P\83b\83g\r
+* char *Path : パス名\r
+* char *CurDir : カレントディレクトリ\r
+* HWND hWnd : エラーウインドウを表示する際の親ウインドウ\r
+* int Type : 使用するソケットの種類\r
+* 0=コマンドソケット, 1=転送ソケット\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X(SUCCESS/FAIL)\r
+* int ステータス(FFFTP_SUCCESS/FFFTP_FAIL)\r
*\r
* Note\r
-* \83t\83\8b\83p\83X\82ð\8eg\82í\82È\82¢\8e\9e\82Í\81A\r
-* \82±\82Ì\83\82\83W\83\85\81[\83\8b\93à\82Å CWD \82ð\8ds\82È\82¢\81A\r
-* Path \82É\83t\83@\83C\83\8b\96¼\82Ì\82Ý\8ec\82·\81B\81i\83p\83X\96¼\82Í\8fÁ\82·\81j\r
+* フルパスを使わない時は、\r
+* このモジュール内で CWD を行ない、\r
+* Path にファイル名のみ残す。(パス名は消す)\r
*----------------------------------------------------------------------------*/\r
\r
int ProcForNonFullpath(char *Path, char *CurDir, HWND hWnd, int Type)\r
int Cmd;\r
char Tmp[FMAX_PATH+1];\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
if(AskNoFullPathMode() == YES)\r
{\r
strcpy(Tmp, Path);\r
if(Cmd/100 != FTP_COMPLETE)\r
{\r
DispCWDerror(hWnd);\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
}\r
else\r
strcpy(CurDir, Tmp);\r
}\r
\r
\r
-/*----- \83f\83B\83\8c\83N\83g\83\8a\96¼\82ðVAX VMS\83X\83^\83C\83\8b\82É\95Ï\8a·\82·\82é -----------------------------\r
+/*----- ディレクトリ名をVAX VMSスタイルに変換する -----------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
* ddd:[xxx.yyy]/rrr/ppp --> ddd:[xxx.yyy.rrr.ppp]\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\96¼\82ðVAX VMS\83X\83^\83C\83\8b\82É\95Ï\8a·\82·\82é ---------------------------------\r
+/*----- ファイル名をVAX VMSスタイルに変換する ---------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
* ddd:[xxx.yyy]/rrr/ppp --> ddd:[xxx.yyy.rrr]ppp\r
\r
\r
#if defined(HAVE_OPENVMS)\r
-/*----- VMS\82Ì"HOGE.DIR;?"\82Æ\82¢\82¤\83f\83B\83\8c\83N\83g\83\8a\96¼\82©\82ç"HOGE"\82ð\8eæ\82è\8fo\82· ---------------\r
+/*----- VMSの"HOGE.DIR;?"というディレクトリ名から"HOGE"を取り出す ---------------\r
*\r
* Parameter\r
-* char *DirName : "HOGE.DIR;?"\8c`\8e®\82Ì\83f\83B\83\8c\83N\83g\83\8a\96¼\r
-* int Flg : ";"\82Ì\83`\83F\83b\83N\82ð\82·\82é(TRUE)\82©\82µ\82È\82¢(FALSE)\82©\r
+* char *DirName : "HOGE.DIR;?"形式のディレクトリ名\r
+* int Flg : ";"のチェックをする(TRUE)かしない(FALSE)か\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* DirName\82ð\92¼\90Ú\8f\91\82«\82©\82¦\82é\r
+* DirNameを直接書きかえる\r
*----------------------------------------------------------------------------*/\r
\r
void ReformVMSDirName(char *DirName, int Flg)\r
char *p;\r
\r
if (Flg == TRUE) {\r
- /* ';'\82ª\82È\82¢\8fê\8d\87\82ÍVMS\8c`\8e®\82¶\82á\82È\82³\82»\82¤\82È\82Ì\82Å\89½\82à\82µ\82È\82¢ */\r
+ /* ';'がない場合はVMS形式じゃなさそうなので何もしない */\r
if ((p = strrchr(DirName, ';')) == NULL)\r
return;\r
}\r
\r
- /* ".DIR"\82ª\82 \82Á\82½\82ç\82Â\82Ô\82· */\r
+ /* ".DIR"があったらつぶす */\r
if ((p = strrchr(DirName, '.'))) {\r
if (memcmp(p + 1, "DIR", 3) == 0)\r
*p = '\0';\r
#endif\r
\r
\r
-/*----- \83t\83@\83C\83\8b\96¼\82É\8eg\82¦\82È\82¢\95¶\8e\9a\82ª\82È\82¢\82©\83`\83F\83b\83N\82µ\96¼\91O\82ð\95Ï\8dX\82·\82é --------------\r
+/*----- ファイル名に使えない文字がないかチェックし名前を変更する --------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
+* char *Fname : ファイル名\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL=\92\86\8e~\82·\82é\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL=中止する\r
*\r
* Note\r
-* Fname\82ð\92¼\90Ú\8f\91\82«\82©\82¦\82é\r
+* Fnameを直接書きかえる\r
*----------------------------------------------------------------------------*/\r
\r
static int RenameUnuseableName(char *Fname)\r
int Tmp;\r
int Ret;\r
\r
- Ret = SUCCESS;\r
+ Ret = FFFTP_SUCCESS;\r
while(1)\r
{\r
if((_mbschr(Fname, ':') != NULL) ||\r
{\r
if(InputDialogBox(forcerename_dlg, GetMainHwnd(), NULL, Fname, FMAX_PATH+1, &Tmp, IDH_HELP_TOPIC_0000001) == NO)\r
{\r
- Ret = FAIL;\r
+ Ret = FFFTP_FAIL;\r
break;\r
}\r
}\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83_\83E\83\93\83\8d\81[\83h\81^\83A\83b\83v\83\8d\81[\83h\r
+* ダウンロード/アップロード\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
/ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
/============================================================================*/\r
\r
-/* \82±\82Ì\83\\81[\83X\82Í\88ê\95\94\81AWS_FTP Version 93.12.05 \82Ì\83\\81[\83X\82ð\8eQ\8dl\82É\82µ\82Ü\82µ\82½\81B */\r
-/* \83X\83\8c\83b\83h\82Ì\8dì\90¬\81^\8fI\97¹\82É\8aÖ\82µ\82Ä\81A\94ó\8cû\93a\8dì\90¬\82Ì\83p\83b\83`\82ð\91g\82Ý\8d\9e\82Ý\82Ü\82µ\82½\81B */\r
+/* このソースは一部、WS_FTP Version 93.12.05 のソースを参考にしました。 */\r
+/* スレッドの作成/終了に関して、樋口殿作成のパッチを組み込みました。 */\r
\r
/*\r
- \88ê\95\94\81A\8d\82\91¬\89»\82Ì\82½\82ß\82Ì\83R\81[\83h\92Ç\89Á by H.Shirouzu at 2002/10/02\r
+ 一部、高速化のためのコード追加 by H.Shirouzu at 2002/10/02\r
*/\r
\r
#define STRICT\r
\r
#ifdef DISABLE_TRANSFER_NETWORK_BUFFERS\r
#undef BUFSIZE\r
-#define BUFSIZE (64 * 1024) // RWIN\92l\88È\89º\82Å\8f[\95ª\82È\91å\82«\82³\82ª\96]\82Ü\82µ\82¢\82Æ\8ev\82í\82ê\82é\81B\r
+#define BUFSIZE (64 * 1024) // RWIN値以下で充分な大きさが望ましいと思われる。\r
#undef SET_BUFFER_SIZE\r
#endif\r
\r
-#define TIMER_DISPLAY 1 /* \95\\8e¦\8dX\90V\97p\83^\83C\83}\82ÌID */\r
-#define DISPLAY_TIMING 500 /* \95\\8e¦\8dX\90V\8e\9e\8aÔ 0.5\95b */\r
+#define TIMER_DISPLAY 1 /* 表示更新用タイマのID */\r
+#define DISPLAY_TIMING 500 /* 表示更新時間 0.5秒 */\r
\r
#define ERR_MSG_LEN 1024\r
\r
\r
-/* \8dí\8f\9c\8am\94F\83_\83C\83A\83\8d\83O\82Ì\8fî\95ñ */\r
+/* 削除確認ダイアログの情報 */\r
typedef struct {\r
int Cur;\r
TRANSPACKET *Pkt;\r
} MIRRORDELETEINFO;\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static void DispTransPacket(TRANSPACKET *Pkt);\r
static void EraseTransFileList(void);\r
static BOOL CALLBACK MirrorDeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static void SetErrorMsg(char *fmt, ...);\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static HANDLE hTransferThread;\r
static int fTransferThreadExit = FALSE;\r
\r
-static HANDLE hRunMutex; /* \93]\91\97\83X\83\8c\83b\83h\8eÀ\8ds\83~\83\85\81[\83e\83b\83N\83X */\r
-static HANDLE hListAccMutex; /* \93]\91\97\83t\83@\83C\83\8b\83A\83N\83Z\83X\97p\83~\83\85\81[\83e\83b\83N\83X */\r
+static HANDLE hRunMutex; /* 転送スレッド実行ミューテックス */\r
+static HANDLE hListAccMutex; /* 転送ファイルアクセス用ミューテックス */\r
\r
-static int TransFiles = 0; /* \93]\91\97\91Ò\82¿\83t\83@\83C\83\8b\90\94 */\r
-static TRANSPACKET *TransPacketBase = NULL; /* \93]\91\97\83t\83@\83C\83\8b\83\8a\83X\83g */\r
+static int TransFiles = 0; /* 転送待ちファイル数 */\r
+static TRANSPACKET *TransPacketBase = NULL; /* 転送ファイルリスト */\r
\r
-static int Canceled; /* \92\86\8e~\83t\83\89\83O YES/NO */\r
-static int ClearAll; /* \91S\82Ä\92\86\8e~\83t\83\89\83O YES/NO */\r
+static int Canceled; /* 中止フラグ YES/NO */\r
+static int ClearAll; /* 全て中止フラグ YES/NO */\r
\r
-static int ForceAbort; /* \93]\91\97\92\86\8e~\83t\83\89\83O */\r
- /* \82±\82Ì\83t\83\89\83O\82Í\83X\83\8c\83b\83h\82ð\8fI\97¹\82³\82¹\82é\82Æ\82«\82É\8eg\82¤ */\r
+static int ForceAbort; /* 転送中止フラグ */\r
+ /* このフラグはスレッドを終了させるときに使う */\r
\r
-static LONGLONG AllTransSizeNow; /* \8d¡\89ñ\82Ì\93]\91\97\82Å\93]\91\97\82µ\82½\83T\83C\83Y */\r
-static time_t TimeStart; /* \93]\91\97\8aJ\8en\8e\9e\8aÔ */\r
+static LONGLONG AllTransSizeNow; /* 今回の転送で転送したサイズ */\r
+static time_t TimeStart; /* 転送開始時間 */\r
\r
-static int KeepDlg = NO; /* \93]\91\97\92\86\83_\83C\83A\83\8d\83O\82ð\8fÁ\82³\82È\82¢\82©\82Ç\82¤\82© (YES/NO) */\r
-static int MoveToForeground = NO; /* \83E\83C\83\93\83h\83E\82ð\91O\96Ê\82É\88Ú\93®\82·\82é\82©\82Ç\82¤\82© (YES/NO) */\r
+static int KeepDlg = NO; /* 転送中ダイアログを消さないかどうか (YES/NO) */\r
+static int MoveToForeground = NO; /* ウインドウを前面に移動するかどうか (YES/NO) */\r
\r
static char CurDir[FMAX_PATH+1] = { "" };\r
static char ErrMsg[ERR_MSG_LEN+7];\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
extern int SaveTimeStamp;\r
extern int RmEOF;\r
// extern int TimeOut;\r
extern int FolderAttrNum;\r
\r
\r
-/*----- \83t\83@\83C\83\8b\93]\91\97\83X\83\8c\83b\83h\82ð\8bN\93®\82·\82é ----------------------------------------\r
+/*----- ファイル転送スレッドを起動する ----------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
int MakeTransferThread(void)\r
fTransferThreadExit = FALSE;\r
hTransferThread = (HANDLE)_beginthreadex(NULL, 0, TransferThread, 0, 0, &dwID);\r
if (hTransferThread == NULL)\r
- return(FAIL); /* XXX */\r
+ return(FFFTP_FAIL); /* XXX */\r
\r
- return(SUCCESS);\r
+ return(FFFTP_SUCCESS);\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\93]\91\97\83X\83\8c\83b\83h\82ð\8fI\97¹\82·\82é ----------------------------------------\r
+/*----- ファイル転送スレッドを終了する ----------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void CloseTransferThread(void)\r
}\r
\r
\r
-/*----- \93]\91\97\82·\82é\83t\83@\83C\83\8b\8fî\95ñ\82ð\83\8a\83X\83g\82É\92Ç\89Á\82·\82é --------------------------------\r
+/*----- 転送するファイル情報をリストに追加する --------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
-* TRANSPACKET **Base : \83\8a\83X\83g\82Ì\90æ\93ª\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
+* TRANSPACKET **Base : リストの先頭\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int AddTmpTransFileList(TRANSPACKET *Pkt, TRANSPACKET **Base)\r
TRANSPACKET *Prev;\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Pos = malloc(sizeof(TRANSPACKET))) != NULL)\r
{\r
memcpy(Pos, Pkt, sizeof(TRANSPACKET));\r
Prev = Prev->Next;\r
Prev->Next = Pos;\r
}\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \93]\91\97\82·\82é\83t\83@\83C\83\8b\8fî\95ñ\83\8a\83X\83g\82ð\83N\83\8a\83A\82·\82é --------------------------------\r
+/*----- 転送するファイル情報リストをクリアする --------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET **Base : \83\8a\83X\83g\82Ì\90æ\93ª\r
+* TRANSPACKET **Base : リストの先頭\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void EraseTmpTransFileList(TRANSPACKET **Base)\r
}\r
\r
\r
-/*----- \93]\91\97\82·\82é\83t\83@\83C\83\8b\8fî\95ñ\83\8a\83X\83g\82©\82ç\82P\82Â\82Ì\8fî\95ñ\82ð\8eæ\82è\8f\9c\82 --------------------\r
+/*----- 転送するファイル情報リストから1つの情報を取り除く --------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
-* TRANSPACKET **Base : \83\8a\83X\83g\82Ì\90æ\93ª\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
+* TRANSPACKET **Base : リストの先頭\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int RemoveTmpTransFileListItem(TRANSPACKET **Base, int Num)\r
TRANSPACKET *Prev;\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
Pos = *Base;\r
if(Num == 0)\r
{\r
*Base = Pos->Next;\r
free(Pos);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
else\r
{\r
{\r
Prev->Next = Pos->Next;\r
free(Pos);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
break;\r
}\r
}\r
}\r
\r
\r
-/*----- \93]\91\97\82·\82é\83t\83@\83C\83\8b\8fî\95ñ\82ð\93]\91\97\83t\83@\83C\83\8b\83\8a\83X\83g\82É\93o\98^\82·\82é --------------------\r
+/*----- 転送するファイル情報を転送ファイルリストに登録する --------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void AddTransFileList(TRANSPACKET *Pkt)\r
\r
WaitForSingleObject(hListAccMutex, INFINITE);\r
\r
- if(AddTmpTransFileList(Pkt, &TransPacketBase) == SUCCESS)\r
+ if(AddTmpTransFileList(Pkt, &TransPacketBase) == FFFTP_SUCCESS)\r
{\r
if((strncmp(Pkt->Cmd, "RETR", 4) == 0) ||\r
(strncmp(Pkt->Cmd, "STOR", 4) == 0))\r
}\r
\r
\r
-/*----- \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\82ð\93]\91\97\83t\83@\83C\83\8b\83\8a\83X\83g\82É\92Ç\89Á\82·\82é ------------------------\r
+/*----- 転送ファイル情報を転送ファイルリストに追加する ------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
-* TRANSPACKET **Base : \83\8a\83X\83g\82Ì\90æ\93ª\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
+* TRANSPACKET **Base : リストの先頭\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* Pkt\8e©\91Ì\82ð\83\8a\83X\83g\82É\98A\8c\8b\82·\82é\r
+* Pkt自体をリストに連結する\r
*----------------------------------------------------------------------------*/\r
\r
void AppendTransFileList(TRANSPACKET *Pkt)\r
}\r
\r
\r
-/*----- \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\82ð\95\\8e¦\82·\82é --------------------------------------------\r
+/*----- 転送ファイル情報を表示する --------------------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DispTransPacket(TRANSPACKET *Pkt)\r
}\r
\r
\r
-/*----- \93]\91\97\83t\83@\83C\83\8b\83\8a\83X\83g\82ð\83N\83\8a\83A\82·\82é ----------------------------------------\r
+/*----- 転送ファイルリストをクリアする ----------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void EraseTransFileList(void)\r
New = TransPacketBase;\r
while(New != NULL)\r
{\r
- /* \8dÅ\8cã\82Ì"BACKCUR"\82Í\95K\97v\82È\82Ì\82Å\8fÁ\82³\82È\82¢ */\r
+ /* 最後の"BACKCUR"は必要なので消さない */\r
if(strcmp(New->Cmd, "BACKCUR") == 0)\r
{\r
if(NotDel != NULL)\r
}\r
\r
\r
-/*----- \93]\91\97\92\86\83_\83C\83A\83\8d\83O\82ð\8fÁ\82³\82È\82¢\82æ\82¤\82É\82·\82é\82©\82Ç\82¤\82©\82ð\90Ý\92è --------------------\r
+/*----- 転送中ダイアログを消さないようにするかどうかを設定 --------------------\r
*\r
* Parameter\r
-* int Sw : \93]\91\97\92\86\83_\83C\83A\83\8d\83O\82ð\8fÁ\82³\82È\82¢\82©\82Ç\82¤\82© (YES/NO)\r
+* int Sw : 転送中ダイアログを消さないかどうか (YES/NO)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void KeepTransferDialog(int Sw)\r
}\r
\r
\r
-/*----- \8c»\8dÝ\93]\91\97\92\86\82©\82Ç\82¤\82©\82ð\95Ô\82· ----------------------------------------------\r
+/*----- 現在転送中かどうかを返す ----------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (YES/NO=\93]\91\97\92\86\82Å\82Í\82È\82¢)\r
+* int ステータス (YES/NO=転送中ではない)\r
*----------------------------------------------------------------------------*/\r
\r
int AskTransferNow(void)\r
}\r
\r
\r
-/*----- \93]\91\97\82·\82é\83t\83@\83C\83\8b\82Ì\90\94\82ð\95Ô\82· --------------------------------------------\r
+/*----- 転送するファイルの数を返す --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \93]\91\97\82·\82é\83t\83@\83C\83\8b\82Ì\90\94\r
+* int 転送するファイルの数\r
*----------------------------------------------------------------------------*/\r
\r
int AskTransferFileNum(void)\r
}\r
\r
\r
-/*----- \93]\91\97\92\86\83E\83C\83\93\83h\83E\82ð\91O\96Ê\82É\8fo\82· ------------------------------------------\r
+/*----- 転送中ウインドウを前面に出す ------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void GoForwardTransWindow(void)\r
}\r
\r
\r
-/*----- \93]\91\97\83\\83P\83b\83g\82Ì\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\8fî\95ñ\82ð\8f\89\8aú\89» ------------------------\r
+/*----- 転送ソケットのカレントディレクトリ情報を初期化 ------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void InitTransCurDir(void)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\93]\91\97\83X\83\8c\83b\83h\82Ì\83\81\83C\83\93\83\8b\81[\83v ------------------------------------\r
+/*----- ファイル転送スレッドのメインループ ------------------------------------\r
*\r
* Parameter\r
-* void *Dummy : \8eg\82í\82È\82¢\r
+* void *Dummy : 使わない\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static ULONG WINAPI TransferThread(void *Dummy)\r
if(hWndTrans != NULL)\r
SendMessage(hWndTrans, WM_SET_PACKET, 0, (LPARAM)TransPacketBase);\r
\r
- /* \83_\83E\83\93\83\8d\81[\83h */\r
+ /* ダウンロード */\r
if(strncmp(TransPacketBase->Cmd, "RETR", 4) == 0)\r
{\r
- /* \95s\90³\82È\83p\83X\82ð\8c\9f\8fo */\r
+ /* 不正なパスを検出 */\r
if(CheckPathViolation(TransPacketBase) == NO)\r
{\r
- /* \83t\83\8b\83p\83X\82ð\8eg\82í\82È\82¢\82½\82ß\82Ì\8f\88\97\9d */\r
- if(MakeNonFullPath(TransPacketBase, CurDir, Tmp) == SUCCESS)\r
+ /* フルパスを使わないための処理 */\r
+ if(MakeNonFullPath(TransPacketBase, CurDir, Tmp) == FFFTP_SUCCESS)\r
{\r
if(strncmp(TransPacketBase->Cmd, "RETR-S", 6) == 0)\r
{\r
- /* \83T\83C\83Y\82Æ\93ú\95t\82ð\8eæ\93¾ */\r
+ /* サイズと日付を取得 */\r
DoSIZE(TransPacketBase->RemoteFile, &TransPacketBase->Size);\r
DoMDTM(TransPacketBase->RemoteFile, &TransPacketBase->Time);\r
strcpy(TransPacketBase->Cmd, "RETR ");\r
Down = YES;\r
// if(DoDownLoad(AskTrnCtrlSkt(), TransPacketBase, NO) == 429)\r
// {\r
-// if(ReConnectTrnSkt() == SUCCESS)\r
+// if(ReConnectTrnSkt() == FFFTP_SUCCESS)\r
DoDownLoad(AskTrnCtrlSkt(), TransPacketBase, NO, &Canceled);\r
// }\r
}\r
}\r
}\r
- /* \83A\83b\83v\83\8d\81[\83h */\r
+ /* アップロード */\r
else if(strncmp(TransPacketBase->Cmd, "STOR", 4) == 0)\r
{\r
- /* \83t\83\8b\83p\83X\82ð\8eg\82í\82È\82¢\82½\82ß\82Ì\8f\88\97\9d */\r
- if(MakeNonFullPath(TransPacketBase, CurDir, Tmp) == SUCCESS)\r
+ /* フルパスを使わないための処理 */\r
+ if(MakeNonFullPath(TransPacketBase, CurDir, Tmp) == FFFTP_SUCCESS)\r
{\r
Up = YES;\r
// if(DoUpLoad(AskTrnCtrlSkt(), TransPacketBase) == 429)\r
// {\r
-// if(ReConnectTrnSkt() == SUCCESS)\r
+// if(ReConnectTrnSkt() == FFFTP_SUCCESS)\r
DoUpLoad(AskTrnCtrlSkt(), TransPacketBase);\r
// }\r
}\r
}\r
- /* \83t\83H\83\8b\83_\8dì\90¬\81i\83\8d\81[\83J\83\8b\82Ü\82½\82Í\83z\83X\83g\81j */\r
+ /* フォルダ作成(ローカルまたはホスト) */\r
else if(strncmp(TransPacketBase->Cmd, "MKD", 3) == 0)\r
{\r
DispTransFileInfo(TransPacketBase, MSGJPN078, FALSE, YES);\r
\r
if(strlen(TransPacketBase->RemoteFile) > 0)\r
{\r
- /* \83t\83\8b\83p\83X\82ð\8eg\82í\82È\82¢\82½\82ß\82Ì\8f\88\97\9d */\r
+ /* フルパスを使わないための処理 */\r
CwdSts = FTP_COMPLETE;\r
\r
strcpy(Tmp, TransPacketBase->RemoteFile);\r
- if(ProcForNonFullpath(Tmp, CurDir, hWndTrans, 1) == FAIL)\r
+ if(ProcForNonFullpath(Tmp, CurDir, hWndTrans, 1) == FFFTP_FAIL)\r
{\r
ClearAll = YES;\r
CwdSts = FTP_ERROR;\r
{\r
Up = YES;\r
CommandProcTrn(NULL, "MKD %s", Tmp);\r
- /* \82·\82Å\82É\83t\83H\83\8b\83_\82ª\82 \82é\8fê\8d\87\82à\82 \82é\82Ì\82Å\81A */\r
- /* \82±\82±\82Å\82Í\83G\83\89\81[\83`\83F\83b\83N\82Í\82µ\82È\82¢ */\r
+ /* すでにフォルダがある場合もあるので、 */\r
+ /* ここではエラーチェックはしない */\r
\r
if(FolderAttr)\r
CommandProcTrn(NULL, "%s %03d %s", AskHostChmodCmd(), FolderAttrNum, Tmp);\r
DoLocalMKD(TransPacketBase->LocalFile);\r
}\r
}\r
- /* \83f\83B\83\8c\83N\83g\83\8a\8dì\90¬\81i\8fí\82É\83z\83X\83g\91¤\81j */\r
+ /* ディレクトリ作成(常にホスト側) */\r
else if(strncmp(TransPacketBase->Cmd, "R-MKD", 5) == 0)\r
{\r
DispTransFileInfo(TransPacketBase, MSGJPN079, FALSE, YES);\r
\r
- /* \83t\83\8b\83p\83X\82ð\8eg\82í\82È\82¢\82½\82ß\82Ì\8f\88\97\9d */\r
- if(MakeNonFullPath(TransPacketBase, CurDir, Tmp) == SUCCESS)\r
+ /* フルパスを使わないための処理 */\r
+ if(MakeNonFullPath(TransPacketBase, CurDir, Tmp) == FFFTP_SUCCESS)\r
{\r
Up = YES;\r
CommandProcTrn(NULL, "%s%s", TransPacketBase->Cmd+2, TransPacketBase->RemoteFile);\r
CommandProcTrn(NULL, "%s %03d %s", AskHostChmodCmd(), FolderAttrNum, TransPacketBase->RemoteFile);\r
}\r
}\r
- /* \83f\83B\83\8c\83N\83g\83\8a\8dí\8f\9c\81i\8fí\82É\83z\83X\83g\91¤\81j */\r
+ /* ディレクトリ削除(常にホスト側) */\r
else if(strncmp(TransPacketBase->Cmd, "R-RMD", 5) == 0)\r
{\r
DispTransFileInfo(TransPacketBase, MSGJPN080, FALSE, YES);\r
DelNotify = MirrorDelNotify(WIN_REMOTE, DelNotify, TransPacketBase);\r
if((DelNotify == YES) || (DelNotify == YES_ALL))\r
{\r
- /* \83t\83\8b\83p\83X\82ð\8eg\82í\82È\82¢\82½\82ß\82Ì\8f\88\97\9d */\r
- if(MakeNonFullPath(TransPacketBase, CurDir, Tmp) == SUCCESS)\r
+ /* フルパスを使わないための処理 */\r
+ if(MakeNonFullPath(TransPacketBase, CurDir, Tmp) == FFFTP_SUCCESS)\r
{\r
Up = YES;\r
CommandProcTrn(NULL, "%s%s", TransPacketBase->Cmd+2, TransPacketBase->RemoteFile);\r
}\r
}\r
}\r
- /* \83t\83@\83C\83\8b\8dí\8f\9c\81i\8fí\82É\83z\83X\83g\91¤\81j */\r
+ /* ファイル削除(常にホスト側) */\r
else if(strncmp(TransPacketBase->Cmd, "R-DELE", 6) == 0)\r
{\r
DispTransFileInfo(TransPacketBase, MSGJPN081, FALSE, YES);\r
DelNotify = MirrorDelNotify(WIN_REMOTE, DelNotify, TransPacketBase);\r
if((DelNotify == YES) || (DelNotify == YES_ALL))\r
{\r
- /* \83t\83\8b\83p\83X\82ð\8eg\82í\82È\82¢\82½\82ß\82Ì\8f\88\97\9d */\r
- if(MakeNonFullPath(TransPacketBase, CurDir, Tmp) == SUCCESS)\r
+ /* フルパスを使わないための処理 */\r
+ if(MakeNonFullPath(TransPacketBase, CurDir, Tmp) == FFFTP_SUCCESS)\r
{\r
Up = YES;\r
CommandProcTrn(NULL, "%s%s", TransPacketBase->Cmd+2, TransPacketBase->RemoteFile);\r
}\r
}\r
}\r
- /* \83f\83B\83\8c\83N\83g\83\8a\8dì\90¬\81i\8fí\82É\83\8d\81[\83J\83\8b\91¤\81j */\r
+ /* ディレクトリ作成(常にローカル側) */\r
else if(strncmp(TransPacketBase->Cmd, "L-MKD", 5) == 0)\r
{\r
DispTransFileInfo(TransPacketBase, MSGJPN082, FALSE, YES);\r
Down = YES;\r
DoLocalMKD(TransPacketBase->LocalFile);\r
}\r
- /* \83f\83B\83\8c\83N\83g\83\8a\8dí\8f\9c\81i\8fí\82É\83\8d\81[\83J\83\8b\91¤\81j */\r
+ /* ディレクトリ削除(常にローカル側) */\r
else if(strncmp(TransPacketBase->Cmd, "L-RMD", 5) == 0)\r
{\r
DispTransFileInfo(TransPacketBase, MSGJPN083, FALSE, YES);\r
DoLocalRMD(TransPacketBase->LocalFile);\r
}\r
}\r
- /* \83t\83@\83C\83\8b\8dí\8f\9c\81i\8fí\82É\83\8d\81[\83J\83\8b\91¤\81j */\r
+ /* ファイル削除(常にローカル側) */\r
else if(strncmp(TransPacketBase->Cmd, "L-DELE", 6) == 0)\r
{\r
DispTransFileInfo(TransPacketBase, MSGJPN084, FALSE, YES);\r
DoLocalDELE(TransPacketBase->LocalFile);\r
}\r
}\r
- /* \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ð\90Ý\92è */\r
+ /* カレントディレクトリを設定 */\r
else if(strcmp(TransPacketBase->Cmd, "SETCUR") == 0)\r
{\r
if(AskShareProh() == YES)\r
}\r
strcpy(CurDir, TransPacketBase->RemoteFile);\r
}\r
- /* \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ð\96ß\82· */\r
+ /* カレントディレクトリを戻す */\r
else if(strcmp(TransPacketBase->Cmd, "BACKCUR") == 0)\r
{\r
if(AskShareProh() == NO)\r
strcpy(CurDir, TransPacketBase->RemoteFile);\r
}\r
}\r
- /* \8e©\93®\8fI\97¹\82Ì\82½\82ß\82Ì\92Ê\92m */\r
+ /* 自動終了のための通知 */\r
else if(strcmp(TransPacketBase->Cmd, "GOQUIT") == 0)\r
{\r
GoExit = YES;\r
}\r
\r
- /*===== \82P\82Â\82Ì\8f\88\97\9d\8fI\82í\82è =====*/\r
+ /*===== 1つの処理終わり =====*/\r
\r
if(ForceAbort == NO)\r
{\r
}\r
\r
\r
-/*----- \83t\83\8b\83p\83X\82ð\8eg\82í\82È\82¢\83t\83@\83C\83\8b\83A\83N\83Z\83X\82Ì\8f\80\94õ ------------------------------\r
+/*----- フルパスを使わないファイルアクセスの準備 ------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83p\83P\83b\83g\r
-* char *Cur : \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\r
-* char *Tmp : \8dì\8bÆ\97p\83G\83\8a\83A\r
+* TRANSPACKET *Pkt : 転送パケット\r
+* char *Cur : カレントディレクトリ\r
+* char *Tmp : 作業用エリア\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X(SUCCESS/FAIL)\r
+* int ステータス(FFFTP_SUCCESS/FFFTP_FAIL)\r
*\r
* Note\r
-* \83t\83\8b\83p\83X\82ð\8eg\82í\82È\82¢\8e\9e\82Í\81A\r
-* \82±\82Ì\83\82\83W\83\85\81[\83\8b\93à\82Å CWD \82ð\8ds\82È\82¢\81A\r
-* Pkt->RemoteFile \82É\83t\83@\83C\83\8b\96¼\82Ì\82Ý\8ec\82·\81B\81i\83p\83X\96¼\82Í\8fÁ\82·\81j\r
+* フルパスを使わない時は、\r
+* このモジュール内で CWD を行ない、\r
+* Pkt->RemoteFile にファイル名のみ残す。(パス名は消す)\r
*----------------------------------------------------------------------------*/\r
\r
static int MakeNonFullPath(TRANSPACKET *Pkt, char *Cur, char *Tmp)\r
int Sts;\r
\r
Sts = ProcForNonFullpath(Pkt->RemoteFile, Cur, Pkt->hWndTrans, 1);\r
- if(Sts == FAIL)\r
+ if(Sts == FFFTP_FAIL)\r
ClearAll = YES;\r
\r
return(Sts);\r
\r
\r
\r
-/*----- \83_\83E\83\93\83\8d\81[\83h\82ð\8ds\82È\82¤ --------------------------------------------------\r
+/*----- ダウンロードを行なう --------------------------------------------------\r
*\r
* Parameter\r
-* SOCKET cSkt : \83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
-* int DirList : \83f\83B\83\8c\83N\83g\83\8a\83\8a\83X\83g\82Ì\83_\83E\83\93\83\8d\81[\83h(YES/NO)\r
+* SOCKET cSkt : コントロールソケット\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
+* int DirList : ディレクトリリストのダウンロード(YES/NO)\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*\r
* Note\r
-* \82±\82Ì\83\82\83W\83\85\81[\83\8b\82Í\81A\83t\83@\83C\83\8b\88ê\97\97\82Ì\8eæ\93¾\82È\82Ç\82ð\8ds\82È\82¤\8dÛ\82É\83\81\83C\83\93\82Ì\83X\83\8c\83b\83h\r
-* \82©\82ç\82à\8cÄ\82Î\82ê\82é\81B\83\81\83C\83\93\82Ì\83X\83\8c\83b\83h\82©\82ç\8cÄ\82Î\82ê\82é\8e\9e\82Í Pkt->hWndTrans == NULL\81B\r
+* このモジュールは、ファイル一覧の取得などを行なう際にメインのスレッド\r
+* からも呼ばれる。メインのスレッドから呼ばれる時は Pkt->hWndTrans == NULL。\r
*----------------------------------------------------------------------------*/\r
\r
int DoDownLoad(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork)\r
}\r
\r
\r
-/*----- \92Ê\8fí\83\82\81[\83h\82Å\83t\83@\83C\83\8b\82ð\83_\83E\83\93\83\8d\81[\83h ------------------------------------\r
+/*----- 通常モードでファイルをダウンロード ------------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork)\r
iRetCode = command(Pkt->ctrl_skt, Reply, CancelCheckWork, "%s", Buf);\r
if(iRetCode/100 == FTP_PRELIM)\r
{\r
- if(SocksGet2ndBindReply(listen_socket, &data_socket) == FAIL)\r
+ if(SocksGet2ndBindReply(listen_socket, &data_socket) == FFFTP_FAIL)\r
{\r
iLength = sizeof(saSockAddr1);\r
data_socket = do_accept(listen_socket, (struct sockaddr *)&saSockAddr1, (int *)&iLength);\r
\r
if(data_socket != INVALID_SOCKET)\r
{\r
- // FTPS\91Î\89\9e\r
+ // FTPS対応\r
// iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
{\r
}\r
\r
\r
-/*----- Passive\83\82\81[\83h\82Å\83t\83@\83C\83\8b\82ð\83_\83E\83\93\83\8d\81[\83h ---------------------------------\r
+/*----- Passiveモードでファイルをダウンロード ---------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork)\r
iRetCode = command(Pkt->ctrl_skt, Buf, CancelCheckWork, "PASV");\r
if(iRetCode/100 == FTP_COMPLETE)\r
{\r
- if(GetAdrsAndPort(Buf, Adrs, &Port, 19) == SUCCESS)\r
+ if(GetAdrsAndPort(Buf, Adrs, &Port, 19) == FFFTP_SUCCESS)\r
{\r
if((data_socket = connectsock(Adrs, Port, MSGJPN091, CancelCheckWork)) != INVALID_SOCKET)\r
{\r
- // \95Ï\90\94\82ª\96¢\8f\89\8aú\89»\82Ì\83o\83O\8fC\90³\r
+ // 変数が未初期化のバグ修正\r
Flg = 1;\r
if(setsockopt(data_socket, IPPROTO_TCP, TCP_NODELAY, (LPSTR)&Flg, sizeof(Flg)) == SOCKET_ERROR)\r
ReportWSError("setsockopt", WSAGetLastError());\r
iRetCode = command(Pkt->ctrl_skt, Reply, CancelCheckWork, "%s", Buf);\r
if(iRetCode/100 == FTP_PRELIM)\r
{\r
- // FTPS\91Î\89\9e\r
+ // FTPS対応\r
// iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
{\r
}\r
\r
\r
-/*----- \83_\83E\83\93\83\8d\81[\83h\82Ì\8eÀ\8ds ----------------------------------------------------\r
+/*----- ダウンロードの実行 ----------------------------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
-* SOCKET dSkt : \83f\81[\83^\83\\83P\83b\83g\r
-* int CreateMode : \83t\83@\83C\83\8b\8dì\90¬\83\82\81[\83h (CREATE_ALWAYS/OPEN_ALWAYS)\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
+* SOCKET dSkt : データソケット\r
+* int CreateMode : ファイル作成モード (CREATE_ALWAYS/OPEN_ALWAYS)\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*\r
* Note\r
-* \93]\91\97\82Ì\8co\89ß\95\\8e¦\82Í\r
-* \83_\83C\83A\83\8d\83O\82ð\8fo\82·(Pkt->hWndTrans!=NULL)\8fê\8d\87\81A\83C\83\93\83^\81[\83o\83\8b\83^\83C\83}\82Å\8co\89ß\82ð\95\\8e¦\82·\82é\r
-* \83_\83C\83A\83\8d\83O\82ð\8fo\82³\82È\82¢\8fê\8d\87\81A\82±\82Ì\83\8b\81[\83`\83\93\82©\82çDispDownloadSize()\82ð\8cÄ\82Ô\r
+* 転送の経過表示は\r
+* ダイアログを出す(Pkt->hWndTrans!=NULL)場合、インターバルタイマで経過を表示する\r
+* ダイアログを出さない場合、このルーチンからDispDownloadSize()を呼ぶ\r
*----------------------------------------------------------------------------*/\r
\r
static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork)\r
/* End */\r
#endif\r
\r
- // \94O\82Ì\82½\82ß\8eó\90M\83o\83b\83t\83@\82ð\96³\8cø\82É\82·\82é\r
+ // 念のため受信バッファを無効にする\r
#ifdef DISABLE_TRANSFER_NETWORK_BUFFERS\r
int buf_size = 0;\r
setsockopt(dSkt, SOL_SOCKET, SO_RCVBUF, (char *)&buf_size, sizeof(buf_size));\r
\r
dwFileAttributes = GetFileAttributes(Pkt->LocalFile);\r
if (dwFileAttributes != INVALID_FILE_ATTRIBUTES && (dwFileAttributes & FILE_ATTRIBUTE_READONLY)) {\r
- // \93Ç\82Ý\8eæ\82è\90ê\97p\r
+ // 読み取り専用\r
if (MessageBox(GetMainHwnd(), MSGJPN296, MSGJPN086, MB_YESNO) == IDYES) {\r
- // \91®\90«\82ð\89ð\8f\9c\r
+ // 属性を解除\r
SetFileAttributes(Pkt->LocalFile, dwFileAttributes ^ FILE_ATTRIBUTE_READONLY);\r
}\r
}\r
\r
if((iFileHandle = CreateFile(Pkt->LocalFile, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, &Sec, CreateMode, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)\r
{\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
char Buf3[(BUFSIZE + 3) * 4];\r
CODECONVINFO cInfo2;\r
int ProcessedBOM = NO;\r
InitCodeConvInfo(&cInfo2);\r
cInfo2.KanaCnv = Pkt->KanaCnv;\r
\r
- /*===== \83t\83@\83C\83\8b\82ð\8eó\90M\82·\82é\83\8b\81[\83v =====*/\r
+ /*===== ファイルを受信するループ =====*/\r
while((Pkt->Abort == ABORT_NONE) && (ForceAbort == NO))\r
{\r
// FD_ZERO(&ReadFds);\r
break;\r
}\r
\r
- /* \8a¿\8e\9a\83R\81[\83h\95Ï\8a· */\r
+ /* 漢字コード変換 */\r
if(Pkt->KanjiCode != KANJI_NOCNV)\r
{\r
cInfo.Str = Buf;\r
cInfo.BufSize = BUFSIZE+3;\r
do\r
{\r
- // \82±\82±\82Å\91S\82ÄUTF-8\82Ö\95Ï\8a·\82·\82é\r
- // TODO: SJIS\88È\8aO\82à\92¼\90ÚUTF-8\82Ö\95Ï\8a·\r
+ // ここで全てUTF-8へ変換する\r
+ // TODO: SJIS以外も直接UTF-8へ変換\r
// if(Pkt->KanjiCode == KANJI_JIS)\r
// Continue = ConvJIStoSJIS(&cInfo);\r
// else\r
// memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
// cInfo2.OutLen = cInfo.StrLen;\r
// Continue = NO;\r
- // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+ // カナ変換のため\r
Continue = ConvSJIStoJIS(&cInfo);\r
cInfo2.Str = cInfo.Buf;\r
cInfo2.StrLen = cInfo.OutLen;\r
// memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
// cInfo2.OutLen = cInfo.StrLen;\r
// Continue = NO;\r
- // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+ // カナ変換のため\r
Continue = ConvJIStoSJIS(&cInfo);\r
cInfo2.Str = cInfo.Buf;\r
cInfo2.StrLen = cInfo.OutLen;\r
// memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
// cInfo2.OutLen = cInfo.StrLen;\r
// Continue = NO;\r
- // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+ // カナ変換のため\r
Continue = ConvEUCtoSJIS(&cInfo);\r
cInfo2.Str = cInfo.Buf;\r
cInfo2.StrLen = cInfo.OutLen;\r
AllTransSizeNow += iNumBytes;\r
else\r
{\r
- /* \93]\91\97\83_\83C\83A\83\8d\83O\82ð\8fo\82³\82È\82¢\8e\9e\82Ì\8co\89ß\95\\8e¦ */\r
+ /* 転送ダイアログを出さない時の経過表示 */\r
DispDownloadSize(Pkt->ExistSize);\r
}\r
\r
ForceAbort = YES;\r
}\r
\r
- /* \8f\91\82«\8ec\82µ\82½\83f\81[\83^\82ð\8f\91\82«\8d\9e\82Þ */\r
+ /* 書き残したデータを書き込む */\r
if(Pkt->KanjiCode != KANJI_NOCNV)\r
{\r
cInfo.Buf = Buf2;\r
switch(Pkt->KanjiCodeDesired)\r
{\r
case KANJI_SJIS:\r
- // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+ // カナ変換のため\r
cInfo2.Str = cInfo.Buf;\r
cInfo2.StrLen = cInfo.OutLen;\r
cInfo2.Buf = Buf3;\r
cInfo2.OutLen = cInfo.OutLen;\r
break;\r
case KANJI_JIS:\r
- // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+ // カナ変換のため\r
cInfo2.Str = cInfo.Buf;\r
cInfo2.StrLen = cInfo.OutLen;\r
cInfo2.Buf = Buf3;\r
ConvSJIStoJIS(&cInfo2);\r
break;\r
case KANJI_EUC:\r
- // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+ // カナ変換のため\r
cInfo2.Str = cInfo.Buf;\r
cInfo2.StrLen = cInfo.OutLen;\r
cInfo2.Buf = Buf3;\r
Pkt->Abort = ABORT_DISKFULL;\r
}\r
\r
- /* \83O\83\89\83t\95\\8e¦\82ð\8dX\90V */\r
+ /* グラフ表示を更新 */\r
if(Pkt->hWndTrans != NULL)\r
{\r
KillTimer(Pkt->hWndTrans, TIMER_DISPLAY);\r
}\r
else\r
{\r
- /* \93]\91\97\83_\83C\83A\83\8d\83O\82ð\8fo\82³\82È\82¢\8e\9e\82Ì\8co\89ß\95\\8e¦\82ð\8fÁ\82· */\r
+ /* 転送ダイアログを出さない時の経過表示を消す */\r
DispDownloadSize(-1);\r
}\r
\r
- /* \83t\83@\83C\83\8b\82Ì\83^\83C\83\80\83X\83^\83\93\83v\82ð\8d\87\82í\82¹\82é */\r
+ /* ファイルのタイムスタンプを合わせる */\r
if((SaveTimeStamp == YES) &&\r
((Pkt->Time.dwLowDateTime != 0) || (Pkt->Time.dwHighDateTime != 0)))\r
{\r
\r
if(ForceAbort == NO)\r
{\r
- /* Abort\82ð\83z\83X\83g\82É\93`\82¦\82é */\r
+ /* Abortをホストに伝える */\r
if(Pkt->Abort != ABORT_NONE && iFileHandle != INVALID_HANDLE_VALUE)\r
{\r
- SendData(Pkt->ctrl_skt, "\xFF\xF4\xFF", 3, MSG_OOB, CancelCheckWork); /* MSG_OOB\82É\92\8d\88Ó */\r
+ SendData(Pkt->ctrl_skt, "\xFF\xF4\xFF", 3, MSG_OOB, CancelCheckWork); /* MSG_OOBに注意 */\r
SendData(Pkt->ctrl_skt, "\xF2", 1, 0, CancelCheckWork);\r
command(Pkt->ctrl_skt, NULL, CancelCheckWork, "ABOR");\r
}\r
}\r
\r
\r
-/*----- \83_\83E\83\93\83\8d\81[\83h\8fI\97¹\81^\92\86\8e~\8e\9e\82Ì\83\81\83b\83Z\81[\83W\82ð\95\\8e¦ ----------------------------\r
+/*----- ダウンロード終了/中止時のメッセージを表示 ----------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
-* int iRetCode : \89\9e\93\9a\83R\81[\83h\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
+* int iRetCode : 応答コード\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode)\r
strcpy(Fname, Pkt->RemoteFile);\r
\r
#if defined(HAVE_OPENVMS)\r
- /* OpenVMS\82Ì\8fê\8d\87\81A\8bó\83f\83B\83\8c\83N\83g\83\8a\82Ö\88Ú\93®\82·\82é\82Æ550 File not found\82É\82È\82Á\82Ä\r
- * \83G\83\89\81[\83_\83C\83A\83\8d\83O\82â\83G\83\89\81[\83\81\83b\83Z\81[\83W\82ª\8fo\82é\82Ì\82Å\89½\82à\82µ\82È\82¢ */\r
+ /* OpenVMSの場合、空ディレクトリへ移動すると550 File not foundになって\r
+ * エラーダイアログやエラーメッセージが出るので何もしない */\r
if (AskHostType() == HTYPE_VMS)\r
return;\r
#endif\r
}\r
\r
\r
-/*----- \83_\83E\83\93\83\8d\81[\83h\81^\83A\83b\83v\83\8d\81[\83h\83G\83\89\81[\82Ì\83_\83C\83A\83\8d\83O\82ð\95\\8e¦ --------------------\r
+/*----- ダウンロード/アップロードエラーのダイアログを表示 --------------------\r
*\r
* Parameter\r
-* int RedID : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83\8a\83\\81[\83XID\r
-* HWND hWnd : \8f\91\82«\8d\9e\82Ý\92\86\83_\83C\83A\83\8d\83O\82Ì\83E\83C\83\93\83h\83E\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
+* int RedID : ダイアログボックスのリソースID\r
+* HWND hWnd : 書き込み中ダイアログのウインドウ\r
+* char *Fname : ファイル名\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (YES=\92\86\8e~/NO=\91S\82Ä\92\86\8e~)\r
+* int ステータス (YES=中止/NO=全て中止)\r
*----------------------------------------------------------------------------*/\r
\r
static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname)\r
}\r
\r
\r
-/*----- \83_\83E\83\93\83\8d\81[\83h\83G\83\89\81[\81^\83A\83b\83v\83\8d\81[\83h\83G\83\89\81[\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N --------\r
+/*----- ダウンロードエラー/アップロードエラーダイアログのコールバック --------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83_\83E\83\93\83\8d\81[\83h\82Ì\83\8a\83W\83\85\81[\83\80\82Ì\8f\80\94õ\82ð\8ds\82¤ ----------------------------------\r
+/*----- ダウンロードのリジュームの準備を行う ----------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
-* iont ProcMode : \8f\88\97\9d\83\82\81[\83h(EXIST_xxx)\r
-* LONGLONG Size : \83\8d\81[\83h\8dÏ\82Ý\82Ì\83t\83@\83C\83\8b\82Ì\83T\83C\83Y\r
-* int *Mode : \83t\83@\83C\83\8b\8dì\90¬\83\82\81[\83h (CREATE_xxxx)\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
+* iont ProcMode : 処理モード(EXIST_xxx)\r
+* LONGLONG Size : ロード済みのファイルのサイズ\r
+* int *Mode : ファイル作成モード (CREATE_xxxx)\r
*\r
* Return Value\r
-* int \93]\91\97\82ð\8ds\82¤\82©\82Ç\82¤\82©(YES/NO=\82±\82Ì\83t\83@\83C\83\8b\82ð\92\86\8e~/NO_ALL=\91S\82Ä\92\86\8e~)\r
+* int 転送を行うかどうか(YES/NO=このファイルを中止/NO_ALL=全て中止)\r
*\r
* Note\r
-* Pkt->ExistSize\82Ì\83Z\83b\83g\82ð\8ds\82È\82¤\r
+* Pkt->ExistSizeのセットを行なう\r
*----------------------------------------------------------------------------*/\r
\r
static int SetDownloadResume(TRANSPACKET *Pkt, int ProcMode, LONGLONG Size, int *Mode, int *CancelCheckWork)\r
iRetCode = command(Pkt->ctrl_skt, Reply, CancelCheckWork, "REST %s", MakeNumString(Size, Tmp, FALSE));\r
if(iRetCode/100 < FTP_RETRY)\r
{\r
- /* \83\8a\83W\83\85\81[\83\80 */\r
+ /* リジューム */\r
if(Pkt->hWndTrans != NULL)\r
Pkt->ExistSize = Size;\r
*Mode = OPEN_ALWAYS;\r
Com = DialogBox(GetFtpInst(), MAKEINTRESOURCE(noresume_dlg), Pkt->hWndTrans, NoResumeWndProc);\r
if(Com != YES)\r
{\r
- if(Com == NO_ALL) /* \91S\82Ä\92\86\8e~ */\r
+ if(Com == NO_ALL) /* 全て中止 */\r
ClearAll = YES;\r
Pkt->Abort = ABORT_USER;\r
}\r
}\r
\r
\r
-/*----- resume\83G\83\89\81[\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------------\r
+/*----- resumeエラーダイアログのコールバック ----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
\r
\r
\r
-/*----- \83A\83b\83v\83\8d\81[\83h\82ð\8ds\82È\82¤ --------------------------------------------------\r
+/*----- アップロードを行なう --------------------------------------------------\r
*\r
* Parameter\r
-* SOCKET cSkt : \83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
+* SOCKET cSkt : コントロールソケット\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
static int DoUpLoad(SOCKET cSkt, TRANSPACKET *Pkt)\r
\r
if(Pkt->Mode != EXIST_IGNORE)\r
{\r
- if(CheckFileReadable(Pkt->LocalFile) == SUCCESS)\r
+ if(CheckFileReadable(Pkt->LocalFile) == FFFTP_SUCCESS)\r
{\r
if(Pkt->Type == TYPE_I)\r
Pkt->KanjiCode = KANJI_NOCNV;\r
else\r
SetErrorMsg(Reply);\r
\r
- /* \91®\90«\95Ï\8dX */\r
+ /* 属性変更 */\r
if((Pkt->Attr != -1) && ((iRetCode/100) == FTP_COMPLETE))\r
command(Pkt->ctrl_skt, Reply, &Canceled, "%s %03X %s", AskHostChmodCmd(), Pkt->Attr, Pkt->RemoteFile);\r
}\r
}\r
\r
\r
-/*----- \92Ê\8fí\83\82\81[\83h\82Å\83t\83@\83C\83\8b\82ð\83A\83b\83v\83\8d\81[\83h ------------------------------------\r
+/*----- 通常モードでファイルをアップロード ------------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
static int UpLoadNonPassive(TRANSPACKET *Pkt)\r
iRetCode = command(Pkt->ctrl_skt, Reply, &Canceled, "%s", Buf);\r
if((iRetCode/100) == FTP_PRELIM)\r
{\r
- if(SocksGet2ndBindReply(listen_socket, &data_socket) == FAIL)\r
+ if(SocksGet2ndBindReply(listen_socket, &data_socket) == FFFTP_FAIL)\r
{\r
iLength=sizeof(saSockAddr1);\r
data_socket = do_accept(listen_socket,(struct sockaddr *)&saSockAddr1, (int *)&iLength);\r
\r
if(data_socket != INVALID_SOCKET)\r
{\r
- // FTPS\91Î\89\9e\r
+ // FTPS対応\r
// iRetCode = UpLoadFile(Pkt, data_socket);\r
if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
{\r
}\r
\r
\r
-/*----- Passive\83\82\81[\83h\82Å\83t\83@\83C\83\8b\82ð\83A\83b\83v\83\8d\81[\83h ---------------------------------\r
+/*----- Passiveモードでファイルをアップロード ---------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
static int UpLoadPassive(TRANSPACKET *Pkt)\r
iRetCode = command(Pkt->ctrl_skt, Buf, &Canceled, "PASV");\r
if(iRetCode/100 == FTP_COMPLETE)\r
{\r
- if(GetAdrsAndPort(Buf, Adrs, &Port, 19) == SUCCESS)\r
+ if(GetAdrsAndPort(Buf, Adrs, &Port, 19) == FFFTP_SUCCESS)\r
{\r
if((data_socket = connectsock(Adrs, Port, MSGJPN109, &Canceled)) != INVALID_SOCKET)\r
{\r
- // \95Ï\90\94\82ª\96¢\8f\89\8aú\89»\82Ì\83o\83O\8fC\90³\r
+ // 変数が未初期化のバグ修正\r
Flg = 1;\r
if(setsockopt(data_socket, IPPROTO_TCP, TCP_NODELAY, (LPSTR)&Flg, sizeof(Flg)) == SOCKET_ERROR)\r
ReportWSError("setsockopt", WSAGetLastError());\r
iRetCode = command(Pkt->ctrl_skt, Reply, &Canceled, "%s", Buf);\r
if(iRetCode/100 == FTP_PRELIM)\r
{\r
- // FTPS\91Î\89\9e\r
+ // FTPS対応\r
// iRetCode = UpLoadFile(Pkt, data_socket);\r
if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
{\r
}\r
\r
\r
-/*----- \83A\83b\83v\83\8d\81[\83h\82Ì\8eÀ\8ds ----------------------------------------------------\r
+/*----- アップロードの実行 ----------------------------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
-* SOCKET dSkt : \83f\81[\83^\83\\83P\83b\83g\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
+* SOCKET dSkt : データソケット\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*\r
* Note\r
-* \93]\91\97\82Ì\8co\89ß\95\\8e¦\82Í\81A\83C\83\93\83^\81[\83o\83\8b\83^\83C\83}\82Å\8co\89ß\82ð\95\\8e¦\82·\82é\r
-* \93]\91\97\83_\83C\83A\83\8d\83O\82ð\8fo\82³\82È\82¢\82Å\83A\83b\83v\83\8d\81[\83h\82·\82é\82±\82Æ\82Í\82È\82¢\r
+* 転送の経過表示は、インターバルタイマで経過を表示する\r
+* 転送ダイアログを出さないでアップロードすることはない\r
*----------------------------------------------------------------------------*/\r
\r
static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)\r
/* End */\r
#endif\r
\r
- // \94O\82Ì\82½\82ß\91\97\90M\83o\83b\83t\83@\82ð\96³\8cø\82É\82·\82é\r
+ // 念のため送信バッファを無効にする\r
#ifdef DISABLE_TRANSFER_NETWORK_BUFFERS\r
int buf_size = 0;\r
setsockopt(dSkt, SOL_SOCKET, SO_SNDBUF, (char *)&buf_size, sizeof(buf_size));\r
if((iFileHandle = CreateFile(Pkt->LocalFile, GENERIC_READ,\r
FILE_SHARE_READ|FILE_SHARE_WRITE, &Sec, OPEN_EXISTING, 0, NULL)) != INVALID_HANDLE_VALUE)\r
{\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
char Buf3[(BUFSIZE + 3) * 4];\r
CODECONVINFO cInfo2;\r
int ProcessedBOM = NO;\r
InitCodeConvInfo(&cInfo2);\r
cInfo2.KanaCnv = Pkt->KanaCnv;\r
\r
- /*===== \83t\83@\83C\83\8b\82ð\91\97\90M\82·\82é\83\8b\81[\83v =====*/\r
+ /*===== ファイルを送信するループ =====*/\r
while((Pkt->Abort == ABORT_NONE) &&\r
(ForceAbort == NO) &&\r
(ReadFile(iFileHandle, Buf, BUFSIZE, &iNumBytes, NULL) == TRUE))\r
if(iNumBytes == 0)\r
break;\r
\r
- /* EOF\8f\9c\8b\8e */\r
+ /* EOF除去 */\r
EofPos = NULL;\r
if((RmEOF == YES) && (Pkt->Type == TYPE_A))\r
{\r
iNumBytes = EofPos - Buf;\r
}\r
\r
- /* \8a¿\8e\9a\83R\81[\83h\95Ï\8a· */\r
+ /* 漢字コード変換 */\r
if(Pkt->KanjiCode != KANJI_NOCNV)\r
{\r
cInfo.Str = Buf;\r
cInfo.BufSize = BUFSIZE+3;\r
do\r
{\r
- // \82±\82±\82Å\91S\82ÄUTF-8\82Ö\95Ï\8a·\82·\82é\r
- // TODO: SJIS\88È\8aO\82à\92¼\90ÚUTF-8\82Ö\95Ï\8a·\r
+ // ここで全てUTF-8へ変換する\r
+ // TODO: SJIS以外も直接UTF-8へ変換\r
// if(Pkt->KanjiCode == KANJI_JIS)\r
// Continue = ConvSJIStoJIS(&cInfo);\r
// else\r
// memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
// cInfo2.OutLen = cInfo.StrLen;\r
// Continue = NO;\r
- // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+ // カナ変換のため\r
Continue = ConvSJIStoJIS(&cInfo);\r
cInfo2.Str = cInfo.Buf;\r
cInfo2.StrLen = cInfo.OutLen;\r
// memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
// cInfo2.OutLen = cInfo.StrLen;\r
// Continue = NO;\r
- // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+ // カナ変換のため\r
Continue = ConvJIStoSJIS(&cInfo);\r
cInfo2.Str = cInfo.Buf;\r
cInfo2.StrLen = cInfo.OutLen;\r
// memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
// cInfo2.OutLen = cInfo.StrLen;\r
// Continue = NO;\r
- // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+ // カナ変換のため\r
Continue = ConvEUCtoSJIS(&cInfo);\r
cInfo2.Str = cInfo.Buf;\r
cInfo2.StrLen = cInfo.OutLen;\r
break;\r
}\r
\r
-// if(TermCodeConvAndSend(&tInfo, dSkt, Buf2, cInfo.OutLen, Pkt->Type) == FAIL)\r
- if(TermCodeConvAndSend(&tInfo, dSkt, Buf3, cInfo2.OutLen, Pkt->Type) == FAIL)\r
+// if(TermCodeConvAndSend(&tInfo, dSkt, Buf2, cInfo.OutLen, Pkt->Type) == FFFTP_FAIL)\r
+ if(TermCodeConvAndSend(&tInfo, dSkt, Buf3, cInfo2.OutLen, Pkt->Type) == FFFTP_FAIL)\r
{\r
Pkt->Abort = ABORT_ERROR;\r
break;\r
}\r
else\r
{\r
- if(TermCodeConvAndSend(&tInfo, dSkt, Buf, iNumBytes, Pkt->Type) == FAIL)\r
+ if(TermCodeConvAndSend(&tInfo, dSkt, Buf, iNumBytes, Pkt->Type) == FFFTP_FAIL)\r
Pkt->Abort = ABORT_ERROR;\r
}\r
\r
\r
if((ForceAbort == NO) && (Pkt->Abort == ABORT_NONE))\r
{\r
- /* \91\97\82è\8ec\82µ\82½\83f\81[\83^\82ð\91\97\90M */\r
+ /* 送り残したデータを送信 */\r
if(Pkt->KanjiCode != KANJI_NOCNV)\r
{\r
cInfo.Buf = Buf2;\r
switch(Pkt->KanjiCode)\r
{\r
case KANJI_SJIS:\r
- // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+ // カナ変換のため\r
cInfo2.Str = cInfo.Buf;\r
cInfo2.StrLen = cInfo.OutLen;\r
cInfo2.Buf = Buf3;\r
cInfo2.OutLen = cInfo.OutLen;\r
break;\r
case KANJI_JIS:\r
- // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+ // カナ変換のため\r
cInfo2.Str = cInfo.Buf;\r
cInfo2.StrLen = cInfo.OutLen;\r
cInfo2.Buf = Buf3;\r
ConvSJIStoJIS(&cInfo2);\r
break;\r
case KANJI_EUC:\r
- // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+ // カナ変換のため\r
cInfo2.Str = cInfo.Buf;\r
cInfo2.StrLen = cInfo.OutLen;\r
cInfo2.Buf = Buf3;\r
break;\r
}\r
\r
-// if(TermCodeConvAndSend(&tInfo, dSkt, Buf2, cInfo.OutLen, Pkt->Type) == FAIL)\r
- if(TermCodeConvAndSend(&tInfo, dSkt, Buf3, cInfo2.OutLen, Pkt->Type) == FAIL)\r
+// if(TermCodeConvAndSend(&tInfo, dSkt, Buf2, cInfo.OutLen, Pkt->Type) == FFFTP_FAIL)\r
+ if(TermCodeConvAndSend(&tInfo, dSkt, Buf3, cInfo2.OutLen, Pkt->Type) == FFFTP_FAIL)\r
Pkt->Abort = ABORT_ERROR;\r
cInfo2.Buf = Buf3;\r
cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
FlushRestData(&cInfo2);\r
- if(TermCodeConvAndSend(&tInfo, dSkt, Buf3, cInfo2.OutLen, Pkt->Type) == FAIL)\r
+ if(TermCodeConvAndSend(&tInfo, dSkt, Buf3, cInfo2.OutLen, Pkt->Type) == FFFTP_FAIL)\r
Pkt->Abort = ABORT_ERROR;\r
}\r
\r
tInfo.Buf = Buf2;\r
tInfo.BufSize = BUFSIZE+3;\r
FlushRestTermCodeConvData(&tInfo);\r
- if(SendData(dSkt, Buf2, tInfo.OutLen, 0, &Canceled) == FAIL)\r
+ if(SendData(dSkt, Buf2, tInfo.OutLen, 0, &Canceled) == FFFTP_FAIL)\r
Pkt->Abort = ABORT_ERROR;\r
}\r
\r
- /* \83O\83\89\83t\95\\8e¦\82ð\8dX\90V */\r
+ /* グラフ表示を更新 */\r
if(Pkt->hWndTrans != NULL)\r
{\r
KillTimer(Pkt->hWndTrans, TIMER_DISPLAY);\r
}\r
\r
\r
-/*----- \83o\83b\83t\83@\82Ì\93à\97e\82ð\89ü\8ds\83R\81[\83h\95Ï\8a·\82µ\82Ä\91\97\90M --------------------------------\r
+/*----- バッファの内容を改行コード変換して送信 --------------------------------\r
*\r
* Parameter\r
-* TERMCODECONVINFO *tInfo : \89ü\8ds\83R\81[\83h\95Ï\8a·\83p\83P\83b\83g\r
-* SOCKET Skt : \83\\83P\83b\83g\r
-* char *Data : \83f\81[\83^\r
-* int Size : \83f\81[\83^\82Ì\83T\83C\83Y\r
-* int Ascii : \83\82\81[\83h\81@\81@(TYPE_xx)\r
+* TERMCODECONVINFO *tInfo : 改行コード変換パケット\r
+* SOCKET Skt : ソケット\r
+* char *Data : データ\r
+* int Size : データのサイズ\r
+* int Ascii : モード (TYPE_xx)\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
static int TermCodeConvAndSend(TERMCODECONVINFO *tInfo, SOCKET Skt, char *Data, int Size, int Ascii)\r
int Continue;\r
int Ret;\r
\r
- Ret = SUCCESS;\r
+ Ret = FFFTP_SUCCESS;\r
\r
-// CR-LF\88È\8aO\82Ì\89ü\8ds\83R\81[\83h\82ð\95Ï\8a·\82µ\82È\82¢\83\82\81[\83h\82Í\82±\82±\82Ö\92Ç\89Á\r
+// CR-LF以外の改行コードを変換しないモードはここへ追加\r
if(Ascii == TYPE_A)\r
{\r
tInfo->Str = Data;\r
do\r
{\r
Continue = ConvTermCodeToCRLF(tInfo);\r
- if((Ret = SendData(Skt, Buf3, tInfo->OutLen, 0, &Canceled)) == FAIL)\r
+ if((Ret = SendData(Skt, Buf3, tInfo->OutLen, 0, &Canceled)) == FFFTP_FAIL)\r
break;\r
}\r
while(Continue == YES);\r
}\r
\r
\r
-/*----- \83A\83b\83v\83\8d\81[\83h\8fI\97¹\81^\92\86\8e~\8e\9e\82Ì\83\81\83b\83Z\81[\83W\82ð\95\\8e¦ ----------------------------\r
+/*----- アップロード終了/中止時のメッセージを表示 ----------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
-* int iRetCode : \89\9e\93\9a\83R\81[\83h\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
+* int iRetCode : 応答コード\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DispUploadFinishMsg(TRANSPACKET *Pkt, int iRetCode)\r
}\r
\r
\r
-/*----- \83A\83b\83v\83\8d\81[\83h\82Ì\83\8a\83W\83\85\81[\83\80\82Ì\8f\80\94õ\82ð\8ds\82¤ ----------------------------------\r
+/*----- アップロードのリジュームの準備を行う ----------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
-* iont ProcMode : \8f\88\97\9d\83\82\81[\83h(EXIST_xxx)\r
-* LONGLONG Size : \83z\83X\83g\82É\82 \82é\83t\83@\83C\83\8b\82Ì\83T\83C\83Y\r
-* int *Mode : \83\8a\83W\83\85\81[\83\80\82ð\8ds\82¤\82©\82Ç\82¤\82© (YES/NO)\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
+* iont ProcMode : 処理モード(EXIST_xxx)\r
+* LONGLONG Size : ホストにあるファイルのサイズ\r
+* int *Mode : リジュームを行うかどうか (YES/NO)\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X = YES\r
+* int ステータス = YES\r
*\r
* Note\r
-* Pkt->ExistSize\82Ì\83Z\83b\83g\82ð\8ds\82È\82¤\r
+* Pkt->ExistSizeのセットを行なう\r
*----------------------------------------------------------------------------*/\r
\r
static int SetUploadResume(TRANSPACKET *Pkt, int ProcMode, LONGLONG Size, int *Mode)\r
}\r
\r
\r
-/*----- \93]\91\97\92\86\83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------------\r
+/*----- 転送中ダイアログボックスのコールバック --------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
\r
case TRANS_STOP_ALL :\r
ClearAll = YES;\r
- /* \82±\82±\82É break \82Í\82È\82¢ */\r
+ /* ここに break はない */\r
\r
case IDCANCEL :\r
Pkt->Abort = ABORT_USER;\r
}\r
\r
\r
-/*----- \93]\91\97\83X\83e\81[\83^\83X\82ð\95\\8e¦ --------------------------------------------------\r
+/*----- 転送ステータスを表示 --------------------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* int End : \93]\91\97\82ª\8a®\97¹\82µ\82½\82©\82Ç\82¤\82© (YES/NO)\r
+* HWND hWnd : ウインドウハンドル\r
+* int End : 転送が完了したかどうか (YES/NO)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DispTransferStatus(HWND hWnd, int End, TRANSPACKET *Pkt)\r
}\r
\r
\r
-/*----- \93]\91\97\82·\82é\83t\83@\83C\83\8b\82Ì\8fî\95ñ\82ð\95\\8e¦ ------------------------------------------\r
+/*----- 転送するファイルの情報を表示 ------------------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *Pkt : \93]\91\97\83t\83@\83C\83\8b\8fî\95ñ\r
-* char *Title : \83E\83C\83\93\83h\83E\82Ì\83^\83C\83g\83\8b\r
-* int SkipButton : \81u\82±\82Ì\83t\83@\83C\83\8b\82ð\92\86\8e~\81v\83{\83^\83\93\82Ì\97L\96³ (TRUE/FALSE)\r
-* int Info : \83t\83@\83C\83\8b\8fî\95ñ\82ð\95\\8e¦\82·\82é\82©\82Ç\82¤\82© (YES/NO)\r
+* TRANSPACKET *Pkt : 転送ファイル情報\r
+* char *Title : ウインドウのタイトル\r
+* int SkipButton : 「このファイルを中止」ボタンの有無 (TRUE/FALSE)\r
+* int Info : ファイル情報を表示するかどうか (YES/NO)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DispTransFileInfo(TRANSPACKET *Pkt, char *Title, int SkipButton, int Info)\r
else if(Pkt->Type == TYPE_A)\r
SendDlgItemMessage(Pkt->hWndTrans, TRANS_MODE, WM_SETTEXT, 0, (LPARAM)MSGJPN120);\r
\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
if(Pkt->KanjiCode == KANJI_NOCNV)\r
SendDlgItemMessage(Pkt->hWndTrans, TRANS_KANJI, WM_SETTEXT, 0, (LPARAM)MSGJPN121);\r
else if(Pkt->KanjiCode == KANJI_SJIS)\r
}\r
\r
\r
-/*----- PASV\83R\83}\83\93\83h\82Ì\96ß\82è\92l\82©\82ç\83A\83h\83\8c\83X\82Æ\83|\81[\83g\94Ô\8d\86\82ð\92\8a\8fo --------------------\r
+/*----- PASVコマンドの戻り値からアドレスとポート番号を抽出 --------------------\r
*\r
* Parameter\r
-* char *Str : PASV\83R\83}\83\93\83h\82Ì\83\8a\83v\83\89\83C\r
-* char *Adrs : \83A\83h\83\8c\83X\82Ì\83R\83s\81[\90æ ("www.xxx.yyy.zzz")\r
-* int *Port : \83|\81[\83g\94Ô\8d\86\82ð\83Z\83b\83g\82·\82é\83\8f\81[\83N\r
-* int Max : \83A\83h\83\8c\83X\95¶\8e\9a\97ñ\82Ì\8dÅ\91å\92·\r
+* char *Str : PASVコマンドのリプライ\r
+* char *Adrs : アドレスのコピー先 ("www.xxx.yyy.zzz")\r
+* int *Port : ポート番号をセットするワーク\r
+* int Max : ã\82¢ã\83\89ã\83¬ã\82¹æ\96\87å\97å\88\97ã\81®æ\9c\80大é\95·\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int GetAdrsAndPort(char *Str, char *Adrs, int *Port, int Max)\r
char *Btm;\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
\r
Pos = strchr(Str, '(');\r
if(Pos != NULL)\r
{\r
Btm++;\r
*Port = (atoi(Pos) * 0x100) + atoi(Btm);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
}\r
}\r
\r
\r
-/*----- Windows\82Ì\83X\83y\83V\83\83\83\8b\83f\83o\83C\83X\82©\82Ç\82¤\82©\82ð\95Ô\82· -----------------------------\r
+/*----- Windowsのスペシャルデバイスかどうかを返す -----------------------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
+* char *Fname : ファイル名\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (YES/NO)\r
+* int ステータス (YES/NO)\r
*----------------------------------------------------------------------------*/\r
\r
static int IsSpecialDevice(char *Fname)\r
int Sts;\r
\r
Sts = NO;\r
- // \94ä\8ar\82ª\95s\8a®\91S\82È\83o\83O\8fC\90³\r
+ // 比較が不完全なバグ修正\r
// if((_stricmp(Fname, "CON") == 0) ||\r
// (_stricmp(Fname, "PRN") == 0) ||\r
// (_stricmp(Fname, "AUX") == 0) ||\r
}\r
\r
\r
-/*----- \83~\83\89\81[\83\8a\83\93\83O\82Å\82Ì\83t\83@\83C\83\8b\8dí\8f\9c\8am\94F --------------------------------------\r
+/*----- ミラーリングでのファイル削除確認 --------------------------------------\r
*\r
* Parameter\r
* int Cur\r
}\r
\r
\r
-/*----- \83~\83\89\81[\83\8a\83\93\83O\82Å\82Ì\83t\83@\83C\83\8b\8dí\8f\9c\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ------------------\r
+/*----- ミラーリングでのファイル削除ダイアログのコールバック ------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
\r
\r
\r
-/*----- \83_\83E\83\93\83\8d\81[\83h\8e\9e\82Ì\95s\90³\82È\83p\83X\82ð\83`\83F\83b\83N ----------------------------------\r
+/*----- ダウンロード時の不正なパスをチェック ----------------------------------\r
*\r
* Parameter\r
-* TRANSPACKET *packet : \83_\83E\83\93\83\8d\81[\83h\8fî\95ñ\r
+* TRANSPACKET *packet : ダウンロード情報\r
*\r
* Return Value\r
-* int YES=\95s\90³\82È\83p\83X/NO=\96â\91è\82È\82¢\83p\83X\r
+* int YES=不正なパス/NO=問題ないパス\r
*----------------------------------------------------------------------------*/\r
int CheckPathViolation(TRANSPACKET *packet)\r
{\r
-#define IDH_HELP_TOPIC_0000001 1 /* \82Í\82¶\82ß\82É */\r
-#define IDH_HELP_TOPIC_0000002 2 /* \8eg\82¢\95û */\r
-#define IDH_HELP_TOPIC_0000003 3 /* \89æ\96Ê\82Ì\90à\96¾ */\r
-#define IDH_HELP_TOPIC_0000005 5 /* \83z\83X\83g\82Ö\82Ì\90Ú\91±\82Æ\90Ø\92f */\r
-#define IDH_HELP_TOPIC_0000006 6 /* \83t\83@\83C\83\8b\88ê\97\97 */\r
-#define IDH_HELP_TOPIC_0000007 7 /* \93]\91\97\83\82\81[\83h */\r
-#define IDH_HELP_TOPIC_0000008 8 /* \83_\83E\83\93\83\8d\81[\83h */\r
-#define IDH_HELP_TOPIC_0000009 9 /* \83_\83E\83\93\83\8d\81[\83h\82Ì\8am\94F */\r
-#define IDH_HELP_TOPIC_0000010 10 /* \83A\83b\83v\83\8d\81[\83h */\r
-#define IDH_HELP_TOPIC_0000011 11 /* \83A\83b\83v\83\8d\81[\83h\82Ì\8am\94F */\r
-#define IDH_HELP_TOPIC_0000012 12 /* \83~\83\89\81[\83\8a\83\93\83O\83A\83b\83v\83\8d\81[\83h */\r
-#define IDH_HELP_TOPIC_0000013 13 /* \83~\83\89\81[\83\8a\83\93\83O\83_\83E\83\93\83\8d\81[\83h */\r
-#define IDH_HELP_TOPIC_0000014 14 /* \83t\83@\83C\83\8b\82ð\8aJ\82 */\r
-#define IDH_HELP_TOPIC_0000015 15 /* \83t\83@\83C\83\8b\8dí\8f\9c */\r
-#define IDH_HELP_TOPIC_0000016 16 /* \83t\83@\83C\83\8b\96¼\95Ï\8dX */\r
-#define IDH_HELP_TOPIC_0000017 17 /* \91®\90«\95Ï\8dX */\r
-#define IDH_HELP_TOPIC_0000018 18 /* \83t\83H\83\8b\83_\8dì\90¬ */\r
-#define IDH_HELP_TOPIC_0000019 19 /* \83u\83b\83N\83}\81[\83N */\r
-#define IDH_HELP_TOPIC_0000020 20 /* \83t\83@\83C\83\8b\82Ì\8c\9f\8dõ */\r
-#define IDH_HELP_TOPIC_0000021 21 /* \83t\83B\83\8b\83^ */\r
-#define IDH_HELP_TOPIC_0000022 22 /* \83t\83H\83\8b\83_\82Ì\93¯\8e\9e\88Ú\93® */\r
-#define IDH_HELP_TOPIC_0000023 23 /* \94C\88Ó\82Ì\83R\83}\83\93\83h */\r
-#define IDH_HELP_TOPIC_0000024 24 /* \83R\83}\83\93\83h\83\89\83C\83\93 */\r
-#define IDH_HELP_TOPIC_0000025 25 /* \83C\83\93\83|\81[\83g */\r
-#define IDH_HELP_TOPIC_0000027 27 /* \83z\83X\83g\88ê\97\97 */\r
-#define IDH_HELP_TOPIC_0000028 28 /* \8aî\96{ */\r
-#define IDH_HELP_TOPIC_0000029 29 /* \8ag\92£ */\r
-#define IDH_HELP_TOPIC_0000030 30 /* \95¶\8e\9a\83R\81[\83h */\r
-#define IDH_HELP_TOPIC_0000031 31 /* \83_\83C\83A\83\8b\83A\83b\83v */\r
-#define IDH_HELP_TOPIC_0000032 32 /* \8d\82\93x */\r
-#define IDH_HELP_TOPIC_0000034 34 /* \90Ú\91± */\r
-#define IDH_HELP_TOPIC_0000035 35 /* \83R\83}\83\93\83h */\r
-#define IDH_HELP_TOPIC_0000036 36 /* \95\\8e¦ */\r
-#define IDH_HELP_TOPIC_0000037 37 /* \83c\81[\83\8b */\r
-#define IDH_HELP_TOPIC_0000038 38 /* \83I\83v\83V\83\87\83\93 */\r
-#define IDH_HELP_TOPIC_0000039 39 /* \83w\83\8b\83v */\r
-#define IDH_HELP_TOPIC_0000040 40 /* \8aÂ\8b«\90Ý\92è */\r
-#define IDH_HELP_TOPIC_0000041 41 /* \83\86\81[\83U */\r
-#define IDH_HELP_TOPIC_0000042 42 /* \93]\91\97\82P */\r
-#define IDH_HELP_TOPIC_0000043 43 /* \93]\91\97\82Q */\r
-#define IDH_HELP_TOPIC_0000044 44 /* \93]\91\97\82R */\r
-#define IDH_HELP_TOPIC_0000045 45 /* \83~\83\89\81[\83\8a\83\93\83O */\r
-#define IDH_HELP_TOPIC_0000046 46 /* \91\80\8dì */\r
-#define IDH_HELP_TOPIC_0000047 47 /* \95\\8e¦ */\r
-#define IDH_HELP_TOPIC_0000048 48 /* \90Ú\91±/\90Ø\92f */\r
+#define IDH_HELP_TOPIC_0000001 1 /* はじめに */\r
+#define IDH_HELP_TOPIC_0000002 2 /* 使い方 */\r
+#define IDH_HELP_TOPIC_0000003 3 /* 画面の説明 */\r
+#define IDH_HELP_TOPIC_0000005 5 /* ホストへの接続と切断 */\r
+#define IDH_HELP_TOPIC_0000006 6 /* ファイル一覧 */\r
+#define IDH_HELP_TOPIC_0000007 7 /* 転送モード */\r
+#define IDH_HELP_TOPIC_0000008 8 /* ダウンロード */\r
+#define IDH_HELP_TOPIC_0000009 9 /* ダウンロードの確認 */\r
+#define IDH_HELP_TOPIC_0000010 10 /* アップロード */\r
+#define IDH_HELP_TOPIC_0000011 11 /* アップロードの確認 */\r
+#define IDH_HELP_TOPIC_0000012 12 /* ミラーリングアップロード */\r
+#define IDH_HELP_TOPIC_0000013 13 /* ミラーリングダウンロード */\r
+#define IDH_HELP_TOPIC_0000014 14 /* ファイルを開く */\r
+#define IDH_HELP_TOPIC_0000015 15 /* ファイル削除 */\r
+#define IDH_HELP_TOPIC_0000016 16 /* ファイル名変更 */\r
+#define IDH_HELP_TOPIC_0000017 17 /* 属性変更 */\r
+#define IDH_HELP_TOPIC_0000018 18 /* フォルダ作成 */\r
+#define IDH_HELP_TOPIC_0000019 19 /* ブックマーク */\r
+#define IDH_HELP_TOPIC_0000020 20 /* ファイルの検索 */\r
+#define IDH_HELP_TOPIC_0000021 21 /* フィルタ */\r
+#define IDH_HELP_TOPIC_0000022 22 /* フォルダの同時移動 */\r
+#define IDH_HELP_TOPIC_0000023 23 /* 任意のコマンド */\r
+#define IDH_HELP_TOPIC_0000024 24 /* コマンドライン */\r
+#define IDH_HELP_TOPIC_0000025 25 /* インポート */\r
+#define IDH_HELP_TOPIC_0000027 27 /* ホスト一覧 */\r
+#define IDH_HELP_TOPIC_0000028 28 /* 基本 */\r
+#define IDH_HELP_TOPIC_0000029 29 /* 拡張 */\r
+#define IDH_HELP_TOPIC_0000030 30 /* 文字コード */\r
+#define IDH_HELP_TOPIC_0000031 31 /* ダイアルアップ */\r
+#define IDH_HELP_TOPIC_0000032 32 /* 高度 */\r
+#define IDH_HELP_TOPIC_0000034 34 /* 接続 */\r
+#define IDH_HELP_TOPIC_0000035 35 /* コマンド */\r
+#define IDH_HELP_TOPIC_0000036 36 /* 表示 */\r
+#define IDH_HELP_TOPIC_0000037 37 /* ツール */\r
+#define IDH_HELP_TOPIC_0000038 38 /* オプション */\r
+#define IDH_HELP_TOPIC_0000039 39 /* ヘルプ */\r
+#define IDH_HELP_TOPIC_0000040 40 /* 環境設定 */\r
+#define IDH_HELP_TOPIC_0000041 41 /* ユーザ */\r
+#define IDH_HELP_TOPIC_0000042 42 /* 転送1 */\r
+#define IDH_HELP_TOPIC_0000043 43 /* 転送2 */\r
+#define IDH_HELP_TOPIC_0000044 44 /* 転送3 */\r
+#define IDH_HELP_TOPIC_0000045 45 /* ミラーリング */\r
+#define IDH_HELP_TOPIC_0000046 46 /* 操作 */\r
+#define IDH_HELP_TOPIC_0000047 47 /* 表示 */\r
+#define IDH_HELP_TOPIC_0000048 48 /* 接続/切断 */\r
#define IDH_HELP_TOPIC_0000049 49 /* FireWall */\r
-#define IDH_HELP_TOPIC_0000050 50 /* \83c\81[\83\8b */\r
-#define IDH_HELP_TOPIC_0000051 51 /* \83T\83E\83\93\83h */\r
-#define IDH_HELP_TOPIC_0000052 52 /* \82»\82Ì\91¼ */\r
-#define IDH_HELP_TOPIC_0000054 54 /* JIS\8a¿\8e\9a\83R\81[\83h\82É\82Â\82¢\82Ä */\r
-#define IDH_HELP_TOPIC_0000055 55 /* \8a¿\8e\9a\82Ì\83t\83@\83C\83\8b\96¼\82É\82Â\82¢\82Ä */\r
-#define IDH_HELP_TOPIC_0000056 56 /* \83p\83X\83\8f\81[\83h\82Ì\8eæ\82è\88µ\82¢\82É\82Â\82¢\82Ä */\r
-#define IDH_HELP_TOPIC_0000057 57 /* jre32.dll\82É\82Â\82¢\82Ä */\r
-#define IDH_HELP_TOPIC_0000058 58 /* \83o\81[\83W\83\87\83\93\83A\83b\83v\82É\82Â\82¢\82Ä */\r
-#define IDH_HELP_TOPIC_0000059 59 /* \83A\83\93\83C\83\93\83X\83g\81[\83\8b\82É\82Â\82¢\82Ä */\r
-#define IDH_HELP_TOPIC_0000060 60 /* \8dì\90¬ */\r
-#define IDH_HELP_TOPIC_0000061 61 /* \83t\83@\83C\83\8b\82Ì\91I\91ð */\r
-#define IDH_HELP_TOPIC_0000062 62 /* \83u\83b\83N\83}\81[\83N */\r
-#define IDH_HELP_TOPIC_0000064 64 /* \83}\83X\83^\81[\83p\83X\83\8f\81[\83h */\r
-#define IDH_HELP_TOPIC_0000065 65 /* \88Ã\8d\86\89» */\r
+#define IDH_HELP_TOPIC_0000050 50 /* ツール */\r
+#define IDH_HELP_TOPIC_0000051 51 /* サウンド */\r
+#define IDH_HELP_TOPIC_0000052 52 /* その他 */\r
+#define IDH_HELP_TOPIC_0000054 54 /* JIS漢字コードについて */\r
+#define IDH_HELP_TOPIC_0000055 55 /* 漢字のファイル名について */\r
+#define IDH_HELP_TOPIC_0000056 56 /* パスワードの取り扱いについて */\r
+#define IDH_HELP_TOPIC_0000057 57 /* jre32.dllについて */\r
+#define IDH_HELP_TOPIC_0000058 58 /* バージョンアップについて */\r
+#define IDH_HELP_TOPIC_0000059 59 /* アンインストールについて */\r
+#define IDH_HELP_TOPIC_0000060 60 /* 作成 */\r
+#define IDH_HELP_TOPIC_0000061 61 /* ファイルの選択 */\r
+#define IDH_HELP_TOPIC_0000062 62 /* ブックマーク */\r
+#define IDH_HELP_TOPIC_0000064 64 /* マスターパスワード */\r
+#define IDH_HELP_TOPIC_0000065 65 /* 暗号化 */\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83q\83X\83g\83\8a\r
+* ヒストリ\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include "resource.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static void CopyHostToHistory(HOSTDATA *Host, HISTORYDATA *New);\r
static void AddOneFnameToMenu(char *Host, char *User, char *Remote, int Num);\r
static void RemoveAllHistoryFromMenu(void);\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
extern int FileHist;\r
extern int PassToHist;\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static HISTORYDATA *HistoryBase = NULL;\r
static int HistoryNum = 0;\r
\r
-/* \83q\83X\83g\83\8a\82Ì\83\81\83j\83\85\81[\8d\80\96Ú\82ÌID */\r
+/* ヒストリのメニュー項目のID */\r
static int MenuHistId[HISTORY_MAX] = {\r
MENU_HIST_1, MENU_HIST_2, MENU_HIST_3, MENU_HIST_4, MENU_HIST_5,\r
MENU_HIST_6, MENU_HIST_7, MENU_HIST_8, MENU_HIST_9, MENU_HIST_10,\r
\r
\r
\r
-/*----- \83z\83X\83g\8fî\95ñ\82ð\83q\83X\83g\83\8a\83\8a\83X\83g\82Ì\90æ\93ª\82É\92Ç\89Á\82·\82é ----------------------------\r
+/*----- ホスト情報をヒストリリストの先頭に追加する ----------------------------\r
*\r
* Parameter\r
-* HOSTDATA *Host : \83z\83X\83g\83f\81[\83^\r
-* int TrMode : \93]\91\97\83\82\81[\83h\r
+* HOSTDATA *Host : ホストデータ\r
+* int TrMode : 転送モード\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void AddHostToHistory(HOSTDATA *Host, int TrMode)\r
}\r
\r
\r
-/*----- \83q\83X\83g\83\8a\82ð\83q\83X\83g\83\8a\83\8a\83X\83g\82Ì\90æ\93ª\82É\92Ç\89Á\82·\82é ------------------------------\r
+/*----- ヒストリをヒストリリストの先頭に追加する ------------------------------\r
*\r
* Parameter\r
-* HISTORYDATA *Hist : \83q\83X\83g\83\8a\83f\81[\83^\r
+* HISTORYDATA *Hist : ヒストリデータ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void AddHistoryToHistory(HISTORYDATA *Hist)\r
}\r
\r
\r
-/*----- \83q\83X\83g\83\8a\82Ì\90\94\82ð\95Ô\82· ----------------------------------------------------\r
+/*----- ヒストリの数を返す ----------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83q\83X\83g\83\8a\82Ì\90\94\r
+* int ヒストリの数\r
*----------------------------------------------------------------------------*/\r
\r
int AskHistoryNum(void)\r
}\r
\r
\r
-/*----- \83q\83X\83g\83\8a\82Ì\90\94\82ð\83`\83F\83b\83N\82µ\91½\82·\82¬\82½\82ç\8dí\8f\9c --------------------------------\r
+/*----- ヒストリの数をチェックし多すぎたら削除 --------------------------------\r
*\r
* Parameter\r
-* int Space : \8bó\82¯\82Ä\82¨\82\8cÂ\90\94 (0\81`)\r
+* int Space : 空けておく個数 (0~)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void CheckHistoryNum(int Space)\r
\r
if(HistoryNum > FileHist-Space)\r
{\r
- /* \8ec\82·\82×\82«\83q\83X\83g\83\8a\82ð\92T\82· */\r
+ /* 残すべきヒストリを探す */\r
Pos = HistoryBase;\r
Prev = NULL;\r
for(i = 0; i < FileHist-Space; i++)\r
Pos = Pos->Next;\r
}\r
\r
- /* \82¢\82ç\82È\82¢\83q\83X\83g\83\8a\82ð\8fÁ\82· */\r
+ /* いらないヒストリを消す */\r
if(Prev == NULL)\r
HistoryBase = NULL;\r
else\r
}\r
\r
\r
-/*----- \83z\83X\83g\8fî\95ñ\82ð\83q\83X\83g\83\8a\82É\83Z\83b\83g ------------------------------------------\r
+/*----- ホスト情報をヒストリにセット ------------------------------------------\r
*\r
* Parameter\r
-* HOSTDATA *Host : \83z\83X\83g\83f\81[\83^\r
-* HISTORYDATA *New : \83q\83X\83g\83\8a\82ð\83Z\83b\83g\82·\82é\83\8f\81[\83N\r
+* HOSTDATA *Host : ホストデータ\r
+* HISTORYDATA *New : ヒストリをセットするワーク\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void CopyHostToHistory(HOSTDATA *Host, HISTORYDATA *New)\r
New->DialupAlways = Host->DialupAlways;\r
New->DialupNotify = Host->DialupNotify;\r
strcpy(New->DialEntry, Host->DialEntry);\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+ // 暗号化通信対応\r
New->UseFTPES = Host->UseFTPES;\r
New->UseFTPIS = Host->UseFTPIS;\r
New->UseSFTP = Host->UseSFTP;\r
}\r
\r
\r
-/*----- \83q\83X\83g\83\8a\8fî\95ñ\82ð\83z\83X\83g\8fî\95ñ\82É\83Z\83b\83g --------------------------------------\r
+/*----- ヒストリ情報をホスト情報にセット --------------------------------------\r
*\r
* Parameter\r
-* HISTORYDATA *Hist : \83q\83X\83g\83\8a\r
-* HOSTDATA *Host : \83z\83X\83g\83f\81[\83^\82ð\83Z\83b\83g\82·\82é\83\8f\81[\83N\r
+* HISTORYDATA *Hist : ヒストリ\r
+* HOSTDATA *Host : ホストデータをセットするワーク\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void CopyHistoryToHost(HISTORYDATA *Hist, HOSTDATA *Host)\r
Host->DialupAlways = Hist->DialupAlways;\r
Host->DialupNotify = Hist->DialupNotify;\r
strcpy(Host->DialEntry, Hist->DialEntry);\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+ // 暗号化通信対応\r
Host->UseFTPES = Hist->UseFTPES;\r
Host->UseFTPIS = Hist->UseFTPIS;\r
Host->UseSFTP = Hist->UseSFTP;\r
}\r
\r
\r
-/*----- \83q\83X\83g\83\8a\8fî\95ñ\82Ì\8f\89\8aú\92l\82ð\8eæ\93¾ --------------------------------------------\r
+/*----- ヒストリ情報の初期値を取得 --------------------------------------------\r
*\r
* Parameter\r
-* HISTORYDATA *Set : \83q\83X\83g\83\8a\82ð\83Z\83b\83g\82·\82é\83\8f\81[\83N\r
+* HISTORYDATA *Set : ヒストリをセットするワーク\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void CopyDefaultHistory(HISTORYDATA *Set)\r
}\r
\r
\r
-/*----- \91S\83q\83X\83g\83\8a\82ð\83\81\83j\83\85\81[\82É\83Z\83b\83g ------------------------------------------\r
+/*----- 全ヒストリをメニューにセット ------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetAllHistoryToMenu(void)\r
}\r
\r
\r
-/*----- \83q\83X\83g\83\8a\82ð\83\81\83j\83\85\81[\82É\92Ç\89Á ----------------------------------------------\r
+/*----- ヒストリをメニューに追加 ----------------------------------------------\r
*\r
* Parameter\r
-* char *Host : \83z\83X\83g\96¼\r
-* char *User : \83\86\81[\83U\96¼\r
-* char *Remote : \83z\83X\83g\82Ì\83t\83H\83\8b\83_\r
-* int Num : \94Ô\8d\86\r
+* char *Host : ホスト名\r
+* char *User : ユーザ名\r
+* char *Remote : ホストのフォルダ\r
+* int Num : 番号\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void AddOneFnameToMenu(char *Host, char *User, char *Remote, int Num)\r
}\r
\r
\r
-/*----- \91S\83q\83X\83g\83\8a\82ð\83\81\83j\83\85\81[\82©\82ç\8dí\8f\9c ------------------------------------------\r
+/*----- 全ヒストリをメニューから削除 ------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void RemoveAllHistoryFromMenu(void)\r
}\r
\r
\r
-/*----- \8ew\92è\83\81\83j\83\85\81[\83R\83}\83\93\83h\82É\91Î\89\9e\82·\82é\83q\83X\83g\83\8a\82ð\95Ô\82· --------------------------\r
+/*----- 指定メニューコマンドに対応するヒストリを返す --------------------------\r
*\r
* Parameter\r
-* int MenuCmd : \8eæ\82è\8fo\82·\83q\83X\83g\83\8a\82É\8a\84\82è\93\96\82Ä\82ç\82ê\82½\83\81\83j\83\85\81[\83R\83}\83\93\83h (MENU_xxx)\r
-* HISTORYDATA *Buf : \83q\83X\83g\83\8a\83f\81[\83^\82ð\95Ô\82·\83o\83b\83t\83@\r
+* int MenuCmd : 取り出すヒストリに割り当てられたメニューコマンド (MENU_xxx)\r
+* HISTORYDATA *Buf : ヒストリデータを返すバッファ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int GetHistoryByCmd(int MenuCmd, HISTORYDATA *Buf)\r
int i;\r
HISTORYDATA *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
Pos = HistoryBase;\r
for(i = 0; i < HistoryNum; i++)\r
{\r
if(MenuHistId[i] == MenuCmd)\r
{\r
memcpy(Buf, Pos, sizeof(HISTORYDATA));\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
Pos = Pos->Next;\r
}\r
}\r
\r
\r
-/*----- \8ew\92è\94Ô\8d\86\82É\91Î\89\9e\82·\82é\83q\83X\83g\83\8a\82ð\95Ô\82· --------------------------------------\r
+/*----- 指定番号に対応するヒストリを返す --------------------------------------\r
*\r
* Parameter\r
-* int Num : \94Ô\8d\86(0\81`)\r
-* HISTORYDATA *Buf : \83q\83X\83g\83\8a\83f\81[\83^\82ð\95Ô\82·\83o\83b\83t\83@\r
+* int Num : 番号(0~)\r
+* HISTORYDATA *Buf : ヒストリデータを返すバッファ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int GetHistoryByNum(int Num, HISTORYDATA *Buf)\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83z\83X\83g\88ê\97\97\r
+* ホスト一覧\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include <htmlhelp.h>\r
#include "helpid.h"\r
\r
-// UTF-8\91Î\89\9e\r
+// UTF-8対応\r
#undef __MBSWRAPPER_H__\r
#include "mbswrapper.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
static LRESULT CALLBACK HostListWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\r
static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static BOOL CALLBACK DialupSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static BOOL CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
-// \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+// 暗号化通信対応\r
static BOOL CALLBACK CryptSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
extern HWND hHelpWin;\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
extern char UserMailAdrs[USER_MAIL_LEN+1];\r
extern HFONT ListFont;\r
extern char DefaultLocalPath[FMAX_PATH+1];\r
extern int ConnectAndSet;\r
extern SIZE HostDlgSize;\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
-static int Hosts = 0; /* \83z\83X\83g\90\94 */\r
-static int ConnectingHost; /* \90Ú\91±\92\86\82Ì\83z\83X\83g */\r
-static int CurrentHost; /* \83J\81[\83\\83\8b\88Ê\92u\82Ì\83z\83X\83g */\r
-static HOSTLISTDATA *HostListTop = NULL; /* \83z\83X\83g\88ê\97\97\83f\81[\83^ */\r
-static HOSTDATA TmpHost; /* \83z\83X\83g\8fî\95ñ\83R\83s\81[\97p */\r
-static int Apply; /* \83v\83\8d\83p\83e\83B\83V\81[\83g\82ÅOK\82ð\89\9f\82µ\82½\83t\83\89\83O */\r
+static int Hosts = 0; /* ホスト数 */\r
+static int ConnectingHost; /* 接続中のホスト */\r
+static int CurrentHost; /* カーソル位置のホスト */\r
+static HOSTLISTDATA *HostListTop = NULL; /* ホスト一覧データ */\r
+static HOSTDATA TmpHost; /* ホスト情報コピー用 */\r
+static int Apply; /* プロパティシートでOKを押したフラグ */\r
static WNDPROC HostListProcPtr;\r
\r
\r
\r
-/*----- \83z\83X\83g\88ê\97\97\83E\83C\83\93\83h\83E --------------------------------------------------\r
+/*----- ホスト一覧ウインドウ --------------------------------------------------\r
*\r
* Parameter\r
-* int Type : \83_\83C\83A\83\8d\83O\82Ì\83^\83C\83v (DLG_TYPE_xxx)\r
+* int Type : ダイアログのタイプ (DLG_TYPE_xxx)\r
*\r
* Return Value\r
-* \83X\83e\81[\83^\83X (YES=\8eÀ\8ds/NO=\8eæ\8fÁ)\r
+* ステータス (YES=実行/NO=取消)\r
*----------------------------------------------------------------------------*/\r
\r
int SelectHost(int Type)\r
\r
Sts = DialogBox(GetFtpInst(), MAKEINTRESOURCE(Dlg), GetMainHwnd(), SelectHostProc);\r
\r
- /* \83z\83X\83g\90Ý\92è\82ð\95Û\91¶ */\r
+ /* ホスト設定を保存 */\r
SetNodeLevelAll();\r
SaveRegistory();\r
\r
}\r
\r
\r
-/*----- \83z\83X\83g\88ê\97\97\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
+/*----- ホスト一覧ウインドウのコールバック ------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
switch (message)\r
{\r
case WM_INITDIALOG :\r
- /* TreeView\82Å\82Ì\83_\83u\83\8b\83N\83\8a\83b\83N\82ð\82Â\82©\82Ü\82¦\82é\82½\82ß */\r
+ /* TreeViewでのダブルクリックをつかまえるため */\r
HostListProcPtr = (WNDPROC)SetWindowLong(GetDlgItem(hDlg, HOST_LIST), GWL_WNDPROC, (LONG)HostListWndProc);\r
\r
\r
\r
if(AskConnecting() == YES)\r
{\r
- /* \90Ú\91±\92\86\82Í\81u\95Ï\8dX\81v\82Ì\82Ý\8b\96\89Â */\r
+ /* 接続中は「変更」のみ許可 */\r
EnableWindow(GetDlgItem(hDlg, HOST_NEW), FALSE);\r
EnableWindow(GetDlgItem(hDlg, HOST_FOLDER), FALSE);\r
EnableWindow(GetDlgItem(hDlg, HOST_COPY), FALSE);\r
EndDialog(hDlg, YES);\r
break;\r
}\r
- /* \82±\82±\82Ébreak\82Í\82È\82¢ */\r
+ /* ここにbreakはない */\r
\r
case IDCANCEL :\r
AskDlgSize(hDlg, &DlgSize, &HostDlgSize);\r
\r
if((Level1 == Level2) && (Data2->Set.Level & SET_LEVEL_GROUP))\r
{\r
- //Data2\82Ìchild\82Ö\r
+ //Data2のchildへ\r
if(Data1->Next != NULL)\r
Data1->Next->Prev = Data1->Prev;\r
if(Data1->Prev != NULL)\r
}\r
else if(Level1 < Level2)\r
{\r
- //Data1\82ÌPrev\82ÌChild\82ÌNext\82Ì\96\96\94ö\82Ö\r
+ //Data1のPrevのChildのNextの末尾へ\r
Data2 = Data1->Prev->Child;\r
while(Data2->Next != NULL)\r
Data2 = Data2->Next;\r
}\r
else\r
{\r
- //Data2\82Ìprev\82Ö\r
+ //Data2のprevへ\r
if(Data1->Next != NULL)\r
Data1->Next->Prev = Data1->Prev;\r
if(Data1->Prev != NULL)\r
{\r
if(Data1->Next != NULL)\r
{\r
- //Data2 = Data1\82ÌNext\r
+ //Data2 = Data1のNext\r
Data2 = Data1->Next;\r
Level2 = GetNodeLevelByData(Data2);\r
}\r
if(((Data2 == NULL) && (Level1 > 0)) ||\r
(Level1 > Level2))\r
{\r
- //Data1\82ÌParent\82ÌNext\82Ö\r
+ //Data1のParentのNextへ\r
Data2 = Data1->Parent;\r
\r
if(Data1->Next != NULL)\r
{\r
if(Data2->Set.Level & SET_LEVEL_GROUP)\r
{\r
- //Data2\82ÌChild\82Ö\r
+ //Data2のChildへ\r
if(Data1->Next != NULL)\r
Data1->Next->Prev = Data1->Prev;\r
if(Data1->Prev != NULL)\r
}\r
else\r
{\r
- //Data2\82ÌNext\82Ö\r
+ //Data2のNextへ\r
if(Data1->Next != NULL)\r
Data1->Next->Prev = Data1->Prev;\r
if(Data1->Prev != NULL)\r
switch(tView->hdr.code)\r
{\r
case TVN_SELCHANGED :\r
- /* \83t\83H\83\8b\83_\82ª\91I\82Î\82ê\82½\82Æ\82«\82Í\90Ú\91±\81A\83R\83s\81[\83{\83^\83\93\82Í\8bÖ\8e~ */\r
+ /* フォルダが選ばれたときは接続、コピーボタンは禁止 */\r
Item.hItem = hItem;\r
Item.mask = TVIF_PARAM;\r
SendDlgItemMessage(hDlg, HOST_LIST, TVM_GETITEM, TVGN_CARET, (LPARAM)&Item);\r
}\r
\r
\r
-/*----- \83z\83X\83g\88ê\97\97TreeView\82Ì\83\81\83b\83Z\81[\83W\8f\88\97\9d ------------------------------------\r
+/*----- ホスト一覧TreeViewのメッセージ処理 ------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hWnd : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
-* \83\81\83b\83Z\81[\83W\82É\91Î\89\9e\82·\82é\96ß\82è\92l\r
+* メッセージに対応する戻り値\r
*----------------------------------------------------------------------------*/\r
\r
static LRESULT CALLBACK HostListWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)\r
}\r
\r
\r
-/*----- \8e\9f\82Ì\90Ý\92è\94Ô\8d\86\82Ì\83m\81[\83h\82ð\95Ô\82· --------------------------------------------\r
+/*----- 次の設定番号のノードを返す --------------------------------------------\r
*\r
* Parameter\r
-* HOSTLISTDATA *Pos : \83m\81[\83h\83f\81[\83^\r
+* HOSTLISTDATA *Pos : ノードデータ\r
*\r
* Return Value\r
-* HOSTLISTDATA *\8e\9f\82Ì\83m\81[\83h\r
-* NULL=\8e\9f\82Í\82È\82¢\r
+* HOSTLISTDATA *次のノード\r
+* NULL=次はない\r
*----------------------------------------------------------------------------*/\r
\r
static HOSTLISTDATA *GetNextNode(HOSTLISTDATA *Pos)\r
}\r
\r
\r
-/*----- \83m\81[\83h\82Ì\83\8c\83x\83\8b\90\94\82ð\95Ô\82·\81i\90Ý\92è\94Ô\8d\86\8ew\92è\81j --------------------------------\r
+/*----- ノードのレベル数を返す(設定番号指定) --------------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\92l\8d\86\94Ô\8d\86\r
+* int Num : 設定値号番号\r
*\r
* Return Value\r
-* int \83\8c\83x\83\8b\90\94 (-1=\90Ý\92è\82ª\82È\82¢\81j\r
+* int レベル数 (-1=設定がない)\r
*----------------------------------------------------------------------------*/\r
\r
static int GetNodeLevel(int Num)\r
}\r
\r
\r
-/*----- \83m\81[\83h\82Ì\83\8c\83x\83\8b\90\94\82ð\95Ô\82·\81i\83m\81[\83h\83f\81[\83^\8ew\92è\81j-----------------------------\r
+/*----- ノードのレベル数を返す(ノードデータ指定)-----------------------------\r
*\r
* Parameter\r
-* HOSTLISTDATA *Data : \90Ý\92è\92l\r
+* HOSTLISTDATA *Data : 設定値\r
*\r
* Return Value\r
-* int \83\8c\83x\83\8b\90\94\r
+* int レベル数\r
*----------------------------------------------------------------------------*/\r
\r
static int GetNodeLevelByData(HOSTLISTDATA *Data)\r
}\r
\r
\r
-/*----- \83m\81[\83h\82Ì\90Ý\92è\94Ô\8d\86\82ð\95Ô\82· ------------------------------------------------\r
+/*----- ノードの設定番号を返す ------------------------------------------------\r
*\r
* Parameter\r
-* HOSTLISTDATA *Data : \90Ý\92è\92l\r
+* HOSTLISTDATA *Data : 設定値\r
*\r
* Return Value\r
-* int \90Ý\92è\94Ô\8d\86\r
+* int 設定番号\r
*----------------------------------------------------------------------------*/\r
\r
static int GetNodeNumByData(HOSTLISTDATA *Data)\r
}\r
\r
\r
-/*----- \8ew\92è\94Ô\8d\86\82Ì\83m\81[\83h\82ð\95Ô\82· ------------------------------------------------\r
+/*----- 指定番号のノードを返す ------------------------------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\94Ô\8d\86\r
+* int Num : 設定番号\r
*\r
* Return Value\r
-* HOSTLISTDATA * : \90Ý\92è\92l\r
+* HOSTLISTDATA * : 設定値\r
*----------------------------------------------------------------------------*/\r
\r
static HOSTLISTDATA *GetNodeByNum(int Num)\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\83\8a\83X\83g\82Ì\8ae\83m\81[\83h\82Ì\83\8c\83x\83\8b\94Ô\8d\86\82ð\83Z\83b\83g ----------------------------\r
+/*----- 設定値リストの各ノードのレベル番号をセット ----------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\94Ô\8d\86\r
+* int Num : 設定番号\r
*\r
* Return Value\r
-* HOSTLISTDATA * : \90Ý\92è\92l\r
+* HOSTLISTDATA * : 設定値\r
*----------------------------------------------------------------------------*/\r
\r
static int SetNodeLevelAll(void)\r
Pos->Set.Level |= GetNodeLevelByData(Pos);\r
Pos = GetNextNode(Pos);\r
}\r
- return(SUCCESS);\r
+ return(FFFTP_SUCCESS);\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\83\8a\83X\83g\82É\92Ç\89Á ----------------------------------------------------\r
+/*----- 設定値リストに追加 ----------------------------------------------------\r
*\r
* Parameter\r
-* HOSTDATA *Set : \92Ç\89Á\82·\82é\90Ý\92è\92l\r
-* int Pos : \92Ç\89Á\82·\82é\88Ê\92u (0\81` : -1=\8dÅ\8cã)\r
-* int Level : \83\8c\83x\83\8b\90\94 (SET_LEVEL_SAME=\92Ç\89Á\88Ê\92u\82Ì\82à\82Ì\82Æ\93¯\83\8c\83x\83\8b)\r
+* HOSTDATA *Set : 追加する設定値\r
+* int Pos : 追加する位置 (0~ : -1=最後)\r
+* int Level : レベル数 (SET_LEVEL_SAME=追加位置のものと同レベル)\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int AddHostToList(HOSTDATA *Set, int Pos, int Level)\r
HOSTLISTDATA *Last;\r
int Cur;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Pos >= -1) && (Pos <= Hosts))\r
{\r
if(Pos == -1)\r
}\r
}\r
Hosts++;\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\83\8a\83X\83g\82ð\8dX\90V\82·\82é ------------------------------------------------\r
+/*----- 設定値リストを更新する ------------------------------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\92l\8d\86\94Ô\8d\86\r
-* HOSTDATA *Set : \90Ý\92è\92l\82ð\83R\83s\81[\82·\82é\83\8f\81[\83N\r
+* int Num : 設定値号番号\r
+* HOSTDATA *Set : 設定値をコピーするワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int UpdateHostToList(int Num, HOSTDATA *Set)\r
int Sts;\r
HOSTLISTDATA *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Num >= 0) && (Num < Hosts))\r
{\r
Pos = GetNodeByNum(Num);\r
memcpy(&Pos->Set, Set, sizeof(HOSTDATA));\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\83\8a\83X\83g\82©\82ç\8dí\8f\9c --------------------------------------------------\r
+/*----- 設定値リストから削除 --------------------------------------------------\r
*\r
* Parameter\r
-* int Num : \8dí\8f\9c\82·\82é\94Ô\8d\86\r
+* int Num : 削除する番号\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int DelHostFromList(int Num)\r
int Sts;\r
HOSTLISTDATA *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Num >= 0) && (Num < Hosts))\r
{\r
if(Num == 0)\r
}\r
free(Pos);\r
Hosts--;\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\83\8a\83X\83g\82©\82ç\83m\81[\83h\83f\81[\83^\82ð\8dí\8f\9c ------------------------------------\r
+/*----- 設定値リストからノードデータを削除 ------------------------------------\r
*\r
* Parameter\r
-* HOSTLISTDATA *Pos : \8dí\8f\9c\82·\82é\83m\81[\83h\r
+* HOSTLISTDATA *Pos : 削除するノード\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*\r
* Note\r
-* Pos->Next, Pos->Child\82Ì\91S\82Ä\82Ì\83m\81[\83h\82ð\8dí\8f\9c\82·\82é\r
+* Pos->Next, Pos->Childの全てのノードを削除する\r
*----------------------------------------------------------------------------*/\r
\r
static int DeleteChildAndNext(HOSTLISTDATA *Pos)\r
Hosts--;\r
Pos = Next;\r
}\r
- return(SUCCESS);\r
+ return(FFFTP_SUCCESS);\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\83\8a\83X\83g\82©\82ç\90Ý\92è\92l\82ð\8eæ\82è\8fo\82· --------------------------------------\r
+/*----- 設定値リストから設定値を取り出す --------------------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\92l\8d\86\94Ô\8d\86\r
-* HOSTDATA *Set : \90Ý\92è\92l\82ð\83R\83s\81[\82·\82é\83\8f\81[\83N\r
+* int Num : 設定値号番号\r
+* HOSTDATA *Set : 設定値をコピーするワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*\r
* Note\r
-* \8c»\8dÝ\83z\83X\83g\82É\90Ú\91±\92\86\82Ì\8e\9e\82Í\81ACopyHostFromListInConnect() \82ð\8eg\82¤\8e\96\r
+* 現在ホストに接続中の時は、CopyHostFromListInConnect() を使う事\r
*----------------------------------------------------------------------------*/\r
\r
int CopyHostFromList(int Num, HOSTDATA *Set)\r
int Sts;\r
HOSTLISTDATA *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Num >= 0) && (Num < Hosts))\r
{\r
Pos = GetNodeByNum(Num);\r
memcpy(Set, &Pos->Set, sizeof(HOSTDATA));\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\83\8a\83X\83g\82©\82ç\90Ý\92è\92l\82ð\8eæ\82è\8fo\82· --------------------------------------\r
+/*----- 設定値リストから設定値を取り出す --------------------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\92l\8d\86\94Ô\8d\86\r
-* HOSTDATA *Set : \90Ý\92è\92l\82ð\83R\83s\81[\82·\82é\83\8f\81[\83N\r
+* int Num : 設定値号番号\r
+* HOSTDATA *Set : 設定値をコピーするワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*\r
* Note\r
-* \8c»\8dÝ\83z\83X\83g\82É\90Ú\91±\92\86\82Ì\8e\9e\82É\8eg\82¤\r
+* 現在ホストに接続中の時に使う\r
*----------------------------------------------------------------------------*/\r
\r
int CopyHostFromListInConnect(int Num, HOSTDATA *Set)\r
int Sts;\r
HOSTLISTDATA *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Num >= 0) && (Num < Hosts))\r
{\r
Pos = GetNodeByNum(Num);\r
Set->UseNLST_R = Pos->Set.UseNLST_R;\r
Set->LastDir = Pos->Set.LastDir;\r
Set->TimeZone = Pos->Set.TimeZone;\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+ // 暗号化通信対応\r
Set->UseFTPES = Pos->Set.UseFTPES;\r
Set->UseFTPIS = Pos->Set.UseFTPIS;\r
Set->UseSFTP = Pos->Set.UseSFTP;\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\83\8a\83X\83g\82Ì\83u\83b\83N\83}\81[\83N\82ð\8dX\90V --------------------------------------\r
+/*----- 設定値リストのブックマークを更新 --------------------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\92l\8d\86\94Ô\8d\86\r
-* char *Bmask : \83u\83b\83N\83}\81[\83N\95¶\8e\9a\97ñ\r
-* int Len : \83u\83b\83N\83}\81[\83N\95¶\8e\9a\97ñ\82Ì\92·\82³\r
+* int Num : 設定値号番号\r
+* char *Bmask : ブックマーク文字列\r
+* int Len : ブックマーク文字列の長さ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int SetHostBookMark(int Num, char *Bmask, int Len)\r
int Sts;\r
HOSTLISTDATA *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Num >= 0) && (Num < Hosts))\r
{\r
Pos = GetNodeByNum(Num);\r
memcpy(Pos->Set.BookMark, Bmask, Len);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\83\8a\83X\83g\82Ì\83u\83b\83N\83}\81[\83N\95¶\8e\9a\97ñ\82ð\95Ô\82· --------------------------------\r
+/*----- 設定値リストのブックマーク文字列を返す --------------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\92l\8d\86\94Ô\8d\86\r
+* int Num : 設定値号番号\r
*\r
* Return Value\r
-* char *\83u\83b\83N\83}\81[\83N\95¶\8e\9a\97ñ\r
+* char *ブックマーク文字列\r
*----------------------------------------------------------------------------*/\r
\r
char *AskHostBookMark(int Num)\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\83\8a\83X\83g\82Ì\83f\83B\83\8c\83N\83g\83\8a\82ð\8dX\90V --------------------------------------\r
+/*----- 設定値リストのディレクトリを更新 --------------------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\92l\8d\86\94Ô\8d\86\r
-* char *LocDir : \83\8d\81[\83J\83\8b\82Ì\83f\83B\83\8c\83N\83g\83\8a\r
-* char *HostDir : \83z\83X\83g\82Ì\83f\83B\83\8c\83N\83g\83\8a\r
+* int Num : 設定値号番号\r
+* char *LocDir : ローカルのディレクトリ\r
+* char *HostDir : ホストのディレクトリ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int SetHostDir(int Num, char *LocDir, char *HostDir)\r
int Sts;\r
HOSTLISTDATA *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Num >= 0) && (Num < Hosts))\r
{\r
Pos = GetNodeByNum(Num);\r
strcpy(Pos->Set.LocalInitDir, LocDir);\r
strcpy(Pos->Set.RemoteInitDir, HostDir);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\83\8a\83X\83g\82Ì\83p\83X\83\8f\81[\83h\82ð\8dX\90V ----------------------------------------\r
+/*----- 設定値リストのパスワードを更新 ----------------------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\92l\8d\86\94Ô\8d\86\r
-* char *Pass : \83p\83X\83\8f\81[\83h\r
+* int Num : 設定値号番号\r
+* char *Pass : パスワード\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int SetHostPassword(int Num, char *Pass)\r
int Sts;\r
HOSTLISTDATA *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Num >= 0) && (Num < Hosts))\r
{\r
Pos = GetNodeByNum(Num);\r
strcpy(Pos->Set.PassWord, Pass);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \8ew\92è\82Ì\90Ý\92è\96¼\82ð\8e\9d\82Â\90Ý\92è\82Ì\94Ô\8d\86\82ð\95Ô\82· ------------------------------------\r
+/*----- 指定の設定名を持つ設定の番号を返す ------------------------------------\r
*\r
* Parameter\r
-* char *Name : \90Ý\92è\96¼\r
+* char *Name : 設定名\r
*\r
* Return Value\r
-* int \90Ý\92è\94Ô\8d\86 (0\81`)\r
-* -1=\8c©\82Â\82©\82ç\82È\82¢\r
+* int 設定番号 (0~)\r
+* -1=見つからない\r
*----------------------------------------------------------------------------*/\r
\r
int SearchHostName(char *Name)\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\83\8a\83X\83g\82Ì\83\\81[\83g\95û\96@\82ð\8dX\90V ----------------------------------------\r
+/*----- 設定値リストのソート方法を更新 ----------------------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\92l\8d\86\94Ô\8d\86\r
-* int LFSort : \83\8d\81[\83J\83\8b\82Ì\83t\83@\83C\83\8b\82Ì\83\\81[\83g\95û\96@\r
-* int LDSort : \83\8d\81[\83J\83\8b\82Ì\83t\83H\83\8b\83_\82Ì\83\\81[\83g\95û\96@\r
-* int RFSort : \83\8a\83\82\81[\83g\82Ì\83t\83@\83C\83\8b\82Ì\83\\81[\83g\95û\96@\r
-* int RDSort : \83\8a\83\82\81[\83g\82Ì\83t\83H\83\8b\83_\82Ì\83\\81[\83g\95û\96@\r
+* int Num : 設定値号番号\r
+* int LFSort : ローカルのファイルのソート方法\r
+* int LDSort : ローカルのフォルダのソート方法\r
+* int RFSort : リモートのファイルのソート方法\r
+* int RDSort : リモートのフォルダのソート方法\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int SetHostSort(int Num, int LFSort, int LDSort, int RFSort, int RDSort)\r
int Sts;\r
HOSTLISTDATA *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Num >= 0) && (Num < Hosts))\r
{\r
Pos = GetNodeByNum(Num);\r
Pos->Set.Sort = LFSort * 0x1000000 | LDSort * 0x10000 | RFSort * 0x100 | RDSort;\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \93o\98^\82³\82ê\82Ä\82¢\82é\83\\81[\83g\95û\96@\82ð\95ª\89ð\82·\82é ------------------------------------\r
+/*----- 登録されているソート方法を分解する ------------------------------------\r
*\r
* Parameter\r
-* ulong Sort : \83\\81[\83g\95û\96@ \r
-* int *LFSort : \83\8d\81[\83J\83\8b\82Ì\83t\83@\83C\83\8b\82Ì\83\\81[\83g\95û\96@\82ð\8ai\94[\82·\82é\83\8f\81[\83N\r
-* int *LDSort : \83\8d\81[\83J\83\8b\82Ì\83t\83H\83\8b\83_\82Ì\83\\81[\83g\95û\96@\82ð\8ai\94[\82·\82é\83\8f\81[\83N\r
-* int *RFSort : \83\8a\83\82\81[\83g\82Ì\83t\83@\83C\83\8b\82Ì\83\\81[\83g\95û\96@\82ð\8ai\94[\82·\82é\83\8f\81[\83N\r
-* int *RDSort : \83\8a\83\82\81[\83g\82Ì\83t\83H\83\8b\83_\82Ì\83\\81[\83g\95û\96@\82ð\8ai\94[\82·\82é\83\8f\81[\83N\r
+* ulong Sort : ソート方法 \r
+* int *LFSort : ローカルのファイルのソート方法を格納するワーク\r
+* int *LDSort : ローカルのフォルダのソート方法を格納するワーク\r
+* int *RFSort : リモートのファイルのソート方法を格納するワーク\r
+* int *RDSort : リモートのフォルダのソート方法を格納するワーク\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DecomposeSortType(ulong Sort, int *LFSort, int *LDSort, int *RFSort, int *RDSort)\r
}\r
\r
\r
-/*----- \8c»\8dÝ\90Ú\91±\92\86\82Ì\90Ý\92è\94Ô\8d\86\82ð\95Ô\82· --------------------------------------------\r
+/*----- 現在接続中の設定番号を返す --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \90Ý\92è\94Ô\8d\86\r
+* int 設定番号\r
*----------------------------------------------------------------------------*/\r
\r
int AskCurrentHost(void)\r
}\r
\r
\r
-/*----- \8c»\8dÝ\90Ú\91±\92\86\82Ì\90Ý\92è\94Ô\8d\86\82ð\83Z\83b\83g\82·\82é --------------------------------------\r
+/*----- 現在接続中の設定番号をセットする --------------------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\94Ô\8d\86\r
+* int Num : 設定番号\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetCurrentHost(int Num)\r
}\r
\r
\r
-/*----- \83f\83t\83H\83\8b\83g\90Ý\92è\92l\82ð\8eæ\82è\8fo\82· --------------------------------------------\r
+/*----- デフォルト設定値を取り出す --------------------------------------------\r
*\r
* Parameter\r
-* HOSTDATA *Set : \90Ý\92è\92l\82ð\83R\83s\81[\82·\82é\83\8f\81[\83N\r
+* HOSTDATA *Set : 設定値をコピーするワーク\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void CopyDefaultHost(HOSTDATA *Set)\r
Set->DialupAlways = NO;\r
Set->DialupNotify = YES;\r
strcpy(Set->DialEntry, "");\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+ // 暗号化通信対応\r
Set->CryptMode = CRYPT_NONE;\r
Set->UseFTPES = YES;\r
Set->UseFTPIS = YES;\r
}\r
\r
\r
-/*----- \90Ý\92è\96¼\88ê\97\97\82ð\83E\83B\83\93\83h\83E\82É\91\97\82é ------------------------------------------\r
+/*----- 設定名一覧をウィンドウに送る ------------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND hWnd : ウインドウハンドル\r
* int Cur : \r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void SendAllHostNames(HWND hWnd, int Cur)\r
\r
hItemCur = NULL;\r
\r
- /* \82¿\82ç\82Â\82\82Ì\82Å\8dÄ\95`\89æ\8bÖ\8e~ */\r
+ /* ちらつくので再描画禁止 */\r
SendMessage(hWnd, WM_SETREDRAW, (WPARAM)FALSE, 0);\r
\r
- SendMessage(hWnd, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT); /* \91S\82Ä\82ð\8dí\8f\9c */\r
+ SendMessage(hWnd, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT); /* 全てを削除 */\r
\r
if((Level = malloc(sizeof(HTREEITEM*) * Hosts + 1)) != NULL)\r
{\r
free(Level);\r
}\r
\r
- /* \8dÄ\95`\89æ */\r
+ /* 再描画 */\r
SendMessage(hWnd, WM_SETREDRAW, (WPARAM)TRUE, 0);\r
\r
if(hItemCur != NULL)\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\82ª\83O\83\8b\81[\83v\82©\82Ç\82¤\82©\82ð\95Ô\82· ----------------------------------------\r
+/*----- 設定値がグループかどうかを返す ----------------------------------------\r
*\r
* Parameter\r
-* int Num : \90Ý\92è\92l\8d\86\94Ô\8d\86\r
+* int Num : 設定値号番号\r
*\r
* Return Value\r
-* int \83O\83\8b\81[\83v\82©\82Ç\82¤\82©\r
-* YES/NO/-1=\90Ý\92è\92l\82ª\82È\82¢\r
+* int グループかどうか\r
+* YES/NO/-1=設定値がない\r
*----------------------------------------------------------------------------*/\r
\r
static int IsNodeGroup(int Num)\r
}\r
\r
\r
-/*----- WS_FTP.INI\82©\82ç\82Ì\83C\83\93\83|\81[\83g --------------------------------------------\r
+/*----- WS_FTP.INIからのインポート --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ImportFromWSFTP(void)\r
\r
\r
\r
-/*----- \83z\83X\83g\90Ý\92è\82Ì\83v\83\8d\83p\83e\83B\83V\81[\83g ------------------------------------------\r
+/*----- ホスト設定のプロパティシート ------------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \90e\83E\83C\83\93\83h\83E\82Ì\83n\83\93\83h\83\8b\r
+* HWND hDlg : 親ウインドウのハンドル\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static int DispHostSetDlg(HWND hDlg)\r
{\r
-// SFTP\81AFTPES\81AFTPIS\91Î\89\9e\r
+// SFTP、FTPES、FTPIS対応\r
// PROPSHEETPAGE psp[5];\r
PROPSHEETPAGE psp[6];\r
PROPSHEETHEADER psh;\r
psp[4].lParam = 0;\r
psp[4].pfnCallback = NULL;\r
\r
-// SFTP\81AFTPES\81AFTPIS\91Î\89\9e\r
+// SFTP、FTPES、FTPIS対応\r
psp[5].dwSize = sizeof(PROPSHEETPAGE);\r
psp[5].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
psp[5].hInstance = GetFtpInst();\r
}\r
\r
\r
-/*----- \8aî\96{\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------------------\r
+/*----- 基本設定ウインドウのコールバック --------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \8ag\92£\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------------------\r
+/*----- 拡張設定ウインドウのコールバック --------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \95¶\8e\9a\83R\81[\83h\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------------\r
+/*----- 文字コード設定ウインドウのコールバック --------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
{\r
NMHDR *pnmhdr;\r
\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
static const RADIOBUTTON KanjiButton[] = {\r
{ HSET_NO_CNV, KANJI_NOCNV },\r
{ HSET_SJIS_CNV, KANJI_SJIS },\r
{ HSET_FN_EUC_CNV, KANJI_EUC },\r
{ HSET_FN_SMH_CNV, KANJI_SMB_HEX },\r
{ HSET_FN_SMC_CNV, KANJI_SMB_CAP },\r
- { HSET_FN_UTF8N_CNV, KANJI_UTF8N } // UTF-8\91Î\89\9e\r
+ { HSET_FN_UTF8N_CNV, KANJI_UTF8N } // UTF-8対応\r
};\r
#define NAMEKANJIBUTTONS (sizeof(NameKanjiButton)/sizeof(RADIOBUTTON))\r
\r
EnableWindow(GetDlgItem(hDlg, HSET_HANCNV), TRUE);\r
break;\r
\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
case HSET_NO_CNV :\r
case HSET_UTF8N_CNV :\r
EnableWindow(GetDlgItem(hDlg, HSET_HANCNV), FALSE);\r
case HSET_FN_SJIS_CNV :\r
case HSET_FN_SMH_CNV :\r
case HSET_FN_SMC_CNV :\r
- case HSET_FN_UTF8N_CNV : // UTF-8\91Î\89\9e\r
+ case HSET_FN_UTF8N_CNV : // UTF-8対応\r
EnableWindow(GetDlgItem(hDlg, HSET_FN_HANCNV), FALSE);\r
break;\r
}\r
}\r
\r
\r
-/*----- \83_\83C\83A\83\8b\83A\83b\83v\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------\r
+/*----- ダイアルアップ設定ウインドウのコールバック ----------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
EnableWindow(GetDlgItem(hDlg, HSET_DIALENTRY), TRUE);\r
EnableWindow(GetDlgItem(hDlg, HSET_DIALUSETHIS), TRUE);\r
}\r
- /* \82±\82±\82Ébreak\82Í\82È\82¢ */\r
+ /* ここにbreakはない */\r
\r
case HSET_DIALUSETHIS :\r
if(SendDlgItemMessage(hDlg, HSET_DIALUSETHIS, BM_GETCHECK, 0, 0) == 0)\r
}\r
\r
\r
-/*----- \8d\82\93x\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------------------\r
+/*----- 高度設定ウインドウのコールバック --------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-// \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+// 暗号化通信対応\r
static BOOL CALLBACK CryptSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
{\r
NMHDR *pnmhdr;\r
SendDlgItemMessage(hDlg, HSET_SFTP, BM_SETCHECK, BST_UNCHECKED, 0);\r
EnableWindow(GetDlgItem(hDlg, HSET_SFTP), FALSE);\r
}\r
- // TODO: FTPIS\91Î\89\9e\r
+ // TODO: FTPIS対応\r
SendDlgItemMessage(hDlg, HSET_FTPIS, BM_SETCHECK, BST_UNCHECKED, 0);\r
EnableWindow(GetDlgItem(hDlg, HSET_FTPIS), FALSE);\r
- // TODO: SFTP\91Î\89\9e\r
+ // TODO: SFTP対応\r
SendDlgItemMessage(hDlg, HSET_SFTP, BM_SETCHECK, BST_UNCHECKED, 0);\r
EnableWindow(GetDlgItem(hDlg, HSET_SFTP), FALSE);\r
return(TRUE);\r
if(IsOpenSSLLoaded())\r
{\r
TmpHost.UseFTPES = SendDlgItemMessage(hDlg, HSET_FTPES, BM_GETCHECK, 0, 0);\r
- // TODO: FTPIS\91Î\89\9e\r
+ // TODO: FTPIS対応\r
// TmpHost.UseFTPIS = SendDlgItemMessage(hDlg, HSET_FTPIS, BM_GETCHECK, 0, 0);\r
- // TODO: SFTP\91Î\89\9e\r
+ // TODO: SFTP対応\r
// TmpHost.UseSFTP = SendDlgItemMessage(hDlg, HSET_SFTP, BM_GETCHECK, 0, 0);\r
}\r
Apply = YES;\r
-<html>
+<html>
<head>
-<title>SourceForge.JP\94ÅFFFTP\82Ì\83r\83\8b\83h\82¨\82æ\82Ñ\8aJ\94\82Ì\8eè\8f\87\82É\82Â\82¢\82Ä</title>
+<title>SourceForge.JP版FFFTPのビルドおよび開発の手順について</title>
<style type="text/css">
.filename {font-weight:bold}
</style>
</head>
<body>
-SourceForge.JP\94Å<span style="font-weight:bold"><span style="color:yellow;vertical-align:super">F</span><span style="color:green">F</span><span style="color:red;vertical-align:sub">F</span><span style="color:green">TP</span></span>\82Ì\83r\83\8b\83h\82¨\82æ\82Ñ\8aJ\94\82Ì\8eè\8f\87\82É\82Â\82¢\82Ä<br>
+SourceForge.JP版<span style="font-weight:bold"><span style="color:yellow;vertical-align:super">F</span><span style="color:green">F</span><span style="color:red;vertical-align:sub">F</span><span style="color:green">TP</span></span>のビルドおよび開発の手順について<br>
<ol>
- <li>\83r\83\8b\83h\82Ì\8eè\8f\87<br>
- FFFTP\82ð\83r\83\8b\83h\82·\82é\82É\82Í\88È\89º\82Ì\8eè\8f\87\82É\8f]\82Á\82Ä\82\82¾\82³\82¢\81B
+ <li>ビルドの手順<br>
+ FFFTPをビルドするには以下の手順に従ってください。
<ol>
- <li>Visual C++ 2005\82ð\8eg\97p\82·\82é\8fê\8d\87
+ <li>Visual C++ 2005を使用する場合
<ol>
- <li><span class="filename">"FFFTP.sln"</span>\82ð\8aJ\82\81B
- <li>\95K\97v\82É\89\9e\82¶\82Ä\83\\81[\83X\83R\81[\83h\82ð\95Ò\8fW\82·\82é\81B
+ <li><span class="filename">"FFFTP.sln"</span>を開く。
+ <li>必要に応じてソースコードを編集する。
<ol>
- <li>\83v\83\8d\83W\83F\83N\83g\82Í\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\81iShift_JIS\81j\97p\82É\90Ý\92è\82³\82ê\82Ä\82¢\82é\82ª\81A\83t\83@\83C\83\8b\96¼\82ÌUTF-8\91Î\89\9e\82É\94º\82¢\81A\8eÀ\8dÛ\82Ì\93à\95\94\8c`\8e®\82ÍUTF-8\82Æ\82µ\82Ä\88µ\82Á\82Ä\82¢\82é\81i\8d\\91¢\82É\82Â\82¢\82Ä\82Í<span class="filename">"mbswrapper.c"</span>\82¨\82æ\82Ñ\82»\82Ì\91¼\82Ì\83\\81[\83X\83R\81[\83h\93à\82Ì\83R\83\81\83\93\83g\82ð\8eQ\8fÆ\81j\81B
- <li>\83\81\83b\83Z\81[\83W\95¶\8e\9a\97ñ\82É\82Â\82¢\82Ä\82Í<span class="filename">"mesg-jpn.h"</span>\82¨\82æ\82Ñ<span class="filename">"mesg-eng.h"</span>\82É\8bL\8fq\82³\82ê\82Ä\82¢\82é\82ª\81A\95Ò\8fW\82·\82é\8dÛ\82Í<span class="filename">"mesg-jpn.old.h"</span>\82¨\82æ\82Ñ<span class="filename">"mesg-eng.old.h"</span>\82ðShift_JIS\82Å\95Û\91¶\82µ\81A<span class="filename">"mbtoutf8.bat"</span>\82ð\8eÀ\8ds\82µ\82Ä\95¶\8e\9a\97ñ\83\8a\83e\83\89\83\8b\82ðUTF-8\82É\95Ï\8a·\82·\82é\81B
+ <li>プロジェクトはマルチバイト文字(Shift_JIS)用に設定されているが、ファイル名のUTF-8対応に伴い、実際の内部形式はUTF-8として扱っている(構造については<span class="filename">"mbswrapper.c"</span>およびその他のソースコード内のコメントを参照)。
+ <li>メッセージ文字列については<span class="filename">"mesg-jpn.h"</span>および<span class="filename">"mesg-eng.h"</span>に記述されているが、編集する際は<span class="filename">"mesg-jpn.old.h"</span>および<span class="filename">"mesg-eng.old.h"</span>をShift_JISで保存し、<span class="filename">"mbtoutf8.bat"</span>を実行して文字列リテラルをUTF-8に変換する。
</ol>
- <li>\95K\97v\82É\89\9e\82¶\82Ä\83\8a\83\\81[\83X\82ð\95Ò\8fW\82·\82é\81B
+ <li>必要に応じてリソースを編集する。
<ol>
- <li>\92Ç\89Á\82Ì\88Ë\91¶\83\89\83C\83u\83\89\83\8a\82Ì\92\98\8dì\8c \8fî\95ñ\82Í\81A\83_\83C\83A\83\8d\83Oabout_dlg\82Ì\81uFFFTP\82Ífreeware\82Å\82·\81v\82Ì\8fã\82Ì\83e\83L\83X\83g\82É\92Ç\8bL\82µ\82Ä\82\82¾\82³\82¢\81B<br>
- \8d¡\8cã\82Ì\8b@\94\\92Ç\89Á\82É\94º\82¢\92\98\8dì\8c \8fî\95ñ\82ª\91\9d\82¦\82é\8c©\8d\9e\82Ý\82Ì\82½\82ß\81A\83e\83L\83X\83g\82Ì\94Í\88Í\82ð\91å\82«\82ß\82É\90Ý\92è\82µ\82Ä\82 \82è\82Ü\82·\81B
+ <li>追加の依存ライブラリの著作権情報は、ダイアログabout_dlgの「FFFTPはfreewareです」の上のテキストに追記してください。<br>
+ 今後の機能追加に伴い著作権情報が増える見込みのため、テキストの範囲を大きめに設定してあります。
</ol>
- <li>\83\\83\8a\83\85\81[\83V\83\87\83\93\8d\\90¬\82©\82ç\81uDebug\81v\82Ü\82½\82Í\81uRelease\81v\82ð\91I\91ð\82·\82é\81B
- <li>\83\81\83j\83\85\81[\82©\82ç\81u\83\\83\8a\83\85\81[\83V\83\87\83\93\82Ì\83r\83\8b\83h\81v\82ð\91I\91ð\82·\82é\81B
- <li>\96â\91è\82ª\96³\82¯\82ê\82Î<span class="filename">"Debug\FFFTP.exe"</span>\82Ü\82½\82Í<span class="filename">"Release\FFFTP.exe"</span>\82ª\90¶\90¬\82³\82ê\82é\81B
+ <li>ソリューション構成から「Debug」または「Release」を選択する。
+ <li>メニューから「ソリューションのビルド」を選択する。
+ <li>問題が無ければ<span class="filename">"Debug\FFFTP.exe"</span>または<span class="filename">"Release\FFFTP.exe"</span>が生成される。
</ol>
- <li>Visual C++ 2008\82ð\8eg\97p\82·\82é\8fê\8d\87
+ <li>Visual C++ 2008を使用する場合
<ol>
- <li><span class="filename">"FFFTP.vc90.sln"</span>\82ð\8aJ\82\81B
- <li>\95K\97v\82É\89\9e\82¶\82Ä\83\\81[\83X\83R\81[\83h\82ð\95Ò\8fW\82·\82é\81B
+ <li><span class="filename">"FFFTP.vc90.sln"</span>を開く。
+ <li>必要に応じてソースコードを編集する。
<ol>
- <li>\83v\83\8d\83W\83F\83N\83g\82Í\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\81iShift_JIS\81j\97p\82É\90Ý\92è\82³\82ê\82Ä\82¢\82é\82ª\81A\83t\83@\83C\83\8b\96¼\82ÌUTF-8\91Î\89\9e\82É\94º\82¢\81A\8eÀ\8dÛ\82Ì\93à\95\94\8c`\8e®\82ÍUTF-8\82Æ\82µ\82Ä\88µ\82Á\82Ä\82¢\82é\81i\8d\\91¢\82É\82Â\82¢\82Ä\82Í<span class="filename">"mbswrapper.c"</span>\82¨\82æ\82Ñ\82»\82Ì\91¼\82Ì\83\\81[\83X\83R\81[\83h\93à\82Ì\83R\83\81\83\93\83g\82ð\8eQ\8fÆ\81j\81B
- <li>\83\81\83b\83Z\81[\83W\95¶\8e\9a\97ñ\82É\82Â\82¢\82Ä\82Í<span class="filename">"mesg-jpn.h"</span>\82¨\82æ\82Ñ<span class="filename">"mesg-eng.h"</span>\82É\8bL\8fq\82³\82ê\82Ä\82¢\82é\82ª\81A\95Ò\8fW\82·\82é\8dÛ\82Í<span class="filename">"mesg-jpn.old.h"</span>\82¨\82æ\82Ñ<span class="filename">"mesg-eng.old.h"</span>\82ðShift_JIS\82Å\95Û\91¶\82µ\81A<span class="filename">"mbtoutf8.bat"</span>\82ð\8eÀ\8ds\82µ\82Ä\95¶\8e\9a\97ñ\83\8a\83e\83\89\83\8b\82ðUTF-8\82É\95Ï\8a·\82·\82é\81B
+ <li>プロジェクトはマルチバイト文字(Shift_JIS)用に設定されているが、ファイル名のUTF-8対応に伴い、実際の内部形式はUTF-8として扱っている(構造については<span class="filename">"mbswrapper.c"</span>およびその他のソースコード内のコメントを参照)。
+ <li>メッセージ文字列については<span class="filename">"mesg-jpn.h"</span>および<span class="filename">"mesg-eng.h"</span>に記述されているが、編集する際は<span class="filename">"mesg-jpn.old.h"</span>および<span class="filename">"mesg-eng.old.h"</span>をShift_JISで保存し、<span class="filename">"mbtoutf8.bat"</span>を実行して文字列リテラルをUTF-8に変換する。
</ol>
- <li>\95K\97v\82É\89\9e\82¶\82Ä\83\8a\83\\81[\83X\82ð\95Ò\8fW\82·\82é\81B
+ <li>必要に応じてリソースを編集する。
<ol>
- <li>\92Ç\89Á\82Ì\88Ë\91¶\83\89\83C\83u\83\89\83\8a\82Ì\92\98\8dì\8c \8fî\95ñ\82Í\81A\83_\83C\83A\83\8d\83Oabout_dlg\82Ì\81uFFFTP\82Ífreeware\82Å\82·\81v\82Ì\8fã\82Ì\83e\83L\83X\83g\82É\92Ç\8bL\82µ\82Ä\82\82¾\82³\82¢\81B<br>
- \8d¡\8cã\82Ì\8b@\94\\92Ç\89Á\82É\94º\82¢\92\98\8dì\8c \8fî\95ñ\82ª\91\9d\82¦\82é\8c©\8d\9e\82Ý\82Ì\82½\82ß\81A\83e\83L\83X\83g\82Ì\94Í\88Í\82ð\91å\82«\82ß\82É\90Ý\92è\82µ\82Ä\82 \82è\82Ü\82·\81B
+ <li>追加の依存ライブラリの著作権情報は、ダイアログabout_dlgの「FFFTPはfreewareです」の上のテキストに追記してください。<br>
+ 今後の機能追加に伴い著作権情報が増える見込みのため、テキストの範囲を大きめに設定してあります。
</ol>
- <li>\83\\83\8a\83\85\81[\83V\83\87\83\93\8d\\90¬\82©\82ç\81uDebug\81v\82Ü\82½\82Í\81uRelease\81v\82ð\91I\91ð\82·\82é\81B
- <li>\83\81\83j\83\85\81[\82©\82ç\81u\83\\83\8a\83\85\81[\83V\83\87\83\93\82Ì\83r\83\8b\83h\81v\82ð\91I\91ð\82·\82é\81B
- <li>\96â\91è\82ª\96³\82¯\82ê\82Î<span class="filename">"Debug\FFFTP.exe"</span>\82Ü\82½\82Í<span class="filename">"Release\FFFTP.exe"</span>\82ª\90¶\90¬\82³\82ê\82é\81B
+ <li>ソリューション構成から「Debug」または「Release」を選択する。
+ <li>メニューから「ソリューションのビルド」を選択する。
+ <li>問題が無ければ<span class="filename">"Debug\FFFTP.exe"</span>または<span class="filename">"Release\FFFTP.exe"</span>が生成される。
</ol>
</ol>
</ol>
-\8e¿\96â\82â\83T\83|\81[\83g\82Í\82±\82¿\82ç\82Ü\82Å\81B<br>
+質問やサポートはこちらまで。<br>
<a href="http://sourceforge.jp/projects/ffftp/">http://sourceforge.jp/projects/ffftp/</a>
</body>
-// begin of jreusr.h\r
-// \83\89\83C\83u\83\89\83\8a\82Ì\8eg\97p\8eÒ\97p\83w\83b\83_\83t\83@\83C\83\8b\r
+// begin of jreusr.h\r
+// ライブラリの使用者用ヘッダファイル\r
\r
#ifndef JREUSR\r
#define JREUSR\r
// ---------------------------------------------------\r
// Prevent multiple includes.\r
\r
-// _os_os2\82Í\82±\82ê(jreusr.h)\82ð\83C\83\93\83N\83\8b\81[\83h\82·\82é\83\86\81[\83U\81[\82ª\92è\8b`\82·\82é\r
+// _os_os2はこれ(jreusr.h)をインクルードするユーザーが定義する\r
#if defined(_OS_OS2)\r
// in case of os/2\r
// __OS2_H__ is for bc 2.0 e\r
// __OS2_H__ is for bc 1.5 e\r
#if !defined(__IBMC__) || !defined(__OS2_H__)\r
- // \91¼\82Ì\83N\83\89\83X\82Åtype.h\82ð\83C\83\93\83N\83\8b\81[\83h\82³\82¹\82È\82¢\82æ\82¤\82É\90æ\82Éinclude\82·\82é.\r
- // INCL_???\82È\82Ç\95K\97v\82È\92è\90\94\82Í\90æ\82É\92è\8b`\82µ\82Ä\82¨\82.\r
+ // 他のクラスでtype.hをインクルードさせないように先にincludeする.\r
+ // INCL_???など必要な定数は先に定義しておく.\r
#include <os2.h>\r
#endif // defined(__IBMC__) || defined(__OS2_H__)\r
\r
#ifndef STRICT\r
#define STRICT\r
#endif // STRICT\r
- // \91¼\82Ì\83N\83\89\83X\82Åtype.h\82ð\83C\83\93\83N\83\8b\81[\83h\82³\82¹\82È\82¢\82æ\82¤\82É\90æ\82Éinclude\82·\82é.\r
+ // 他のクラスでtype.hをインクルードさせないように先にincludeする.\r
#include <windows.h>\r
#endif // !defined(__WINDOWS_H) && !defined(_INC_WINDOWS)\r
\r
// ---------------------------------------------------\r
#if defined(JRE_BUILDTYPE_OS2PM)\r
// in case of JRE_BUILDTYPE_OS2PM\r
- // \88È\89º\81Cjre/os2\83\8d\81[\83J\83\8b\82Ì\92è\8b`\r
+ // 以下,jre/os2ローカルの定義\r
#if !defined(EXTAPI)\r
#define EXTAPI _export EXPENTRY\r
#endif // !defined(EXTAPI)\r
typedef void* MEMID;\r
#endif // !defined(MEMID)\r
\r
- // os2\82É\82ÍPSZ\82ª\82 \82é.\r
+ // os2にはPSZがある.\r
typedef PSZ PSTR, LPSTR;\r
typedef int (*FARPROC)(void); // farproc\r
- //os2\82É\82ÍUSHORT\81CULONG\82ª\82 \82é.\r
+ //os2にはUSHORT,ULONGがある.\r
typedef USHORT WORD;\r
typedef ULONG DWORD;\r
- // OS/2\82É\82ÍSHANDLE\82ÆLHANDLE\82ª\82 \82é.\r
- typedef LHANDLE HANDLE; // \94Ä\97p\83n\83\93\83h\83\8b\82ð\8dì\82Á\82Ä\82¨\82¢\82Ä\81c\81c\r
+ // OS/2にはSHANDLEとLHANDLEがある.\r
+ typedef LHANDLE HANDLE; // 汎用ハンドルを作っておいて……\r
typedef HANDLE GLOBALHANDLE;\r
typedef HANDLE*PHANDLE, *LPHANDLE;\r
\r
#else\r
// in case of JRE_BUILDTYPE_WIN32 or JRE_BUILDTYPE_WIN16 (= JRE_BUILDTYPE_WINDOWS)\r
- // \88È\89º\81Cjre/win\83\8d\81[\83J\83\8b\82Ì\92è\8b`\r
+ // 以下,jre/winローカルの定義\r
#if !defined(EXTAPI)\r
#if defined(_MSC_VER)\r
- #define EXTAPI WINAPI // VC2\82Å\82Í_export\82ª\92Ê\82ç\82È\82¢\82Ì\82Å\92\8d\88Ó.\r
+ #define EXTAPI WINAPI // VC2では_exportが通らないので注意.\r
#endif\r
#if defined(__BORLANDC__)\r
#if defined(_TEST_EXE)\r
\r
#if !defined(MEMID)\r
#if defined(JRE_BUILDTYPE_WIN32)\r
- typedef void*MEMID; // \96¾\8e¦\93I\82É\83|\83C\83\93\83^\82É\82µ\82Ü\82µ\82½.\r
+ typedef void*MEMID; // 明示的にポインタにしました.\r
#else\r
typedef HGLOBAL MEMID;\r
#endif // __WIN32__\r
\r
#endif\r
\r
-// --------------------------------------------------- \83O\83\8d\81[\83o\83\8b\95Ï\90\94\r
+// --------------------------------------------------- グローバル変数\r
\r
\r
\r
-// ------------------------------------------------------------- \92è\90\94\r
-// _JRE_ERR_CODE\82Æ_JRE_WARN_CODE\82Ì\83V\83\93\83{\83\8b\82Í\8eR\93c\82ª\83f\83o\83b\83O\8e\9e\82É\8eg\97p\82µ\82Ä\82¢\82Ü\82·.\r
+// ------------------------------------------------------------- 定数\r
+// _JRE_ERR_CODEと_JRE_WARN_CODEのシンボルは山田がデバッグ時に使用しています.\r
\r
#define _JRE_ERR_CODE\r
-// \83G\83\89\81[\83R\81[\83h.nError\82ª1\81`63\82Ü\82Å. int\8c^\r
-#define CantAllocate ( 1) // \83\81\83\82\83\8a\82Ì\8am\95Û\82ª\82Å\82«\82È\82¢.\90â\91Î\93I\82È\83\81\83\82\83\8a\95s\91«.\r
-#define MemoryTooFew1 ( 2) // \83\81\83\82\83\8a\82ª\91«\82è\82È\82¢1.(\8eÀ\8ds\8e\9e\82É\8c\88\82Ü\82é\82à\82Ì.\83\81\83\82\83\8a\83T\83C\83Y\82Ì\97\\91ª\82É\8e¸\94s\82µ\82½)\r
-#define MemoryTooFew2 ( 3) // \83\81\83\82\83\8a\82ª\91«\82è\82È\82¢2.(DLL\8dì\90¬\8e\9e\82É\8c\88\82Ü\82é\82à\82Ì)\r
-#define ReTooLong (10) // \90³\8bK\95\\8c»\82ª\92·\82·\82¬\82é.\r
-#define TooComplex (13) // \82à\82Á\82Æ\8aÈ\92P\82È\95\\8c»\82É\82µ\82Ä\89º\82³\82¢.\82±\82ÌDLL\82Ì\8eã\82¢\83p\83^\81[\83\93\82Å,\8c©\82Â\82¯\82ç\82ê\82È\82¢.\82½\82¾\82µ\96Å\91½\82È\8e\96\82Å\82Í\94\90¶\82µ\82È\82¢.\r
-#define MismatchBracket (20) // \8a\87\8cÊ\82Ì\91Î\89\9e\82ª\90³\82µ\82\82È\82¢.\r
-#define InvalidChClass (21) // \83L\83\83\83\89\83N\83^\83N\83\89\83X\82Ì\93à\97e\82ª\89ð\8eß\82Å\82«\82È\82¢.\96w\82Ç\82Ì\8fê\8d\87\94Í\88Í\8ew\92è\82ª\90³\82µ\82\82È\82¢.\r
-#define EscErr (24) // \83G\83X\83P\81[\83v\83V\81[\83N\83F\83\93\83X\82ª\89ð\8eß\82Å\82«\82È\82¢.\r
-#define Unknown (31) // \82È\82ñ\82¾\82©\97Ç\82\82í\82©\82ç\82È\82¢\83G\83\89\81[.\95¡\8d\87\93I\82È\97v\88ö\82Å\94\90¶\82·\82é\83G\83\89\81[.\96w\82Ç\82ª\83\81\83\82\83\8a\83T\83C\83Y\82Ì\97\\91ª\82É\8e¸\94s.\r
-#define NoReString (32) // \8c\9f\8dõ\83p\83^\81[\83\93\82ð\8ew\92è\82µ\82Ä\89º\82³\82¢.\90³\8bK\95\\8c»\92·\82ª0\83o\83C\83g.\r
-#define IncorrectUsing (33) // \83p\83\89\83\81\81[\83^\82ª\82¨\82©\82µ\82¢.DLL\82Ì\95s\90³\82È\8eg\97p\96@.\r
-#define ReNotExist (34) // \8c\9f\8dõ\82·\82é\91O\82É\83R\83\93\83p\83C\83\8b\82µ\82Ä\89º\82³\82¢.\r
-#define InternalErr (35) // DLL\82Ì\83o\83O\82ð\8c\9f\8fo\82µ\82½.\82±\82ê\82ª\94\90¶\82µ\82½\82ç\8dì\8eÒ\82É\98A\97\8d\82µ\82Ä\97~\82µ\82¢.\r
-#define UsrAbort (36) // \83\86\81[\83U\81[(\83A\83v\83\8a\83P\81[\83V\83\87\83\93)\82É\82æ\82é\92\86\92f.\r
-#define OldVersion (37) // \8cÃ\82¢(\89ð\8eß\82Å\82«\82È\82¢)\83o\81[\83W\83\87\83\93\82Ì\8cÄ\82Ñ\8fo\82µ\8eè\8f\87\82ð\8eg\97p\82µ\82½.\r
-// CantAllocate, TooComplex, MemoryTooFew2, ReNotExist, IncorrectUsing, UsrAbort\82Í\8c\9f\8dõ\8e\9e\82É\82à\94\90¶\82·\82é\82à\82Ì\r
+// エラーコード.nErrorが1~63まで. int型\r
+#define CantAllocate ( 1) // メモリの確保ができない.絶対的なメモリ不足.\r
+#define MemoryTooFew1 ( 2) // メモリが足りない1.(実行時に決まるもの.メモリサイズの予測に失敗した)\r
+#define MemoryTooFew2 ( 3) // メモリが足りない2.(DLL作成時に決まるもの)\r
+#define ReTooLong (10) // 正規表現が長すぎる.\r
+#define TooComplex (13) // もっと簡単な表現にして下さい.このDLLの弱いパターンで,見つけられない.ただし滅多な事では発生しない.\r
+#define MismatchBracket (20) // 括弧の対応が正しくない.\r
+#define InvalidChClass (21) // キャラクタクラスの内容が解釈できない.殆どの場合範囲指定が正しくない.\r
+#define EscErr (24) // エスケープシークェンスが解釈できない.\r
+#define Unknown (31) // なんだか良くわからないエラー.複合的な要因で発生するエラー.殆どがメモリサイズの予測に失敗.\r
+#define NoReString (32) // 検索パターンを指定して下さい.正規表現長が0バイト.\r
+#define IncorrectUsing (33) // パラメータがおかしい.DLLの不正な使用法.\r
+#define ReNotExist (34) // 検索する前にコンパイルして下さい.\r
+#define InternalErr (35) // DLLのバグを検出した.これが発生したら作者に連絡して欲しい.\r
+#define UsrAbort (36) // ユーザー(アプリケーション)による中断.\r
+#define OldVersion (37) // 古い(解釈できない)バージョンの呼び出し手順を使用した.\r
+// CantAllocate, TooComplex, MemoryTooFew2, ReNotExist, IncorrectUsing, UsrAbortは検索時にも発生するもの\r
\r
#define _JRE_WARN_CODE\r
-// \8cx\8d\90\83R\81[\83h. \83\8c\83|\81[\83g\83R\81[\83h. jre2\8d\\91¢\91Ì\82ÌnWarning\83\81\83\93\83o.\r
-// \82±\82ê\82Í\82»\82ê\82¼\82ê\82Ì\83r\83b\83g\82É\83}\83b\83s\83\93\83O\82·\82é\89Â\94\\90«\82ª\8d\82\82¢\82Ì\82Å\81C\r
+// 警告コード. レポートコード. jre2構造体のnWarningメンバ.\r
+// これはそれぞれのビットにマッピングする可能性が高いので,\r
// if (CwInlinePattern | jre2.nWarning){\r
// }\r
-// \82Å\95]\89¿\82µ\82Ä\82\82¾\82³\82¢.\r
-#define CwInlinePattern (2) // \8ds\93à\82Ì\8f\88\97\9d\82É\82Â\82«\81C\8dÄ\8cÄ\82Ñ\8fo\82µ\82Ì\95K\97v\82Í\82È\82¢.\r
+// で評価してください.\r
+#define CwInlinePattern (2) // 行内の処理につき,再呼び出しの必要はない.\r
\r
#define JGC_SHORT (1)\r
#define JGC_LONG (2)\r
\r
-// jre.dll\82Å\8eg\97p\82·\82é\83\81\83b\83Z\81[\83W\82Ì\8dÅ\91å\92·(\95Û\8fØ).\82±\82Ì\83T\83C\83Y\82Ì\83o\83b\83t\83@\82É\8eû\82Ü\82ç\82È\82¢\95¶\8e\9a\97ñ\82Í\93n\82µ\82Ü\82¹\82ñ(null\82Ü\82Å\8aÜ\82ß\82Ä\82±\82Ì\83T\83C\83Y).\r
+// jre.dllで使用するメッセージの最大長(保証).このサイズのバッファに収まらない文字列は渡しません(nullまで含めてこのサイズ).\r
#define JRE_MAXLEN (128)\r
\r
-// GetJreMessage\82Ì\8c¾\8cê\94Ô\8d\86.\r
+// GetJreMessageの言語番号.\r
#define GJM_JPN (0)\r
#define GJM_ENG (1)\r
\r
-// ----------------------------------------------------------- \8d\\91¢\91Ì\r
-// JRE\8d\\91¢\91Ì. \83o\81[\83W\83\87\83\93\82É\82©\82©\82í\82ç\82¸jre\8d\\91¢\91Ì\82Ì\83A\83\89\83C\83\93\83\81\83\93\83g\82Í8bit(1byte)\82Å\82·\81B\r
+// ----------------------------------------------------------- 構造体\r
+// JRE構造体. バージョンにかかわらずjre構造体のアラインメントは8bit(1byte)です。\r
#pragma pack(1)\r
-// JRE\8d\\91¢\91Ì\82Í\8bÉ\97Í\8eg\97p\82µ\82È\82¢\82Å\82\82¾\82³\82¢.\8d¡\8cã\82ÌÊÞ°¼Þ®Ý\82Å\94p\8e~\82µ\82Ü\82·(\83o\81[\83W\83\87\83\932.xx\82Ü\82Å\82Å»Îß°Ä\82ð\8e~\82ß\82Ü\82·).\r
-// \82±\82ê\82É\91ã\82í\82é\8d\\91¢\91Ì\82ÍJRE2\8d\\91¢\91Ì\82Å\82·.\r
+// JRE構造体は極力使用しないでください.今後のバージョンで廃止します(バージョン2.xxまででサポートを止めます).\r
+// これに代わる構造体はJRE2構造体です.\r
typedef struct tagJRE{\r
- BOOL bConv; // \82±\82Ì\8d\\91¢\91Ì\82Ì\8eg\97p\92\86\82ð\8e¦\82·\83t\83\89\83O.\r
- int nStart; // \8c\9f\8dõ\8aJ\8en\88Ê\92u.\83o\83C\83g\90\94.\90æ\93ª\82Í0.\r
- int nWarning; // \83E\83H\81[\83j\83\93\83O\83R\81[\83h.\r
- int nError; // \83G\83\89\81[\83R\81[\83h.\r
- int nLength; // \83}\83b\83`\92·.\83o\83C\83g\90\94.\r
- int nPosition; // \83}\83b\83`\88Ê\92u.\90æ\93ª\82Í0.(\82¨\92p\82¸\82©\82µ\82¢)\r
- WORD wTranslate; // \95Ï\8a·\83e\81[\83u\83\8b\94Ô\8d\86.\r
- LPSTR lpszTable; // \95Ï\8a·\83e\81[\83u\83\8b.\r
- FARPROC lpfnUsrFunc; // \83R\81[\83\8b\83o\83b\83N\8aÖ\90\94\82Ö\82ÌFAR\83|\83C\83\93\83^.\r
- int nCompData1; // \83R\83\93\83p\83C\83\8b\83f\81[\83^1.\r
- MEMID hCompData2; // \83R\83\93\83p\83C\83\8b\83f\81[\83^2.\83n\83\93\83h\83\8b.\r
- MEMID hCompData3; // \83R\83\93\83p\83C\83\8b\83f\81[\83^3.\83n\83\93\83h\83\8b.\r
- MEMID hCompData4; // \83R\83\93\83p\83C\83\8b\83f\81[\83^4.\83n\83\93\83h\83\8b.\r
+ BOOL bConv; // この構造体の使用中を示すフラグ.\r
+ int nStart; // 検索開始位置.バイト数.先頭は0.\r
+ int nWarning; // ウォーニングコード.\r
+ int nError; // エラーコード.\r
+ int nLength; // マッチ長.バイト数.\r
+ int nPosition; // マッチ位置.先頭は0.(お恥ずかしい)\r
+ WORD wTranslate; // 変換テーブル番号.\r
+ LPSTR lpszTable; // 変換テーブル.\r
+ FARPROC lpfnUsrFunc; // コールバック関数へのFARポインタ.\r
+ int nCompData1; // コンパイルデータ1.\r
+ MEMID hCompData2; // コンパイルデータ2.ハンドル.\r
+ MEMID hCompData3; // コンパイルデータ3.ハンドル.\r
+ MEMID hCompData4; // コンパイルデータ4.ハンドル.\r
} JRE, *PJRE, NEAR*NPJRE, FAR*LPJRE;\r
#pragma pack()\r
\r
\r
#pragma pack(1)\r
-// \83o\81[\83W\83\87\83\931.06\88È\8d~\82Í\82±\82Ì\8d\\91¢\91Ì\82ð\8eg\97p\82µ\82Ä\82\82¾\82³\82¢.\r
-// \82½\82¾\82µ,\83o\81[\83W\83\87\83\931.xx\82Å\82Í\8ed\97l\82ª\97¬\93®\93I\82Å\82·(\82Ç\82È\82¢\82¹\81[\82¿\82ã\82¤\82Ë\82ñ).\r
+// バージョン1.06以降はこの構造体を使用してください.\r
+// ただし,バージョン1.xxでは仕様が流動的です(どないせーちゅうねん).\r
typedef struct tagJRE2{\r
- DWORD dwSize; // \82±\82Ì\8d\\91¢\91Ì\82Ì\83T\83C\83Y.\r
- BOOL bConv; // \82±\82Ì\8d\\91¢\91Ì\82Ì\8eg\97p\92\86\82ð\8e¦\82·\83t\83\89\83O.\r
- UINT nStart; // \8c\9f\8dõ\8aJ\8en\88Ê\92u.\83o\83C\83g\90\94.\90æ\93ª\82Í0.\r
- UINT nWarning; // \83E\83H\81[\83j\83\93\83O\83R\81[\83h. (v1.11\82©\82çUINT\82É\95Ï\8dX)\r
- int nError; // \83G\83\89\81[\83R\81[\83h.\r
- UINT nLength; // \83}\83b\83`\92·.\83o\83C\83g\90\94.\r
- UINT nPosition; // \83}\83b\83`\88Ê\92u.\90æ\93ª\82Í0.(\82¨\92p\82¸\82©\82µ\82¢)\r
- WORD wTranslate; // \95Ï\8a·\83e\81[\83u\83\8b\94Ô\8d\86.\r
- LPSTR lpszTable; // \95Ï\8a·\83e\81[\83u\83\8b.\r
- FARPROC lpfnUsrFunc; // \83R\81[\83\8b\83o\83b\83N\8aÖ\90\94\82Ö\82ÌFAR\83|\83C\83\93\83^(\8eg\82í\82È\82¢\82æ\82¤\82É).\r
- UINT nCompData1; // \83R\83\93\83p\83C\83\8b\83f\81[\83^1.\r
- MEMID hCompData2; // \83R\83\93\83p\83C\83\8b\83f\81[\83^2.\83n\83\93\83h\83\8b.\r
- MEMID hCompData3; // \83R\83\93\83p\83C\83\8b\83f\81[\83^3.\83n\83\93\83h\83\8b.\r
- MEMID hCompData4; // \83R\83\93\83p\83C\83\8b\83f\81[\83^4.\83n\83\93\83h\83\8b.\r
+ DWORD dwSize; // この構造体のサイズ.\r
+ BOOL bConv; // この構造体の使用中を示すフラグ.\r
+ UINT nStart; // 検索開始位置.バイト数.先頭は0.\r
+ UINT nWarning; // ウォーニングコード. (v1.11からUINTに変更)\r
+ int nError; // エラーコード.\r
+ UINT nLength; // マッチ長.バイト数.\r
+ UINT nPosition; // マッチ位置.先頭は0.(お恥ずかしい)\r
+ WORD wTranslate; // 変換テーブル番号.\r
+ LPSTR lpszTable; // 変換テーブル.\r
+ FARPROC lpfnUsrFunc; // コールバック関数へのFARポインタ(使わないように).\r
+ UINT nCompData1; // コンパイルデータ1.\r
+ MEMID hCompData2; // コンパイルデータ2.ハンドル.\r
+ MEMID hCompData3; // コンパイルデータ3.ハンドル.\r
+ MEMID hCompData4; // コンパイルデータ4.ハンドル.\r
} JRE2, *PJRE2, NEAR*NPJRE2, FAR*LPJRE2;\r
#pragma pack()\r
\r
-// ------------------------------------------------ ÌßÛÄÀ²Ìß\82¨\82æ\82ÑϸÛ\r
+// ------------------------------------------------ プロトタイプおよびマクロ\r
#ifdef __cplusplus // caution! it's NOT cpulspuls!!!\r
extern "C"{\r
#endif // __cplusplus\r
\r
-// \83o\81[\83W\83\87\83\93\82É\8aÖ\8cW\82È\82¢API\r
+// バージョンに関係ないAPI\r
BOOL EXTAPI IsMatch(LPSTR lpszStr, LPSTR lpszRe);\r
int EXTAPI GlobalReplace(LPSTR lpszRe, LPSTR lpszObj, LPSTR lpszStr, LPHANDLE lphGMemTo);\r
WORD EXTAPI JreGetVersion(void);\r
#if defined(JRE_BUILDTYPE_WIN16)\r
- MEMID EXTAPI DecodeEscSeqAlloc2(LPSTR lpszRe); // 16bit Windows\82Ì\88â\95¨.\r
+ MEMID EXTAPI DecodeEscSeqAlloc2(LPSTR lpszRe); // 16bit Windowsの遺物.\r
#endif // defined(JRE_BUILDTYPE_WIN16)\r
UINT EXTAPI DecodeEscSeq(LPSTR lpszRe, LPSTR lpszBuff, UINT uiSize); // new!\r
int EXTAPI GetJreMessage(int nMessageType, int nLanguage, LPSTR lpszBuff, int cbBuff);\r
-// \83o\81[\83W\83\87\83\931API\r
+// バージョン1API\r
BOOL EXTAPI JreOpen(LPJRE lpjreJre);\r
BOOL EXTAPI JreCompile(LPJRE lpjreJre, LPSTR lpszRe);\r
BOOL EXTAPI JreGetMatchInfo(LPJRE lpjreJre, LPSTR lpszStr);\r
BOOL EXTAPI JreClose(LPJRE lpjreJre);\r
-// \83o\81[\83W\83\87\83\932API\r
+// バージョン2API\r
BOOL EXTAPI Jre2Open(LPJRE2 lpjreJre);\r
BOOL EXTAPI Jre2Compile(LPJRE2 lpjreJre, LPSTR lpszRe);\r
BOOL EXTAPI Jre2GetMatchInfo(LPJRE2 lpjreJre, LPSTR lpszStr);\r
}\r
#endif // __cplusplus\r
\r
-// ----------------------------------------------------------- \8c^\92è\8b`\r
-// GetProcAddress\82ð\8eg\97p\82·\82é\8dÛ\82Ì\83|\83C\83\93\83^\95Ï\90\94\82ð\90é\8c¾\82µ\82â\82·\82\82µ\82Ä\82¨\82.\r
+// ----------------------------------------------------------- 型定義\r
+// GetProcAddressを使用する際のポインタ変数を宣言しやすくしておく.\r
typedef BOOL (EXTAPI*LPISMATCH) (LPSTR, LPSTR);\r
typedef int (EXTAPI*LPGLOBALREPLACE) (LPSTR, LPSTR, LPSTR, LPHANDLE);\r
typedef WORD (EXTAPI*LPJREGETVERSION) (VOID);\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83\8d\81[\83J\83\8b\91¤\82Ì\83t\83@\83C\83\8b\83A\83N\83Z\83X\r
+* ローカル側のファイルアクセス\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83f\83B\83\8c\83N\83g\83\8a\95Ï\8dX -------------------------------------------\r
+/*----- ローカル側のディレクトリ変更 -------------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int DoLocalCWD(char *Path)\r
{\r
int Sts;\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
SetTaskMsg(">>CD %s", Path);\r
if(SetCurrentDirectory(Path) != TRUE)\r
{\r
SetTaskMsg(MSGJPN145);\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83f\83B\83\8c\83N\83g\83\8a\8dì\90¬ -------------------------------------------\r
+/*----- ローカル側のディレクトリ作成 -------------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DoLocalMKD(char *Path)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\8eæ\93¾ -----------------------------------\r
+/*----- ローカル側のカレントディレクトリ取得 -----------------------------------\r
*\r
* Parameter\r
-* char *Buf : \83p\83X\96¼\82ð\95Ô\82·\83o\83b\83t\83@\r
+* char *Buf : パス名を返すバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DoLocalPWD(char *Buf)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83f\83B\83\8c\83N\83g\83\8a\8dí\8f\9c ------------------------------------------\r
+/*----- ローカル側のディレクトリ削除 ------------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DoLocalRMD(char *Path)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83t\83@\83C\83\8b\8dí\8f\9c -----------------------------------------------\r
+/*----- ローカル側のファイル削除 -----------------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DoLocalDELE(char *Path)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83t\83@\83C\83\8b\96¼\95Ï\8dX ---------------------------------------------\r
+/*----- ローカル側のファイル名変更 ---------------------------------------------\r
*\r
* Parameter\r
-* char *Src : \8c³\83t\83@\83C\83\8b\96¼\r
-* char *Dst : \95Ï\8dX\8cã\82Ì\83t\83@\83C\83\8b\96¼\r
+* char *Src : 元ファイル名\r
+* char *Dst : 変更後のファイル名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DoLocalRENAME(char *Src, char *Dst)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\82Ì\83v\83\8d\83p\83e\83B\82ð\95\\8e¦\82·\82é ----------------------------------------\r
+/*----- ファイルのプロパティを表示する ----------------------------------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
+* char *Fname : ファイル名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispFileProperty(char *Fname)\r
}\r
\r
\r
-/*----- \91®\90«\82ð\83`\83F\83b\83N\82·\82é FindFirstFile --------------------------------------\r
+/*----- 属性をチェックする FindFirstFile --------------------------------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
-* WIN32_FIND_DATA *FindData : \8c\9f\8dõ\83f\81[\83^\r
-* int IgnHide : \89B\82µ\83t\83@\83C\83\8b\82ð\96³\8e\8b\82·\82é\82©\82Ç\82¤\82©(YES/NO)\r
+* char *Fname : ファイル名\r
+* WIN32_FIND_DATA *FindData : 検索データ\r
+* int IgnHide : 隠しファイルを無視するかどうか(YES/NO)\r
*\r
* Return Value\r
-* HANDLE \83n\83\93\83h\83\8b\r
+* HANDLE ハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HANDLE FindFirstFileAttr(char *Fname, WIN32_FIND_DATA *FindData, int IgnHide)\r
}\r
\r
\r
-/*----- \91®\90«\82ð\83`\83F\83b\83N\82·\82é FindNextFile ---------------------------------------\r
+/*----- 属性をチェックする FindNextFile ---------------------------------------\r
*\r
* Parameter\r
-* HANDLE hFind : \83n\83\93\83h\83\8b\r
-* WIN32_FIND_DATA *FindData : \8c\9f\8dõ\83f\81[\83^\r
-* int IgnHide : \89B\82µ\83t\83@\83C\83\8b\82ð\96³\8e\8b\82·\82é\82©\82Ç\82¤\82©(YES/NO)\r
+* HANDLE hFind : ハンドル\r
+* WIN32_FIND_DATA *FindData : 検索データ\r
+* int IgnHide : 隠しファイルを無視するかどうか(YES/NO)\r
*\r
* Return Value\r
-* HANDLE \83n\83\93\83h\83\8b\r
+* HANDLE ハンドル\r
*----------------------------------------------------------------------------*/\r
\r
BOOL FindNextFileAttr(HANDLE hFind, WIN32_FIND_DATA *FindData, int IgnHide)\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83\8a\83X\83g\83r\83\85\81[\83e\83B\83b\83v\83X\r
+* リストビューティップス\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
/ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
/============================================================================*/\r
\r
-/* \82±\82Ì\83\\81[\83X\82Í MFC Programmer's SourceBook (http://www.codeguru.com/)\82ð\8eQ\8dl\82É\82µ\82Ü\82µ\82½ */\r
+/* このソースは MFC Programmer's SourceBook (http://www.codeguru.com/)を参考にしました */\r
\r
#define STRICT\r
#include <windows.h>\r
#include "resource.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static void TipsShow(HWND hWnd, RECT rectTitle, LPCTSTR lpszTitleText, int xoffset, int xoffset2, int InRect);\r
static int CellRectFromPoint(HWND hWnd, POINT point, RECT *cellrect, int *col);\r
static LRESULT CALLBACK TitleTipWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
-static HWND hWndTips; /* tips\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b */\r
+static HWND hWndTips; /* tipsのウインドウハンドル */\r
\r
\r
\r
-/*----- \83\8a\83X\83g\83r\83\85\81[\83e\83B\83b\83v\83X\82Ì\83E\83C\83\93\83h\83E\82ð\8dì\90¬ ------------------------------\r
+/*----- リストビューティップスのウインドウを作成 ------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \90e\83E\83C\83\93\83h\83E\82Ì\83n\83\93\83h\83\8b\r
-* HINSTANCE hInst : \83C\83\93\83X\83^\83\93\83X\83n\83\93\83h\83\8b\r
+* HWND hWnd : 親ウインドウのハンドル\r
+* HINSTANCE hInst : インスタンスハンドル\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int InitListViewTips(HWND hWnd, HINSTANCE hInst)\r
WNDCLASSEX wClass;\r
int Ret;\r
\r
- Ret = FAIL;\r
+ Ret = FFFTP_FAIL;\r
\r
wClass.cbSize = sizeof(WNDCLASSEX);\r
wClass.style = 0;\r
hWnd, NULL, hInst, NULL);\r
\r
if(hWndTips != NULL)\r
- Ret = SUCCESS;\r
+ Ret = FFFTP_SUCCESS;\r
\r
return(Ret);\r
}\r
\r
\r
-/*----- \83\8a\83X\83g\83r\83\85\81[\83e\83B\83b\83v\83X\82Ì\83E\83C\83\93\83h\83E\82ð\8dí\8f\9c ------------------------------\r
+/*----- リストビューティップスのウインドウを削除 ------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DeleteListViewTips(void)\r
}\r
\r
\r
-/*----- \83\8a\83X\83g\83r\83\85\81[\83e\83B\83b\83v\83X\82Ì\83E\83C\83\93\83h\83E\82ð\8fÁ\8b\8e ------------------------------\r
+/*----- リストビューティップスのウインドウを消去 ------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void EraseListViewTips(void)\r
}\r
\r
\r
-/*----- \83\8a\83X\83g\83r\83\85\81[\83e\83B\83b\83v\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· ----------------------\r
+/*----- リストビューティップスのウインドウハンドルを返す ----------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetListViewTipsHwnd(void)\r
}\r
\r
\r
-/*----- \83\8a\83X\83g\83r\83\85\81[\83e\83B\83b\83v\83X\82Ì\95\\8e¦\83`\83F\83b\83N ----------------------------------\r
+/*----- リストビューティップスの表示チェック ----------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : ListView\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* LPARAM lParam : WM_MOUSEMOVE\82ÌLPARAM\92l\r
+* HWND hWnd : ListViewのウインドウハンドル\r
+* LPARAM lParam : WM_MOUSEMOVEのLPARAM値\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void CheckTipsDisplay(HWND hWnd, LPARAM lParam)\r
}\r
\r
\r
-/*----- \83\8a\83X\83g\83r\83\85\81[\83e\83B\83b\83v\83X\82ð\95\\8e¦ ------------------------------------------\r
+/*----- リストビューティップスを表示 ------------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : ListView\82Ì\83E\83C\83\93\83h\83E\82Ì\83n\83\93\83h\83\8b\r
-* RECT rectTitle : ListView\83R\83\93\83g\83\8b\81[\83\8b\82Ì\83A\83C\83e\83\80\82Ì\8bé\8c`\r
-* LPCTSTR lpszTitleText : \95¶\8e\9a\97ñ\r
-* int xoffset : \83I\83t\83Z\83b\83g\r
-* int xoffset2 : \83I\83t\83Z\83b\83g\82Q\r
-* int InRect : \95\\8e¦\82·\82é\82©\82Ç\82¤\82©\r
+* HWND hWnd : ListViewのウインドウのハンドル\r
+* RECT rectTitle : ListViewコントルールのアイテムの矩形\r
+* LPCTSTR lpszTitleText : 文字列\r
+* int xoffset : オフセット\r
+* int xoffset2 : オフセット2\r
+* int InRect : 表示するかどうか\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void TipsShow(HWND hWnd, RECT rectTitle, LPCTSTR lpszTitleText, int xoffset, int xoffset2, int InRect)\r
{\r
RectClientToScreen(hWnd, &rectTitle);\r
\r
- /* ListView\83E\83C\83\93\83h\83E\82Ì\83t\83H\83\93\83g\82ð\93¾\82é */\r
+ /* ListViewウインドウのフォントを得る */\r
dc = GetDC(hWnd);\r
pFont = (HFONT)SendMessage(hWnd, WM_GETFONT, 0, 0);\r
ReleaseDC(hWnd, dc);\r
}\r
\r
\r
-/*----- \83\8a\83X\83g\83r\83\85\81[\83e\83B\83b\83v\83X\82ð\95\\8e¦\82·\82é\88Ê\92u\82ð\95Ô\82· ----------------------------\r
+/*----- リストビューティップスを表示する位置を返す ----------------------------\r
*\r
* Parameter\r
-* HWND hWnd : ListView\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* POINT point : \83J\81[\83\\83\8b\82Ì\88Ê\92u\r
-* RECT *cellrect : \83A\83C\83e\83\80\82Ì\8bé\8c`\82ð\95Ô\82·\83\8f\81[\83N\r
-* int *col : \8c\85\94Ô\8d\86\82ð\95Ô\82·\83\8f\81[\83N\r
+* HWND hWnd : ListViewのウインドウハンドル\r
+* POINT point : カーソルの位置\r
+* RECT *cellrect : アイテムの矩形を返すワーク\r
+* int *col : 桁番号を返すワーク\r
*\r
* Return Value\r
-* int \8ds\94Ô\8d\86\r
-* -1=\8aY\93\96\82È\82µ\r
+* int 行番号\r
+* -1=該当なし\r
*----------------------------------------------------------------------------*/\r
\r
static int CellRectFromPoint(HWND hWnd, POINT point, RECT *cellrect, int *col)\r
}\r
\r
\r
-/*----- \83\8a\83X\83g\83r\83\85\81[\83e\83B\83b\83v\83X\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------\r
+/*----- リストビューティップスウインドウのコールバック ------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hWnd : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
-* \83\81\83b\83Z\81[\83W\82É\91Î\89\9e\82·\82é\96ß\82è\92l\r
+* メッセージに対応する戻り値\r
*----------------------------------------------------------------------------*/\r
\r
static LRESULT CALLBACK TitleTipWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \82e\82e\82e\82s\82o\r
+* FFFTP\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include <htmlhelp.h>\r
#include "helpid.h"\r
\r
-// UTF-8\91Î\89\9e\r
+// UTF-8対応\r
#undef __MBSWRAPPER_H__\r
#include "mbswrapper.h"\r
\r
\r
-#define RESIZE_OFF 0 /* \83E\83C\83\93\83h\83E\82Ì\8bæ\90Ø\82è\88Ê\92u\95Ï\8dX\82µ\82Ä\82¢\82È\82¢ */\r
-#define RESIZE_ON 1 /* \83E\83C\83\93\83h\83E\82Ì\8bæ\90Ø\82è\88Ê\92u\95Ï\8dX\92\86 */\r
-#define RESIZE_PREPARE 2 /* \83E\83C\83\93\83h\83E\82Ì\8bæ\90Ø\82è\88Ê\92u\95Ï\8dX\82Ì\8f\80\94õ */\r
+#define RESIZE_OFF 0 /* ウインドウの区切り位置変更していない */\r
+#define RESIZE_ON 1 /* ウインドウの区切り位置変更中 */\r
+#define RESIZE_PREPARE 2 /* ウインドウの区切り位置変更の準備 */\r
\r
-#define RESIZE_HPOS 0 /* \83\8d\81[\83J\83\8b\81|\83z\83X\83g\8aÔ\82Ì\8bæ\90Ø\82è\88Ê\92u\95Ï\8dX */\r
-#define RESIZE_VPOS 1 /* \83\8a\83X\83g\81|\83^\83X\83N\8aÔ\82Ì\8bæ\90Ø\82è\88Ê\92u\82Ì\95Ï\8dX */\r
+#define RESIZE_HPOS 0 /* ローカル-ホスト間の区切り位置変更 */\r
+#define RESIZE_VPOS 1 /* リスト-タスク間の区切り位置の変更 */\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static int InitApp(LPSTR lpszCmdLine, int cmdShow);\r
static int MakeAllWindows(int cmdShow);\r
static BOOL CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
static int EnterMasterPasswordAndSet( int Res, HWND hWnd );\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static const char FtpClassStr[] = "FFFTPWin";\r
\r
static char IniPath[FMAX_PATH+1];\r
static int ForceIni = NO;\r
\r
-TRANSPACKET MainTransPkt; /* \83t\83@\83C\83\8b\93]\91\97\97p\83p\83P\83b\83g */\r
- /* \82±\82ê\82ð\8eg\82Á\82Ä\93]\91\97\82ð\8ds\82¤\82Æ\81A\83c\81[\83\8b\83o\81[\82Ì\93]\91\97 */\r
- /* \92\86\8e~\83{\83^\83\93\82Å\92\86\8e~\82Å\82«\82é */\r
+TRANSPACKET MainTransPkt; /* ファイル転送用パケット */\r
+ /* これを使って転送を行うと、ツールバーの転送 */\r
+ /* 中止ボタンで中止できる */\r
\r
char TitleHostName[HOST_ADRS_LEN+1];\r
char FilterStr[FILTER_EXT_LEN+1] = { "*" };\r
static DWORD dwCookie;\r
\r
\r
-/*===== \83O\83\8d\81[\83o\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== グローバルなワーク =====*/\r
\r
HWND hHelpWin = NULL;\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
int WinPosX = CW_USEDEFAULT;\r
int WinPosY = 0;\r
int WinWidth = 630;\r
int SendMode = TRANS_DLG;\r
int MoveMode = MOVE_DLG;\r
int ListType = LVS_REPORT;\r
-// LIST\82Ì\83L\83\83\83b\83V\83\85\82ð\96³\8cø\82É\82·\82é\81i\83\8a\83\82\81[\83g\82Ì\83f\83B\83\8c\83N\83g\83\8a\82Ì\95\\8e¦\82ª\8dX\90V\82³\82ê\82È\82¢\83o\83O\91Î\8dô\81j\r
+// LISTのキャッシュを無効にする(リモートのディレクトリの表示が更新されないバグ対策)\r
//int CacheEntry = 10;\r
int CacheEntry = -10;\r
int CacheSave = NO;\r
\r
\r
\r
-/*----- \83\81\83C\83\93\83\8b\81[\83`\83\93 --------------------------------------------------------\r
+/*----- メインルーチン --------------------------------------------------------\r
*\r
* Parameter\r
-* HINSTANCE hInstance : \82±\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\82±\82Ì\83C\83\93\83X\83^\83\93\83X\82Ì\83n\83\93\83h\83\8b\r
-* HINSTANCE hPrevInstance : \82±\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\92¼\91O\82Ì\83C\83\93\83X\83^\83\93\83X\82Ì\83n\83\93\83h\83\8b\r
-* LPSTR lpszCmdLine : \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ª\8bN\93®\82µ\82½\82Æ\82«\82Ì\83R\83}\83\93\83h\83\89\83C\83\93\82ð\82³\82·\83\8d\83\93\83O\83|\83C\83\93\83^\r
-* int cmdShow : \8dÅ\8f\89\82É\95\\8e¦\82·\82é\83E\83C\83\93\83h\83E\82Ì\8c`\8e®\81B\r
+* HINSTANCE hInstance : このアプリケーションのこのインスタンスのハンドル\r
+* HINSTANCE hPrevInstance : このアプリケーションの直前のインスタンスのハンドル\r
+* LPSTR lpszCmdLine : アプリケーションが起動したときのコマンドラインをさすロングポインタ\r
+* int cmdShow : 最初に表示するウインドウの形式。\r
*\r
* Return Value\r
-* int \8dÅ\8cã\82Ì\83\81\83b\83Z\81[\83W\82ÌwParam\r
+* int 最後のメッセージのwParam\r
*----------------------------------------------------------------------------*/\r
\r
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int cmdShow)\r
Ret = FALSE;\r
hWndFtp = NULL;\r
hInstFtp = hInstance;\r
- if(InitApp(lpszCmdLine, cmdShow) == SUCCESS)\r
+ if(InitApp(lpszCmdLine, cmdShow) == FFFTP_SUCCESS)\r
{\r
for(;;)\r
{\r
\r
if(!HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&Msg))\r
{ \r
- /* \83f\83B\83\8c\83N\83g\83\8a\96¼\82Ì\95\\8e¦\83R\83\93\83{\83{\83b\83N\83X\82ÅBS\82âRET\82ª\8cø\82\82æ\82¤\82É */\r
- /* \83R\83\93\83{\83{\83b\83N\83X\93à\82Å\82Í\83A\83N\83Z\83\89\83\8c\81[\83^\82ð\96³\8cø\82É\82·\82é */\r
+ /* ディレクトリ名の表示コンボボックスでBSやRETが効くように */\r
+ /* コンボボックス内ではアクセラレータを無効にする */\r
if((Msg.hwnd == GetLocalHistEditHwnd()) ||\r
(Msg.hwnd == GetRemoteHistEditHwnd()) ||\r
((hHelpWin != NULL) && (GetAncestor(Msg.hwnd, GA_ROOT) == hHelpWin)) ||\r
}\r
\r
\r
-/*----- \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\8f\89\8aú\90Ý\92è --------------------------------------------\r
+/*----- アプリケーションの初期設定 --------------------------------------------\r
*\r
* Parameter\r
-* HINSTANCE hInstance : \82±\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\82±\82Ì\83C\83\93\83X\83^\83\93\83X\82Ì\83n\83\93\83h\83\8b\r
-* HINSTANCE hPrevInstance : \82±\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\92¼\91O\82Ì\83C\83\93\83X\83^\83\93\83X\82Ì\83n\83\93\83h\83\8b\r
-* LPSTR lpszCmdLine : \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ª\8bN\93®\82µ\82½\82Æ\82«\82Ì\83R\83}\83\93\83h\83\89\83C\83\93\82ð\82³\82·\83\8d\83\93\83O\83|\83C\83\93\83^\r
-* int cmdShow : \8dÅ\8f\89\82É\95\\8e¦\82·\82é\83E\83C\83\93\83h\83E\82Ì\8c`\8e®\81B\r
+* HINSTANCE hInstance : このアプリケーションのこのインスタンスのハンドル\r
+* HINSTANCE hPrevInstance : このアプリケーションの直前のインスタンスのハンドル\r
+* LPSTR lpszCmdLine : アプリケーションが起動したときのコマンドラインをさすロングポインタ\r
+* int cmdShow : 最初に表示するウインドウの形式。\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int InitApp(LPSTR lpszCmdLine, int cmdShow)\r
int Err;\r
WSADATA WSAData;\r
char PwdBuf[FMAX_PATH+1];\r
- int useDefautPassword = 0; /* \8cx\8d\90\95¶\95\\8e¦\97p */\r
+ int useDefautPassword = 0; /* 警告文表示用 */\r
int masterpass;\r
\r
- sts = FAIL;\r
+ sts = FFFTP_FAIL;\r
\r
aes_init();\r
srand(GetTickCount());\r
\r
// AllocConsole();\r
\r
- /* 2010.02.01 genta \83}\83X\83^\81[\83p\83X\83\8f\81[\83h\82ð\93ü\97Í\82³\82¹\82é\r
- -z \83I\83v\83V\83\87\83\93\82ª\82 \82é\82Æ\82«\82Í\8dÅ\8f\89\82¾\82¯\83X\83L\83b\83v\r
- -z \83I\83v\83V\83\87\83\93\82ª\82È\82¢\82Æ\82«\82Í\81C\83f\83t\83H\83\8b\83g\83p\83X\83\8f\81[\83h\82ð\82Ü\82¸\8e\8e\82·\r
- LoadRegistory()\82·\82é\r
- \83p\83X\83\8f\81[\83h\82ª\95s\88ê\92v\82È\82ç\8dÄ\93ü\97Í\82·\82é\82©\90q\82Ë\82é\81D\r
- (\94j\91¹\82µ\82Ä\82¢\82½\8fê\8d\87\82Í\82³\82¹\82È\82¢)\r
+ /* 2010.02.01 genta マスターパスワードを入力させる\r
+ -z オプションがあるときは最初だけスキップ\r
+ -z オプションがないときは,デフォルトパスワードをまず試す\r
+ LoadRegistory()する\r
+ パスワードが不一致なら再入力するか尋ねる.\r
+ (破損していた場合はさせない)\r
*/\r
if( CheckMasterPassword(lpszCmdLine, PwdBuf))\r
{\r
useDefautPassword = 0;\r
}\r
else {\r
- /* \83p\83X\83\8f\81[\83h\8ew\92è\96³\82µ */\r
+ /* パスワード指定無し */\r
SetMasterPassword( NULL );\r
- /* \82±\82Ì\8fê\82Å\82Í\95\\8e¦\82Å\82«\82È\82¢\82Ì\82Å\83t\83\89\83O\82¾\82¯\97§\82Ä\82Ä\82¨\82*/\r
+ /* この場では表示できないのでフラグだけ立てておく*/\r
useDefautPassword = 2;\r
}\r
\r
- /* \83p\83X\83\8f\81[\83h\83`\83F\83b\83N\82Ì\82Ý\8eÀ\8e{ */\r
+ /* パスワードチェックのみ実施 */\r
masterpass = 1;\r
while( ValidateMasterPassword() == YES &&\r
GetMasterPasswordStatus() == PASSWORD_UNMATCH ){\r
\r
if( useDefautPassword != 2 ){\r
- /* \8dÄ\83g\83\89\83C\82·\82é\82©\8am\94F */\r
+ /* 再トライするか確認 */\r
if( MessageBox(NULL, MSGJPN304, "FFFTP", MB_YESNO | MB_ICONEXCLAMATION) == IDNO ){\r
- useDefautPassword = 0; /* \95s\88ê\92v\82È\82Ì\82Å\81C\82à\82Í\82â\83f\83t\83H\83\8b\83g\82©\82Ç\82¤\82©\82Í\95ª\82©\82ç\82È\82¢ */\r
+ useDefautPassword = 0; /* 不一致なので,もはやデフォルトかどうかは分からない */\r
break;\r
}\r
}\r
\r
- /* \8dÄ\93ü\97Í\82³\82¹\82é*/\r
+ /* 再入力させる*/\r
masterpass = EnterMasterPasswordAndSet(masterpasswd_dlg, NULL);\r
if( masterpass == 2 ){\r
useDefautPassword = 1;\r
{\r
LoadRegistory();\r
\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+ // 暗号化通信対応\r
SetSSLTimeoutCallback(TimeOut * 1000, SSLTimeoutCallback);\r
\r
LoadJre();\r
LoadRasLib();\r
LoadKernelLib();\r
\r
- //\83^\83C\83}\82Ì\90¸\93x\82ð\89ü\91P\r
+ //タイマの精度を改善\r
timeBeginPeriod(1);\r
\r
CountPrevFfftpWindows();\r
\r
- if(MakeAllWindows(cmdShow) == SUCCESS)\r
+ if(MakeAllWindows(cmdShow) == FFFTP_SUCCESS)\r
{\r
hWndCurFocus = GetLocalHwnd();\r
\r
DispTransferType();\r
SetHostKanaCnvImm(YES);\r
SetHostKanjiCodeImm(KANJI_NOCNV);\r
- // \96{\93\96\82Í\83\8d\81[\83J\83\8b\82Ì\83f\83t\83H\83\8b\83g\82ðUTF-8\82É\82µ\82½\82¢\82ª\8b\8c\83o\81[\83W\83\87\83\93\82Æ\82Ì\8cÝ\8a·\90«\82Ì\82½\82ßShift_JIS\82É\90Ý\92è\r
+ // 本当はローカルのデフォルトをUTF-8にしたいが旧バージョンとの互換性のためShift_JISに設定\r
// SetLocalKanjiCodeImm(KANJI_UTF8N);\r
SetLocalKanjiCodeImm(KANJI_SJIS);\r
DispListType();\r
if(CacheSave == YES)\r
LoadCache();\r
\r
- if(MakeTransferThread() == SUCCESS)\r
+ if(MakeTransferThread() == FFFTP_SUCCESS)\r
{\r
DoPrintf("DEBUG MESSAGE ON ! ##");\r
\r
DispWindowTitle();\r
- // SourceForge.JP\82É\82æ\82é\83t\83H\81[\83N\r
+ // SourceForge.JPによるフォーク\r
// SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.");\r
SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.\r\nCopyright (C) 2011 Hiromichi Matsushima, Suguru Kawamoto.");\r
\r
DispTransferFiles();\r
\r
StartupProc(lpszCmdLine);\r
- sts = SUCCESS;\r
+ sts = FFFTP_SUCCESS;\r
\r
- /* \83Z\83L\83\85\83\8a\83e\83B\8cx\8d\90\95¶\82Ì\95\\8e¦ */\r
+ /* セキュリティ警告文の表示 */\r
if( useDefautPassword ){\r
SetTaskMsg(MSGJPN300);\r
}\r
\r
- /* \83p\83X\83\8f\81[\83h\95s\88ê\92v\8cx\8d\90\95¶\82Ì\95\\8e¦ */\r
+ /* パスワード不一致警告文の表示 */\r
switch( GetMasterPasswordStatus() ){\r
case PASSWORD_UNMATCH:\r
SetTaskMsg(MSGJPN301);\r
}\r
}\r
\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+ // 暗号化通信対応\r
#ifdef USE_OPENSSL\r
if(IsOpenSSLLoaded())\r
SetTaskMsg(MSGJPN318);\r
SetTaskMsg(MSGJPN319);\r
#endif\r
\r
- if(sts == FAIL)\r
+ if(sts == FFFTP_FAIL)\r
DeleteAllObject();\r
\r
return(sts);\r
}\r
\r
\r
-/*----- \83E\83C\83\93\83h\83E\82ð\8dì\90¬\82·\82é --------------------------------------------------\r
+/*----- ウインドウを作成する --------------------------------------------------\r
*\r
* Parameter\r
-* int cmdShow : \8dÅ\8f\89\82É\95\\8e¦\82·\82é\83E\83C\83\93\83h\83E\82Ì\8c`\8e®\81B\r
+* int cmdShow : 最初に表示するウインドウの形式。\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int MakeAllWindows(int cmdShow)\r
int StsLvtips;\r
int StsSocket;\r
\r
- /*===== \83\81\83C\83\93\83E\83C\83\93\83h\83E =====*/\r
+ /*===== メインウインドウ =====*/\r
\r
RootColorBrush = CreateSolidBrush(GetSysColor(COLOR_3DFACE));\r
\r
WinPosX = CW_USEDEFAULT;\r
WinPosY = 0;\r
}\r
- // UTF-8\91Î\89\9e\r
- // \83\86\81[\83U\81[\92è\8b`\82Ì\83N\83\89\83X\82Í\83f\83t\83H\83\8b\83g\82ÌWNDPROC\82ªShift_JIS\90ê\97p\82Ì\82½\82ß\r
+ // UTF-8対応\r
+ // ユーザー定義のクラスはデフォルトのWNDPROCがShift_JIS専用のため\r
// hWndFtp = CreateWindow(FtpClassStr, "FFFTP",\r
// WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,\r
// WinPosX, WinPosY, WinWidth, WinHeight,\r
MoveWindow(hWndFtp, Rect2.left, Rect2.top, WinWidth, WinHeight, FALSE);\r
}\r
\r
- /*===== \83X\83e\83C\83^\83X\83o\81[ =====*/\r
+ /*===== ステイタスバー =====*/\r
\r
StsSbar = MakeStatusBarWindow(hWndFtp, hInstFtp);\r
\r
CalcWinSize();\r
\r
- /*===== \83c\81[\83\8b\83o\81[ =====*/\r
+ /*===== ツールバー =====*/\r
\r
StsTbar = MakeToolBarWindow(hWndFtp, hInstFtp);\r
\r
- /*===== \83t\83@\83C\83\8b\83\8a\83X\83g\83E\83C\83\93\83h\83E =====*/\r
+ /*===== ファイルリストウインドウ =====*/\r
\r
StsList = MakeListWin(hWndFtp, hInstFtp);\r
\r
- /*==== \83^\83X\83N\83E\83C\83\93\83h\83E ====*/\r
+ /*==== タスクウインドウ ====*/\r
\r
StsTask = MakeTaskWindow(hWndFtp, hInstFtp);\r
\r
\r
ShowWindow(hWndFtp, cmdShow);\r
\r
- /*==== \83\\83P\83b\83g\83E\83C\83\93\83h\83E ====*/\r
+ /*==== ソケットウインドウ ====*/\r
\r
StsSocket = MakeSocketWin(hWndFtp, hInstFtp);\r
\r
StsLvtips = InitListViewTips(hWndFtp, hInstFtp);\r
}\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
if((hWndFtp == NULL) ||\r
- (StsTbar == FAIL) ||\r
- (StsList == FAIL) ||\r
- (StsSbar == FAIL) ||\r
- (StsTask == FAIL) ||\r
- (StsLvtips == FAIL) ||\r
- (StsSocket == FAIL))\r
+ (StsTbar == FFFTP_FAIL) ||\r
+ (StsList == FFFTP_FAIL) ||\r
+ (StsSbar == FFFTP_FAIL) ||\r
+ (StsTask == FFFTP_FAIL) ||\r
+ (StsLvtips == FFFTP_FAIL) ||\r
+ (StsSocket == FFFTP_FAIL))\r
{\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
}\r
\r
- if(Sts == SUCCESS)\r
+ if(Sts == FFFTP_SUCCESS)\r
SetListViewType();\r
\r
return(Sts);\r
}\r
\r
\r
-/*----- \83E\83C\83\93\83h\83E\82Ì\83^\83C\83g\83\8b\82ð\95\\8e¦\82·\82é ----------------------------------------\r
+/*----- ウインドウのタイトルを表示する ----------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispWindowTitle(void)\r
}\r
\r
\r
-/*----- \91S\82Ä\82Ì\83I\83u\83W\83F\83N\83g\82ð\8dí\8f\9c ----------------------------------------------\r
+/*----- 全てのオブジェクトを削除 ----------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DeleteAllObject(void)\r
//move to WM_DESTROY\r
WSACleanup();\r
\r
-//test \83V\83X\83e\83\80\94C\82¹\r
+//test システム任せ\r
// if(ListFont != NULL)\r
// DeleteObject(ListFont);\r
// if(RootColorBrush != NULL)\r
// DeleteObject(RootColorBrush);\r
\r
-//test \83V\83X\83e\83\80\94C\82¹\r
+//test システム任せ\r
// DeleteListViewTips();\r
// DeleteListWin();\r
// DeleteStatusBarWindow();\r
}\r
\r
\r
-/*----- \83\81\83C\83\93\83E\83C\83\93\83h\83E\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· ----------------------------\r
+/*----- メインウインドウのウインドウハンドルを返す ----------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetMainHwnd(void)\r
}\r
\r
\r
-/*----- \8c»\8dÝ\83t\83H\81[\83J\83X\82ª\82 \82é\83E\83C\83\93\83h\83E\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· --------------\r
+/*----- 現在フォーカスがあるウインドウのウインドウハンドルを返す --------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetFocusHwnd(void)\r
}\r
\r
\r
-/*----- \8c»\8dÝ\83t\83H\81[\83J\83X\82ª\82 \82é\83E\83C\83\93\83h\83E\82Ì\82ð\83Z\83b\83g\82·\82é --------------------------\r
+/*----- 現在フォーカスがあるウインドウのをセットする --------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND hWnd : ウインドウハンドル\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetFocusHwnd(HWND hWnd)\r
}\r
\r
\r
-/*----- \83v\83\8d\83O\83\89\83\80\82Ì\83C\83\93\83X\83^\83\93\83X\82ð\95Ô\82· ----------------------------------------\r
+/*----- プログラムのインスタンスを返す ----------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HINSTANCE \83C\83\93\83X\83^\83\93\83X\r
+* HINSTANCE インスタンス\r
*----------------------------------------------------------------------------*/\r
\r
HINSTANCE GetFtpInst(void)\r
}\r
\r
\r
-/*----- \83\81\83C\83\93\83E\83C\83\93\83h\83E\82Ì\83\81\83b\83Z\81[\83W\8f\88\97\9d --------------------------------------\r
+/*----- メインウインドウのメッセージ処理 --------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hWnd : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
-* \83\81\83b\83Z\81[\83W\82É\91Î\89\9e\82·\82é\96ß\82è\92l\r
+* メッセージに対応する戻り値\r
*----------------------------------------------------------------------------*/\r
\r
static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)\r
DispTransferType();\r
CheckHistoryNum(0);\r
SetAllHistoryToMenu();\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+ // 暗号化通信対応\r
SetSSLTimeoutCallback(TimeOut * 1000, SSLTimeoutCallback);\r
break;\r
\r
DispTransferType();\r
break;\r
\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
case MENU_KNJ_SJIS :\r
case MENU_KNJ_EUC :\r
case MENU_KNJ_JIS :\r
case MENU_REFRESH :\r
SuppressRefresh = 1;\r
GetLocalDirForWnd();\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
GetRemoteDirForWnd(CACHE_REFRESH, &CancelFlg);\r
SuppressRefresh = 0;\r
break;\r
\r
case REFRESH_REMOTE :\r
SuppressRefresh = 1;\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
GetRemoteDirForWnd(CACHE_REFRESH, &CancelFlg);\r
SuppressRefresh = 0;\r
break;\r
case MENU_CHANGEPASSWD: /* 2010.01.31 genta */\r
if( GetMasterPasswordStatus() != PASSWORD_OK )\r
{\r
- /* \8b\90§\93I\82É\90Ý\92è\82·\82é\82©\8am\94F */\r
+ /* 強制的に設定するか確認 */\r
if( DialogBox(hInstFtp, MAKEINTRESOURCE(forcepasschange_dlg), hWnd, ExeEscDialogProc) != YES){\r
break;\r
}\r
}\r
break;\r
}\r
-// \8fí\82É\83z\83X\83g\82©\83\8d\81[\83J\83\8b\82Ö\83t\83H\81[\83J\83X\82ð\88Ú\93®\r
+// 常にホストかローカルへフォーカスを移動\r
// SetFocus(hWndCurFocus);\r
MakeButtonsFocus();\r
break;\r
case WM_NOTIFY :\r
switch(((LPNMHDR)lParam)->code)\r
{\r
- /* \83c\81[\83\8b\83`\83b\83v\83R\83\93\83g\83\8d\81[\83\8b\83\81\83b\83Z\81[\83W\82Ì\8f\88\97\9d */\r
+ /* ツールチップコントロールメッセージの処理 */\r
case TTN_NEEDTEXT:\r
lpttt = (LPTOOLTIPTEXT)lParam;\r
lpttt->hinst = hInstFtp;\r
lpttt->lpszText = MSGJPN176;\r
break;\r
}\r
- // UTF-8\82©\82çShift_JIS\82Ö\95Ï\8a·\r
+ // UTF-8からShift_JISへ変換\r
{\r
static wchar_t StringBufferUTF16[1024];\r
static char StringBufferSJIS[1024];\r
}\r
\r
\r
-/*----- \83v\83\8d\83O\83\89\83\80\8aJ\8en\8e\9e\82Ì\8f\88\97\9d ------------------------------------------------\r
+/*----- プログラム開始時の処理 ------------------------------------------------\r
*\r
* Parameter\r
-* char *Cmd : \83R\83}\83\93\83h\83\89\83C\83\93\95¶\8e\9a\97ñ\r
+* char *Cmd : コマンドライン文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void StartupProc(char *Cmd)\r
}\r
\r
\r
-/*----- \83R\83}\83\93\83h\83\89\83C\83\93\82ð\89ð\90Í --------------------------------------------------\r
+/*----- コマンドラインを解析 --------------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \83R\83}\83\93\83h\83\89\83C\83\93\95¶\8e\9a\97ñ\r
-* int *AutoConnect : \90Ú\91±\83z\83X\83g\94Ô\8d\86\82ð\95Ô\82·\83\8f\81[\83N\r
-* int *CmdOption : \83I\83v\83V\83\87\83\93\82ð\95Ô\82·\83\8f\81[\83N\r
-* char *unc : unc\82ð\95Ô\82·\83\8f\81[\83N\r
-* int Max : unc\82Ì\8dÅ\91å\92·\r
+* char *Str : コマンドライン文字列\r
+* int *AutoConnect : 接続ホスト番号を返すワーク\r
+* int *CmdOption : オプションを返すワーク\r
+* char *unc : uncを返すワーク\r
+* int Max : uncã\81®æ\9c\80大é\95·\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* 0=\8ew\92è\82È\82µ\81A1=URL\8ew\92è\81A2=\90Ý\92è\96¼\8ew\92è\81A-1=\83G\83\89\81[\r
+* int ステータス\r
+* 0=指定なし、1=URL指定、2=設定名指定、-1=エラー\r
*\r
* Note\r
* -m --mirror\r
* -k --kana\r
* -u --eucname\r
* -i --jisname\r
-* -n --ini (CheckIniFileName\82Å\8c\9f\8dõ)\r
+* -n --ini (CheckIniFileNameで検索)\r
* --saveoff\r
* --saveon\r
-* -z --mpasswd (CheckMasterPassword\82Å\8c\9f\8dõ) 2010.01.30 genta \92Ç\89Á\r
+* -z --mpasswd (CheckMasterPasswordで検索) 2010.01.30 genta 追加\r
*----------------------------------------------------------------------------*/\r
\r
static int AnalyzeComLine(char *Str, int *AutoConnect, int *CmdOption, char *unc, int Max)\r
}\r
\r
\r
-/*----- INI\83t\83@\83C\83\8b\82Ì\83p\83X\96¼\82Ì\8ew\92è\82ð\83`\83F\83b\83N ------------------------------------\r
+/*----- INIファイルのパス名の指定をチェック ------------------------------------\r
*\r
* Parameter\r
-* char *Str : \83R\83}\83\93\83h\83\89\83C\83\93\95¶\8e\9a\97ñ\r
-* char *Ini : ini\83t\83@\83C\83\8b\96¼\82ð\95Ô\82·\83\8f\81[\83N\r
+* char *Str : コマンドライン文字列\r
+* char *Ini : iniファイル名を返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* 0=\8ew\92è\82È\82µ\81A1=\82 \82è\r
+* int ステータス\r
+* 0=指定なし、1=あり\r
*\r
* Note\r
* -n --ini\r
return GetTokenAfterOption( Str, Ini, "n", "-ini" );\r
}\r
\r
-/* \83}\83X\83^\81[\83p\83X\83\8f\81[\83h\82Ì\8ew\92è\82ð\83`\83F\83b\83N */\r
+/* マスターパスワードの指定をチェック */\r
static int CheckMasterPassword(char *Str, char *Ini)\r
{\r
return GetTokenAfterOption( Str, Ini, "z", "-mpasswd" );\r
}\r
\r
-/*----- \83I\83v\83V\83\87\83\93\82Ì\8cã\82ë\82Ì\83g\81[\83N\83\93\82ð\8eæ\82è\8fo\82· ------------------------------------\r
+/*----- オプションの後ろのトークンを取り出す ------------------------------------\r
*\r
* Parameter\r
-* char *Str : \83R\83}\83\93\83h\83\89\83C\83\93\95¶\8e\9a\97ñ\r
-* char *Result : \8eæ\82è\8fo\82µ\82½\95¶\8e\9a\97ñ\82ð\8ai\94[\82·\82é\83\8f\81[\83N\r
-* const char* Opt1, *Opt2: \83I\83v\83V\83\87\83\93\95¶\8e\9a\97ñ(2\82Â)\r
+* char *Str : コマンドライン文字列\r
+* char *Result : 取り出した文字列を格納するワーク\r
+* const char* Opt1, *Opt2: オプション文字列(2つ)\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* 0=\8ew\92è\82È\82µ\81A1=\82 \82è\r
+* int ステータス\r
+* 0=指定なし、1=あり\r
*\r
* Note\r
-* 2010.01.30 genta \83}\83X\83^\81[\83p\83X\83\8f\81[\83h\8eæ\82è\8fo\82µ\82Ì\82½\82ß\8b¤\92Ê\89»\r
+* 2010.01.30 genta マスターパスワード取り出しのため共通化\r
*----------------------------------------------------------------------------*/\r
static int GetTokenAfterOption(char *Str, char *Result, const char* Opt1, const char* Opt2 )\r
{\r
return(Ret);\r
}\r
\r
-/*----- \83g\81[\83N\83\93\82ð\95Ô\82· --------------------------------------------------------\r
+/*----- トークンを返す --------------------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* char *Buf : \95¶\8e\9a\97ñ\82ð\95Ô\82·\83o\83b\83t\83@\r
+* char *Str : 文字列\r
+* char *Buf : 文字列を返すバッファ\r
*\r
* Return Value\r
-* char *\95Ô\82µ\82½\83g\81[\83N\83\93\82Ì\96\96\94ö\r
-* NULL=\8fI\82í\82è\r
+* char *返したトークンの末尾\r
+* NULL=終わり\r
*----------------------------------------------------------------------------*/\r
\r
static char *GetToken(char *Str, char *Buf)\r
}\r
\r
\r
-/*----- \83v\83\8d\83O\83\89\83\80\8fI\97¹\8e\9e\82Ì\8f\88\97\9d ------------------------------------------------\r
+/*----- プログラム終了時の処理 ------------------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND hWnd : ウインドウハンドル\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void ExitProc(HWND hWnd)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\96¼\82ð\83_\83u\83\8b\83N\83\8a\83b\83N\82µ\82½\82Æ\82«\82Ì\8f\88\97\9d ------------------------------\r
+/*----- ファイル名をダブルクリックしたときの処理 ------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
-* int Mode : \8fí\82É\81u\8aJ\82\81v\93®\8dì\82ð\82·\82é\82©\82Ç\82¤\82© (YES/NO)\r
-* int App : \83A\83v\83\8a\83P\81[\83V\83\87\83\93\94Ô\8d\86\81i-1=\8aÖ\98A\82Ã\82¯\97D\90æ\81j\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
+* int Mode : 常に「開く」動作をするかどうか (YES/NO)\r
+* int App : アプリケーション番号(-1=関連づけ優先)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DoubleClickProc(int Win, int Mode, int App)\r
else\r
ChangeDir(WIN_LOCAL, Tmp);\r
}\r
- else if(CheckClosedAndReconnect() == SUCCESS)\r
+ else if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
if((App != -1) || (Type == NODE_FILE))\r
{\r
if((DclickOpen == YES) || (Mode == YES))\r
{\r
- // \83r\83\85\81[\83\8f\82Q\81A\82R\82Ì\83p\83X\82ª "d " \82Å\8en\82Ü\82Á\82Ä\82¢\82½\82ç\8d·\95ª\83r\83\85\81[\83A\8eg\97p\r
+ // ビューワ2、3のパスが "d " で始まっていたら差分ビューア使用\r
if ((App == 1 || App == 2) && strncmp(ViewerName[App], "d ", 2) == 0)\r
UseDiffViewer = YES;\r
else\r
\r
DisableUserOpe();\r
\r
- /* \95s\90³\82È\83p\83X\82ð\8c\9f\8fo */\r
+ /* 不正なパスを検出 */\r
if(CheckPathViolation(&MainTransPkt) == NO)\r
{\r
// if((Sts = DoDownLoad(AskCmdCtrlSkt(), &MainTransPkt, NO)) == 429)\r
}\r
\r
\r
-/*----- \83t\83H\83\8b\83_\82Ì\88Ú\93® --------------------------------------------------------\r
+/*----- フォルダの移動 --------------------------------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
-* char *Path : \88Ú\93®\90æ\82Ì\83p\83X\96¼\r
+* int Win : ウインドウ番号 (WIN_xxx)\r
+* char *Path : 移動先のパス名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \83t\83H\83\8b\83_\93¯\8e\9e\88Ú\93®\82Ì\8f\88\97\9d\82à\8ds\82¤\r
+* フォルダ同時移動の処理も行う\r
*----------------------------------------------------------------------------*/\r
\r
static void ChangeDir(int Win, char *Path)\r
\r
if((Win == WIN_LOCAL) || (Sync == YES))\r
{\r
- if(DoLocalCWD(Path) == SUCCESS)\r
+ if(DoLocalCWD(Path) == FFFTP_SUCCESS)\r
GetLocalDirForWnd();\r
}\r
\r
if((Win == WIN_REMOTE) || (Sync == YES))\r
{\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
#if defined(HAVE_OPENVMS)\r
- /* OpenVMS\82Ì\8fê\8d\87\81A".DIR;?"\82ð\8eæ\82é */\r
+ /* OpenVMSの場合、".DIR;?"を取る */\r
if (AskHostType() == HTYPE_VMS)\r
ReformVMSDirName(Path, TRUE);\r
#endif\r
}\r
\r
\r
-/*----- \83E\83C\83\93\83h\83E\82Ì\83T\83C\83Y\95Ï\8dX\82Ì\8f\88\97\9d ------------------------------------------\r
+/*----- ウインドウのサイズ変更の処理 ------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void ResizeWindowProc(void)\r
}\r
\r
\r
-/*----- \83E\83C\83\93\83h\83E\82Ì\8ae\95\94\95ª\82Ì\83T\83C\83Y\82ð\8cv\8eZ\82·\82é ----------------------------------\r
+/*----- ウインドウの各部分のサイズを計算する ----------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void CalcWinSize(void)\r
\r
\r
#if 0\r
-/*----- \83E\83C\83\93\83h\83E\82Ì\95\\8e¦\88Ê\92u\82ð\8eæ\93¾\82·\82é ----------------------------------------\r
+/*----- ウインドウの表示位置を取得する ----------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND hWnd : ウインドウハンドル\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void AskWindowPos(HWND hWnd)\r
#endif\r
\r
\r
-/*----- \83f\83B\83\8c\83N\83g\83\8a\83\8a\83X\83g\82Æ\83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\8b«\8aE\95Ï\8dX\8f\88\97\9d ----------------------\r
+/*----- ディレクトリリストとファイルリストの境界変更処理 ----------------------\r
*\r
* Parameter\r
-* WPARAM Keys : WM_MOUSEMOVE\82È\82Ç\82ÌWPARAM\82Ì\92l\r
-* int x : \83}\83E\83X\83J\81[\83\\83\8b\82Ì\82w\8dÀ\95W\r
-* int y : \83}\83E\83X\83J\81[\83\\83\8b\82Ì\82x\8dÀ\95W\r
+* WPARAM Keys : WM_MOUSEMOVEなどのWPARAMの値\r
+* int x : マウスカーソルのX座標\r
+* int y : マウスカーソルのY座標\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void CheckResizeFrame(WPARAM Keys, int x, int y)\r
if((x >= LocalWidth) && (x <= LocalWidth + SepaWidth) &&\r
(y > TOOLWIN_HEIGHT) && (y < (TOOLWIN_HEIGHT * 2 + ListHeight)))\r
{\r
- /* \8b«\8aE\88Ê\92u\95Ï\8dX\97p\83J\81[\83\\83\8b\82É\95Ï\8dX */\r
+ /* 境界位置変更用カーソルに変更 */\r
SetCapture(hWndFtp);\r
hCursor = LoadCursor(hInstFtp, MAKEINTRESOURCE(resize_lr_csr));\r
SetCursor(hCursor);\r
}\r
else if((y >= TOOLWIN_HEIGHT*2+ListHeight) && (y <= TOOLWIN_HEIGHT*2+ListHeight+SepaWidth))\r
{\r
- /* \8b«\8aE\88Ê\92u\95Ï\8dX\97p\83J\81[\83\\83\8b\82É\95Ï\8dX */\r
+ /* 境界位置変更用カーソルに変更 */\r
SetCapture(hWndFtp);\r
hCursor = LoadCursor(hInstFtp, MAKEINTRESOURCE(resize_ud_csr));\r
SetCursor(hCursor);\r
{\r
if(Keys & MK_LBUTTON)\r
{\r
- /* \8b«\8aE\88Ê\92u\95Ï\8dX\8aJ\8en */\r
+ /* 境界位置変更開始 */\r
Resizing = RESIZE_ON;\r
GetWindowRect(hWndFtp, &Rect);\r
GetClientRect(GetSbarWnd(), &Rect1);\r
((ResizePos == RESIZE_VPOS) &&\r
((y < TOOLWIN_HEIGHT*2+ListHeight) || (y > TOOLWIN_HEIGHT*2+ListHeight+SepaWidth))))\r
{\r
- /* \8c³\82Ì\83J\81[\83\\83\8b\82É\96ß\82· */\r
+ /* 元のカーソルに戻す */\r
ReleaseCapture();\r
hCursor = LoadCursor(NULL, IDC_ARROW);\r
SetCursor(hCursor);\r
\r
if((Keys & MK_LBUTTON) == 0)\r
{\r
- /* \8b«\8aE\88Ê\92u\95Ï\8dX\8fI\97¹ */\r
+ /* 境界位置変更終了 */\r
ReleaseCapture();\r
ClipCursor(NULL);\r
hCursor = LoadCursor(NULL, IDC_ARROW);\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\88ê\97\97\8fî\95ñ\82ð\83r\83\85\81[\83\8f\82Å\95\\8e¦ --------------------------------------\r
+/*----- ファイル一覧情報をビューワで表示 --------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DispDirInfo(void)\r
\r
\r
\r
-/*----- \83r\83\85\81[\83\8f\82ð\8bN\93® --------------------------------------------------------\r
+/*----- ビューワを起動 --------------------------------------------------------\r
*\r
* Parameter\r
-* char Fname : \83t\83@\83C\83\8b\96¼\r
-* int App : \83A\83v\83\8a\83P\81[\83V\83\87\83\93\94Ô\8d\86\81i-1=\8aÖ\98A\82Ã\82¯\97D\90æ\81j\r
+* char Fname : ファイル名\r
+* int App : アプリケーション番号(-1=関連づけ優先)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ExecViewer(char *Fname, int App)\r
char ComLine[FMAX_PATH*2+3+1];\r
char CurDir[FMAX_PATH+1];\r
\r
- /* FindExecutable()\82Í\8aÖ\98A\95t\82¯\82ç\82ê\82½\83v\83\8d\83O\83\89\83\80\82Ì\83p\83X\96¼\82É\83X\83y\81[\83X\82ª */\r
- /* \8aÜ\82Ü\82ê\82Ä\82¢\82é\8e\9e\81A\8aÔ\88á\82Á\82½\83p\83X\96¼\82ð\95Ô\82·\8e\96\82ª\82 \82é\81B */\r
- /* \82»\82±\82Å\81A\8aÖ\98A\95t\82¯\82ç\82ê\82½\83v\83\8d\83O\83\89\83\80\82Ì\8bN\93®\82ÍShellExecute()\82ð\8eg\82¤\81B */\r
+ /* FindExecutable()は関連付けられたプログラムのパス名にスペースが */\r
+ /* 含まれている時、間違ったパス名を返す事がある。 */\r
+ /* そこで、関連付けられたプログラムの起動はShellExecute()を使う。 */\r
\r
AskLocalCurDir(CurDir, FMAX_PATH);\r
\r
}\r
\r
\r
-/*----- \8d·\95ª\95\\8e¦\83r\83\85\81[\83\8f\82ð\8bN\93® ------------------------------------------------\r
+/*----- 差分表示ビューワを起動 ------------------------------------------------\r
*\r
* Parameter\r
-* char Fname1 : \83t\83@\83C\83\8b\96¼\r
-* char Fname2 : \83t\83@\83C\83\8b\96¼2\r
-* int App : \83A\83v\83\8a\83P\81[\83V\83\87\83\93\94Ô\8d\86\81i2 or 3\81j\r
+* char Fname1 : ファイル名\r
+* char Fname2 : ファイル名2\r
+* int App : アプリケーション番号(2 or 3)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ExecViewer2(char *Fname1, char *Fname2, int App)\r
char ComLine[FMAX_PATH*2+3+1];\r
char CurDir[FMAX_PATH+1];\r
\r
- /* FindExecutable()\82Í\8aÖ\98A\95t\82¯\82ç\82ê\82½\83v\83\8d\83O\83\89\83\80\82Ì\83p\83X\96¼\82É\83X\83y\81[\83X\82ª */\r
- /* \8aÜ\82Ü\82ê\82Ä\82¢\82é\8e\9e\81A\8aÔ\88á\82Á\82½\83p\83X\96¼\82ð\95Ô\82·\8e\96\82ª\82 \82é\81B */\r
- /* \82»\82±\82Å\81A\8aÖ\98A\95t\82¯\82ç\82ê\82½\83v\83\8d\83O\83\89\83\80\82Ì\8bN\93®\82ÍShellExecute()\82ð\8eg\82¤\81B */\r
+ /* FindExecutable()は関連付けられたプログラムのパス名にスペースが */\r
+ /* 含まれている時、間違ったパス名を返す事がある。 */\r
+ /* そこで、関連付けられたプログラムの起動はShellExecute()を使う。 */\r
\r
AskLocalCurDir(CurDir, FMAX_PATH);\r
\r
- strcpy(AssocProg, ViewerName[App] + 2); /* \90æ\93ª\82Ì "d " \82Í\93Ç\82Ý\94ò\82Î\82· */\r
+ strcpy(AssocProg, ViewerName[App] + 2); /* 先頭の "d " は読み飛ばす */\r
\r
if(strchr(Fname1, ' ') == NULL && strchr(Fname2, ' ') == NULL)\r
sprintf(ComLine, "%s %s %s", AssocProg, Fname1, Fname2);\r
}\r
\r
\r
-/*----- \83e\83\93\83|\83\89\83\8a\83t\83@\83C\83\8b\96¼\82ð\83e\83\93\83|\83\89\83\8a\83t\83@\83C\83\8b\83\8a\83X\83g\82É\92Ç\89Á ------------------\r
+/*----- テンポラリファイル名をテンポラリファイルリストに追加 ------------------\r
*\r
* Parameter\r
-* char *Fname : \83e\83\93\83|\83\89\83\8a\83t\83@\83C\83\8b\96¼\r
+* char *Fname : テンポラリファイル名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void AddTempFileList(char *Fname)\r
}\r
\r
\r
-/*----- \83e\83\93\83|\83\89\83\8a\83t\83@\83C\83\8b\83\8a\83X\83g\82É\93o\98^\82³\82ê\82Ä\82¢\82é\83t\83@\83C\83\8b\82ð\91S\82Ä\8dí\8f\9c ------------\r
+/*----- テンポラリファイルリストに登録されているファイルを全て削除 ------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DeleteAlltempFile(void)\r
Pos = Next;\r
}\r
\r
- // OLE D&D\82Ì\83e\83\93\83|\83\89\83\8a\82ð\8dí\8f\9c\82·\82é (2007.9.11 yutaka)\r
+ // OLE D&Dのテンポラリを削除する (2007.9.11 yutaka)\r
doDeleteRemoteFile();\r
\r
return;\r
}\r
\r
\r
-/*----- \82`\82\82\82\8f\82\95\82\94\83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83R\81[\83\8b\83o\83b\83N\8aÖ\90\94 ------------------------\r
+/*----- Aboutダイアログボックスのコールバック関数 ------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83T\83E\83\93\83h\82ð\96Â\82ç\82· ------------------------------------------------------\r
+/*----- サウンドを鳴らす ------------------------------------------------------\r
*\r
* Parameter\r
-* Int num : \83T\83E\83\93\83h\82Ì\8eí\97Þ (SND_xxx)\r
+* Int num : サウンドの種類 (SND_xxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SoundPlay(int Num)\r
}\r
\r
\r
-/*----- \83w\83\8b\83v\83t\83@\83C\83\8b\82Ì\83p\83X\96¼\82ð\95Ô\82· ------------------------------------------\r
+/*----- ヘルプファイルのパス名を返す ------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* char *\83p\83X\96¼\r
+* char *パス名\r
*----------------------------------------------------------------------------*/\r
\r
char *AskHelpFilePath(void)\r
}\r
\r
\r
-/*----- \83e\83\93\83|\83\89\83\8a\83t\83@\83C\83\8b\82Ì\83p\83X\96¼\82ð\95Ô\82· --------------------------------------\r
+/*----- テンポラリファイルのパス名を返す --------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* char *\83p\83X\96¼\r
+* char *パス名\r
*----------------------------------------------------------------------------*/\r
\r
char *AskTmpFilePath(void)\r
}\r
\r
\r
-/*----- INI\83t\83@\83C\83\8b\82Ì\83p\83X\96¼\82ð\95Ô\82· ---------------------------------------------\r
+/*----- INIファイルのパス名を返す ---------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* char *\83p\83X\96¼\r
+* char *パス名\r
*----------------------------------------------------------------------------*/\r
\r
char *AskIniFilePath(void)\r
return(IniPath);\r
}\r
\r
-/*----- INI\83t\83@\83C\83\8b\82Ì\82Ý\82ð\8eg\82¤\82©\82Ç\82¤\82©\82ð\95Ô\82· -----------------------------------\r
+/*----- INIファイルのみを使うかどうかを返す -----------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X : YES/NO\r
+* int ステータス : YES/NO\r
*----------------------------------------------------------------------------*/\r
\r
int AskForceIni(void)\r
\r
\r
\r
-/*----- \83\81\83b\83Z\81[\83W\8f\88\97\9d --------------------------------------------------------\r
+/*----- メッセージ処理 --------------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \8fI\97¹\83t\83\89\83O (YES=WM_CLOSE\82ª\97\88\82½/NO)\r
+* int 終了フラグ (YES=WM_CLOSEが来た/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int BackgrndMessageProc(void)\r
{\r
if(!HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&Msg))\r
{\r
- /* \83f\83B\83\8c\83N\83g\83\8a\96¼\82Ì\95\\8e¦\83R\83\93\83{\83{\83b\83N\83X\82ÅBS\82âRET\82ª\8cø\82\82æ\82¤\82É */\r
- /* \83R\83\93\83{\83{\83b\83N\83X\93à\82Å\82Í\83A\83N\83Z\83\89\83\8c\81[\83^\82ð\96³\8cø\82É\82·\82é */\r
+ /* ディレクトリ名の表示コンボボックスでBSやRETが効くように */\r
+ /* コンボボックス内ではアクセラレータを無効にする */\r
if((Msg.hwnd == GetLocalHistEditHwnd()) ||\r
(Msg.hwnd == GetRemoteHistEditHwnd()) ||\r
((hHelpWin != NULL) && (Msg.hwnd == hHelpWin)) ||\r
}\r
\r
\r
-/*----- \8e©\93®\8fI\97¹\83t\83\89\83O\82ð\83N\83\8a\83A\82·\82é --------------------------------------------\r
+/*----- 自動終了フラグをクリアする --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ResetAutoExitFlg(void)\r
}\r
\r
\r
-/*----- \8e©\93®\8fI\97¹\83t\83\89\83O\82ð\95Ô\82· --------------------------------------------------\r
+/*----- 自動終了フラグを返す --------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83t\83\89\83O (YES/NO)\r
+* int フラグ (YES/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int AskAutoExit(void)\r
return(AutoExit);\r
}\r
\r
-/*----- \83\86\81[\83U\82É\83p\83X\83\8f\81[\83h\82ð\93ü\97Í\82³\82¹\81C\82»\82ê\82ð\90Ý\92è\82·\82é -----------------------\r
+/*----- ユーザにパスワードを入力させ,それを設定する -----------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int : 0/\83\86\81[\83U\83L\83\83\83\93\83Z\83\8b, 1/\90Ý\92è\82µ\82½, 2/\83f\83t\83H\83\8b\83g\90Ý\92è\r
+* int : 0/ユーザキャンセル, 1/設定した, 2/デフォルト設定\r
*----------------------------------------------------------------------------*/\r
int EnterMasterPasswordAndSet( int Res, HWND hWnd )\r
{\r
buf[0] = NUL;\r
if( InputDialogBox(Res, hWnd, NULL, buf, MAX_PASSWORD_LEN + 1,\r
&Flag, IDH_HELP_TOPIC_0000064) == YES){\r
- /* \96\96\94ö\82Ì\8bó\94\92\82ð\8dí\8f\9c */\r
+ /* 末尾の空白を削除 */\r
RemoveTailingSpaces(buf);\r
- /* \90æ\93ª\82Ì\8bó\94\92\82ð\8dí\8f\9c */\r
+ /* 先頭の空白を削除 */\r
for( p = buf; *p == ' '; p++ )\r
;\r
\r
return 1;\r
}\r
else {\r
- /* \8bó\82Ì\8fê\8d\87\82Í\83f\83t\83H\83\8b\83g\92l\82ð\90Ý\92è */\r
+ /* 空の場合はデフォルト値を設定 */\r
SetMasterPassword( NULL );\r
return 2;\r
}\r
return 0;\r
}\r
\r
-// \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+// 暗号化通信対応\r
BOOL __stdcall SSLTimeoutCallback()\r
{\r
Sleep(1);\r
if(BackgrndMessageProc() == YES)\r
return TRUE;\r
- // \94O\82Ì\82½\82ß\83c\81[\83\8b\83o\81[\82ÌMENU_ABORT\82à\8am\94F\r
+ // 念のためツールバーのMENU_ABORTも確認\r
// if(MainTransPkt.Abort != ABORT_NONE)\r
// {\r
// MainTransPkt.Abort = ABORT_NONE;\r
-// mbswrapper.cpp
+// mbswrapper.cpp
// Copyright (C) 2011 Suguru Kawamoto
-// \83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\83\8f\83C\83h\95¶\8e\9aAPI\83\89\83b\83p\81[
-// \83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\82ÍUTF-8\81A\83\8f\83C\83h\95¶\8e\9a\82ÍUTF-16\82Å\82 \82é\82à\82Ì\82Æ\82·\82é
-// \91S\82Ä\82Ì\90§\8cä\97p\82Ì\95¶\8e\9a\82ÍASCII\82Ì\94Í\88Í\82Å\82 \82é\82½\82ß\81AShift_JIS\82ÆUTF-8\8aÔ\82Ì\95Ï\8a·\82Í\95s\97v
+// マルチバイト文字ワイド文字APIラッパー
+// マルチバイト文字はUTF-8、ワイド文字はUTF-16であるものとする
+// 全ての制御用の文字はASCIIの範囲であるため、Shift_JISとUTF-8間の変換は不要
#define UNICODE
#define _UNICODE
#define DO_NOT_REPLACE
#include "mbswrapper.h"
-// \83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\97ñ\82©\82ç\83\8f\83C\83h\95¶\8e\9a\97ñ\82Ö\95Ï\8a·
+// マルチバイト文字列からワイド文字列へ変換
int MtoW(LPWSTR pDst, int size, LPCSTR pSrc, int count)
{
if(pSrc < (LPCSTR)0x00010000 || pSrc == (LPCSTR)~0)
return MultiByteToWideChar(CP_UTF8, 0, pSrc, count, NULL, 0);
}
-// \83\8f\83C\83h\95¶\8e\9a\97ñ\82©\82ç\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\97ñ\82Ö\95Ï\8a·
+// ワイド文字列からマルチバイト文字列へ変換
int WtoM(LPSTR pDst, int size, LPCWSTR pSrc, int count)
{
if(pSrc < (LPCWSTR)0x00010000 || pSrc == (LPCWSTR)~0)
return WideCharToMultiByte(CP_UTF8, 0, pSrc, count, NULL, 0, NULL, NULL);
}
-// \83\8f\83C\83h\95¶\8e\9a\97ñ\82©\82çShift_JIS\95¶\8e\9a\97ñ\82Ö\95Ï\8a·
+// ワイド文字列からShift_JIS文字列へ変換
int WtoA(LPSTR pDst, int size, LPCWSTR pSrc, int count)
{
if(pSrc < (LPCWSTR)0x00010000 || pSrc == (LPCWSTR)~0)
return WideCharToMultiByte(CP_ACP, 0, pSrc, count, NULL, 0, NULL, NULL);
}
-// \83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\97ñ\83o\83b\83t\83@\8fI\92[\82ð\8b\90§\93I\82ÉNULL\82Å\92u\8a·
+// マルチバイト文字列バッファ終端を強制的にNULLで置換
int TerminateStringM(LPSTR lpString, int size)
{
int i;
return i;
}
-// \83\8f\83C\83h\95¶\8e\9a\97ñ\83o\83b\83t\83@\8fI\92[\82ð\8b\90§\93I\82ÉNULL\82Å\92u\8a·
+// ワイド文字列バッファ終端を強制的にNULLで置換
int TerminateStringW(LPWSTR lpString, int size)
{
int i;
return i;
}
-// Shift_JIS\95¶\8e\9a\97ñ\83o\83b\83t\83@\8fI\92[\82ð\8b\90§\93I\82ÉNULL\82Å\92u\8a·
+// Shift_JIS文字列バッファ終端を強制的にNULLで置換
int TerminateStringA(LPSTR lpString, int size)
{
int i;
return i;
}
-// NULL\8bæ\90Ø\82è\95¡\90\94\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\97ñ\82Ì\92·\82³\82ð\8eæ\93¾
+// NULL区切り複数マルチバイト文字列の長さを取得
size_t GetMultiStringLengthM(LPCSTR lpString)
{
size_t i;
return i;
}
-// NULL\8bæ\90Ø\82è\95¡\90\94\83\8f\83C\83h\95¶\8e\9a\97ñ\82Ì\92·\82³\82ð\8eæ\93¾
+// NULL区切り複数ワイド文字列の長さを取得
size_t GetMultiStringLengthW(LPCWSTR lpString)
{
size_t i;
return i;
}
-// NULL\8bæ\90Ø\82è\95¡\90\94Shift_JIS\95¶\8e\9a\97ñ\82Ì\92·\82³\82ð\8eæ\93¾
+// NULL区切り複数Shift_JIS文字列の長さを取得
size_t GetMultiStringLengthA(LPCSTR lpString)
{
size_t i;
return i;
}
-// NULL\8bæ\90Ø\82è\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\97ñ\82©\82ç\83\8f\83C\83h\95¶\8e\9a\97ñ\82Ö\95Ï\8a·
+// NULL区切りマルチバイト文字列からワイド文字列へ変換
int MtoWMultiString(LPWSTR pDst, int size, LPCSTR pSrc)
{
int i;
return i;
}
-// NULL\8bæ\90Ø\82è\83\8f\83C\83h\95¶\8e\9a\97ñ\82©\82ç\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\97ñ\82Ö\95Ï\8a·
+// NULL区切りワイド文字列からマルチバイト文字列へ変換
int WtoMMultiString(LPSTR pDst, int size, LPCWSTR pSrc)
{
int i;
return i;
}
-// NULL\8bæ\90Ø\82è\83\8f\83C\83h\95¶\8e\9a\97ñ\82©\82çShift_JIS\95¶\8e\9a\97ñ\82Ö\95Ï\8a·
+// NULL区切りワイド文字列からShift_JIS文字列へ変換
int WtoAMultiString(LPSTR pDst, int size, LPCWSTR pSrc)
{
int i;
return i;
}
-// \83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\97ñ\97p\82Ì\83\81\83\82\83\8a\82ð\8am\95Û
+// マルチバイト文字列用のメモリを確保
char* AllocateStringM(int size)
{
char* p;
- // 0\82ª\8ew\92è\82³\82ê\82é\8fê\8d\87\82ª\82 \82é\82½\82ß1\95¶\8e\9a\95ª\92Ç\89Á
+ // 0が指定される場合があるため1文字分追加
p = (char*)malloc(sizeof(char) * (size + 1));
- // \94O\82Ì\82½\82ß\90æ\93ª\82ÉNULL\95¶\8e\9a\82ð\91ã\93ü
+ // 念のため先頭にNULL文字を代入
if(p)
*p = '\0';
return p;
}
-// \83\8f\83C\83h\95¶\8e\9a\97ñ\97p\82Ì\83\81\83\82\83\8a\82ð\8am\95Û
+// ワイド文字列用のメモリを確保
wchar_t* AllocateStringW(int size)
{
wchar_t* p;
- // 0\82ª\8ew\92è\82³\82ê\82é\8fê\8d\87\82ª\82 \82é\82½\82ß1\95¶\8e\9a\95ª\92Ç\89Á
+ // 0が指定される場合があるため1文字分追加
p = (wchar_t*)malloc(sizeof(wchar_t) * (size + 1));
- // \94O\82Ì\82½\82ß\90æ\93ª\82ÉNULL\95¶\8e\9a\82ð\91ã\93ü
+ // 念のため先頭にNULL文字を代入
if(p)
*p = L'\0';
return p;
}
-// Shift_JIS\95¶\8e\9a\97ñ\97p\82Ì\83\81\83\82\83\8a\82ð\8am\95Û
+// Shift_JIS文字列用のメモリを確保
char* AllocateStringA(int size)
{
char* p;
- // 0\82ª\8ew\92è\82³\82ê\82é\8fê\8d\87\82ª\82 \82é\82½\82ß1\95¶\8e\9a\95ª\92Ç\89Á
+ // 0が指定される場合があるため1文字分追加
p = (char*)malloc(sizeof(char) * (size + 1));
- // \94O\82Ì\82½\82ß\90æ\93ª\82ÉNULL\95¶\8e\9a\82ð\91ã\93ü
+ // 念のため先頭にNULL文字を代入
if(p)
*p = '\0';
return p;
}
-// \83\81\83\82\83\8a\82ð\8am\95Û\82µ\82Ä\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\97ñ\82©\82ç\83\8f\83C\83h\95¶\8e\9a\97ñ\82Ö\95Ï\8a·
+// メモリを確保してマルチバイト文字列からワイド文字列へ変換
wchar_t* DuplicateMtoW(LPCSTR lpString, int c)
{
wchar_t* p;
return p;
}
-// \8ew\92è\82µ\82½\83T\83C\83Y\82Ì\83\81\83\82\83\8a\82ð\8am\95Û\82µ\82Ä\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\97ñ\82©\82ç\83\8f\83C\83h\95¶\8e\9a\97ñ\82Ö\95Ï\8a·
+// 指定したサイズのメモリを確保してマルチバイト文字列からワイド文字列へ変換
wchar_t* DuplicateMtoWBuffer(LPCSTR lpString, int c, int size)
{
wchar_t* p;
return p;
}
-// \83\81\83\82\83\8a\82ð\8am\95Û\82µ\82ÄNULL\8bæ\90Ø\82è\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\97ñ\82©\82ç\83\8f\83C\83h\95¶\8e\9a\97ñ\82Ö\95Ï\8a·
+// メモリを確保してNULL区切りマルチバイト文字列からワイド文字列へ変換
wchar_t* DuplicateMtoWMultiString(LPCSTR lpString)
{
int count;
return p;
}
-// \8ew\92è\82µ\82½\83T\83C\83Y\82Ì\83\81\83\82\83\8a\82ð\8am\95Û\82µ\82ÄNULL\8bæ\90Ø\82è\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\97ñ\82©\82ç\83\8f\83C\83h\95¶\8e\9a\97ñ\82Ö\95Ï\8a·
+// 指定したサイズのメモリを確保してNULL区切りマルチバイト文字列からワイド文字列へ変換
wchar_t* DuplicateMtoWMultiStringBuffer(LPCSTR lpString, int size)
{
int count;
return p;
}
-// \83\81\83\82\83\8a\82ð\8am\95Û\82µ\82Ä\83\8f\83C\83h\95¶\8e\9a\97ñ\82©\82ç\83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\97ñ\82Ö\95Ï\8a·
+// メモリを確保してワイド文字列からマルチバイト文字列へ変換
char* DuplicateWtoM(LPCWSTR lpString, int c)
{
char* p;
return p;
}
-// \83\81\83\82\83\8a\82ð\8am\95Û\82µ\82Ä\83\8f\83C\83h\95¶\8e\9a\97ñ\82©\82çShift_JIS\95¶\8e\9a\97ñ\82Ö\95Ï\8a·
+// メモリを確保してワイド文字列からShift_JIS文字列へ変換
char* DuplicateWtoA(LPCWSTR lpString, int c)
{
char* p;
return p;
}
-// \95¶\8e\9a\97ñ\97p\82É\8am\95Û\82µ\82½\83\81\83\82\83\8a\82ð\8aJ\95ú
+// 文字列用に確保したメモリを開放
void FreeDuplicatedString(void* p)
{
if(p < (void*)0x00010000 || p == (void*)~0)
free(p);
}
-// \88È\89º\83\89\83b\83p\81[
-// \96ß\82è\92l\83o\83b\83t\83@ r
-// \83\8f\83C\83h\95¶\8e\9a\83o\83b\83t\83@ pw%d
-// \83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\83o\83b\83t\83@ pm%d
-// \88ø\90\94\83o\83b\83t\83@ a%d
+// 以下ラッパー
+// 戻り値バッファ r
+// ワイド文字バッファ pw%d
+// マルチバイト文字バッファ pm%d
+// 引数バッファ a%d
#define START_ROUTINE do{
#define END_ROUTINE }while(0);end_of_routine:
{
ATOM r = 0;
START_ROUTINE
- // WNDPROC\82ªShift_JIS\97p\82Å\82 \82é\82½\82ß
+ // WNDPROCがShift_JIS用であるため
r = RegisterClassExA(v0);
END_ROUTINE
return r;
{
LRESULT r = 0;
START_ROUTINE
- // WNDPROC\82ªShift_JIS\97p\82Å\82 \82é\82½\82ß
+ // WNDPROCがShift_JIS用であるため
if(IsWindowUnicode(hWnd))
r = GetWindowLongW(hWnd, nIndex);
else
{
LRESULT r = 0;
START_ROUTINE
- // WNDPROC\82ªShift_JIS\97p\82Å\82 \82é\82½\82ß
+ // WNDPROCがShift_JIS用であるため
if(IsWindowUnicode(hWnd))
r = SetWindowLongW(hWnd, nIndex, dwNewLong);
else
{
LRESULT r = 0;
START_ROUTINE
- // WNDPROC\82ªShift_JIS\97p\82Å\82 \82é\82½\82ß
+ // WNDPROCがShift_JIS用であるため
if(IsWindowUnicode(hWnd))
r = DefWindowProcW(hWnd, Msg, wParam, lParam);
else
{
LRESULT r = 0;
START_ROUTINE
- // WNDPROC\82ªShift_JIS\97p\82Å\82 \82é\82½\82ß
+ // WNDPROCがShift_JIS用であるため
if(IsWindowUnicode(hWnd))
r = CallWindowProcW(lpPrevWndFunc, hWnd, Msg, wParam, lParam);
else
Size = SendMessageW(hWnd, CB_GETLBTEXTLEN, wParam, 0) + 1;
pw0 = AllocateStringW(Size);
SendMessageW(hWnd, CB_GETLBTEXT, wParam, (LPARAM)pw0);
- // \83o\83b\83t\83@\92·\95s\96¾\82Ì\82½\82ß\83I\81[\83o\81[\83\89\83\93\82Ì\89Â\94\\90«\82 \82è
+ // バッファ長不明のためオーバーランの可能性あり
WtoM((LPSTR)lParam, Size * 4, pw0, -1);
r = TerminateStringM((LPSTR)lParam, Size * 4);
break;
Size = SendMessageW(hWnd, LB_GETTEXTLEN, wParam, 0) + 1;
pw0 = AllocateStringW(Size);
SendMessageW(hWnd, LB_GETTEXT, wParam, (LPARAM)pw0);
- // \83o\83b\83t\83@\92·\95s\96¾\82Ì\82½\82ß\83I\81[\83o\81[\83\89\83\93\82Ì\89Â\94\\90«\82 \82è
+ // バッファ長不明のためオーバーランの可能性あり
WtoM((LPSTR)lParam, Size * 4, pw0, -1);
r = TerminateStringM((LPSTR)lParam, Size * 4);
break;
{
pw0 = DuplicateMtoW(pmLVItem->pszText, -1);
wLVItem.pszText = pw0;
- // TODO: cchTextMax\82Ì\8am\94F
+ // TODO: cchTextMaxの確認
wLVItem.cchTextMax = pmLVItem->cchTextMax;
}
wLVItem.iImage = pmLVItem->iImage;
{
pw0 = DuplicateMtoW(pmLVItem->pszText, -1);
wLVItem.pszText = pw0;
- // TODO: cchTextMax\82Ì\8am\94F
+ // TODO: cchTextMaxの確認
wLVItem.cchTextMax = pmLVItem->cchTextMax;
}
wLVItem.iImage = pmLVItem->iImage;
{
pw0 = DuplicateMtoW(pmLVColumn->pszText, -1);
wLVColumn.pszText = pw0;
- // TODO: cchTextMax\82Ì\8am\94F
+ // TODO: cchTextMaxの確認
wLVColumn.cchTextMax = pmLVColumn->cchTextMax;
}
wLVColumn.iSubItem = pmLVColumn->iSubItem;
{
LRESULT r = 0;
START_ROUTINE
- // WNDPROC\82ªShift_JIS\97p\82Å\82 \82é\82½\82ß
+ // WNDPROCがShift_JIS用であるため
if(IsWindowUnicode(hWnd))
r = DefDlgProcW(hWnd, Msg, wParam, lParam);
else
pw1 = DuplicateMtoW(lpDirectory, -1);
pw2 = AllocateStringW(MAX_PATH * 4);
r = FindExecutableW(pw0, pw1, pw2);
- // \83o\83b\83t\83@\92·\95s\96¾\82Ì\82½\82ß\83I\81[\83o\81[\83\89\83\93\82Ì\89Â\94\\90«\82 \82è
+ // バッファ長不明のためオーバーランの可能性あり
WtoM(lpResult, MAX_PATH, pw2, -1);
TerminateStringM(lpResult, MAX_PATH);
END_ROUTINE
wbi.lParam = lpbi->lParam;
wbi.iImage = lpbi->iImage;
r = SHBrowseForFolderW(&wbi);
- // \83o\83b\83t\83@\92·\95s\96¾\82Ì\82½\82ß\83I\81[\83o\81[\83\89\83\93\82Ì\89Â\94\\90«\82 \82è
+ // バッファ長不明のためオーバーランの可能性あり
WtoM(lpbi->pszDisplayName, MAX_PATH, wbi.pszDisplayName, -1);
lpbi->iImage = wbi.iImage;
END_ROUTINE
START_ROUTINE
pw0 = AllocateStringW(MAX_PATH * 4);
r = SHGetPathFromIDListW(pidl, pw0);
- // \83o\83b\83t\83@\92·\95s\96¾\82Ì\82½\82ß\83I\81[\83o\81[\83\89\83\93\82Ì\89Â\94\\90«\82 \82è
+ // バッファ長不明のためオーバーランの可能性あり
WtoM(pszPath, MAX_PATH, pw0, -1);
TerminateStringM(pszPath, MAX_PATH);
END_ROUTINE
wchar_t* wr;
START_ROUTINE
pw0 = DuplicateMtoW(_Str, -1);
- // TODO: \94ñASCII\95¶\8e\9a\82Ì\91Î\89\9e
+ // TODO: 非ASCII文字の対応
wr = wcschr(pw0, _Ch);
if(wr)
{
wchar_t* wr;
START_ROUTINE
pw0 = DuplicateMtoW(_Str, -1);
- // TODO: \94ñASCII\95¶\8e\9a\82Ì\91Î\89\9e
+ // TODO: 非ASCII文字の対応
wr = wcsrchr(pw0, _Ch);
if(wr)
{
-// mbswrapper.h
+// mbswrapper.h
// Copyright (C) 2011 Suguru Kawamoto
-// \83}\83\8b\83`\83o\83C\83g\95¶\8e\9a\83\8f\83C\83h\95¶\8e\9aAPI\83\89\83b\83p\81[
+// マルチバイト文字ワイド文字APIラッパー
#ifndef __MBSWRAPPER_H__
#define __MBSWRAPPER_H__
mbtoutf8 mesg-jpn.old.h mesg-jpn.h
mbtoutf8 mesg-eng.old.h mesg-eng.h
+encutf8 mesg-jpn.h mesg-jpn.h
+encutf8 mesg-eng.h mesg-eng.h
-/* MD4C.C - RSA Data Security, Inc., MD4 message-digest algorithm\r
+/* MD4C.C - RSA Data Security, Inc., MD4 message-digest algorithm\r
*/\r
\r
/* Copyright (C) 1990-2, RSA Data Security, Inc. All rights reserved.\r
-/* MD4.H - header file for MD4C.C\r
+/* MD4.H - header file for MD4C.C\r
*/\r
\r
/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All\r
-/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm\r
+/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm\r
*/\r
\r
/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All\r
-/* MD5.H - header file for MD5C.C\r
+/* MD5.H - header file for MD5C.C\r
*/\r
\r
/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All\r
-#define MSGJPN001 "Connection cancelled."\r
+#define MSGJPN001 "Connection cancelled."\r
#define MSGJPN002 "Connection cancelled."\r
#define MSGJPN003 "\r\nReconnect.\r\n"\r
#define MSGJPN004 "Disconnect."\r
-#define MSGJPN001 "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x82\x92\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."\r
+#define MSGJPN001 "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x82\x92\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."\r
#define MSGJPN002 "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x82\x92\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F."\r
#define MSGJPN003 "\r\n\xE5\x86\x8D\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99.\r\n"\r
#define MSGJPN004 "\xE5\x88\x87\xE6\x96\xAD\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F"\r
#define MSGJPN215 "OTP MD5"\r
#define MSGJPN216 "OTP SHA-1"\r
#define MSGJPN217 "\xE3\x83\x93\xE3\x83\xA5\xE3\x83\xBC\xE3\x83\xAF\xE3\x81\xAE\xE9\x81\xB8\xE6\x8A\x9E"\r
-#define MSGJPN218 "\xE5\xAE\x9F\xE8\xA1\x8C\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*.exe;*.com;*.bat\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAȨ²Ù\0*\0"\r
+#define MSGJPN218 "\xE5\xAE\x9F\xE8\xA1\x8C\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*.exe;*.com;*.bat\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAEファイル\0*\0"\r
#define MSGJPN219 "Wave\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB"\r
#define MSGJPN220 "\xE3\x83\x80\xE3\x82\xA4\xE3\x82\xA2\xE3\x83\xAB\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x82\x92\xE5\x88\x87\xE6\x96\xAD\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99."\r
#define MSGJPN221 "\xE3\x83\x80\xE3\x82\xA4\xE3\x82\xA2\xE3\x83\xAB\xE3\x82\xA2\xE3\x83\x83\xE3\x83\x97\xE3\x81\xA7\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99."\r
#define MSGJPN273 "\xE6\x9C\x80\xE6\x96\xB0\xE3\x81\xAE\xE6\x83\x85\xE5\xA0\xB1\xE3\x81\xAB\xE6\x9B\xB4\xE6\x96\xB0(&F)"\r
#define MSGJPN274 "\xE9\x96\x8B\xE3\x81\x8F(&O)"\r
#define MSGJPN275 "%s\xE3\x81\xA7\xE9\x96\x8B\xE3\x81\x8F(&%d)"\r
-#define MSGJPN276 "WS_FTP.INI\0ws_ftp.ini\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAȨ²Ù\0*\0"\r
+#define MSGJPN276 "WS_FTP.INI\0ws_ftp.ini\0\xE5\x85\xA8\xE3\x81\xA6\xE3\x81\xAEファイル\0*\0"\r
#define MSGJPN277 "Wave\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\0*.wav\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
#define MSGJPN278 "\xE7\x90\x86\xE7\x94\xB1\xEF\xBC\x9A%s"\r
#define MSGJPN279 "Listen\xE3\x82\xBD\xE3\x82\xB1\xE3\x83\x83\xE3\x83\x88\xE3\x81\x8C\xE5\x8F\x96\xE5\xBE\x97\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93"\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \82»\82Ì\91¼\82Ì\94Ä\97p\83T\83u\83\8b\81[\83`\83\93\r
+* その他の汎用サブルーチン\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include <htmlhelp.h>\r
#include "helpid.h"\r
\r
-// UTF-8\91Î\89\9e\r
+// UTF-8対応\r
#undef __MBSWRAPPER_H__\r
#include "mbswrapper.h"\r
\r
\r
\r
-/*===== \93ü\97Í\83_\83C\83A\83\8d\83O\83f\81[\83^\82Ì\83X\83g\83\89\83N\83`\83\83 =====*/\r
+/*===== 入力ダイアログデータのストラクチャ =====*/\r
\r
typedef struct {\r
- char Title[80]; /* \83_\83C\83A\83\8d\83O\82Ì\83^\83C\83g\83\8b */\r
- char Str[FMAX_PATH+1]; /* \83f\83t\83H\83\8b\83g\95¶\8e\9a\97ñ\81^\93ü\97Í\82³\82ê\82½\95¶\8e\9a\97ñ(Output) */\r
- int MaxLen; /* \95¶\8e\9a\97ñ\82Ì\8dÅ\92· */\r
- int Anonymous; /* Anonymous\83t\83\89\83O(Output) */\r
+ char Title[80]; /* ダイアログのタイトル */\r
+ char Str[FMAX_PATH+1]; /* デフォルト文字列/入力された文字列(Output) */\r
+ int MaxLen; /* æ\96\87å\97å\88\97ã\81®æ\9c\80é\95· */\r
+ int Anonymous; /* Anonymousフラグ(Output) */\r
} DIALOGDATA;\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static BOOL CALLBACK InputDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
extern HWND hHelpWin;\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
-static DIALOGDATA *DialogData; /* \93ü\97Í\83_\83C\83A\83\8d\83O\83f\81[\83^ */\r
+static DIALOGDATA *DialogData; /* 入力ダイアログデータ */\r
static int HelpPage;\r
\r
\r
\r
-/*----- \93ü\97Í\83_\83C\83A\83\8d\83O\82ð\95\\8e¦ --------------------------------------------------\r
+/*----- 入力ダイアログを表示 --------------------------------------------------\r
*\r
* Parameter\r
-* int Res : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82ÌID\r
-* HWND hWnd : \90e\83E\83C\83\93\83h\83E\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* char *Title : \83E\83C\83\93\83h\83E\83^\83C\83g\83\8b (NULL=\90Ý\92è\82µ\82È\82¢)\r
-* char *Buf : \83G\83f\83B\83b\83g\83{\83b\83N\83X\82Ì\8f\89\8aú\95¶\8e\9a\97ñ\81^\93ü\97Í\95¶\8e\9a\97ñ\82ð\95Ô\82·\83o\83b\83t\83@\r
-* int Max : \83o\83b\83t\83@\82Ì\83T\83C\83Y (FMAX_PATH+1\88È\89º\82Å\82 \82é\82±\82Æ)\r
-* int *Flg : \83t\83\89\83O\82Ì\8f\89\8aú\92l\81^\83t\83\89\83O\82ð\95Ô\82·\83\8f\81[\83N\r
-* int Help : \83w\83\8b\83v\82Ì\83R\83\93\83e\83L\83X\83g\94Ô\8d\86\r
+* int Res : ダイアログボックスのID\r
+* HWND hWnd : 親ウインドウのウインドウハンドル\r
+* char *Title : ウインドウタイトル (NULL=設定しない)\r
+* char *Buf : エディットボックスの初期文字列/入力文字列を返すバッファ\r
+* int Max : バッファのサイズ (FMAX_PATH+1以下であること)\r
+* int *Flg : フラグの初期値/フラグを返すワーク\r
+* int Help : ヘルプのコンテキスト番号\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (YES/NO=\8eæ\82è\8fÁ\82µ)\r
+* int ステータス (YES/NO=取り消し)\r
*\r
* Note\r
-* \83_\83C\83A\83\8d\83O\82Í\82P\8cÂ\82ÌEditBox\82Æ\82P\8cÂ\82ÌButton\82ð\8e\9d\82Â\82à\82Ì\82ð\8eg\82¤\r
+* ダイアログは1個のEditBoxと1個のButtonを持つものを使う\r
*----------------------------------------------------------------------------*/\r
\r
int InputDialogBox(int Res, HWND hWnd, char *Title, char *Buf, int Max, int *Flg, int Help)\r
}\r
\r
\r
-/*----- \93ü\97Í\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------------\r
+/*----- 入力ダイアログのコールバック ------------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \81m\8eÀ\8ds\81n\82Æ\81m\8eæ\8fÁ\81n\82¾\82¯\82Ì\83_\83C\83A\83\8d\83O\82Ì\8b¤\92Ê\83R\81[\83\8b\83o\83b\83N\8aÖ\90\94 --------------\r
+/*----- [実行]と[取消]だけのダイアログの共通コールバック関数 --------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \81m\8eÀ\8ds\81n\82Æ\81m\8eæ\8fÁ\81n\82¾\82¯\82Ì\83_\83C\83A\83\8d\83O\82Ì\8b¤\92Ê\83R\81[\83\8b\83o\83b\83N\8aÖ\90\94(\83e\83L\83X\83g\95\\8e¦\82Â\82«)\r
+/*----- [実行]と[取消]だけのダイアログの共通コールバック関数(テキスト表示つき)\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82Ì\8dÅ\8cã\82É "\" \82ð\95t\82¯\82é -------------------------------------------\r
+/*----- 文字列の最後に "\" を付ける -------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \83I\83\8a\83W\83i\83\8b\82Ì\95¶\8e\9a\97ñ char *Str \82ª\95Ï\8dX\82³\82ê\82Ü\82·\81B\r
+* オリジナルの文字列 char *Str が変更されます。\r
*----------------------------------------------------------------------------*/\r
\r
void SetYenTail(char *Str)\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82Ì\8dÅ\8cã\82Ì "\" \82ð\8eæ\82è\8f\9c\82 -----------------------------------------\r
+/*----- 文字列の最後の "\" を取り除く -----------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \83I\83\8a\83W\83i\83\8b\82Ì\95¶\8e\9a\97ñ char *Str \82ª\95Ï\8dX\82³\82ê\82Ü\82·\81B\r
+* オリジナルの文字列 char *Str が変更されます。\r
*----------------------------------------------------------------------------*/\r
\r
void RemoveYenTail(char *Str)\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82Ì\8dÅ\8cã\82É "/" \82ð\95t\82¯\82é -------------------------------------------\r
+/*----- 文字列の最後に "/" を付ける -------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \83I\83\8a\83W\83i\83\8b\82Ì\95¶\8e\9a\97ñ char *Str \82ª\95Ï\8dX\82³\82ê\82Ü\82·\81B\r
+* オリジナルの文字列 char *Str が変更されます。\r
*----------------------------------------------------------------------------*/\r
\r
void SetSlashTail(char *Str)\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82©\82ç\89ü\8ds\83R\81[\83h\82ð\8eæ\82è\8f\9c\82 ----------------------------------------\r
+/*----- 文字列から改行コードを取り除く ----------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \83I\83\8a\83W\83i\83\8b\82Ì\95¶\8e\9a\97ñ char *Str \82ª\95Ï\8dX\82³\82ê\82Ü\82·\81B\r
+* オリジナルの文字列 char *Str が変更されます。\r
*----------------------------------------------------------------------------*/\r
\r
void RemoveReturnCode(char *Str)\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\93à\82Ì\93Á\92è\82Ì\95¶\8e\9a\82ð\91S\82Ä\92u\82«\8a·\82¦\82é ----------------------------------\r
+/*----- 文字列内の特定の文字を全て置き換える ----------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* char Src : \8c\9f\8dõ\95¶\8e\9a\r
-* char Dst : \92u\8a·\95¶\8e\9a\r
+* char *Str : 文字列\r
+* char Src : 検索文字\r
+* char Dst : 置換文字\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ReplaceAll(char *Str, char Src, char Dst)\r
}\r
\r
\r
-/*----- \90\94\8e\9a\82à\82µ\82\82Í\93Á\92è\82Ì\82P\95¶\8e\9a\82©\83`\83F\83b\83N ------------------------------------\r
+/*----- 数字もしくは特定の1文字かチェック ------------------------------------\r
*\r
* Parameter\r
-* int Ch : \83`\83F\83b\83N\82·\82é\95¶\8e\9a\r
-* int Sym : \8bL\8d\86\r
+* int Ch : チェックする文字\r
+* int Sym : 記号\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* 0=\90\94\8e\9a\82Å\82à\93Á\92è\82Ì\8bL\8d\86\82Å\82à\82È\82¢\r
+* int ステータス\r
+* 0=数字でも特定の記号でもない\r
*----------------------------------------------------------------------------*/\r
\r
int IsDigitSym(int Ch, int Sym)\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ª\91S\82Ä\93¯\82¶\95¶\8e\9a\82©\83`\83F\83b\83N ----------------------------------------\r
+/*----- 文字列が全て同じ文字かチェック ----------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* int Ch : \95¶\8e\9a\r
+* char *Str : 文字列\r
+* int Ch : 文字\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* YES/NO\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82Ì\96\96\94ö\82Ì\83X\83y\81[\83X\82ð\8dí\8f\9c ------------------------------------------\r
+/*----- 文字列の末尾のスペースを削除 ------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void RemoveTailingSpaces(char *Str)\r
}\r
\r
\r
-/*----- \91å\95¶\8e\9a\81^\8f¬\95¶\8e\9a\82ð\8bæ\95Ê\82µ\82È\82¢strstr --------------------------------------\r
+/*----- 大文字/小文字を区別しないstrstr --------------------------------------\r
*\r
* Parameter\r
-* char *s1 : \95¶\8e\9a\97ñ\82P\r
-* char *s2 : \95¶\8e\9a\97ñ\82Q\r
+* char *s1 : 文字列1\r
+* char *s2 : 文字列2\r
*\r
* Return Value\r
-* char *\95¶\8e\9a\97ñ\82P\92\86\82Å\95¶\8e\9a\97ñ\82Q\82ª\8c©\82Â\82©\82Á\82½\88Ê\92u\r
-* NULL=\8c©\82Â\82©\82ç\82È\82©\82Á\82½\r
+* char *文字列1中で文字列2が見つかった位置\r
+* NULL=見つからなかった\r
*----------------------------------------------------------------------------*/\r
\r
char *stristr(char *s1, char *s2)\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\92\86\82Ì\83X\83y\81[\83X\82Å\8bæ\90Ø\82ç\82ê\82½\8e\9f\82Ì\83t\83B\81[\83\8b\83h\82ð\95Ô\82· --------------------\r
+/*----- 文字列中のスペースで区切られた次のフィールドを返す --------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* char *\8e\9f\82Ì\83t\83B\81[\83\8b\83h\r
-* NULL=\8c©\82Â\82©\82ç\82È\82©\82Á\82½\r
+* char *次のフィールド\r
+* NULL=見つからなかった\r
*----------------------------------------------------------------------------*/\r
\r
char *GetNextField(char *Str)\r
}\r
\r
\r
-/*----- \8c»\8dÝ\82Ì\83t\83B\81[\83\8b\83h\82Ì\95¶\8e\9a\97ñ\82ð\83R\83s\81[\82·\82é ----------------------------------\r
+/*----- 現在のフィールドの文字列をコピーする ----------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* char *Buf : \83R\83s\81[\90æ\r
-* int Max : \8dÅ\91å\95¶\8e\9a\90\94\r
+* char *Str : 文字列\r
+* char *Buf : コピー先\r
+* int Max : 最大文字数\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL=\92·\82³\82ª\92·\82·\82¬\82é\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL=長さが長すぎる\r
*----------------------------------------------------------------------------*/\r
\r
int GetOneField(char *Str, char *Buf, int Max)\r
int Sts;\r
char *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Pos = strchr(Str, ' ')) == NULL)\r
{\r
if((int)strlen(Str) <= Max)\r
{\r
strcpy(Buf, Str);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
else\r
{\r
strncpy(Buf, Str, Pos - Str);\r
*(Buf + (Pos - Str)) = NUL;\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \83J\83\93\83}\82ð\8eæ\82è\8f\9c\82 ------------------------------------------------------\r
+/*----- カンマを取り除く ------------------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void RemoveComma(char *Str)\r
}\r
\r
\r
-/*----- \83p\83X\96¼\82Ì\92\86\82Ì\83t\83@\83C\83\8b\96¼\82Ì\90æ\93ª\82ð\95Ô\82· ------------------------------------\r
+/*----- パス名の中のファイル名の先頭を返す ------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* char *\83t\83@\83C\83\8b\96¼\82Ì\90æ\93ª\r
+* char *ファイル名の先頭\r
*\r
* Note\r
-* \83f\83B\83\8c\83N\83g\83\8a\82Ì\8bæ\90Ø\82è\8bL\8d\86\82Í "\" \82Æ "/" \82Ì\97¼\95û\82ª\97L\8cø\r
+* ディレクトリの区切り記号は "\" と "/" の両方が有効\r
*----------------------------------------------------------------------------*/\r
\r
char *GetFileName(char *Path)\r
}\r
\r
\r
-/*----- \83c\81[\83\8b\82Ì\95\\8e¦\96¼\82ð\95Ô\82· --------------------------------------------------\r
+/*----- ツールの表示名を返す --------------------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* char * : \95\\8e¦\96¼\r
+* char * : 表示名\r
*----------------------------------------------------------------------------*/\r
\r
char *GetToolName(char *Path)\r
}\r
\r
\r
-/*----- \83p\83X\96¼\82Ì\92\86\82Ì\8ag\92£\8eq\82Ì\90æ\93ª\82ð\95Ô\82· ----------------------------------------\r
+/*----- パス名の中の拡張子の先頭を返す ----------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* char *\8ag\92£\8eq\82Ì\90æ\93ª\r
+* char *拡張子の先頭\r
*----------------------------------------------------------------------------*/\r
\r
char *GetFileExt(char *Path)\r
}\r
\r
\r
-/*----- \83p\83X\96¼\82©\82ç\83t\83@\83C\83\8b\96¼\82ð\8eæ\82è\8f\9c\82 ----------------------------------------\r
+/*----- パス名からファイル名を取り除く ----------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
-* char *Buf : \83t\83@\83C\83\8b\96¼\82ð\8f\9c\82¢\82½\83p\83X\96¼\82Ì\83R\83s\81[\90æ\r
+* char *Path : パス名\r
+* char *Buf : ファイル名を除いたパス名のコピー先\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \83f\83B\83\8c\83N\83g\83\8a\82Ì\8bæ\90Ø\82è\8bL\8d\86\82Í "\" \82Æ "/" \82Ì\97¼\95û\82ª\97L\8cø\r
+* ディレクトリの区切り記号は "\" と "/" の両方が有効\r
*----------------------------------------------------------------------------*/\r
\r
void RemoveFileName(char *Path, char *Buf)\r
}\r
\r
\r
-/*----- \8fã\88Ê\83f\83B\83\8c\83N\83g\83\8a\82Ì\83p\83X\96¼\82ð\8eæ\93¾ ----------------------------------------\r
+/*----- 上位ディレクトリのパス名を取得 ----------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \83f\83B\83\8c\83N\83g\83\8a\82Ì\8bæ\90Ø\82è\8bL\8d\86\82Í "\" \82Æ "/" \82Ì\97¼\95û\82ª\97L\8cø\r
-* \8dÅ\8f\89\82Ì "\"\82â"/"\82Í\8ec\82·\r
-* \97á\81j "/pub" --> "/"\r
-* \97á\81j "C:\DOS" --> "C:\"\r
+* ディレクトリの区切り記号は "\" と "/" の両方が有効\r
+* 最初の "\"や"/"は残す\r
+* 例) "/pub" --> "/"\r
+* 例) "C:\DOS" --> "C:\"\r
*----------------------------------------------------------------------------*/\r
\r
void GetUpperDir(char *Path)\r
}\r
\r
\r
-/*----- \8fã\88Ê\83f\83B\83\8c\83N\83g\83\8a\82Ì\83p\83X\96¼\82ð\8eæ\93¾ ----------------------------------------\r
+/*----- 上位ディレクトリのパス名を取得 ----------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \83f\83B\83\8c\83N\83g\83\8a\82Ì\8bæ\90Ø\82è\8bL\8d\86\82Í "\" \82Æ "/" \82Ì\97¼\95û\82ª\97L\8cø\r
-* \8dÅ\8f\89\82Ì "\"\82â"/"\82à\8fÁ\82·\r
-* \97á\81j "/pub" --> ""\r
-* \97á\81j "C:\DOS" --> "C:"\r
+* ディレクトリの区切り記号は "\" と "/" の両方が有効\r
+* 最初の "\"や"/"も消す\r
+* 例) "/pub" --> ""\r
+* 例) "C:\DOS" --> "C:"\r
*----------------------------------------------------------------------------*/\r
\r
void GetUpperDirEraseTopSlash(char *Path)\r
}\r
\r
\r
-/*----- \83f\83B\83\8c\83N\83g\83\8a\82Ì\8aK\91w\90\94\82ð\95Ô\82· --------------------------------------------\r
+/*----- ディレクトリの階層数を返す --------------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \92P\82É '\' \82Æ '/'\82Ì\90\94\82ð\95Ô\82·\82¾\82¯\r
+* 単に '\' と '/'の数を返すだけ\r
*----------------------------------------------------------------------------*/\r
\r
int AskDirLevel(char *Path)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\83T\83C\83Y\82ð\95¶\8e\9a\97ñ\82É\95Ï\8a·\82·\82é --------------------------------------\r
+/*----- ファイルサイズを文字列に変換する --------------------------------------\r
*\r
* Parameter\r
-* double Size : \83t\83@\83C\83\8b\83T\83C\83Y\r
-* char *Buf : \95¶\8e\9a\97ñ\82ð\95Ô\82·\83o\83b\83t\83@\r
+* double Size : ファイルサイズ\r
+* char *Buf : 文字列を返すバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void MakeSizeString(double Size, char *Buf)\r
}\r
\r
\r
-/*----- StaticText\82Ì\97Ì\88æ\82É\8eû\82Ü\82é\82æ\82¤\82É\83p\83X\96¼\82ð\90®\8c`\82µ\82Ä\95\\8e¦ --------------------\r
+/*----- StaticTextの領域に収まるようにパス名を整形して表示 --------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* char *Str : \95¶\8e\9a\97ñ (\92·\82³\82ÍFMAX_PATH\88È\89º)\r
+* HWND hWnd : ウインドウハンドル\r
+* char *Str : 文字列 (長さはFMAX_PATH以下)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispStaticText(HWND hWnd, char *Str)\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\83A\83\8c\83C\82Ì\92·\82³\82ð\8b\81\82ß\82é --------------------------------------------\r
+/*----- 文字列アレイの長さを求める --------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\83A\83\8c\83C (\96\96\94ö\82ÍNUL\82Q\82Â)\r
+* char *Str : 文字列アレイ (末尾はNUL2つ)\r
*\r
* Return Value\r
-* int \92·\82³\r
+* int 長さ\r
*\r
* Note\r
-* \8fI\92[\82Ì2\82Â\82ÌNUL\82Ì\82¤\82¿\82Ì\8dÅ\8cã\82Ì\95¨\82Í\90\94\82¦\82È\82¢\r
+* 終端の2つのNULのうちの最後の物は数えない\r
* StrMultiLen("") = 0\r
* StrMultiLen("abc\0xyz\0") = 8\r
-* StrMultiLen("abc") = \8fI\92[\82ª\82Q\82Â\82ÌNUL\82Å\82È\82¢\82Ì\82Å\8b\81\82ß\82ç\82ê\82È\82¢\r
+* StrMultiLen("abc") = 終端が2つのNULでないので求められない\r
*----------------------------------------------------------------------------*/\r
\r
int StrMultiLen(char *Str)\r
}\r
\r
\r
-/*----- RECT\82ð\83N\83\89\83C\83A\83\93\83g\8dÀ\95W\82©\82ç\83X\83N\83\8a\81[\83\93\8dÀ\95W\82É\95Ï\8a· ------------------------\r
+/*----- RECTをクライアント座標からスクリーン座標に変換 ------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND hWnd : ウインドウハンドル\r
* RECT *Rect : RECT\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void RectClientToScreen(HWND hWnd, RECT *Rect)\r
}\r
\r
\r
-/*----- 16\90i\95¶\8e\9a\82ð\83o\83C\83i\83\8a\82É\95Ï\8a· ----------------------------------------------\r
+/*----- 16進文字をバイナリに変換 ----------------------------------------------\r
*\r
* Parameter\r
-* char Ch : 16\90i\95¶\8e\9a\r
+* char Ch : 16進文字\r
*\r
* Return Value\r
-* int \83o\83C\83i\83\8a\92l\r
+* int バイナリ値\r
*----------------------------------------------------------------------------*/\r
\r
int hex2bin(char Ch)\r
}\r
\r
\r
-/*----- \82t\82m\82b\95¶\8e\9a\97ñ\82ð\95ª\89ð\82·\82é ------------------------------------------------\r
+/*----- UNC文字列を分解する ------------------------------------------------\r
*\r
* Parameter\r
-* char *unc : UNC\95¶\8e\9a\97ñ\r
-* char *Host : \83z\83X\83g\96¼\82ð\83R\83s\81[\82·\82é\83o\83b\83t\83@ (\83T\83C\83Y\82Í HOST_ADRS_LEN+1)\r
-* char *Path : \83p\83X\96¼\82ð\83R\83s\81[\82·\82é\83o\83b\83t\83@ (\83T\83C\83Y\82Í FMAX_PATH+1)\r
-* char *File : \83t\83@\83C\83\8b\96¼\82ð\83R\83s\81[\82·\82é\83o\83b\83t\83@ (\83T\83C\83Y\82Í FMAX_PATH+1)\r
-* char *User : \83\86\81[\83U\96¼\82ð\83R\83s\81[\82·\82é\83o\83b\83t\83@ (\83T\83C\83Y\82Í USER_NAME_LEN+1)\r
-* char *Pass : \83p\83X\83\8f\81[\83h\82ð\83R\83s\81[\82·\82é\83o\83b\83t\83@ (\83T\83C\83Y\82Í PASSWORD_LEN+1)\r
-* int *Port : \83|\81[\83g\94Ô\8d\86\82ð\83R\83s\81[\82·\82é\83o\83b\83t\83@\r
+* char *unc : UNC文字列\r
+* char *Host : ホスト名をコピーするバッファ (サイズは HOST_ADRS_LEN+1)\r
+* char *Path : パス名をコピーするバッファ (サイズは FMAX_PATH+1)\r
+* char *File : ファイル名をコピーするバッファ (サイズは FMAX_PATH+1)\r
+* char *User : ユーザ名をコピーするバッファ (サイズは USER_NAME_LEN+1)\r
+* char *Pass : パスワードをコピーするバッファ (サイズは PASSWORD_LEN+1)\r
+* int *Port : ポート番号をコピーするバッファ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*\r
-* "\"\82Í\91S\82Ä"/"\82É\92u\82«\8a·\82¦\82é\r
+* "\"は全て"/"に置き換える\r
*----------------------------------------------------------------------------*/\r
\r
int SplitUNCpath(char *unc, char *Host, char *Path, char *File, char *User, char *Pass, int *Port)\r
strncpy(Host, Pos1, HOST_ADRS_LEN);\r
}\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(strlen(Host) > 0)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
\r
return(Sts);\r
}\r
\r
\r
-/*----- \93ú\95t\95¶\8e\9a\97ñ(JST)\82ðFILETIME(UTC)\82É\95Ï\8a· ----------------------------------\r
+/*----- 日付文字列(JST)をFILETIME(UTC)に変換 ----------------------------------\r
*\r
* Parameter\r
-* char *Time : \93ú\95t\95¶\8e\9a\97ñ ("yyyy/mm/dd hh:mm")\r
-* FILETIME *Buf : \83t\83@\83C\83\8b\83^\83C\83\80\82ð\95Ô\82·\83\8f\81[\83N\r
+* char *Time : 日付文字列 ("yyyy/mm/dd hh:mm")\r
+* FILETIME *Buf : ファイルタイムを返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* YES/NO=\93ú\95t\8fî\95ñ\82ª\82È\82©\82Á\82½\r
+* int ステータス\r
+* YES/NO=日付情報がなかった\r
*----------------------------------------------------------------------------*/\r
\r
int TimeString2FileTime(char *Time, FILETIME *Buf)\r
}\r
\r
\r
-/*----- FILETIME(UTC)\82ð\93ú\95t\95¶\8e\9a\97ñ(JST)\82É\95Ï\8a· ----------------------------------\r
+/*----- FILETIME(UTC)を日付文字列(JST)に変換 ----------------------------------\r
*\r
* Parameter\r
-* FILETIME *Time : \83t\83@\83C\83\8b\83^\83C\83\80\r
-* char *Buf : \93ú\95t\95¶\8e\9a\97ñ\82ð\95Ô\82·\83\8f\81[\83N\r
-* int Mode : \83\82\81[\83h (DISPFORM_xxx)\r
-* int InfoExist : \8fî\95ñ\82ª\82 \82é\82©\82Ç\82¤\82© (FINFO_xxx)\r
+* FILETIME *Time : ファイルタイム\r
+* char *Buf : 日付文字列を返すワーク\r
+* int Mode : モード (DISPFORM_xxx)\r
+* int InfoExist : 情報があるかどうか (FINFO_xxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void FileTime2TimeString(FILETIME *Time, char *Buf, int Mode, int InfoExist)\r
else\r
{\r
// if (!strftime((char *)str, 100, "%c", (const struct tm *)thetime))\r
-// SetTaskMsg("strftime \82ª\8e¸\94s\82µ\82Ü\82µ\82½!\n");\r
+// SetTaskMsg("strftime が失敗しました!\n");\r
}\r
return;\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\83^\83C\83\80\82ð\8ew\92è\83^\83C\83\80\83]\81[\83\93\82Ì\83\8d\81[\83J\83\8b\83^\83C\83\80\82©\82çGMT\82É\95Ï\8a· ---------\r
+/*----- ファイルタイムを指定タイムゾーンのローカルタイムからGMTに変換 ---------\r
*\r
* Parameter\r
-* FILETIME *Time : \83t\83@\83C\83\8b\83^\83C\83\80\r
-* int TimeZone : \83^\83C\83\80\83]\81[\83\93\r
+* FILETIME *Time : ファイルタイム\r
+* int TimeZone : タイムゾーン\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SpecificLocalFileTime2FileTime(FILETIME *Time, int TimeZone)\r
}\r
\r
\r
-/*----- \91®\90«\95¶\8e\9a\97ñ\82ð\92l\82É\95Ï\8a· --------------------------------------------------\r
+/*----- 属性文字列を値に変換 --------------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \91®\90«\95¶\8e\9a\97ñ ("rwxrwxrwx")\r
+* char *Str : 属性文字列 ("rwxrwxrwx")\r
*\r
* Return Value\r
-* int \92l\r
+* int 値\r
*----------------------------------------------------------------------------*/\r
\r
int AttrString2Value(char *Str)\r
}\r
\r
\r
-/*----- \91®\90«\82Ì\92l\82ð\95¶\8e\9a\97ñ\82É\95Ï\8a· ------------------------------------------------\r
+/*----- 属性の値を文字列に変換 ------------------------------------------------\r
*\r
* Parameter\r
-* int Attr : \91®\90«\82Ì\92l\r
-* char *Buf : \91®\90«\95¶\8e\9a\97ñ\82ð\83Z\83b\83g\82·\82é\83o\83b\83t\83@ ("rwxrwxrwx")\r
+* int Attr : 属性の値\r
+* char *Buf : 属性文字列をセットするバッファ ("rwxrwxrwx")\r
*\r
* Return Value\r
-* int \92l\r
+* int 値\r
*----------------------------------------------------------------------------*/\r
\r
void AttrValue2String(int Attr, char *Buf)\r
}\r
\r
\r
-/*----- INI\83t\83@\83C\83\8b\95¶\8e\9a\97ñ\82ð\90®\8c` -----------------------------------------------\r
+/*----- INIファイル文字列を整形 -----------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void FormatIniString(char *Str)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\91I\91ð ----------------------------------------------------------\r
+/*----- ファイル選択 ----------------------------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\82ð\95Ô\82·\83o\83b\83t\83@\r
-* char *Title : \83^\83C\83g\83\8b\r
-* char *Filters : \83t\83B\83\8b\83^\81[\95¶\8e\9a\97ñ\r
-* char *Ext : \83f\83t\83H\83\8b\83g\8ag\92£\8eq\r
-* int Flags : \92Ç\89Á\82·\82é\83t\83\89\83O\r
-* int Save : \81u\8aJ\82\81v\82©\81u\95Û\91¶\81v\82© (0=\8aJ\82, 1=\95Û\91¶)\r
+* HWND hWnd : ウインドウハンドル\r
+* char *Fname : ファイル名を返すバッファ\r
+* char *Title : タイトル\r
+* char *Filters : フィルター文字列\r
+* char *Ext : デフォルト拡張子\r
+* int Flags : 追加するフラグ\r
+* int Save : 「開く」か「保存」か (0=開く, 1=保存)\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* TRUE/FALSE=\8eæ\8fÁ\r
+* int ステータス\r
+* TRUE/FALSE=取消\r
*----------------------------------------------------------------------------*/\r
\r
int SelectFile(HWND hWnd, char *Fname, char *Title, char *Filters, char *Ext, int Flags, int Save)\r
}\r
\r
\r
-/*----- \83f\83B\83\8c\83N\83g\83\8a\82ð\91I\91ð ----------------------------------------------------\r
+/*----- ディレクトリを選択 ----------------------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* char *Buf : \83f\83B\83\8c\83N\83g\83\8a\96¼\82ð\95Ô\82·\83o\83b\83t\83@\81i\8f\89\8aú\83f\83B\83\8c\83N\83g\83\8a\96¼\81j\r
-* int MaxLen : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
+* HWND hWnd : ウインドウハンドル\r
+* char *Buf : ディレクトリ名を返すバッファ(初期ディレクトリ名)\r
+* int MaxLen : バッファのサイズ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* TRUE/FALSE=\8eæ\8fÁ\r
+* int ステータス\r
+* TRUE/FALSE=取消\r
*----------------------------------------------------------------------------*/\r
\r
int SelectDir(HWND hWnd, char *Buf, int MaxLen)\r
}\r
\r
\r
-/*----- \92l\82É\8aÖ\98A\95t\82¯\82ç\82ê\82½\83\89\83W\83I\83{\83^\83\93\82ð\83`\83F\83b\83N\82·\82é --------------------------\r
+/*----- 値に関連付けられたラジオボタンをチェックする --------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* int Value : \92l\r
-* const RADIOBUTTON *Buttons : \83\89\83W\83I\83{\83^\83\93\82Æ\92l\82Ì\8aÖ\98A\95t\82¯\83e\81[\83u\83\8b\r
-* int Num : \83{\83^\83\93\82Ì\90\94\r
+* HWND hDlg : ダイアログボックスのウインドウハンドル\r
+* int Value : 値\r
+* const RADIOBUTTON *Buttons : ラジオボタンと値の関連付けテーブル\r
+* int Num : ボタンの数\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \92l\82É\8aÖ\98A\95t\82¯\82ç\82ê\82½\83{\83^\83\93\82ª\96³\82¢\8e\9e\82Í\81A\83e\81[\83u\83\8b\82Ì\8dÅ\8f\89\82É\93o\98^\82³\82ê\82Ä\82¢\82é\83{\83^\r
-* \83\93\82ð\83`\83F\83b\83N\82·\82é\r
+* 値に関連付けられたボタンが無い時は、テーブルの最初に登録されているボタ\r
+* ンをチェックする\r
*----------------------------------------------------------------------------*/\r
\r
void SetRadioButtonByValue(HWND hDlg, int Value, const RADIOBUTTON *Buttons, int Num)\r
if(Value == Buttons->Value)\r
{\r
SendDlgItemMessage(hDlg, Buttons->ButID, BM_SETCHECK, 1, 0);\r
- /* \83\89\83W\83I\83{\83^\83\93\82ð\95Ï\8dX\82µ\82½\8e\9e\82É\91¼\82Ì\8d\80\96Ú\82Ì\83n\83C\83h\82È\82Ç\82ð\8ds\82È\82¤\8e\96\82ª */\r
- /* \82 \82é\82Ì\82Å\81A\82»\82Ì\82½\82ß\82É WM_COMMAND \82ð\91\97\82é */\r
+ /* ラジオボタンを変更した時に他の項目のハイドなどを行なう事が */\r
+ /* あるので、そのために WM_COMMAND を送る */\r
SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(Buttons->ButID, 0), 0);\r
break;\r
}\r
}\r
\r
\r
-/*----- \83`\83F\83b\83N\82³\82ê\82Ä\82¢\82é\83{\83^\83\93\82É\8aÖ\98A\95t\82¯\82ç\82ê\82½\92l\82ð\95Ô\82· ----------------------\r
+/*----- チェックされているボタンに関連付けられた値を返す ----------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* const RADIOBUTTON *Buttons : \83\89\83W\83I\83{\83^\83\93\82Æ\92l\82Ì\8aÖ\98A\95t\82¯\83e\81[\83u\83\8b\r
-* int Num : \83{\83^\83\93\82Ì\90\94\r
+* HWND hDlg : ダイアログボックスのウインドウハンドル\r
+* const RADIOBUTTON *Buttons : ラジオボタンと値の関連付けテーブル\r
+* int Num : ボタンの数\r
*\r
* Return Value\r
-* int \92l\r
+* int 値\r
*\r
* Note\r
-* \82Ç\82Ì\83{\83^\83\93\82à\83`\83F\83b\83N\82³\82ê\82Ä\82¢\82È\82¢\8e\9e\82Í\81A\83e\81[\83u\83\8b\82Ì\8dÅ\8f\89\82É\93o\98^\82³\82ê\82Ä\82¢\82é\83{\r
-* \83^\83\93\82Ì\92l\82ð\95Ô\82·\r
+* どのボタンもチェックされていない時は、テーブルの最初に登録されているボ\r
+* タンの値を返す\r
*----------------------------------------------------------------------------*/\r
\r
int AskRadioButtonValue(HWND hDlg, const RADIOBUTTON *Buttons, int Num)\r
}\r
\r
\r
-/*----- \82P\82U\90i\95¶\8e\9a\97ñ\82ð\90\94\92l\82É\95Ï\8a· ----------------------------------------------\r
+/*----- 16進文字列を数値に変換 ----------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* int \92l\r
+* int 値\r
*----------------------------------------------------------------------------*/\r
\r
int xtoi(char *Str)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\82ª\93Ç\82Ý\8eæ\82è\89Â\94\\82©\82Ç\82¤\82©\82ð\95Ô\82· ----------------------------------\r
+/*----- ファイルが読み取り可能かどうかを返す ----------------------------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
+* char *Fname : ファイル名\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int CheckFileReadable(char *Fname)\r
HANDLE iFileHandle;\r
SECURITY_ATTRIBUTES Sec;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
\r
Sec.nLength = sizeof(SECURITY_ATTRIBUTES);\r
Sec.lpSecurityDescriptor = NULL;\r
if((iFileHandle = CreateFile(Fname, GENERIC_READ,\r
FILE_SHARE_READ|FILE_SHARE_WRITE, &Sec, OPEN_EXISTING, 0, NULL)) != INVALID_HANDLE_VALUE)\r
{\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
CloseHandle(iFileHandle);\r
}\r
return(Sts);\r
\r
\r
\r
-/*----- int\92l\82Ì\93ü\82ê\91Ö\82¦ -------------------------------------------------------\r
+/*----- int値の入れ替え -------------------------------------------------------\r
*\r
* Parameter\r
-* int *Num1 : \90\94\92l\82P\r
-* int *Num2 : \90\94\92l\82Q\r
+* int *Num1 : 数値1\r
+* int *Num2 : 数値2\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SwapInt(int *Num1, int *Num2)\r
}\r
\r
\r
-/*----- \8ew\92è\82³\82ê\82½\83t\83H\83\8b\83_\82ª\82 \82é\82©\82Ç\82¤\82©\83`\83F\83b\83N -------------------------------\r
+/*----- 指定されたフォルダがあるかどうかチェック -------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\r
+* char *Path : パス\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (YES/NO)\r
+* int ステータス (YES/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int IsFolderExist(char *Path)\r
}\r
\r
\r
-/*----- \83e\81[\83u\83\8b\82É\82µ\82½\82ª\82Á\82Ä\90\94\92l\82ð\93o\98^ -----------------------------------------\r
+/*----- テーブルにしたがって数値を登録 -----------------------------------------\r
*\r
* Parameter\r
-* int x : \90\94\92l\r
-* int Dir : \95Ï\8a·\95û\8cü\r
-* INTCONVTBL *Tbl : \83e\81[\83u\83\8b\r
-* int Num : \83e\81[\83u\83\8b\82Ì\90\94\92l\82Ì\90\94\r
+* int x : 数値\r
+* int Dir : 変換方向\r
+* INTCONVTBL *Tbl : テーブル\r
+* int Num : テーブルの数値の数\r
*\r
* Return Value\r
-* int \90\94\92l\r
+* int 数値\r
*----------------------------------------------------------------------------*/\r
\r
int ConvertNum(int x, int Dir, const INTCONVTBL *Tbl, int Num)\r
\r
\r
\r
-/*----- \83t\83@\83C\83\8b\82ð\83S\83~\94 \82É\8dí\8f\9c ------------------------------------------------\r
+/*----- ファイルをゴミ箱に削除 ------------------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83t\83@\83C\83\8b\96¼\r
+* char *Path : ファイル名\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (0=\90³\8fí\8fI\97¹)\r
+* int ステータス (0=正常終了)\r
*----------------------------------------------------------------------------*/\r
\r
int MoveFileToTrashCan(char *Path)\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83I\83v\83V\83\87\83\93\90Ý\92è\r
+* オプション設定\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include <htmlhelp.h>\r
#include "helpid.h"\r
\r
-// UTF-8\91Î\89\9e\r
+// UTF-8対応\r
#undef __MBSWRAPPER_H__\r
#include "mbswrapper.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static BOOL CALLBACK UserSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
static BOOL CALLBACK Trmode1SettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
\r
\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
extern HWND hHelpWin;\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
extern char UserMailAdrs[USER_MAIL_LEN+1];\r
extern char ViewerName[VIEWERS][FMAX_PATH+1];\r
extern int ConnectOnStart;\r
extern int FolderAttrNum;\r
\r
\r
-/*----- \83I\83v\83V\83\87\83\93\82Ì\83v\83\8d\83p\83e\83B\83V\81[\83g ------------------------------------------\r
+/*----- オプションのプロパティシート ------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetOption(int Start)\r
}\r
\r
\r
-/*----- \83\86\81[\83U\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
+/*----- ユーザ設定ウインドウのコールバック ------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \93]\91\97\90Ý\92è\82P\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
+/*----- 転送設定1ウインドウのコールバック ------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \93]\91\97\90Ý\92è\82Q\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
+/*----- 転送設定2ウインドウのコールバック ------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \93]\91\97\90Ý\92è\82R\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
+/*----- 転送設定3ウインドウのコールバック ------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\91®\90«\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------\r
+/*----- ファイル属性設定ウインドウのコールバック ------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\96¼\82Æ\91®\90«\82ð\83\8a\83X\83g\83r\83\85\81[\82É\92Ç\89Á ----------------------------------\r
+/*----- ファイル名と属性をリストビューに追加 ----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
-* char *Attr : \91®\90«\r
+* HWND hDlg : ウインドウハンドル\r
+* char *Fname : ファイル名\r
+* char *Attr : 属性\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void AddFnameAttrToListView(HWND hDlg, char *Fname, char *Attr)\r
}\r
\r
\r
-/*----- \83\8a\83X\83g\83r\83\85\81[\82Ì\93à\97e\82ð\83}\83\8b\83`\95¶\8e\9a\97ñ\82É\82·\82é --------------------------------\r
+/*----- リストビューの内容をマルチ文字列にする --------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* int CtrlList : \83\8a\83X\83g\83{\83b\83N\83X\82ÌID\r
-* char *Buf : \95¶\8e\9a\97ñ\82ð\83Z\83b\83g\82·\82é\83o\83b\83t\83@\r
-* int BufSize : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
+* HWND hDlg : ダイアログボックスのウインドウハンドル\r
+* int CtrlList : リストボックスのID\r
+* char *Buf : 文字列をセットするバッファ\r
+* int BufSize : バッファのサイズ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void GetFnameAttrFromListView(HWND hDlg, char *Buf)\r
}\r
\r
\r
-/*----- \83~\83\89\81[\83\8a\83\93\83O\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------------\r
+/*----- ミラーリングウインドウのコールバック ----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \91\80\8dì\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------------------\r
+/*----- 操作設定ウインドウのコールバック --------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \95\\8e¦\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------------------\r
+/*----- 表示設定ウインドウのコールバック --------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83t\83H\83\93\83g\82ð\91I\82Ô --------------------------------------------------------\r
+/*----- フォントを選ぶ --------------------------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* LOGFONT *lFont : \83t\83H\83\93\83g\8fî\95ñ\r
+* HWND hWnd : ウインドウハンドル\r
+* LOGFONT *lFont : フォント情報\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Parameter change\r
-* HFONT *hFont : \83t\83H\83\93\83g\82Ì\83n\83\93\83h\83\8b\r
-* LOGFONT *lFont : \83t\83H\83\93\83g\8fî\95ñ\r
+* HFONT *hFont : フォントのハンドル\r
+* LOGFONT *lFont : フォント情報\r
*----------------------------------------------------------------------------*/\r
\r
static int SelectListFont(HWND hWnd, LOGFONT *lFont)\r
}\r
\r
\r
-/*----- \90Ú\91±\81^\90Ø\92f\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N --------------------------------\r
+/*----- 接続/切断設定ウインドウのコールバック --------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- FireWall\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------------\r
+/*----- FireWall設定ウインドウのコールバック ----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83c\81[\83\8b\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
+/*----- ツール設定ウインドウのコールバック ------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83T\83E\83\93\83h\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------------\r
+/*----- サウンド設定ウインドウのコールバック ----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \82»\82Ì\91¼\82Ì\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------------------\r
+/*----- その他の設定ウインドウのコールバック ----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83\\81[\83g\90Ý\92è\83E\83C\83\93\83h\83E --------------------------------------------------\r
+/*----- ソート設定ウインドウ --------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (YES=\8eÀ\8ds/NO=\8eæ\8fÁ)\r
+* int ステータス (YES=実行/NO=取消)\r
*----------------------------------------------------------------------------*/\r
\r
int SortSetting(void)\r
}\r
\r
\r
-/*----- \83\\81[\83g\90Ý\92è\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------------\r
+/*----- ソート設定ウインドウのコールバック ------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
}\r
\r
\r
-/*----- \83_\83C\83A\83\8d\83O\82Ì\83R\83\93\83g\83\8d\81[\83\8b\82©\82ç\82P\82O\90i\90\94\82ð\8eæ\93¾ ----------------------------\r
+/*----- ダイアログのコントロールから10進数を取得 ----------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* int Ctrl : \83R\83\93\83g\83\8d\81[\83\8b\82ÌID\r
+* HWND hDlg : ウインドウハンドル\r
+* int Ctrl : コントロールのID\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static int GetDecimalText(HWND hDlg, int Ctrl)\r
}\r
\r
\r
-/*----- \83_\83C\83A\83\8d\83O\82Ì\83R\83\93\83g\83\8d\81[\83\8b\82É\82P\82O\90i\90\94\82ð\83Z\83b\83g ----------------------------\r
+/*----- ダイアログのコントロールに10進数をセット ----------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* int Ctrl : \83R\83\93\83g\83\8d\81[\83\8b\82ÌID\r
-* int Num : \90\94\92l\r
+* HWND hDlg : ウインドウハンドル\r
+* int Ctrl : コントロールのID\r
+* int Num : 数値\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void SetDecimalText(HWND hDlg, int Ctrl, int Num)\r
}\r
\r
\r
-/*----- \90Ý\92è\92l\82Ì\94Í\88Í\83`\83F\83b\83N --------------------------------------------------\r
+/*----- 設定値の範囲チェック --------------------------------------------------\r
*\r
* Parameter\r
-* int *Cur : \90Ý\92è\92l\r
-* int Max : \8dÅ\91å\92l\r
-* int Min : \8dÅ\8f¬\92l\r
+* int *Cur : 設定値\r
+* int Max : 最大値\r
+* int Min : 最小値\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Parameter change\r
-* int *Cur : \90Ý\92è\92l\r
+* int *Cur : 設定値\r
*----------------------------------------------------------------------------*/\r
\r
static void CheckRange2(int *Cur, int Max, int Min)\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ð\83\8a\83X\83g\83{\83b\83N\83X\82É\92Ç\89Á ------------------------------------------\r
+/*----- 文字列をリストボックスに追加 ------------------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* int CtrlList : \83\8a\83X\83g\83{\83b\83N\83X\82ÌID\r
-* int BufSize : \83o\83b\83t\83@\83T\83C\83Y\r
+* HWND hDlg : ダイアログボックスのウインドウハンドル\r
+* char *Str : 文字列\r
+* int CtrlList : リストボックスのID\r
+* int BufSize : バッファサイズ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void AddTextToListBox(HWND hDlg, char *Str, int CtrlList, int BufSize)\r
}\r
\r
\r
-/*----- \83}\83\8b\83`\95¶\8e\9a\97ñ\82ð\83\8a\83X\83g\83{\83b\83N\83X\82É\83Z\83b\83g ----------------------------------\r
+/*----- マルチ文字列をリストボックスにセット ----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* int CtrlList : \83\8a\83X\83g\83{\83b\83N\83X\82ÌID\r
-* char *Text : \95¶\8e\9a\97ñ\r
+* HWND hDlg : ダイアログボックスのウインドウハンドル\r
+* int CtrlList : リストボックスのID\r
+* char *Text : 文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void SetMultiTextToList(HWND hDlg, int CtrlList, char *Text)\r
}\r
\r
\r
-/*----- \83\8a\83X\83g\83{\83b\83N\83X\82Ì\93à\97e\82ð\83}\83\8b\83`\95¶\8e\9a\97ñ\82É\82·\82é ------------------------------\r
+/*----- リストボックスの内容をマルチ文字列にする ------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* int CtrlList : \83\8a\83X\83g\83{\83b\83N\83X\82ÌID\r
-* char *Buf : \95¶\8e\9a\97ñ\82ð\83Z\83b\83g\82·\82é\83o\83b\83t\83@\r
-* int BufSize : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
+* HWND hDlg : ダイアログボックスのウインドウハンドル\r
+* int CtrlList : リストボックスのID\r
+* char *Buf : 文字列をセットするバッファ\r
+* int BufSize : バッファのサイズ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void GetMultiTextFromList(HWND hDlg, int CtrlList, char *Buf, int BufSize)\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \82q\82`\82r\8aÖ\8cW\r
+* RAS関係\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
static BOOL CALLBACK DialPassCallBackProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static HINSTANCE m_hDll = NULL;\r
static HINSTANCE m_hDll2 = NULL;\r
\r
\r
\r
-/*----- RAS\83\89\83C\83u\83\89\83\8a\82ð\83\8d\81[\83h\82·\82é ---------------------------------------------\r
+/*----- RASライブラリをロードする ---------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* RAS\83\89\83C\83u\83\89\83\8a\82Í\95K\82¸\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82é\82à\82Ì\82Å\82Í\82È\82¢\82Ì\82Å\81A\83X\83^\83e\83B\83b\83N\82É\r
-* \83\8a\83\93\83N\82µ\82È\82¢\81B\r
+* RASライブラリは必ずインストールされるものではないので、スタティックに\r
+* リンクしない。\r
*----------------------------------------------------------------------------*/\r
\r
void LoadRasLib(void)\r
}\r
\r
\r
-/*----- RAS\83\89\83C\83u\83\89\83\8a\82ð\83\8a\83\8a\81[\83X\82·\82é -------------------------------------------\r
+/*----- RASライブラリをリリースする -------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ReleaseRasLib(void)\r
}\r
\r
\r
-/*----- RAS\82ª\8eg\82¦\82é\82©\82Ç\82¤\82©\82ð\95Ô\82· ---------------------------------------------\r
+/*----- RASが使えるかどうかを返す ---------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int RAS\82ª\8eg\82¦\82é\82©\82Ç\82¤\82©\r
+* int RASが使えるかどうか\r
* YES/NO\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \8c»\8dÝ\82ÌRAS\83R\83l\83N\83V\83\87\83\93\88ê\97\97\82ð\95Ô\82· ---------------------------------------\r
+/*----- 現在のRASコネクション一覧を返す ---------------------------------------\r
*\r
* Parameter\r
-* RASCONN **Buf : \88ê\97\97\82Ö\82Ì\83|\83C\83\93\83^\82ð\95Ô\82·\83\8f\81[\83N\r
+* RASCONN **Buf : 一覧へのポインタを返すワーク\r
*\r
* Return Value\r
-* int \8cÂ\90\94 (-1=\83G\83\89\81[)\r
+* int 個数 (-1=エラー)\r
*\r
* Note\r
-* Buf\82Ì\97Ì\88æ\82Í\8cÄ\8fo\91¤\82Å\8aJ\95ú\82·\82é\82±\82Æ\r
+* Bufの領域は呼出側で開放すること\r
*----------------------------------------------------------------------------*/\r
\r
static int GetCurConnections(RASCONN **Buf)\r
/*----- RasHangUp()------------------------------------------------------------\r
*\r
* Parameter\r
-* HRASCONN hRasConn : \83n\83\93\83h\83\8b\r
+* HRASCONN hRasConn : ハンドル\r
*\r
* Return Value\r
-* DWORD \83X\83e\81[\83^\83X\r
+* DWORD ステータス\r
*\r
* Note\r
-* \90Ø\92f\82ª\8a®\97¹\82·\82é\82Ü\82Å\91Ò\82Â\r
+* 切断が完了するまで待つ\r
*----------------------------------------------------------------------------*/\r
\r
static DWORD RasHangUpWait(HRASCONN hRasConn)\r
}\r
\r
\r
-/*----- \8c»\8dÝ\82ÌRAS\83R\83l\83N\83V\83\87\83\93\82ð\90Ø\92f\82·\82é ---------------------------------------\r
+/*----- 現在のRASコネクションを切断する ---------------------------------------\r
*\r
* Parameter\r
-* RASCONN *RasConn : \90Ú\91±\88ê\97\97\r
-* int Num : \8cÂ\90\94\r
+* RASCONN *RasConn : 接続一覧\r
+* int Num : 個数\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (SUCCESS/FAIL)\r
+* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL)\r
*----------------------------------------------------------------------------*/\r
\r
static int DoDisconnect(RASCONN *RasConn, int Num)\r
int i;\r
int Sts;\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
if(Num > 0)\r
{\r
SetTaskMsg(MSGJPN220);\r
for(i = 0; i < Num; i++)\r
{\r
if(RasHangUpWait(RasConn[i].hrasconn) != 0)\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
}\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- RAS\82ð\90Ø\92f\82·\82é ---------------------------------------------------------\r
+/*----- RASを切断する ---------------------------------------------------------\r
*\r
* Parameter\r
-* int Notify : \8am\94F\82·\82é\82©\82Ç\82¤\82© (YES/NO)\r
+* int Notify : 確認するかどうか (YES/NO)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DisconnectRas(int Notify)\r
}\r
\r
\r
-/*----- RAS\82Ì\83G\83\93\83g\83\8a\88ê\97\97\82ð\83R\83\93\83{\83{\83b\83N\83X\82É\83Z\83b\83g\82·\82é -------------------------\r
+/*----- RASのエントリ一覧をコンボボックスにセットする -------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83_\83C\83A\83\8d\83O\83{\83b\83N\83X\82Ì\83n\83\93\83h\83\8b\r
-* int Item : \83R\83\93\83{\83{\83b\83N\83X\82Ì\83\8a\83\\81[\83X\94Ô\8d\86\r
-* char *CurName : \8f\89\8aú\92l\r
+* HWND hDlg : ダイアログボックスのハンドル\r
+* int Item : コンボボックスのリソース番号\r
+* char *CurName : 初期値\r
*\r
* Return Value\r
-* int \83G\83\93\83g\83\8a\90\94\r
+* int エントリ数\r
*----------------------------------------------------------------------------*/\r
\r
int SetRasEntryToComboBox(HWND hDlg, int Item, char *CurName)\r
}\r
\r
\r
-/*----- RAS\82Ì\90Ú\91±\82ð\8ds\82¤ -------------------------------------------------------\r
+/*----- RASの接続を行う -------------------------------------------------------\r
*\r
* Parameter\r
-* int Dialup : \83_\83C\83A\83\8b\83A\83b\83v\82·\82é\82©\82Ç\82¤\82© (YES/NO)\r
-* int UseThis : \95K\82¸\82±\82Ì\83G\83\93\83g\83\8a\82É\90Ú\91±\82·\82é\82©\82Ç\82¤\82© (YES/NO)\r
-* int Notify : \8dÄ\90Ú\91±\91O\82É\8am\94F\82·\82é\82©\82Ç\82¤\82© (YES/NO)\r
-* char *Name : \90Ú\91±\90æ\r
+* int Dialup : ダイアルアップするかどうか (YES/NO)\r
+* int UseThis : 必ずこのエントリに接続するかどうか (YES/NO)\r
+* int Notify : 再接続前に確認するかどうか (YES/NO)\r
+* char *Name : 接続先\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (SUCCESS/FAIL)\r
+* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL)\r
*----------------------------------------------------------------------------*/\r
\r
int ConnectRas(int Dialup, int UseThis, int Notify, char *Name)\r
BOOL Flg;\r
OSVERSIONINFO VerInfo;\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
if(Dialup == YES)\r
{\r
if(m_hDll != NULL)\r
{\r
- /* \8c»\8dÝ\82Ì\90Ú\91±\82ð\8am\94F */\r
+ /* 現在の接続を確認 */\r
DoDial = 1;\r
if((Num = GetCurConnections(&RasConn)) != -1)\r
{\r
\r
if(DoDial != 0)\r
{\r
- /* \90Ú\91±\82·\82é */\r
+ /* 接続する */\r
SetTaskMsg(MSGJPN221);\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
\r
Num = 0;\r
VerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);\r
DlgParam.reserved = 0;\r
DlgParam.reserved2 = 0;\r
if((*m_RasDialDlg)(NULL, Name, NULL, &DlgParam) != 0)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
else\r
SetTaskMsg(MSGJPN222);\r
(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(dial_password_dlg), GetMainHwnd(), (DLGPROC)DialPassCallBackProc, (LPARAM)&Param) == YES))\r
{\r
if(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(dial_dlg), GetMainHwnd(), (DLGPROC)DialCallBackProc, (LPARAM)&Param) == YES)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
}\r
}\r
\r
\r
-/*----- RAS\83_\83C\83A\83\8b\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N -----------------------------------\r
+/*----- RASダイアルウインドウのコールバック -----------------------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
case WM_DIAL_MSG :\r
if(lParam != 0)\r
{\r
- /* \83G\83\89\81[\94\90¶ */\r
+ /* エラー発生 */\r
if((*m_RasGetErrorString)((UINT)lParam, (LPTSTR)Tmp, RAS_NAME_LEN+25) != 0)\r
sprintf(Tmp, MSGJPN224);\r
RasHangUpWait(hRasConn);\r
}\r
else if(wParam & RASCS_DONE)\r
{\r
- /* \8fI\97¹ */\r
+ /* 終了 */\r
EndDialog(hDlg, YES);\r
}\r
else\r
{\r
- /* \83X\83e\81[\83^\83X\95Ï\8dX */\r
+ /* ステータス変更 */\r
MakeRasConnMsg(Param->szPhoneNumber, wParam, Tmp);\r
SendDlgItemMessage(hDlg, DIAL_STATUS, WM_SETTEXT, 0, (LPARAM)Tmp);\r
}\r
}\r
\r
\r
-/*----- RasDial()\82Ì\83R\81[\83\8b\83o\83b\83N -----------------------------------------------\r
+/*----- RasDial()のコールバック -----------------------------------------------\r
*\r
* Parameter\r
-* UINT unMsg : \83\81\83b\83Z\81[\83W\r
-* RASCONNSTATE rasconnstate : \83X\83e\81[\83^\83X\r
-* DWORD dwError : \83G\83\89\81[\r
+* UINT unMsg : メッセージ\r
+* RASCONNSTATE rasconnstate : ステータス\r
+* DWORD dwError : エラー\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static VOID WINAPI RasDialFunc(UINT unMsg, RASCONNSTATE rasconnstate, DWORD dwError)\r
}\r
\r
\r
-/*----- RasDial()\82Ì\83X\83e\81[\83^\83X\83\81\83b\83Z\81[\83W\82ð\8dì\90¬\82·\82é -----------------------------\r
+/*----- RasDial()のステータスメッセージを作成する -----------------------------\r
*\r
* Parameter\r
-* char *Phone : \93d\98b\94Ô\8d\86\r
-* RASCONNSTATE rasconn : \83X\83e\81[\83^\83X\r
-* char *Buf : \95¶\8e\9a\97ñ\82ð\83Z\83b\83g\82·\82é\83o\83b\83t\83@\r
+* char *Phone : 電話番号\r
+* RASCONNSTATE rasconn : ステータス\r
+* char *Buf : 文字列をセットするバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void MakeRasConnMsg(char *Phone, RASCONNSTATE rasconn, char *Buf)\r
}\r
\r
\r
-/*----- \83\86\81[\83U\96¼\81A\83p\83X\83\8f\81[\83h\93ü\97Í\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------\r
+/*----- ユーザ名、パスワード入力ウインドウのコールバック ----------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \90³\8bK\95\\8c»\8c\9f\8dõ\r
+* 正規表現検索\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include "jreusr.h"\r
\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static JRE2 m_jreData;\r
static HINSTANCE m_hDll = NULL;\r
\r
\r
\r
-/*----- \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82ð\83\8d\81[\83h\82·\82é ----------------------------------------\r
+/*----- 正規表現ライブラリをロードする ----------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
{\r
int Sts;\r
\r
- // UTF-8\91Î\89\9e\r
- // JRE32.DLL\82ÍUTF-8\82É\94ñ\91Î\89\9e\r
+ // UTF-8対応\r
+ // JRE32.DLLはUTF-8に非対応\r
#ifdef DISABLE_JRE32DLL\r
return FALSE;\r
#endif\r
}\r
\r
\r
-/*----- \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82ð\83\8a\83\8a\81[\83X\82·\82é --------------------------------------\r
+/*----- 正規表現ライブラリをリリースする --------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ReleaseJre(void)\r
}\r
\r
\r
-/*----- \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82ª\8eg\82¦\82é\82©\82Ç\82¤\82©\82ð\95Ô\82· ------------------------------\r
+/*----- 正規表現ライブラリが使えるかどうかを返す ------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82ª\8eg\82¦\82é\82©\82Ç\82¤\82©\r
+* int 正規表現ライブラリが使えるかどうか\r
* TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82Ì\83o\81[\83W\83\87\83\93\82ð\95Ô\82· a---------------------------------\r
+/*----- 正規表現ライブラリのバージョンを返す a---------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83o\81[\83W\83\87\83\93\r
+* int バージョン\r
*----------------------------------------------------------------------------*/\r
\r
int GetJreVersion(void)\r
}\r
\r
\r
-/*----- \90³\8bK\95\\8c»\8c\9f\8dõ\8e®\82ð\83R\83\93\83p\83C\83\8b\82·\82é ----------------------------------------\r
+/*----- 正規表現検索式をコンパイルする ----------------------------------------\r
*\r
* Parameter\r
-* kchar *Str : \8c\9f\8dõ\8e®\r
+* kchar *Str : 検索式\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
+* int ステータス\r
* TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ª\88ê\92v\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82· ----------------------------------------\r
+/*----- 文字列が一致するかどうかを返す ----------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* UINT nStart : \8c\9f\8dõ\8aJ\8en\88Ê\92u\r
+* char *Str : 文字列\r
+* UINT nStart : 検索開始位置\r
*\r
* Return Value\r
-* char *\8c©\82Â\82©\82Á\82½\88Ê\92u\r
-* NULL=\8c©\82Â\82©\82ç\82È\82©\82Á\82½\r
+* char *見つかった位置\r
+* NULL=見つからなかった\r
*----------------------------------------------------------------------------*/\r
\r
char *JreGetStrMatchInfo(char *Str, UINT nStart)\r
-/*=============================================================================\r
-* \83\8c\83W\83X\83g\83\8a\8aÖ\8cW\r
+/*=============================================================================\r
+* レジストリ関係\r
*\r
*\r
===============================================================================\r
/ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
/============================================================================*/\r
\r
-// VC 8.0(2005)\88È\8fã\82Å\82Ì\82Ý rand_s \82ð\97\98\97p\89Â\94\\r
+// VC 8.0(2005)以上でのみ rand_s を利用可能\r
#if 1400 <= _MSC_VER\r
//#define _CRT_RAND_S\r
#endif\r
#include "aes.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static void SaveStr(HKEY hKey, char *Key, char *Str, char *DefaultStr);\r
static void SaveIntNum(HKEY hKey, char *Key, int Num, int DefaultNum);\r
\r
DWORD GetRandamDWRODValue(void);\r
\r
-/* 2010.01.30 genta \92Ç\89Á */\r
+/* 2010.01.30 genta 追加 */\r
static char SecretKey[FMAX_PATH+1];\r
static int SecretKeyLength;\r
static int IsMasterPasswordError = PASSWORD_OK;\r
static int IsRndSourceInit = 0;\r
static ulong RndSource[9];\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
extern int WinPosX;\r
extern int WinPosY;\r
extern int WinWidth;\r
extern int FolderAttr;\r
extern int FolderAttrNum;\r
\r
-/*----- \83}\83X\83^\83p\83X\83\8f\81[\83h\82Ì\90Ý\92è ----------------------------------------------\r
+/*----- マスタパスワードの設定 ----------------------------------------------\r
*\r
* Parameter\r
-* const char* Password : \83}\83X\83^\81[\83p\83X\83\8f\81[\83h\r
+* const char* Password : マスターパスワード\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
void SetMasterPassword( const char* Password )\r
{\r
}\r
SecretKeyLength = strlen( SecretKey );\r
\r
- /* \96¢\8c\9f\8fØ\82È\82Ì\82Å\81C\8f\89\8aú\8fó\91Ô\82ÍOK\82É\82·\82é (\8b\90§\8dÄ\90Ý\92è\81¨\95Û\91¶\82É\82ð\89Â\94\\82É\82·\82é)*/\r
+ /* 未検証なので,初期状態はOKにする (強制再設定→保存にを可能にする)*/\r
IsMasterPasswordError = PASSWORD_OK;\r
}\r
\r
-/*----- \83}\83X\83^\83p\83X\83\8f\81[\83h\82Ì\8fó\91Ô\8eæ\93¾ ----------------------------------------------\r
+/*----- マスタパスワードの状態取得 ----------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
* PASSWORD_OK : OK\r
-* PASSWORD_UNMATCH : \83p\83X\83\8f\81[\83h\95s\88ê\92v\r
-* BAD_PASSWORD_HASH : \83p\83X\83\8f\81[\83h\8am\94F\8e¸\94s\r
+* PASSWORD_UNMATCH : パスワード不一致\r
+* BAD_PASSWORD_HASH : パスワード確認失敗\r
*----------------------------------------------------------------------------*/\r
int GetMasterPasswordStatus(void)\r
{\r
return IsMasterPasswordError;\r
}\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a\81^INI\83t\83@\83C\83\8b\82Ì\83}\83X\83^\81[\83p\83X\83\8f\81[\83h\82Ì\8c\9f\8fØ\82ð\8ds\82¤ ------------\r
+/*----- レジストリ/INIファイルのマスターパスワードの検証を行う ------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
* \r
int i;\r
\r
SetRegType(REGTYPE_INI);\r
- if((i = OpenReg("FFFTP", &hKey3)) != SUCCESS)\r
+ if((i = OpenReg("FFFTP", &hKey3)) != FFFTP_SUCCESS)\r
{\r
if(AskForceIni() == NO)\r
{\r
i = OpenReg("FFFTP", &hKey3);\r
}\r
}\r
- if(i == SUCCESS){\r
+ if(i == FFFTP_SUCCESS){\r
char checkbuf[48];\r
int salt = 0;\r
\r
if( ReadIntValueFromReg(hKey3, "CredentialSalt", &salt)){\r
SetHashSalt( salt );\r
}\r
- if( ReadStringFromReg(hKey3, "CredentialCheck", checkbuf, sizeof( checkbuf )) == SUCCESS ){\r
+ if( ReadStringFromReg(hKey3, "CredentialCheck", checkbuf, sizeof( checkbuf )) == FFFTP_SUCCESS ){\r
switch( CheckPasswordValidity( SecretKey, SecretKeyLength, checkbuf ) ){\r
case 0: /* not match */\r
IsMasterPasswordError = PASSWORD_UNMATCH;\r
return NO;\r
}\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a\81^INI\83t\83@\83C\83\8b\82É\90Ý\92è\92l\82ð\95Û\91¶ ---------------------------------\r
+/*----- レジストリ/INIファイルに設定値を保存 ---------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SaveRegistory(void)\r
HISTORYDATA DefaultHist;\r
\r
if( GetMasterPasswordStatus() == PASSWORD_UNMATCH ){\r
- /* 2010.01.30 genta: \83}\83X\83^\81[\83p\83X\83\8f\81[\83h\82ª\95s\88ê\92v\82Ì\8fê\8d\87\82Í\95s\97p\88Ó\82É\8fã\8f\91\82«\82µ\82È\82¢ */\r
+ /* 2010.01.30 genta: マスターパスワードが不一致の場合は不用意に上書きしない */\r
return;\r
}\r
\r
SetRegType(RegType);\r
- if(CreateReg("FFFTP", &hKey3) == SUCCESS)\r
+ if(CreateReg("FFFTP", &hKey3) == FFFTP_SUCCESS)\r
{\r
char buf[48];\r
int salt = GetTickCount();\r
CreatePasswordHash( SecretKey, SecretKeyLength, buf );\r
WriteStringToReg(hKey3, "CredentialCheck", buf);\r
\r
- if(CreateSubKey(hKey3, "Options", &hKey4) == SUCCESS)\r
+ if(CreateSubKey(hKey3, "Options", &hKey4) == FFFTP_SUCCESS)\r
{\r
WriteIntValueToReg(hKey4, "NoSave", SuppressSave);\r
\r
\r
WriteIntValueToReg(hKey4, "HistNum", FileHist);\r
\r
- /* Ver1.54a\88È\91O\82Ì\8c`\8e®\82Ì\83q\83X\83g\83\8a\83f\81[\83^\82Í\8dí\8f\9c */\r
+ /* Ver1.54a以前の形式のヒストリデータは削除 */\r
DeleteValue(hKey4, "Hist");\r
\r
- /* \83q\83X\83g\83\8a\82Ì\90Ý\92è\82ð\95Û\91¶ */\r
+ /* ヒストリの設定を保存 */\r
CopyDefaultHistory(&DefaultHist);\r
n = 0;\r
for(i = AskHistoryNum(); i > 0; i--)\r
{\r
- if(GetHistoryByNum(i-1, &Hist) == SUCCESS)\r
+ if(GetHistoryByNum(i-1, &Hist) == FFFTP_SUCCESS)\r
{\r
sprintf(Str, "History%d", n);\r
- if(CreateSubKey(hKey4, Str, &hKey5) == SUCCESS)\r
+ if(CreateSubKey(hKey4, Str, &hKey5) == FFFTP_SUCCESS)\r
{\r
SaveStr(hKey5, "HostAdrs", Hist.HostAdrs, DefaultHist.HostAdrs);\r
SaveStr(hKey5, "UserName", Hist.UserName, DefaultHist.UserName);\r
SaveIntNum(hKey5, "UseIt", Hist.DialupAlways, DefaultHist.DialupAlways);\r
SaveIntNum(hKey5, "Notify", Hist.DialupNotify, DefaultHist.DialupNotify);\r
SaveStr(hKey5, "DialTo", Hist.DialEntry, DefaultHist.DialEntry);\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+ // 暗号化通信対応\r
SaveIntNum(hKey5, "FTPES", Hist.UseFTPES, DefaultHist.UseFTPES);\r
SaveIntNum(hKey5, "FTPIS", Hist.UseFTPIS, DefaultHist.UseFTPIS);\r
SaveIntNum(hKey5, "SFTP", Hist.UseSFTP, DefaultHist.UseSFTP);\r
}\r
WriteIntValueToReg(hKey4, "SavedHist", n);\r
\r
- /* \97]\95ª\82È\83q\83X\83g\83\8a\82ª\82 \82Á\82½\82ç\8dí\8f\9c */\r
+ /* 余分なヒストリがあったら削除 */\r
for(; n < 999; n++)\r
{\r
sprintf(Str, "History%d", n);\r
- if(DeleteSubKey(hKey4, Str) != SUCCESS)\r
+ if(DeleteSubKey(hKey4, Str) != FFFTP_SUCCESS)\r
break;\r
}\r
\r
- /* \83z\83X\83g\82Ì\90Ý\92è\82ð\95Û\91¶ */\r
+ /* ホストの設定を保存 */\r
CopyDefaultHost(&DefaultHost);\r
i = 0;\r
- while(CopyHostFromList(i, &Host) == SUCCESS)\r
+ while(CopyHostFromList(i, &Host) == FFFTP_SUCCESS)\r
{\r
sprintf(Str, "Host%d", i);\r
- if(CreateSubKey(hKey4, Str, &hKey5) == SUCCESS)\r
+ if(CreateSubKey(hKey4, Str, &hKey5) == FFFTP_SUCCESS)\r
{\r
// SaveIntNum(hKey5, "Set", Host.Level, DefaultHost.Level);\r
WriteIntValueToReg(hKey5, "Set", Host.Level);\r
SaveIntNum(hKey5, "UseIt", Host.DialupAlways, DefaultHost.DialupAlways);\r
SaveIntNum(hKey5, "Notify", Host.DialupNotify, DefaultHost.DialupNotify);\r
SaveStr(hKey5, "DialTo", Host.DialEntry, DefaultHost.DialEntry);\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+ // 暗号化通信対応\r
SaveIntNum(hKey5, "FTPES", Host.UseFTPES, DefaultHost.UseFTPES);\r
SaveIntNum(hKey5, "FTPIS", Host.UseFTPIS, DefaultHost.UseFTPIS);\r
SaveIntNum(hKey5, "SFTP", Host.UseSFTP, DefaultHost.UseSFTP);\r
}\r
WriteIntValueToReg(hKey4, "SetNum", i);\r
\r
- /* \97]\95ª\82È\83z\83X\83g\82Ì\90Ý\92è\82ª\82 \82Á\82½\82ç\8dí\8f\9c */\r
+ /* 余分なホストの設定があったら削除 */\r
for(; i < 998; i++)\r
{\r
sprintf(Str, "Host%d", i);\r
- if(DeleteSubKey(hKey4, Str) != SUCCESS)\r
+ if(DeleteSubKey(hKey4, Str) != FFFTP_SUCCESS)\r
break;\r
}\r
\r
return;\r
}\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a\81^INI\83t\83@\83C\83\8b\82©\82ç\90Ý\92è\92l\82ð\8cÄ\82Ñ\8fo\82· ---------------------------\r
+/*----- レジストリ/INIファイルから設定値を呼び出す ---------------------------\r
*\r
-* \82±\82Ì\8aÖ\90\94\82ð\95¡\90\94\89ñ\8cÄ\82Ñ\8fo\82·\82Æ\81C\83z\83X\83g\90Ý\92è\82ª\92Ç\89Á\82³\82ê\82é\81D\r
+* この関数を複数回呼び出すと,ホスト設定が追加される.\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* YES: \93Ç\82Ý\8fo\82µ\90¬\8c÷\r
-* NO: \93Ç\82Ý\8fo\82µ\8e¸\94s(\90Ý\92è\96³\82µ)\r
+* YES: 読み出し成功\r
+* NO: 読み出し失敗(設定無し)\r
*----------------------------------------------------------------------------*/\r
\r
int LoadRegistory(void)\r
void *hKey5;\r
int i;\r
int Sets;\r
- char Str[256]; /* ASCII_EXT_LEN\82æ\82è\91å\82«\82¢\8e\96 */\r
+ char Str[256]; /* ASCII_EXT_LENより大きい事 */\r
char *Pos;\r
char *Pos2;\r
HOSTDATA Host;\r
Sts = NO;\r
\r
SetRegType(REGTYPE_INI);\r
- if((i = OpenReg("FFFTP", &hKey3)) != SUCCESS)\r
+ if((i = OpenReg("FFFTP", &hKey3)) != FFFTP_SUCCESS)\r
{\r
if(AskForceIni() == NO)\r
{\r
}\r
}\r
\r
- if(i == SUCCESS)\r
+ if(i == FFFTP_SUCCESS)\r
{\r
char checkbuf[48];\r
int salt = 0;\r
\r
ReadIntValueFromReg(hKey3, "Version", &Version);\r
\r
- if(OpenSubKey(hKey3, "Options", &hKey4) == SUCCESS)\r
+ if(OpenSubKey(hKey3, "Options", &hKey4) == FFFTP_SUCCESS)\r
{\r
ReadIntValueFromReg(hKey4, "WinPosX", &WinPosX);\r
ReadIntValueFromReg(hKey4, "WinPosY", &WinPosY);\r
ReadIntValueFromReg(hKey4, "WinWidth", &WinWidth);\r
ReadIntValueFromReg(hKey4, "WinHeight", &WinHeight);\r
ReadIntValueFromReg(hKey4, "LocalWidth", &LocalWidth);\r
- /* \81«\8b\8c\83o\81[\83W\83\87\83\93\82Ì\83o\83O\91Î\8dô */\r
+ /* ↓旧バージョンのバグ対策 */\r
LocalWidth = max1(0, LocalWidth);\r
ReadIntValueFromReg(hKey4, "TaskHeight", &TaskHeight);\r
- /* \81«\8b\8c\83o\81[\83W\83\87\83\93\82Ì\83o\83O\91Î\8dô */\r
+ /* ↓旧バージョンのバグ対策 */\r
TaskHeight = max1(0, TaskHeight);\r
ReadBinaryFromReg(hKey4, "LocalColm", &LocalTabWidth, sizeof(LocalTabWidth));\r
ReadBinaryFromReg(hKey4, "RemoteColm", &RemoteTabWidth, sizeof(RemoteTabWidth));\r
ReadIntValueFromReg(hKey4, "RegExp", &FindMode);\r
ReadIntValueFromReg(hKey4, "Reg", &RegType);\r
\r
- if(ReadMultiStringFromReg(hKey4, "AsciiFile", AsciiExt, ASCII_EXT_LEN+1) == FAIL)\r
+ if(ReadMultiStringFromReg(hKey4, "AsciiFile", AsciiExt, ASCII_EXT_LEN+1) == FFFTP_FAIL)\r
{\r
- /* \8b\8cASCII\83\82\81[\83h\82Ì\8ag\92£\8eq\82Ì\90Ý\92è\82ð\90V\82µ\82¢\82à\82Ì\82É\95Ï\8a· */\r
+ /* 旧ASCIIモードの拡張子の設定を新しいものに変換 */\r
ReadStringFromReg(hKey4, "Ascii", Str, ASCII_EXT_LEN+1);\r
memset(AsciiExt, NUL, ASCII_EXT_LEN+1);\r
Pos = Str;\r
ReadIntValueFromReg(hKey4, "MirUNot", &MirUpDelNotify);\r
ReadIntValueFromReg(hKey4, "MirDNot", &MirDownDelNotify);\r
\r
- if(ReadStringFromReg(hKey4, "ListFont", Str, 256) == SUCCESS)\r
+ if(ReadStringFromReg(hKey4, "ListFont", Str, 256) == FFFTP_SUCCESS)\r
{\r
- if(RestoreFontData(Str, &ListLogFont) == SUCCESS)\r
+ if(RestoreFontData(Str, &ListLogFont) == FFFTP_SUCCESS)\r
ListFont = CreateFontIndirect(&ListLogFont);\r
}\r
ReadIntValueFromReg(hKey4, "ListHide", &DispIgnoreHide);\r
ReadIntValueFromReg(hKey4, "HistNum", &FileHist);\r
// ReadMultiStringFromReg(hKey4, "Hist", Hist, (FMAX_PATH+1)*HISTORY_MAX+1);\r
\r
- /* \83q\83X\83g\83\8a\82Ì\90Ý\92è\82ð\93Ç\82Ý\8d\9e\82Þ */\r
+ /* ヒストリの設定を読み込む */\r
Sets = 0;\r
ReadIntValueFromReg(hKey4, "SavedHist", &Sets);\r
\r
for(i = 0; i < Sets; i++)\r
{\r
sprintf(Str, "History%d", i);\r
- if(OpenSubKey(hKey4, Str, &hKey5) == SUCCESS)\r
+ if(OpenSubKey(hKey4, Str, &hKey5) == FFFTP_SUCCESS)\r
{\r
CopyDefaultHistory(&Hist);\r
\r
ReadIntValueFromReg(hKey5, "UseIt", &Hist.DialupAlways);\r
ReadIntValueFromReg(hKey5, "Notify", &Hist.DialupNotify);\r
ReadStringFromReg(hKey5, "DialTo", Hist.DialEntry, RAS_NAME_LEN+1);\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+ // 暗号化通信対応\r
ReadIntValueFromReg(hKey5, "FTPES", &Hist.UseFTPES);\r
ReadIntValueFromReg(hKey5, "FTPIS", &Hist.UseFTPIS);\r
ReadIntValueFromReg(hKey5, "SFTP", &Hist.UseSFTP);\r
}\r
}\r
\r
- /* \83z\83X\83g\82Ì\90Ý\92è\82ð\93Ç\82Ý\8d\9e\82Þ */\r
+ /* ホストの設定を読み込む */\r
Sets = 0;\r
ReadIntValueFromReg(hKey4, "SetNum", &Sets);\r
\r
for(i = 0; i < Sets; i++)\r
{\r
sprintf(Str, "Host%d", i);\r
- if(OpenSubKey(hKey4, Str, &hKey5) == SUCCESS)\r
+ if(OpenSubKey(hKey4, Str, &hKey5) == FFFTP_SUCCESS)\r
{\r
CopyDefaultHost(&Host);\r
- /* \89º\88Ê\8cÝ\8a·\90«\82Ì\82½\82ß */\r
- // SourceForge.JP\82É\82æ\82é\83t\83H\81[\83N\r
+ /* 下位互換性のため */\r
+ // SourceForge.JPによるフォーク\r
// if(Version < VER_NUM)\r
if(Version < 1921)\r
{\r
ReadIntValueFromReg(hKey5, "UseIt", &Host.DialupAlways);\r
ReadIntValueFromReg(hKey5, "Notify", &Host.DialupNotify);\r
ReadStringFromReg(hKey5, "DialTo", Host.DialEntry, RAS_NAME_LEN+1);\r
- // \88Ã\8d\86\89»\92Ê\90M\91Î\89\9e\r
+ // 暗号化通信対応\r
ReadIntValueFromReg(hKey5, "FTPES", &Host.UseFTPES);\r
ReadIntValueFromReg(hKey5, "FTPIS", &Host.UseFTPIS);\r
ReadIntValueFromReg(hKey5, "SFTP", &Host.UseSFTP);\r
}\r
else\r
{\r
- /*===== \8dÅ\8f\89\82Ì\8bN\93®\8e\9e\81i\90Ý\92è\82ª\96³\82¢) =====*/\r
+ /*===== 最初の起動時(設定が無い) =====*/\r
\r
#if 0\r
strcpy(UserMailAdrs, "");\r
}\r
\r
\r
-/*----- \89B\82µ\83h\83\89\83C\83u\8fî\95ñ\82ð\8eæ\93¾ ------------------------------------------------\r
+/*----- 隠しドライブ情報を取得 ------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
* DWORD \r
-* YES/NO=\90Ý\92è\96³\82µ\r
+* YES/NO=設定無し\r
*----------------------------------------------------------------------------*/\r
\r
DWORD LoadHideDriveListRegistory(void)\r
}\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a\82Ì\90Ý\92è\92l\82ð\83N\83\8a\83A --------------------------------------------\r
+/*----- レジストリの設定値をクリア --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ClearRegistory(void)\r
}\r
\r
\r
-/*----- \90Ý\92è\82ð\83t\83@\83C\83\8b\82É\95Û\91¶ --------------------------------------------------\r
+/*----- 設定をファイルに保存 --------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SaveSettingsToFile(void)\r
}\r
\r
\r
-/*----- \90Ý\92è\82ð\83t\83@\83C\83\8b\82©\82ç\95\9c\8c³ ------------------------------------------------\r
+/*----- 設定をファイルから復元 ------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83\8d\81[\83h\82µ\82½\82©\82Ç\82¤\82© (YES/NO)\r
+* int ロードしたかどうか (YES/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int LoadSettingsFromFile(void)\r
else\r
{\r
Ret = YES;\r
- /* \83\8c\83W\83X\83g\83\8a\83G\83f\83B\83^\82ª\8fI\97¹\82·\82é\82Ì\82ð\91Ò\82Â */\r
+ /* レジストリエディタが終了するのを待つ */\r
// WaitForSingleObject(Info.hProcess, INFINITE);\r
}\r
}\r
\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a/INI\83t\83@\83C\83\8b\82É\95¶\8e\9a\97ñ\82ð\83Z\81[\83u --------------------------------\r
+/*----- レジストリ/INIファイルに文字列をセーブ --------------------------------\r
*\r
* Parameter\r
-* HKEY hKey : \83\8c\83W\83X\83g\83\8a\83L\81[\r
-* char *Key : \83L\81[\96¼\r
-* char *Str : \83Z\81[\83u\82·\82é\95¶\8e\9a\97ñ\r
-* char *DefaultStr : \83f\83t\83H\83\8b\83g\82Ì\95¶\8e\9a\97ñ\r
+* HKEY hKey : レジストリキー\r
+* char *Key : キー名\r
+* char *Str : セーブする文字列\r
+* char *DefaultStr : デフォルトの文字列\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \95¶\8e\9a\97ñ\82ª\83f\83t\83H\83\8b\83g\82Ì\95¶\8e\9a\97ñ\82Æ\93¯\82¶\82È\82ç\83Z\81[\83u\82µ\82È\82¢\r
+* 文字列がデフォルトの文字列と同じならセーブしない\r
*----------------------------------------------------------------------------*/\r
\r
static void SaveStr(HKEY hKey, char *Key, char *Str, char *DefaultStr)\r
}\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a/INI\83t\83@\83C\83\8b\82É\90\94\92l(INT)\82ð\83Z\81[\83u -----------------------------\r
+/*----- レジストリ/INIファイルに数値(INT)をセーブ -----------------------------\r
*\r
* Parameter\r
-* HKEY hKey : \83\8c\83W\83X\83g\83\8a\83L\81[\r
-* char *Key : \83L\81[\96¼\r
-* int Num : \83Z\81[\83u\82·\82é\92l\r
-* int DefaultNum : \83f\83t\83H\83\8b\83g\82Ì\92l\r
+* HKEY hKey : レジストリキー\r
+* char *Key : キー名\r
+* int Num : セーブする値\r
+* int DefaultNum : デフォルトの値\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \90\94\92l\82ª\83f\83t\83H\83\8b\83g\82Ì\92l\82Æ\93¯\82¶\82È\82ç\83Z\81[\83u\82µ\82È\82¢\r
+* 数値がデフォルトの値と同じならセーブしない\r
*----------------------------------------------------------------------------*/\r
\r
static void SaveIntNum(HKEY hKey, char *Key, int Num, int DefaultNum)\r
}\r
\r
\r
-/*----- LOGFONT\83f\81[\83^\82ð\95¶\8e\9a\97ñ\82É\95Ï\8a·\82·\82é ---------------------------------------\r
+/*----- LOGFONTデータを文字列に変換する ---------------------------------------\r
*\r
* Parameter\r
-* LOGFONT Font : \83t\83H\83\93\83g\83f\81[\83^\r
-* HFONT hFont : \83t\83H\83\93\83g\82Ì\83n\83\93\83h\83\8b\r
-* NULL = \83f\83t\83H\83\8b\83g\82Ì\83t\83H\83\93\83g\r
-* char *Buf : \83o\83b\83t\83@\r
+* LOGFONT Font : フォントデータ\r
+* HFONT hFont : フォントのハンドル\r
+* NULL = デフォルトのフォント\r
+* char *Buf : バッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void MakeFontData(LOGFONT Font, HFONT hFont, char *Buf)\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ðLOGFONT\83f\81[\83^\82É\95Ï\8a·\82·\82é ---------------------------------------\r
+/*----- 文字列をLOGFONTデータに変換する ---------------------------------------\r
*\r
* Parameter\r
-* char *Str : \95¶\8e\9a\97ñ\r
-* LOGFONT *Font : \83t\83H\83\93\83g\83f\81[\83^\r
+* char *Str : 文字列\r
+* LOGFONT *Font : フォントデータ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL=\95Ï\8a·\82Å\82«\82È\82¢\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL=変換できない\r
*----------------------------------------------------------------------------*/\r
\r
static int RestoreFontData(char *Str, LOGFONT *Font)\r
int i;\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(sscanf(Str, "%d %d %d %d %d %d %d %d %d %d %d %d %d",\r
&(Font->lfHeight), &(Font->lfWidth), &(Font->lfEscapement), &(Font->lfOrientation),\r
&(Font->lfWeight), &(Font->lfItalic), &(Font->lfUnderline), &(Font->lfStrikeOut),\r
if(i == 0)\r
{\r
strcpy(Font->lfFaceName, Str);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
\r
- if(Sts == FAIL)\r
+ if(Sts == FFFTP_FAIL)\r
memset(Font, NUL, sizeof(LOGFONT));\r
\r
return(Sts);\r
}\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82ð\88Ã\8d\86\89»\82·\82é ------------------------------------------------\r
+/*----- パスワードを暗号化する ------------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \83p\83X\83\8f\81[\83h\r
-* char *Buf : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
+* char *Str : パスワード\r
+* char *Buf : 暗号化したパスワードを格納するバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
static void EncodePassword(char *Str, char *Buf)\r
{\r
EncodePassword3( Str, Buf, SecretKey );\r
}\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82ð\88Ã\8d\86\89»\82·\82é(\83I\83\8a\83W\83i\83\8b\83A\83\8b\83S\83\8a\83Y\83\80) ------------------\r
+/*----- パスワードを暗号化する(オリジナルアルゴリズム) ------------------\r
*\r
* Parameter\r
-* char *Str : \83p\83X\83\8f\81[\83h\r
-* char *Buf : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
+* char *Str : パスワード\r
+* char *Buf : 暗号化したパスワードを格納するバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void EncodePasswordOriginal(char *Str, char *Buf)\r
return;\r
}\r
\r
- /* \8e¯\95Ê\8eq\82ð\90æ\93ª\82É\92u\82 */\r
+ /* 識別子を先頭に置く */\r
Put[0] = '0';\r
Put[1] = 'A';\r
Put += 2;\r
return;\r
}\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82ð\88Ã\8d\86\89»\82·\82é(\83I\83\8a\83W\83i\83\8b\83A\83\8b\83S\83\8a\83Y\83\80\81OKey) ----------------\r
+/*----- パスワードを暗号化する(オリジナルアルゴリズム^Key) ----------------\r
*\r
* Parameter\r
-* char *Str : \83p\83X\83\8f\81[\83h\r
-* char *Buf : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
-* const char *Key : \88Ã\8d\86\89»\83L\81[\r
+* char *Str : パスワード\r
+* char *Buf : 暗号化したパスワードを格納するバッファ\r
+* const char *Key : 暗号化キー\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void EncodePassword2(char *Str, char *Buf, const char* Key)\r
return;\r
}\r
\r
- /* \8e¯\95Ê\8eq\82ð\90æ\93ª\82É\92u\82 */\r
+ /* 識別子を先頭に置く */\r
Put[0] = '0';\r
Put[1] = 'B';\r
Put += 2;\r
return;\r
}\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82ð\88Ã\8d\86\89»\82·\82é(AES) ------------------------------------------\r
+/*----- パスワードを暗号化する(AES) ------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \83p\83X\83\8f\81[\83h\r
-* char *Buf : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
-* const char *Key : \88Ã\8d\86\89»\83L\81[\r
+* char *Str : パスワード\r
+* char *Buf : 暗号化したパスワードを格納するバッファ\r
+* const char *Key : 暗号化キー\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void EncodePassword3(char *Str, char *Buf, const char *Key)\r
StrLen = strlen(Str);\r
StrPadLen = ((StrLen + AES_BLOCK_SIZE - 1) / AES_BLOCK_SIZE) * AES_BLOCK_SIZE;\r
\r
- /* \8dÅ\92á\92·\82ð32\95¶\8e\9a\82Æ\82·\82é */\r
+ /* 最低長を32文字とする */\r
// StrPadLen = min1(StrPadLen, AES_BLOCK_SIZE * 2);\r
StrPadLen = max1(StrPadLen, AES_BLOCK_SIZE * 2);\r
\r
PutState = FALSE;\r
strncpy(StrPadBuf, Str, StrPadLen);\r
\r
- /* PAD\95\94\95ª\82ð\97\90\90\94\82Å\96\84\82ß\82é StrPad[StrLen](\82ª\97L\8cø\82È\8fê\8d\87) \82Í NUL */\r
+ /* PAD部分を乱数で埋める StrPad[StrLen](が有効な場合) は NUL */\r
for(StrPadIndex = StrLen + 1; StrPadIndex < StrPadLen;)\r
{\r
RandValue = GetRandamDWRODValue();\r
}\r
}\r
\r
- // IV\82Ì\8f\89\8aú\89»\r
+ // IVの初期化\r
for(IvIndex = 0; IvIndex < AES_BLOCK_SIZE;)\r
{\r
RandValue = GetRandamDWRODValue();\r
}\r
*Put++ = ':';\r
\r
- if(CreateAesKey(AesKey, Key) == SUCCESS)\r
+ if(CreateAesKey(AesKey, Key) == FFFTP_SUCCESS)\r
{\r
aes_encrypt_key(AesKey, 32, &Ctx);\r
\r
}\r
\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82Ì\88Ã\8d\86\89»\82ð\89ð\82 ----------------------------------------------\r
+/*----- パスワードの暗号化を解く ----------------------------------------------\r
*\r
* Parameter\r
-* char *Str : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\r
-* char *Buf : \83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
+* char *Str : 暗号化したパスワード\r
+* char *Buf : パスワードを格納するバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DecodePassword(char *Str, char *Buf)\r
}\r
}\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82Ì\88Ã\8d\86\89»\82ð\89ð\82(\83I\83\8a\83W\83i\83\8b\83A\83\8b\83S\83\8a\83Y\83\80) -------------------\r
+/*----- パスワードの暗号化を解く(オリジナルアルゴリズム) -------------------\r
*\r
* Parameter\r
-* char *Str : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\r
-* char *Buf : \83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
+* char *Str : 暗号化したパスワード\r
+* char *Buf : パスワードを格納するバッファ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
static void DecodePasswordOriginal(char *Str, char *Buf)\r
{\r
return;\r
}\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82Ì\88Ã\8d\86\89»\82ð\89ð\82(\83I\83\8a\83W\83i\83\8b\83A\83\8b\83S\83\8a\83Y\83\80\81OKey) -------------------\r
+/*----- パスワードの暗号化を解く(オリジナルアルゴリズム^Key) -------------------\r
*\r
* Parameter\r
-* char *Str : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\r
-* char *Buf : \83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
-* const char *Key : \88Ã\8d\86\89»\83L\81[\r
+* char *Str : 暗号化したパスワード\r
+* char *Buf : パスワードを格納するバッファ\r
+* const char *Key : 暗号化キー\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
static void DecodePassword2(char *Str, char *Buf, const char* Key)\r
{\r
return;\r
}\r
\r
-/*----- \83p\83X\83\8f\81[\83h\82Ì\88Ã\8d\86\89»\82ð\89ð\82(AES) ---------------------------------------\r
+/*----- パスワードの暗号化を解く(AES) ---------------------------------------\r
*\r
* Parameter\r
-* char *Str : \88Ã\8d\86\89»\82µ\82½\83p\83X\83\8f\81[\83h\r
-* char *Buf : \83p\83X\83\8f\81[\83h\82ð\8ai\94[\82·\82é\83o\83b\83t\83@\r
-* const char *Key : \88Ã\8d\86\89»\83L\81[\r
+* char *Str : 暗号化したパスワード\r
+* char *Buf : パスワードを格納するバッファ\r
+* const char *Key : 暗号化キー\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void DecodePassword3(char *Str, char *Buf, const char *Key)\r
\r
if(*Get++ == ':')\r
{\r
- if(CreateAesKey(AesKey, Key) == SUCCESS)\r
+ if(CreateAesKey(AesKey, Key) == FFFTP_SUCCESS)\r
{\r
aes_decrypt_key(AesKey, 32, &Ctx);\r
\r
return;\r
}\r
\r
-/*----- AES\97p\8cÅ\92è\92·\83L\81[\82ð\8dì\90¬ ----------------------------------------------\r
+/*----- AES用固定長キーを作成 ----------------------------------------------\r
*\r
* Parameter\r
-* unsigned char *AesKey : AES\88Ã\8d\86\8c®\r
-* const char *Key : \88Ã\8d\86\89»\83L\81[\r
+* unsigned char *AesKey : AES暗号鍵\r
+* const char *Key : 暗号化キー\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X (SUCCESS/FAIL)\r
+* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL)\r
* Note\r
-* SHA-1\82ð\82à\82¿\82¢\82Ä32Byte\8c®\82ð\90¶\90¬\82·\82é\r
+* SHA-1をもちいて32Byte鍵を生成する\r
*----------------------------------------------------------------------------*/\r
\r
static int CreateAesKey(unsigned char *AesKey, const char* Key)\r
\r
HashKeyLen = strlen(Key) + 16;\r
if((HashKey = malloc(HashKeyLen + 1)) == NULL){\r
- return (FAIL);\r
+ return (FFFTP_FAIL);\r
}\r
\r
strcpy(HashKey, Key);\r
}\r
free(HashKey);\r
\r
- return (SUCCESS);\r
+ return (FFFTP_SUCCESS);\r
}\r
\r
\r
-/*===== \83\8c\83W\83X\83g\83\8a\82ÆINI\83t\83@\83C\83\8b\82Ì\83A\83N\83Z\83X\8f\88\97\9d ============*/\r
+/*===== レジストリとINIファイルのアクセス処理 ============*/\r
\r
\r
-/*===== INI\83t\83@\83C\83\8b\97p\82Ì\83\8c\83W\83X\83g\83\8a\83f\81[\83^ =====*/\r
+/*===== INIファイル用のレジストリデータ =====*/\r
\r
typedef struct regdatatbl {\r
- char KeyName[80+1]; /* \83L\81[\96¼ */\r
- char ValTbl[REG_SECT_MAX]; /* \92l\82Ì\83e\81[\83u\83\8b */\r
- int ValLen; /* \92l\83f\81[\83^\82Ì\83o\83C\83g\90\94 */\r
- int Mode; /* \83L\81[\82Ì\83\82\81[\83h */\r
+ char KeyName[80+1]; /* キー名 */\r
+ char ValTbl[REG_SECT_MAX]; /* 値のテーブル */\r
+ int ValLen; /* 値データのバイト数 */\r
+ int Mode; /* キーのモード */\r
struct regdatatbl *Next;\r
} REGDATATBL;\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static BOOL WriteOutRegToFile(REGDATATBL *Pos);\r
static int ReadInReg(char *Name, REGDATATBL **Handle);\r
static char *ScanValue(void *Handle, char *Name);\r
\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static int TmpRegType;\r
\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a\82Ì\83^\83C\83v\82ð\90Ý\92è\82·\82é ------------------------------------------\r
+/*----- レジストリのタイプを設定する ------------------------------------------\r
*\r
* Parameter\r
-* int Type : \83^\83C\83v (REGTYPE_xxx)\r
+* int Type : タイプ (REGTYPE_xxx)\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static void SetRegType(int Type)\r
}\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a/INI\83t\83@\83C\83\8b\82ð\83I\81[\83v\83\93\82·\82é\81i\93Ç\82Ý\8d\9e\82Ý\81j-----------------------\r
+/*----- レジストリ/INIファイルをオープンする(読み込み)-----------------------\r
*\r
* Parameter\r
-* char *Name : \83\8c\83W\83X\83g\83\8a\96¼\r
-* void **Handle : \83n\83\93\83h\83\8b\82ð\95Ô\82·\83\8f\81[\83N\r
+* char *Name : レジストリ名\r
+* void **Handle : ハンドルを返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int OpenReg(char *Name, void **Handle)\r
int Sts;\r
char Tmp[FMAX_PATH+1];\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(TmpRegType == REGTYPE_REG)\r
{\r
strcpy(Tmp, "Software\\Sota\\");\r
strcat(Tmp, Name);\r
if(RegOpenKeyEx(HKEY_CURRENT_USER, Tmp, 0, KEY_READ, (HKEY *)Handle) == ERROR_SUCCESS)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
else\r
{\r
- if((Sts = ReadInReg(Name, (REGDATATBL **)Handle)) == SUCCESS)\r
+ if((Sts = ReadInReg(Name, (REGDATATBL **)Handle)) == FFFTP_SUCCESS)\r
((REGDATATBL *)(*Handle))->Mode = 0;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a/INI\83t\83@\83C\83\8b\82ð\8dì\90¬\82·\82é\81i\8f\91\82«\8d\9e\82Ý\81j---------------------------\r
+/*----- レジストリ/INIファイルを作成する(書き込み)---------------------------\r
*\r
* Parameter\r
-* char *Name : \83\8c\83W\83X\83g\83\8a\96¼\r
-* void **Handle : \83n\83\93\83h\83\8b\82ð\95Ô\82·\83\8f\81[\83N\r
+* char *Name : レジストリ名\r
+* void **Handle : ハンドルを返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int CreateReg(char *Name, void **Handle)\r
char Tmp[FMAX_PATH+1];\r
DWORD Dispos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(TmpRegType == REGTYPE_REG)\r
{\r
strcpy(Tmp, "Software\\Sota\\");\r
strcat(Tmp, Name);\r
if(RegCreateKeyEx(HKEY_CURRENT_USER, Tmp, 0, "", REG_OPTION_NON_VOLATILE, KEY_CREATE_SUB_KEY | KEY_SET_VALUE, NULL, (HKEY *)Handle, &Dispos) == ERROR_SUCCESS)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
else\r
{\r
((REGDATATBL *)(*Handle))->ValLen = 0;\r
((REGDATATBL *)(*Handle))->Next = NULL;\r
((REGDATATBL *)(*Handle))->Mode = 1;\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a/INI\83t\83@\83C\83\8b\82ð\83N\83\8d\81[\83Y\82·\82é ----------------------------------\r
+/*----- レジストリ/INIファイルをクローズする ----------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
+* void *Handle : ハンドル\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int CloseReg(void *Handle)\r
{\r
RegCloseKey(Handle);\r
\r
- /* INI\83t\83@\83C\83\8b\82ð\8dí\8f\9c */\r
+ /* INIファイルを削除 */\r
if((Strm = fopen(AskIniFilePath(), "rt")) != NULL)\r
{\r
fclose(Strm);\r
{\r
if(WriteOutRegToFile(Handle) == TRUE)\r
{\r
-// /* \83\8c\83W\83X\83g\83\8a\82ð\83N\83\8a\83A */\r
+// /* レジストリをクリア */\r
// ClearRegistory();\r
}\r
}\r
- /* \83e\81[\83u\83\8b\82ð\8dí\8f\9c */\r
+ /* テーブルを削除 */\r
Pos = Handle;\r
while(Pos != NULL)\r
{\r
Pos = Next;\r
}\r
}\r
- return(SUCCESS);\r
+ return(FFFTP_SUCCESS);\r
}\r
\r
\r
-/*----- \83\8c\83W\83X\83g\83\8a\8fî\95ñ\82ðINI\83t\83@\83C\83\8b\82É\8f\91\82«\8d\9e\82Þ ---------------------------------\r
+/*----- レジストリ情報をINIファイルに書き込む ---------------------------------\r
*\r
* Parameter\r
-* REGDATATBL *Pos : \83\8c\83W\83X\83g\83\8a\83f\81[\83^\r
+* REGDATATBL *Pos : レジストリデータ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static BOOL WriteOutRegToFile(REGDATATBL *Pos)\r
}\r
\r
\r
-/*----- INI\83t\83@\83C\83\8b\82©\82ç\83\8c\83W\83X\83g\83\8a\8fî\95ñ\82ð\93Ç\82Ý\8d\9e\82Þ -------------------------------\r
+/*----- INIファイルからレジストリ情報を読み込む -------------------------------\r
*\r
* Parameter\r
-* char *Name : \96¼\91O\r
-* void *Handle : \83n\83\93\83h\83\8b\r
+* char *Name : 名前\r
+* void *Handle : ハンドル\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int ReadInReg(char *Name, REGDATATBL **Handle)\r
REGDATATBL *Pos;\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
*Handle = NULL;\r
\r
if((Strm = fopen(AskIniFilePath(), "rt")) != NULL)\r
}\r
}\r
}\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
free(Buf);\r
}\r
fclose(Strm);\r
}\r
\r
\r
-/*----- \83T\83u\83L\81[\82ð\83I\81[\83v\83\93\82·\82é ------------------------------------------------\r
+/*----- サブキーをオープンする ------------------------------------------------\r
*\r
* Parameter\r
-* void *Parent : \90e\82Ì\83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* void **Handle : \83n\83\93\83h\83\8b\82ð\95Ô\82·\83\8f\81[\83N\r
+* void *Parent : 親のハンドル\r
+* char *Name : 名前\r
+* void **Handle : ハンドルを返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int OpenSubKey(void *Parent, char *Name, void **Handle)\r
char Key[80];\r
REGDATATBL *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(TmpRegType == REGTYPE_REG)\r
{\r
if(RegOpenKeyEx(Parent, Name, 0, KEY_READ, (HKEY *)Handle) == ERROR_SUCCESS)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
else\r
{\r
if(strcmp(Pos->KeyName, Key) == 0)\r
{\r
*Handle = Pos;\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
break;\r
}\r
Pos = Pos->Next;\r
}\r
\r
\r
-/*----- \83T\83u\83L\81[\82ð\8dì\90¬\82·\82é ----------------------------------------------------\r
+/*----- サブキーを作成する ----------------------------------------------------\r
*\r
* Parameter\r
-* void *Parent : \90e\82Ì\83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* void **Handle : \83n\83\93\83h\83\8b\82ð\95Ô\82·\83\8f\81[\83N\r
+* void *Parent : 親のハンドル\r
+* char *Name : 名前\r
+* void **Handle : ハンドルを返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int CreateSubKey(void *Parent, char *Name, void **Handle)\r
DWORD Dispos;\r
REGDATATBL *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(TmpRegType == REGTYPE_REG)\r
{\r
if(RegCreateKeyEx(Parent, Name, 0, "", REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, (HKEY *)Handle, &Dispos) == ERROR_SUCCESS)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
else\r
{\r
while(Pos->Next != NULL)\r
Pos = Pos->Next;\r
Pos->Next = *Handle;\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \83T\83u\83L\81[\82ð\83N\83\8d\81[\83Y\82·\82é ------------------------------------------------\r
+/*----- サブキーをクローズする ------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
+* void *Handle : ハンドル\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int CloseSubKey(void *Handle)\r
{\r
/* Nothing */\r
}\r
- return(SUCCESS);\r
+ return(FFFTP_SUCCESS);\r
}\r
\r
\r
-/*----- \83T\83u\83L\81[\82ð\8dí\8f\9c\82·\82é ----------------------------------------------------\r
+/*----- サブキーを削除する ----------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int DeleteSubKey(void *Handle, char *Name)\r
{\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(TmpRegType == REGTYPE_REG)\r
{\r
if(RegDeleteKey(Handle, Name) == ERROR_SUCCESS)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
else\r
{\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \92l\82ð\8dí\8f\9c\82·\82é ----------------------------------------------------------\r
+/*----- 値を削除する ----------------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int DeleteValue(void *Handle, char *Name)\r
{\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(TmpRegType == REGTYPE_REG)\r
{\r
if(RegDeleteValue(Handle, Name) == ERROR_SUCCESS)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
else\r
{\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- INT\92l\82ð\93Ç\82Ý\8d\9e\82Þ -------------------------------------------------------\r
+/*----- INT値を読み込む -------------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* int *Value : INT\92l\82ð\95Ô\82·\83\8f\81[\83N\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* int *Value : INT値を返すワーク\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int ReadIntValueFromReg(void *Handle, char *Name, int *Value)\r
DWORD Size;\r
char *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(TmpRegType == REGTYPE_REG)\r
{\r
Size = sizeof(int);\r
if(RegQueryValueEx(Handle, Name, NULL, NULL, (BYTE *)Value, &Size) == ERROR_SUCCESS)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
else\r
{\r
if((Pos = ScanValue(Handle, Name)) != NULL)\r
{\r
*Value = atoi(Pos);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- INT\92l\82ð\8f\91\82«\8d\9e\82Þ -------------------------------------------------------\r
+/*----- INT値を書き込む -------------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* int Value : INT\92l\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* int Value : INT値\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int WriteIntValueToReg(void *Handle, char *Name, int Value)\r
strcat(Data, Tmp);\r
Pos->ValLen += strlen(Data) + 1;\r
}\r
- return(SUCCESS);\r
+ return(FFFTP_SUCCESS);\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ð\93Ç\82Ý\8d\9e\82Þ ------------------------------------------------------\r
+/*----- 文字列を読み込む ------------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* char *Str : \95¶\8e\9a\97ñ\82ð\95Ô\82·\83\8f\81[\83N\r
-* DWORD Size : \8dÅ\91å\83T\83C\83Y\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* char *Str : 文字列を返すワーク\r
+* DWORD Size : 最大サイズ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int ReadStringFromReg(void *Handle, char *Name, char *Str, DWORD Size)\r
int Sts;\r
char *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(TmpRegType == REGTYPE_REG)\r
{\r
if(RegQueryValueEx(Handle, Name, NULL, NULL, (BYTE *)Str, &Size) == ERROR_SUCCESS)\r
{\r
if(*(Str + Size - 1) != NUL)\r
*(Str + Size) = NUL;\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
else\r
Size = min1(Size-1, strlen(Pos));\r
Size = StrReadIn(Pos, Size, Str);\r
*(Str + Size) = NUL;\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ð\8f\91\82«\8d\9e\82Þ ------------------------------------------------------\r
+/*----- 文字列を書き込む ------------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* char *Str :\95¶\8e\9a\97ñ\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* char *Str :文字列\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int WriteStringToReg(void *Handle, char *Name, char *Str)\r
Data = Pos->ValTbl + Pos->ValLen;\r
Pos->ValLen += StrCatOut(Str, strlen(Str), Data) + 1;\r
}\r
- return(SUCCESS);\r
+ return(FFFTP_SUCCESS);\r
}\r
\r
\r
-/*----- \83}\83\8b\83`\95¶\8e\9a\97ñ\82ð\93Ç\82Ý\8d\9e\82Þ ------------------------------------------------\r
+/*----- マルチ文字列を読み込む ------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* char *Str : \95¶\8e\9a\97ñ\82ð\95Ô\82·\83\8f\81[\83N\r
-* DWORD Size : \8dÅ\91å\83T\83C\83Y\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* char *Str : 文字列を返すワーク\r
+* DWORD Size : 最大サイズ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int ReadMultiStringFromReg(void *Handle, char *Name, char *Str, DWORD Size)\r
int Sts;\r
char *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(TmpRegType == REGTYPE_REG)\r
{\r
if(RegQueryValueEx(Handle, Name, NULL, NULL, (BYTE *)Str, &Size) == ERROR_SUCCESS)\r
{\r
if(*(Str + Size - 1) != NUL)\r
*(Str + Size) = NUL;\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
else\r
Size = min1(Size-1, strlen(Pos));\r
Size = StrReadIn(Pos, Size, Str);\r
*(Str + Size) = NUL;\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \83}\83\8b\83`\95¶\8e\9a\97ñ\82ð\8f\91\82«\8d\9e\82Þ ------------------------------------------------\r
+/*----- マルチ文字列を書き込む ------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* char *Str : \95¶\8e\9a\97ñ\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* char *Str : 文字列\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int WriteMultiStringToReg(void *Handle, char *Name, char *Str)\r
Data = Pos->ValTbl + Pos->ValLen;\r
Pos->ValLen += StrCatOut(Str, StrMultiLen(Str), Data) + 1;\r
}\r
- return(SUCCESS);\r
+ return(FFFTP_SUCCESS);\r
}\r
\r
\r
-/*----- \83o\83C\83i\83\8a\82ð\93Ç\82Ý\8d\9e\82Þ-----------------------------------------------------\r
+/*----- バイナリを読み込む-----------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* void *Bin : \83o\83C\83i\83\8a\82ð\95Ô\82·\83\8f\81[\83N\r
-* DWORD Size : \8dÅ\91å\83T\83C\83Y\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* void *Bin : バイナリを返すワーク\r
+* DWORD Size : 最大サイズ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int ReadBinaryFromReg(void *Handle, char *Name, void *Bin, DWORD Size)\r
int Sts;\r
char *Pos;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(TmpRegType == REGTYPE_REG)\r
{\r
if(RegQueryValueEx(Handle, Name, NULL, NULL, (BYTE *)Bin, &Size) == ERROR_SUCCESS)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
else\r
{\r
{\r
Size = min1(Size, strlen(Pos));\r
Size = StrReadIn(Pos, Size, Bin);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \83o\83C\83i\83\8a\82ð\8f\91\82«\8d\9e\82Þ ----------------------------------------------------\r
+/*----- バイナリを書き込む ----------------------------------------------------\r
*\r
* Parameter\r
-* void *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
-* void *Bin : \83o\83C\83i\83\8a\r
-* int Len : \92·\82³\r
+* void *Handle : ハンドル\r
+* char *Name : 名前\r
+* void *Bin : バイナリ\r
+* int Len : 長さ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int WriteBinaryToReg(void *Handle, char *Name, void *Bin, int Len)\r
Data = Pos->ValTbl + Pos->ValLen;\r
Pos->ValLen += StrCatOut(Bin, Len, Data) + 1;\r
}\r
- return(SUCCESS);\r
+ return(FFFTP_SUCCESS);\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ð\83o\83b\83t\83@\82É\92Ç\89Á\8f\91\82«\8d\9e\82Ý\82·\82é ------------------------------------\r
+/*----- 文字列をバッファに追加書き込みする ------------------------------------\r
*\r
* Parameter\r
-* char *Src : \95¶\8e\9a\97ñ\r
-* int len : \95¶\8e\9a\97ñ\82Ì\92·\82³\r
-* char *Dst : \8f\91\82«\8d\9e\82Ý\82·\82é\83o\83b\83t\83@\r
+* char *Src : 文字列\r
+* int len : 文字列の長さ\r
+* char *Dst : 書き込みするバッファ\r
*\r
* Return Value\r
-* int \92Ç\89Á\82µ\82½\83o\83C\83g\90\94\r
+* int 追加したバイト数\r
*----------------------------------------------------------------------------*/\r
\r
static int StrCatOut(char *Src, int Len, char *Dst)\r
}\r
\r
\r
-/*----- \95¶\8e\9a\97ñ\82ð\83o\83b\83t\83@\82É\93Ç\82Ý\8d\9e\82Þ --------------------------------------------\r
+/*----- 文字列をバッファに読み込む --------------------------------------------\r
*\r
* Parameter\r
-* char *Src : \95¶\8e\9a\97ñ\r
-* int Max : \8dÅ\91å\83T\83C\83Y\r
-* char *Dst : \8f\91\82«\8d\9e\82Ý\82·\82é\83o\83b\83t\83@\r
+* char *Src : 文字列\r
+* int Max : 最大サイズ\r
+* char *Dst : 書き込みするバッファ\r
*\r
* Return Value\r
-* int \93Ç\82Ý\8d\9e\82ñ\82¾\83o\83C\83g\90\94\r
+* int 読み込んだバイト数\r
*----------------------------------------------------------------------------*/\r
\r
static int StrReadIn(char *Src, int Max, char *Dst)\r
}\r
\r
\r
-/*----- \92l\82ð\8c\9f\8dõ\82·\82é ----------------------------------------------------------\r
+/*----- 値を検索する ----------------------------------------------------------\r
*\r
* Parameter\r
-* char *Handle : \83n\83\93\83h\83\8b\r
-* char *Name : \96¼\91O\r
+* char *Handle : ハンドル\r
+* char *Name : 名前\r
*\r
* Return Value\r
-* char *\92l\83f\81[\83^\82Ì\90æ\93ª\r
-* NULL=\8ew\92è\82Ì\96¼\91O\82Ì\92l\82ª\8c©\82Â\82©\82ç\82È\82¢\r
+* char *値データの先頭\r
+* NULL=指定の名前の値が見つからない\r
*----------------------------------------------------------------------------*/\r
\r
static char *ScanValue(void *Handle, char *Name)\r
}\r
\r
\r
-/*----------- \83p\83X\83\8f\81[\83h\82Ì\91Ã\93\96\90«\82ð\8am\94F\82·\82é ------------------------------------\r
+/*----------- パスワードの妥当性を確認する ------------------------------------\r
*\r
* Parameter\r
-* char *Password: \83p\83X\83\8f\81[\83h\95¶\8e\9a\97ñ\r
-* char *HashStr: SHA-1\83n\83b\83V\83\85\95¶\8e\9a\97ñ\r
+* char *Password: パスワード文字列\r
+* char *HashStr: SHA-1ハッシュ文字列\r
*\r
* Return Value\r
-* int 0 \95s\88ê\92v\r
-* 1: \88ê\92v\r
-* 2: \88Ù\8fí\r
+* int 0 不一致\r
+* 1: 一致\r
+* 2: 異常\r
*----------------------------------------------------------------------------*/\r
int CheckPasswordValidity( char* Password, int length, const char* HashStr )\r
{\r
\r
const char* p = HashStr;\r
\r
- /* \8bó\95¶\8e\9a\97ñ\82Í\88ê\92v\82µ\82½\82±\82Æ\82É\82·\82é */\r
+ /* 空文字列は一致したことにする */\r
if( HashStr[0] == NUL ) return 1;\r
\r
- /* Hash\82ð\83`\83F\83b\83N\82·\82é\82·\82é*/\r
+ /* Hashをチェックするする*/\r
if( strlen(HashStr) != 40 ) return 2;\r
\r
- /* Hash\82ð\83f\83R\81[\83h\82·\82é*/\r
+ /* Hashをデコードする*/\r
for( i = 0; i < 5; i++ ){\r
ulong decode = 0;\r
for( j = 0; j < 8; j++ ){\r
hash1[i] = decode;\r
}\r
\r
- /* Password \82ð\83n\83b\83V\83\85\82·\82é */\r
+ /* Password をハッシュする */\r
sha_memory( Password, length, hash2 );\r
\r
if( memcmp( (char*)hash1, (char*)hash2, sizeof( hash1 )) == 0 ){\r
return 0;\r
}\r
\r
-/*----------- \83p\83X\83\8f\81[\83h\82Ì\91Ã\93\96\90«\83`\83F\83b\83N\82Ì\82½\82ß\82Ì\95¶\8e\9a\97ñ\82ð\8dì\90¬\82·\82é ------------\r
+/*----------- パスワードの妥当性チェックのための文字列を作成する ------------\r
*\r
* Parameter\r
-* char *Password: \83p\83X\83\8f\81[\83h\95¶\8e\9a\97ñ\r
-* char *Str: SHA-1\83n\83b\83V\83\85\95¶\8e\9a\97ñ\8ai\94[\8fê\8f\8a (41bytes\88È\8fã)\r
+* char *Password: パスワード文字列\r
+* char *Str: SHA-1ハッシュ文字列格納場所 (41bytes以上)\r
*\r
* Return Value\r
* None\r
SecretKeyLength = strlen( SecretKey ) + 5;\r
}\r
\r
-/*----------- \97\90\90\94\90¶\90¬\82ð\82·\82é -------------------------------------------------\r
+/*----------- 乱数生成をする -------------------------------------------------\r
*\r
* Parameter\r
*\r
* Return Value\r
-* \83\89\83\93\83_\83\80\82È\92l\81F\83R\83\93\83p\83C\83\89VS2005/\93®\8dì\8aÂ\8b«WinXP\88È\8fã\82Å\82Í rand_s \82©\82ç\8eæ\93¾\82·\82é\r
+* ランダムな値:コンパイラVS2005/動作環境WinXP以上では rand_s から取得する\r
*----------------------------------------------------------------------------*/\r
DWORD GetRandamDWRODValue(void)\r
{\r
#ifdef USE_RANDAM_C_RAND\r
rndValue = rand() | (rand() << 16);\r
#else\r
- /* rand() \82Ì\82©\82í\82è\82É\81ASHA-1\82Æ\83p\83t\83H\81[\83}\83\93\83X\83J\83E\83\93\83^\82ð\97p\82¢\82é */\r
+ /* rand() のかわりに、SHA-1とパフォーマンスカウンタを用いる */\r
ulong shaValue[5];\r
LARGE_INTEGER Counter;\r
\r
if(0 == IsRndSourceInit){\r
- /* \8f\89\89ñ\8eæ\93¾\8e\9e */\r
+ /* 初回取得時 */\r
HANDLE CurProcHandle;\r
HANDLE CurThreadHandle;\r
\r
CloseHandle(CurThreadHandle);\r
}\r
\r
- /* _WIN64 \82Å\82Í64bit\82¾\82ª\81A\82»\82Ì\8fê\8d\87\82Írand_s\82ª\91å\92ï\97\98\97p\89Â\94\\82È\82Ì\82Å\82±\82±\82Å\82Í32bit\82Ì\82Ý\97p\82¢\82é */\r
+ /* _WIN64 では64bitだが、その場合はrand_sが大抵利用可能なのでここでは32bitのみ用いる */\r
RndSource[0] = (ulong)CurProcHandle;\r
RndSource[1] = (ulong)CurThreadHandle;\r
RndSource[2] = (ulong)GetTickCount();\r
RndSource[3] = (ulong)timeGetTime();\r
- RndSource[4] = 0; /* \83J\83E\83\93\83g\83A\83b\83v */\r
+ RndSource[4] = 0; /* カウントアップ */\r
RndSource[5] = RndSource[3] + 1;\r
IsRndSourceInit = 1;\r
}\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83\8a\83\82\81[\83g\91¤\82Ì\83t\83@\83C\83\8b\91\80\8dì\r
+* リモート側のファイル操作\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
/ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
/============================================================================*/\r
\r
-/* \82±\82Ì\83\\81[\83X\82Í\88ê\95\94\81AWS_FTP Version 93.12.05 \82Ì\83\\81[\83X\82ð\8eQ\8dl\82É\82µ\82Ü\82µ\82½\81B */\r
+/* このソースは一部、WS_FTP Version 93.12.05 のソースを参考にしました。 */\r
\r
#define STRICT\r
#include <stdio.h>\r
#define PWD_XPWD 0\r
#define PWD_PWD 1\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static int DoPWD(char *Buf);\r
static int ReadOneLine(SOCKET cSkt, char *Buf, int Max, int *CancelCheckWork);\r
static void ChangeSepaLocal2Remote(char *Fname);\r
static void ChangeSepaRemote2Local(char *Fname);\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
extern TRANSPACKET MainTransPkt;\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
extern int TimeOut;\r
extern int SendQuit;\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static int PwdCommandType;\r
\r
\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\95Ï\8dX ----------------------------------\r
+/*----- リモート側のカレントディレクトリ変更 ----------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
-* int Disp : \83f\83B\83\8c\83N\83g\83\8a\83\8a\83X\83g\82É\83p\83X\96¼\82ð\95\\8e¦\82·\82é\82©\82Ç\82¤\82©(YES/NO)\r
-* int ForceGet : \8e¸\94s\82µ\82Ä\82à\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ð\8eæ\93¾\82·\82é\r
-* int ErrorBell : \83G\83\89\81[\8e\96\82Ì\89¹\82ð\96Â\82ç\82·\82©\82Ç\82¤\82©(YES/NO)\r
+* char *Path : パス名\r
+* int Disp : ディレクトリリストにパス名を表示するかどうか(YES/NO)\r
+* int ForceGet : 失敗してもカレントディレクトリを取得する\r
+* int ErrorBell : エラー事の音を鳴らすかどうか(YES/NO)\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
int DoCWD(char *Path, int Disp, int ForceGet, int ErrorBell)\r
if((AskHostType() != HTYPE_VMS) || (strchr(Path, '[') != NULL))\r
Sts = CommandProcCmd(NULL, "CWD %s", Path);\r
else\r
- Sts = CommandProcCmd(NULL, "CWD [.%s]", Path); /* VMS\97p */\r
+ Sts = CommandProcCmd(NULL, "CWD [.%s]", Path); /* VMS用 */\r
}\r
\r
if((Sts/100 >= FTP_CONTINUE) && (ErrorBell == YES))\r
{\r
if(DoPWD(Buf) != FTP_COMPLETE)\r
{\r
- /*===== PWD\82ª\8eg\82¦\82È\82©\82Á\82½\8fê\8d\87 =====*/\r
+ /*===== PWDが使えなかった場合 =====*/\r
\r
if(*Path == '/')\r
strcpy(Buf, Path);\r
\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\95Ï\8dX\81i\82»\82Ì\82Q\81j-------------------------\r
+/*----- リモート側のカレントディレクトリ変更(その2)-------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
-* char *Cur : \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\r
+* char *Path : パス名\r
+* char *Cur : カレントディレクトリ\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*\r
* Note\r
-* \83p\83X\96¼\82Í "xxx/yyy/zzz" \82Ì\8c`\8e®\r
-* \83f\83B\83\8c\83N\83g\83\8a\95Ï\8dX\82ª\8e¸\94s\82µ\82½\82ç\81A\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82É\96ß\82µ\82Ä\82¨\82\r
+* パス名は "xxx/yyy/zzz" の形式\r
+* ディレクトリ変更が失敗したら、カレントディレクトリに戻しておく\r
*----------------------------------------------------------------------------*/\r
\r
int DoCWDStepByStep(char *Path, char *Cur)\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\8eæ\93¾ ----------------------------------\r
+/*----- リモート側のカレントディレクトリ取得 ----------------------------------\r
*\r
* Parameter\r
-* char *Buf : \83p\83X\96¼\82ð\95Ô\82·\83o\83b\83t\83@\r
+* char *Buf : パス名を返すバッファ\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
static int DoPWD(char *Buf)\r
}\r
\r
\r
-/*----- PWD\83R\83}\83\93\83h\82Ì\83^\83C\83v\82ð\8f\89\8aú\89»\82·\82é ---------------------------------------\r
+/*----- PWDコマンドのタイプを初期化する ---------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void InitPWDcommand()\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83f\83B\83\8c\83N\83g\83\8a\8dì\90¬ ----------------------------------------\r
+/*----- リモート側のディレクトリ作成 ----------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
int DoMKD(char *Path)\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83f\83B\83\8c\83N\83g\83\8a\8dí\8f\9c ------------------------------------------\r
+/*----- リモート側のディレクトリ削除 ------------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
int DoRMD(char *Path)\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83t\83@\83C\83\8b\8dí\8f\9c ----------------------------------------------\r
+/*----- リモート側のファイル削除 ----------------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
int DoDELE(char *Path)\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83t\83@\83C\83\8b\96¼\95Ï\8dX --------------------------------------------\r
+/*----- リモート側のファイル名変更 --------------------------------------------\r
*\r
* Parameter\r
-* char *Src : \8c³\83t\83@\83C\83\8b\96¼\r
-* char *Dst : \95Ï\8dX\8cã\82Ì\83t\83@\83C\83\8b\96¼\r
+* char *Src : 元ファイル名\r
+* char *Dst : 変更後のファイル名\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
int DoRENAME(char *Src, char *Dst)\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83t\83@\83C\83\8b\82Ì\91®\90«\95Ï\8dX ----------------------------------------\r
+/*----- リモート側のファイルの属性変更 ----------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
-* char *Mode : \83\82\81[\83h\95¶\8e\9a\97ñ\r
+* char *Path : パス名\r
+* char *Mode : モード文字列\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
int DoCHMOD(char *Path, char *Mode)\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83t\83@\83C\83\8b\82Ì\83T\83C\83Y\82ð\8eæ\93¾\81i\93]\91\97\83\\83P\83b\83g\8eg\97p\81j-----------------\r
+/*----- リモート側のファイルのサイズを取得(転送ソケット使用)-----------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
-* LONGLONG *Size : \83t\83@\83C\83\8b\82Ì\83T\83C\83Y\82ð\95Ô\82·\83\8f\81[\83N\r
+* char *Path : パス名\r
+* LONGLONG *Size : ファイルのサイズを返すワーク\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*\r
* Note\r
-* \81\9a\81\9a\93]\91\97\83\\83P\83b\83g\82ð\8eg\97p\82·\82é\81\9a\81\9a\r
-* \83T\83C\83Y\82ª\91I\82ç\82ê\82È\82¢\8e\9e\82Í Size = -1 \82ð\95Ô\82·\r
+* ★★転送ソケットを使用する★★\r
+* サイズが選られない時は Size = -1 を返す\r
*----------------------------------------------------------------------------*/\r
\r
int DoSIZE(char *Path, LONGLONG *Size)\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83t\83@\83C\83\8b\82Ì\93ú\95t\82ð\8eæ\93¾\81i\93]\91\97\83\\83P\83b\83g\8eg\97p\81j-------------------\r
+/*----- リモート側のファイルの日付を取得(転送ソケット使用)-------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
-* FILETIME *Time : \93ú\95t\82ð\95Ô\82·\83\8f\81[\83N\r
+* char *Path : パス名\r
+* FILETIME *Time : 日付を返すワーク\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*\r
* Note\r
-* \81\9a\81\9a\93]\91\97\83\\83P\83b\83g\82ð\8eg\97p\82·\82é\81\9a\81\9a\r
-* \93ú\95t\82ª\91I\82ç\82ê\82È\82¢\8e\9e\82Í Time = 0 \82ð\95Ô\82·\r
+* ★★転送ソケットを使用する★★\r
+* 日付が選られない時は Time = 0 を返す\r
*----------------------------------------------------------------------------*/\r
\r
int DoMDTM(char *Path, FILETIME *Time)\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83R\83}\83\93\83h\82ð\8eÀ\8ds --------------------------------------------\r
+/*----- リモート側のコマンドを実行 --------------------------------------------\r
*\r
* Parameter\r
-* char *CmdStr : \83R\83}\83\93\83h\95¶\8e\9a\97ñ\r
+* char *CmdStr : コマンド文字列\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
int DoQUOTE(char *CmdStr)\r
}\r
\r
\r
-/*----- \83\\83P\83b\83g\82ð\95Â\82¶\82é ------------------------------------------------------\r
+/*----- ソケットを閉じる ------------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* SOCKET \95Â\82¶\82½\8cã\82Ì\83\\83P\83b\83g\r
+* SOCKET 閉じた後のソケット\r
*----------------------------------------------------------------------------*/\r
\r
SOCKET DoClose(SOCKET Sock)\r
}\r
\r
\r
-/*----- \83z\83X\83g\82©\82ç\83\8d\83O\83A\83E\83g\82·\82é ----------------------------------------------\r
+/*----- ホストからログアウトする ----------------------------------------------\r
*\r
* Parameter\r
-* kSOCKET ctrl_skt : \83\\83P\83b\83g\r
+* kSOCKET ctrl_skt : ソケット\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
int DoQUIT(SOCKET ctrl_skt)\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83f\83B\83\8c\83N\83g\83\8a\83\8a\83X\83g\82ð\8eæ\93¾\81i\83R\83}\83\93\83h\83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\82ð\8eg\97p)\r
+/*----- リモート側のディレクトリリストを取得(コマンドコントロールソケットを使用)\r
*\r
* Parameter\r
-* char *AddOpt : \92Ç\89Á\82Ì\83I\83v\83V\83\87\83\93\r
-* char *Path : \83p\83X\96¼\r
-* int Num : \83t\83@\83C\83\8b\96¼\94Ô\8d\86\r
+* char *AddOpt : 追加のオプション\r
+* char *Path : パス名\r
+* int Num : ファイル名番号\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\82Ì\82P\8c\85\96Ú\r
+* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
int DoDirListCmdSkt(char *AddOpt, char *Path, int Num, int *CancelCheckWork)\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ì\83f\83B\83\8c\83N\83g\83\8a\83\8a\83X\83g\82ð\8eæ\93¾ ----------------------------------\r
+/*----- リモート側のディレクトリリストを取得 ----------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \93]\91\97\92\86\83_\83C\83A\83\8d\83O\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* SOCKET cSkt : \83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\r
-* char *AddOpt : \92Ç\89Á\82Ì\83I\83v\83V\83\87\83\93\r
-* char *Path : \83p\83X\96¼ (""=\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a)\r
-* int Num : \83t\83@\83C\83\8b\96¼\94Ô\8d\86\r
+* HWND hWnd : 転送中ダイアログのウインドウハンドル\r
+* SOCKET cSkt : コントロールソケット\r
+* char *AddOpt : 追加のオプション\r
+* char *Path : パス名 (""=カレントディレクトリ)\r
+* int Num : ファイル名番号\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
static int DoDirList(HWND hWnd, SOCKET cSkt, char *AddOpt, char *Path, int Num, int *CancelCheckWork)\r
strcpy(MainTransPkt.LocalFile, Tmp);\r
MainTransPkt.Type = TYPE_A;\r
MainTransPkt.Size = -1;\r
- /* \83t\83@\83C\83\8b\83\8a\83X\83g\82Ì\92\86\82Ì\8a¿\8e\9a\82Ì\83t\83@\83C\83\8b\96¼\82Í\81A\95Ê\93r */\r
- /* ChangeFnameRemote2Local \82Å\95Ï\8a·\82·\82é */\r
+ /* ファイルリストの中の漢字のファイル名は、別途 */\r
+ /* ChangeFnameRemote2Local で変換する */\r
MainTransPkt.KanjiCode = KANJI_NOCNV;\r
MainTransPkt.KanaCnv = YES;\r
MainTransPkt.Mode = EXIST_OVW;\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ö\83R\83}\83\93\83h\82ð\91\97\82è\83\8a\83v\83\89\83C\82ð\91Ò\82Â\81i\83R\83}\83\93\83h\83\\83P\83b\83g\81j-----------\r
+/*----- リモート側へコマンドを送りリプライを待つ(コマンドソケット)-----------\r
*\r
* Parameter\r
-* char *Reply : \83\8a\83v\83\89\83C\82Ì\83R\83s\81[\90æ (NULL=\83R\83s\81[\82µ\82È\82¢)\r
-* char *fmt : \83t\83H\81[\83}\83b\83g\95¶\8e\9a\97ñ\r
-* ... : \83p\83\89\83\81\81[\83^\r
+* char *Reply : リプライのコピー先 (NULL=コピーしない)\r
+* char *fmt : フォーマット文字列\r
+* ... : パラメータ\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*\r
* Note\r
-* \83R\83}\83\93\83h\83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\82ð\8eg\82¤\r
+* コマンドコントロールソケットを使う\r
*----------------------------------------------------------------------------*/\r
\r
int CommandProcCmd(char *Reply, char *fmt, ...)\r
\r
// if((Sts = command(AskCmdCtrlSkt(), Reply, "%s", Cmd)) == 429)\r
// {\r
-// if(ReConnectCmdSkt() == SUCCESS)\r
+// if(ReConnectCmdSkt() == FFFTP_SUCCESS)\r
// {\r
Sts = command(AskCmdCtrlSkt(), Reply, &CheckCancelFlg, "%s", Cmd);\r
// }\r
}\r
\r
\r
-/*----- \83\8a\83\82\81[\83g\91¤\82Ö\83R\83}\83\93\83h\82ð\91\97\82è\83\8a\83v\83\89\83C\82ð\91Ò\82Â\81i\93]\91\97\83\\83P\83b\83g\81j---------------\r
+/*----- リモート側へコマンドを送りリプライを待つ(転送ソケット)---------------\r
*\r
* Parameter\r
-* char *Reply : \83\8a\83v\83\89\83C\82Ì\83R\83s\81[\90æ (NULL=\83R\83s\81[\82µ\82È\82¢)\r
-* char *fmt : \83t\83H\81[\83}\83b\83g\95¶\8e\9a\97ñ\r
-* ... : \83p\83\89\83\81\81[\83^\r
+* char *Reply : リプライのコピー先 (NULL=コピーしない)\r
+* char *fmt : フォーマット文字列\r
+* ... : パラメータ\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*\r
* Note\r
-* \93]\91\97\83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\82ð\8eg\82¤\r
+* 転送コントロールソケットを使う\r
*----------------------------------------------------------------------------*/\r
\r
int CommandProcTrn(char *Reply, char *fmt, ...)\r
\r
// if((Sts = command(AskTrnCtrlSkt(), Reply, "%s", Cmd)) == 429)\r
// {\r
-// if(ReConnectTrnSkt() == SUCCESS)\r
+// if(ReConnectTrnSkt() == FFFTP_SUCCESS)\r
Sts = command(AskTrnCtrlSkt(), Reply, &CheckCancelFlg, "%s", Cmd);\r
// }\r
return(Sts);\r
}\r
\r
\r
-/*----- \83R\83}\83\93\83h\82ð\91\97\82è\83\8a\83v\83\89\83C\82ð\91Ò\82Â ------------------------------------------\r
+/*----- コマンドを送りリプライを待つ ------------------------------------------\r
*\r
* Parameter\r
-* SOCKET cSkt : \83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\r
-* char *Reply : \83\8a\83v\83\89\83C\82Ì\83R\83s\81[\90æ (NULL=\83R\83s\81[\82µ\82È\82¢)\r
-* char *fmt : \83t\83H\81[\83}\83b\83g\95¶\8e\9a\97ñ\r
-* ... : \83p\83\89\83\81\81[\83^\r
+* SOCKET cSkt : コントロールソケット\r
+* char *Reply : リプライのコピー先 (NULL=コピーしない)\r
+* char *fmt : フォーマット文字列\r
+* ... : パラメータ\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*\r
* Note\r
-* \83z\83X\83g\82Ì\83t\83@\83C\83\8b\96¼\82Ì\8a¿\8e\9a\83R\81[\83h\82É\89\9e\82¶\82Ä\81A\82±\82±\82Å\8a¿\8e\9a\83R\81[\83h\82Ì\95Ï\8a·\82ð\8ds\82È\82¤\r
+* ホストのファイル名の漢字コードに応じて、ここで漢字コードの変換を行なう\r
*----------------------------------------------------------------------------*/\r
\r
//#pragma aaa\r
strcpy(Reply, "");\r
\r
Sts = 429;\r
- if(SendData(cSkt, Cmd, strlen(Cmd), 0, CancelCheckWork) == SUCCESS)\r
+ if(SendData(cSkt, Cmd, strlen(Cmd), 0, CancelCheckWork) == FFFTP_SUCCESS)\r
{\r
Sts = ReadReplyMessage(cSkt, Reply, 1024, CancelCheckWork, TmpBuf);\r
}\r
}\r
\r
\r
-/*----- \83f\81[\83^\82ð\91\97\82é ----------------------------------------------------------\r
+/*----- データを送る ----------------------------------------------------------\r
*\r
* Parameter\r
-* SOCKET Skt : \83\\83P\83b\83g\r
-* char *Data : \83f\81[\83^\r
-* int Size : \91\97\82é\83f\81[\83^\82Ì\83T\83C\83Y\r
-* int Mode : \83R\81[\83\8b\83\82\81[\83h\r
+* SOCKET Skt : ソケット\r
+* char *Data : データ\r
+* int Size : 送るデータのサイズ\r
+* int Mode : コールモード\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int SendData(SOCKET Skt, char *Data, int Size, int Mode, int *CancelCheckWork)\r
// struct timeval *ToutPtr;\r
int TimeOutErr;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(Skt != INVALID_SOCKET)\r
{\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
while(Size > 0)\r
{\r
// FD_ZERO(&SendFds);\r
// Tmp = select(0, NULL, &SendFds, NULL, ToutPtr);\r
// if(Tmp == SOCKET_ERROR)\r
// {\r
-// Sts = FAIL;\r
+// Sts = FFFTP_FAIL;\r
// ReportWSError("select", WSAGetLastError());\r
// break;\r
// }\r
// else if(Tmp == 0)\r
// {\r
-// Sts = FAIL;\r
+// Sts = FFFTP_FAIL;\r
// SetTaskMsg(MSGJPN241);\r
// break;\r
// }\r
Tmp = do_send(Skt, Data, Size, Mode, &TimeOutErr, CancelCheckWork);\r
if(TimeOutErr == YES)\r
{\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
SetTaskMsg(MSGJPN241);\r
break;\r
}\r
else if(Tmp == SOCKET_ERROR)\r
{\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
ReportWSError("send", WSAGetLastError());\r
break;\r
}\r
}\r
\r
\r
-/*----- \89\9e\93\9a\83\81\83b\83Z\81[\83W\82ð\8eó\82¯\8eæ\82é ----------------------------------------------\r
+/*----- 応答メッセージを受け取る ----------------------------------------------\r
*\r
* Parameter\r
-* SOCKET cSkt : \83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\r
-* char *Buf : \83\81\83b\83Z\81[\83W\82ð\8eó\82¯\8eæ\82é\83o\83b\83t\83@ (NULL=\83R\83s\81[\82µ\82È\82¢)\r
-* int Max : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
+* SOCKET cSkt : コントロールソケット\r
+* char *Buf : メッセージを受け取るバッファ (NULL=コピーしない)\r
+* int Max : バッファのサイズ\r
* int *CancelCheckWork :\r
-* char *Tmp : \83e\83\93\83|\83\89\83\8a\83\8f\81[\83N\r
+* char *Tmp : テンポラリワーク\r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
int ReadReplyMessage(SOCKET cSkt, char *Buf, int Max, int *CancelCheckWork, char *Tmp)\r
\r
if(Buf != NULL)\r
{\r
- // \82Q\8ds\96Ú\88È\8d~\82Ì\89\9e\93\9a\83R\81[\83h\82Í\8fÁ\82·\r
+ // 2行目以降の応答コードは消す\r
if(Lines > 0)\r
{\r
for(i = 0; ; i++)\r
}\r
\r
\r
-/*----- \82P\8ds\95ª\82Ì\83f\81[\83^\82ð\8eó\82¯\8eæ\82é ----------------------------------------------\r
+/*----- 1行分のデータを受け取る ----------------------------------------------\r
*\r
* Parameter\r
-* SOCKET cSkt : \83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\r
-* char *Buf : \83\81\83b\83Z\81[\83W\82ð\8eó\82¯\8eæ\82é\83o\83b\83t\83@\r
-* int Max : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
+* SOCKET cSkt : コントロールソケット\r
+* char *Buf : メッセージを受け取るバッファ\r
+* int Max : バッファのサイズ\r
* int *CancelCheckWork : \r
*\r
* Return Value\r
-* int \89\9e\93\9a\83R\81[\83h\r
+* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
static int ReadOneLine(SOCKET cSkt, char *Buf, int Max, int *CancelCheckWork)\r
if(cSkt != INVALID_SOCKET)\r
{\r
memset(Buf, NUL, Max);\r
- Max--; /* \96\96\94ö\82ÌNULL\82Ì\82Ô\82ñ */\r
+ Max--; /* 末尾のNULLのぶん */\r
Pos = Buf;\r
\r
for(;;)\r
// break;\r
// }\r
\r
- /* LF\82Ü\82Å\82ð\8eó\90M\82·\82é\82½\82ß\82É\81A\8dÅ\8f\89\82ÍPEEK\82Å\8eó\90M */\r
+ /* LFまでを受信するために、最初はPEEKで受信 */\r
if((SizeOnce = do_recv(cSkt, (LPSTR)Tmp, 1024, MSG_PEEK, &TimeOutErr, CancelCheckWork)) <= 0)\r
{\r
if(TimeOutErr == YES)\r
break;\r
}\r
\r
- /* LF\82ð\92T\82µ\82Ä\81A\82 \82Á\82½\82ç\82»\82±\82Ü\82Å\82Ì\92·\82³\82ð\83Z\83b\83g */\r
+ /* LFを探して、あったらそこまでの長さをセット */\r
for(i = 0; i < SizeOnce ; i++)\r
{\r
if(*(Tmp + i) == NUL || *(Tmp + i) == 0x0A)\r
}\r
}\r
\r
- /* \96{\8eó\90M */\r
+ /* 本受信 */\r
if((SizeOnce = do_recv(cSkt, Tmp, SizeOnce, 0, &TimeOutErr, CancelCheckWork)) <= 0)\r
break;\r
\r
Pos += CopySize;\r
Max -= CopySize;\r
\r
- /* \83f\81[\83^\82ªLF\82Å\8fI\82í\82Á\82Ä\82¢\82½\82ç\82P\8ds\8fI\82í\82è */\r
+ /* データがLFで終わっていたら1行終わり */\r
if(*(Tmp + SizeOnce - 1) == 0x0A)\r
break;\r
}\r
memset(Buf, 0, Max);\r
\r
if((SizeOnce == -2) || (AskTransferNow() == YES))\r
- // \93]\91\97\92\86\82É\91S\82Ä\92\86\8e~\82ð\8ds\82¤\82Æ\95s\90³\82È\83f\81[\83^\82ª\93¾\82ç\82ê\82é\8fê\8d\87\82Ì\83o\83O\8fC\90³\r
- // \83G\83\89\81[\82Ì\8eí\97Þ\82É\82æ\82Á\82Ä\82Í\96³\8cÀ\83\8b\81[\83v\82Æ\83X\83^\83b\83N\83I\81[\83o\81[\83t\83\8d\81[\82Ì\89Â\94\\90«\82 \82è\r
+ // 転送中に全て中止を行うと不正なデータが得られる場合のバグ修正\r
+ // エラーの種類によっては無限ループとスタックオーバーフローの可能性あり\r
// DisconnectSet();\r
{\r
if(SizeOnce == -1)\r
ResCode = atoi(Tmp);\r
}\r
\r
- /* \96\96\94ö\82Ì CR,LF,\83X\83y\81[\83X\82ð\8eæ\82è\8f\9c\82 */\r
+ /* 末尾の CR,LF,スペースを取り除く */\r
while((i=strlen(Buf))>2 &&\r
(Buf[i-1]==0x0a || Buf[i-1]==0x0d || Buf[i-1]==' '))\r
Buf[i-1]=0;\r
}\r
\r
\r
-/*----- \8cÅ\92è\92·\83f\81[\83^\82ð\8eó\82¯\8eæ\82é ------------------------------------------------\r
+/*----- 固定長データを受け取る ------------------------------------------------\r
*\r
* Parameter\r
-* SOCKET cSkt : \83R\83\93\83g\83\8d\81[\83\8b\83\\83P\83b\83g\r
-* char *Buf : \83\81\83b\83Z\81[\83W\82ð\8eó\82¯\8eæ\82é\83o\83b\83t\83@\r
-* int Size : \83o\83C\83g\90\94\r
+* SOCKET cSkt : コントロールソケット\r
+* char *Buf : メッセージを受け取るバッファ\r
+* int Size : バイト数\r
* int *CancelCheckWork : \r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int ReadNchar(SOCKET cSkt, char *Buf, int Size, int *CancelCheckWork)\r
int Sts;\r
int TimeOutErr;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if(cSkt != INVALID_SOCKET)\r
{\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
while(Size > 0)\r
{\r
// FD_ZERO(&ReadFds);\r
// if(i == SOCKET_ERROR)\r
// {\r
// ReportWSError("select", WSAGetLastError());\r
-// Sts = FAIL;\r
+// Sts = FFFTP_FAIL;\r
// break;\r
// }\r
// else if(i == 0)\r
// {\r
// SetTaskMsg(MSGJPN243);\r
-// Sts = FAIL;\r
+// Sts = FFFTP_FAIL;\r
// break;\r
// }\r
\r
{\r
if(TimeOutErr == YES)\r
SetTaskMsg(MSGJPN243);\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
break;\r
}\r
\r
}\r
}\r
\r
- if(Sts == FAIL)\r
+ if(Sts == FFFTP_FAIL)\r
SetTaskMsg(MSGJPN244);\r
\r
return(Sts);\r
}\r
\r
\r
-/*----- \83G\83\89\81[\95¶\8e\9a\97ñ\82ð\8eæ\93¾ ----------------------------------------------------\r
+/*----- エラー文字列を取得 ----------------------------------------------------\r
*\r
* Parameter\r
-* UINT Error : \83G\83\89\81[\94Ô\8d\86\r
+* UINT Error : エラー番号\r
*\r
* Return Value\r
-* char *\83G\83\89\81[\95¶\8e\9a\97ñ\r
+* char *エラー文字列\r
*----------------------------------------------------------------------------*/\r
\r
char *ReturnWSError(UINT Error)\r
}\r
\r
\r
-/*----- \83f\83o\83b\83O\83R\83\93\83\\81[\83\8b\82É\83G\83\89\81[\82ð\95\\8e¦ --------------------------------------\r
+/*----- デバッグコンソールにエラーを表示 --------------------------------------\r
*\r
* Parameter\r
-* char *Msg : \83G\83\89\81[\82Ì\91O\82É\95\\8e¦\82·\82é\83\81\83b\83Z\81[\83W\r
-* UINT Error : \83G\83\89\81[\94Ô\8d\86\r
+* char *Msg : エラーの前に表示するメッセージ\r
+* UINT Error : エラー番号\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ReportWSError(char *Msg, UINT Error)\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\96¼\82ð\83\8d\81[\83J\83\8b\91¤\82Å\88µ\82¦\82é\82æ\82¤\82É\95Ï\8a·\82·\82é --------------------------\r
+/*----- ファイル名をローカル側で扱えるように変換する --------------------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
-* int Max : \8dÅ\91å\92·\r
+* char *Fname : ファイル名\r
+* int Max : æ\9c\80大é\95·\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int ChangeFnameRemote2Local(char *Fname, int Max)\r
char *Pos;\r
CODECONVINFO cInfo;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Buf = malloc(Max)) != NULL)\r
{\r
InitCodeConvInfo(&cInfo);\r
cInfo.Buf = Buf;\r
cInfo.BufSize = Max - 1;\r
\r
- // \82±\82±\82Å\91S\82ÄUTF-8\82Ö\95Ï\8a·\82·\82é\r
- // TODO: SJIS\88È\8aO\82à\92¼\90ÚUTF-8\82Ö\95Ï\8a·\r
+ // ここで全てUTF-8へ変換する\r
+ // TODO: SJIS以外も直接UTF-8へ変換\r
switch(AskHostNameKanji())\r
{\r
case KANJI_SJIS :\r
// break;\r
}\r
free(Buf);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \83t\83@\83C\83\8b\96¼\82ð\83\8a\83\82\81[\83g\91¤\82Å\88µ\82¦\82é\82æ\82¤\82É\95Ï\8a·\82·\82é --------------------------\r
+/*----- ファイル名をリモート側で扱えるように変換する --------------------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
-* int Max : \8dÅ\91å\92·\r
+* char *Fname : ファイル名\r
+* int Max : æ\9c\80大é\95·\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int ChangeFnameLocal2Remote(char *Fname, int Max)\r
char *Pos;\r
CODECONVINFO cInfo;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
if((Buf = malloc(Max)) != NULL)\r
{\r
InitCodeConvInfo(&cInfo);\r
cInfo.Buf = Buf;\r
cInfo.BufSize = Max - 1;\r
\r
- // \82±\82±\82Å\91S\82ÄUTF-8\82©\82ç\95Ï\8a·\82·\82é\r
- // TODO: SJIS\88È\8aO\82à\92¼\90ÚUTF-8\82©\82ç\95Ï\8a·\r
+ // ここで全てUTF-8から変換する\r
+ // TODO: SJIS以外も直接UTF-8から変換\r
switch(AskHostNameKanji())\r
{\r
case KANJI_SJIS :\r
// break;\r
}\r
free(Buf);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \83p\83X\82Ì\8bæ\90Ø\82è\95¶\8e\9a\82ð\83z\83X\83g\82É\8d\87\82í\82¹\82Ä\95Ï\8dX\82·\82é ----------------------------\r
+/*----- パスの区切り文字をホストに合わせて変更する ----------------------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
+* char *Fname : ファイル名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
static void ChangeSepaLocal2Remote(char *Fname)\r
{\r
}\r
\r
\r
-/*----- \83p\83X\82Ì\8bæ\90Ø\82è\95¶\8e\9a\82ð\83\8d\81[\83J\83\8b\82É\8d\87\82í\82¹\82Ä\95Ï\8dX\82·\82é --------------------------\r
+/*----- パスの区切り文字をローカルに合わせて変更する --------------------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
+* char *Fname : ファイル名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
static void ChangeSepaRemote2Local(char *Fname)\r
{\r
-/*=============================================================================\r
-* \82e\82e\82e\82s\82o\8b¤\92Ê\92è\8b`\83t\83@\83C\83\8b\r
+/*=============================================================================\r
+* FFFTP共通定義ファイル\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
/ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
/============================================================================*/\r
\r
-/* \83T\83\93\83v\83\8b\83z\83X\83g\92è\8b`\83t\83@\83C\83\8b */\r
+/* サンプルホスト定義ファイル */\r
\r
typedef struct {\r
- int Level; /* \90Ý\92è\82Ì\83\8c\83x\83\8b */\r
- char HostName[HOST_NAME_LEN+1]; /* \90Ý\92è\96¼ */\r
- char HostAdrs[HOST_ADRS_LEN+1]; /* \83z\83X\83g\96¼ */\r
+ int Level; /* 設定のレベル */\r
+ char HostName[HOST_NAME_LEN+1]; /* 設定名 */\r
+ char HostAdrs[HOST_ADRS_LEN+1]; /* ホスト名 */\r
} SAMPLEHOSTDATA;\r
\r
\r
static const SAMPLEHOSTDATA Sample[SAMPLE_HOSTS] = {\r
{ 32768,"anonymous FTP site", "" },\r
{ 1, "Vector", "ftp.vector.co.jp" },\r
- { 1, "\91\8b\82Ì\93m(Forest)", "ftp.forest.impress.co.jp" },\r
+ { 1, "窓の杜(Forest)", "ftp.forest.impress.co.jp" },\r
{ 1, "Ring server", "ftp.ring.gr.jp" },\r
{ 1, "BIGLOBE", "ftp.biglobe.ne.jp" },\r
{ 1, "IIJ", "ftp.iij.ad.jp" },\r
-/* Implementation of NIST's Secure Hash Algorithm (FIPS 180)\r
+/* Implementation of NIST's Secure Hash Algorithm (FIPS 180)\r
* Lightly bummed for execution efficiency.\r
*\r
* Jim Gillogly 3 May 1993\r
#define TRUE 1\r
#define FALSE 0\r
\r
-#define SUCCESS 0\r
+#define FFFTP_SUCCESS 0\r
#define FAILURE -1\r
\r
int sha_file(); /* External entries */\r
}\r
(void) sha_stream(infile, buffer);\r
fclose(infile);\r
- return SUCCESS;\r
+ return FFFTP_SUCCESS;\r
}\r
\r
void sha_memory(mem, length, buffer) /* Hash a memory block */\r
-#define MSDOS\r
+#define MSDOS\r
#define LITTLE_ENDIAN\r
\r
typedef int int32;\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \82»\82Ì\91¼\82Ì\94Ä\97p\83T\83u\83\8b\81[\83`\83\93\r
+* その他の汎用サブルーチン\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
/ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
/============================================================================*/\r
\r
-/* \82±\82Ì\83v\83\8d\83O\83\89\83\80\82Í skey \82Ì\83\\81[\83X\82ð\8eQ\8dl\82É\82µ\82Ü\82µ\82½\81B */\r
+/* このプログラムは skey のソースを参考にしました。 */\r
\r
#define STRICT\r
#include <stdlib.h>\r
#include "sha.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static int keycrunch(char *result, char *seed, char *passwd, int Type);\r
static void secure_hash(char *x, int Type);\r
static ulong extract(char *s, int start, int length);\r
\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
/* Dictionary for integer-word translations */\r
static const char Wp[2048][4] = {\r
\r
\r
\r
-/*----- \82U\83\8f\81[\83h\83p\83X\83\8f\81[\83h\82ð\8dì\90¬\82·\82é ------------------------------------------\r
+/*----- 6ワードパスワードを作成する ------------------------------------------\r
*\r
* Parameter\r
-* int seq : \83V\81[\83P\83\93\83X\94Ô\8d\86\r
-* char *seed : \83V\81[\83h\r
-* char *pass : \83p\83X\83t\83\8c\81[\83Y\r
-* int type : \83^\83C\83v (MDx)\r
-* char *buf : \82U\83\8f\81[\83h\83p\83X\83\8f\81[\83h\82ð\95Ô\82·\83o\83b\83t\83@\r
+* int seq : シーケンス番号\r
+* char *seed : シード\r
+* char *pass : パスフレーズ\r
+* int type : タイプ (MDx)\r
+* char *buf : 6ワードパスワードを返すバッファ\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int Make6WordPass(int seq, char *seed, char *pass, int type, char *buf)\r
int i;\r
int Sts;\r
\r
- Sts = FAIL;\r
- if(keycrunch(key, seed, pass, type) != FAIL)\r
+ Sts = FFFTP_FAIL;\r
+ if(keycrunch(key, seed, pass, type) != FFFTP_FAIL)\r
{\r
for(i = 0; i < seq; i++)\r
secure_hash(key, type);\r
btoe(key, buf);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
buflen = strlen(seed) + strlen(passwd);\r
if((buf = malloc(buflen + 1)) == NULL)\r
- return(FAIL);\r
+ return(FFFTP_FAIL);\r
strcpy(buf, seed);\r
strcat(buf, passwd);\r
\r
/* Only works on byte-addressed little-endian machines!! */\r
memcpy(result, (char *)results, 8);\r
\r
- return(SUCCESS);\r
+ return(FFFTP_SUCCESS);\r
}\r
\r
\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83\\83P\83b\83g\r
+* ソケット\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
} ASYNCSIGNALDATABASE;\r
\r
\r
-// \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
-// \94O\82Ì\82½\82ß\83e\81[\83u\83\8b\82ð\91\9d\97Ê\r
+// スレッド衝突のバグ修正\r
+// 念のためテーブルを増量\r
//#define MAX_SIGNAL_ENTRY 10\r
//#define MAX_SIGNAL_ENTRY_DBASE 5\r
#define MAX_SIGNAL_ENTRY 100\r
\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static LRESULT CALLBACK SocketWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\r
static int AskAsyncDone(SOCKET s, int *Error, int Mask);\r
static int UnRegistAsyncTableDbase(HANDLE Async);\r
\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
extern int TimeOut;\r
\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static const char SocketWndClass[] = "FFFTPSocketWnd";\r
static HWND hWndSocket;\r
static ASYNCSIGNALDATABASE SignalDbase[MAX_SIGNAL_ENTRY_DBASE];\r
\r
//static HANDLE hAsyncTblAccMutex;\r
-// \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+// スレッド衝突のバグ修正\r
static HANDLE hAsyncTblAccMutex;\r
\r
\r
* Parameter\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int MakeSocketWin(HWND hWnd, HINSTANCE hInst)\r
wClass.hIconSm = NULL;\r
RegisterClassEx(&wClass);\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
hWndSocket = CreateWindowEx(0, SocketWndClass, NULL,\r
WS_BORDER | WS_POPUP,\r
0, 0, 0, 0,\r
{\r
// hAsyncTblAccMutex = CreateMutex(NULL, FALSE, NULL);\r
\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
// for(i = 0; i < MAX_SIGNAL_ENTRY; i++)\r
// Signal[i].Socket = INVALID_SOCKET;\r
// for(i = 0; i < MAX_SIGNAL_ENTRY_DBASE; i++)\r
for(i = 0; i < MAX_SIGNAL_ENTRY_DBASE; i++)\r
SignalDbase[i].Async = 0;\r
}\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
/*----- \r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DeleteSocketWin(void)\r
{\r
// CloseHandle(hAsyncTblAccMutex);\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
CloseHandle(hAsyncTblAccMutex);\r
hAsyncTblAccMutex = NULL;\r
\r
/*----- \r
*\r
* Parameter\r
-* HWND hWnd : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hWnd : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
switch(message)\r
{\r
case WM_ASYNC_SOCKET :\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
for(Pos = 0; Pos < MAX_SIGNAL_ENTRY; Pos++)\r
{\r
break;\r
}\r
}\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
ReleaseMutex(hAsyncTblAccMutex);\r
break;\r
\r
case WM_ASYNC_DBASE :\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
for(Pos = 0; Pos < MAX_SIGNAL_ENTRY_DBASE; Pos++)\r
{\r
break;\r
}\r
}\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
ReleaseMutex(hAsyncTblAccMutex);\r
break;\r
\r
int Sts;\r
int Pos;\r
\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
Sts = NO;\r
*Error = 0;\r
break;\r
}\r
}\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
ReleaseMutex(hAsyncTblAccMutex);\r
\r
if(Pos == MAX_SIGNAL_ENTRY)\r
int Sts;\r
int Pos;\r
\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
Sts = NO;\r
*Error = 0;\r
break;\r
}\r
}\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
ReleaseMutex(hAsyncTblAccMutex);\r
\r
if(Pos == MAX_SIGNAL_ENTRY_DBASE)\r
int Sts;\r
int Pos;\r
\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
Sts = NO;\r
for(Pos = 0; Pos < MAX_SIGNAL_ENTRY; Pos++)\r
break;\r
}\r
}\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
ReleaseMutex(hAsyncTblAccMutex);\r
\r
if(Pos == MAX_SIGNAL_ENTRY)\r
{\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
for(Pos = 0; Pos < MAX_SIGNAL_ENTRY; Pos++)\r
{\r
break;\r
}\r
}\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
ReleaseMutex(hAsyncTblAccMutex);\r
\r
if(Pos == MAX_SIGNAL_ENTRY)\r
int Sts;\r
int Pos;\r
\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
Sts = NO;\r
for(Pos = 0; Pos < MAX_SIGNAL_ENTRY_DBASE; Pos++)\r
break;\r
}\r
}\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
ReleaseMutex(hAsyncTblAccMutex);\r
\r
if(Pos == MAX_SIGNAL_ENTRY_DBASE)\r
{\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
for(Pos = 0; Pos < MAX_SIGNAL_ENTRY; Pos++)\r
{\r
break;\r
}\r
}\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
ReleaseMutex(hAsyncTblAccMutex);\r
\r
if(Pos == MAX_SIGNAL_ENTRY_DBASE)\r
int Sts;\r
int Pos;\r
\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
Sts = NO;\r
for(Pos = 0; Pos < MAX_SIGNAL_ENTRY; Pos++)\r
break;\r
}\r
}\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
ReleaseMutex(hAsyncTblAccMutex);\r
return(Sts);\r
}\r
int Sts;\r
int Pos;\r
\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
Sts = NO;\r
for(Pos = 0; Pos < MAX_SIGNAL_ENTRY_DBASE; Pos++)\r
break;\r
}\r
}\r
- // \83X\83\8c\83b\83h\8fÕ\93Ë\82Ì\83o\83O\8fC\90³\r
+ // スレッド衝突のバグ修正\r
ReleaseMutex(hAsyncTblAccMutex);\r
return(Sts);\r
}\r
#endif\r
CancelCheckWork = NO;\r
\r
- // FTPS\91Î\89\9e\r
+ // FTPS対応\r
// Ret = closesocket(s);\r
if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
Ret = closesocketS(s);\r
Ret = WSAAsyncSelect(s, hWndSocket, WM_ASYNC_SOCKET, FD_CONNECT | FD_CLOSE | FD_ACCEPT | FD_READ | FD_WRITE);\r
if(Ret != SOCKET_ERROR)\r
{\r
- // FTPS\91Î\89\9e\r
+ // FTPS対応\r
// Ret = connect(s, name, namelen);\r
if(AskCryptMode() == CRYPT_FTPIS)\r
Ret = connectS(s, name, namelen);\r
{\r
do\r
{\r
- // FTPS\91Î\89\9e\r
+ // FTPS対応\r
// Ret2 = accept(s, addr, addrlen);\r
if(AskCryptMode() == CRYPT_FTPIS)\r
Ret2 = acceptS(s, addr, addrlen);\r
\r
\r
\r
-/*----- recv\91\8a\93\96\82Ì\8aÖ\90\94 --------------------------------------------------------\r
+/*----- recv相当の関数 --------------------------------------------------------\r
*\r
* Parameter\r
-* SOCKET s : \83\\83P\83b\83g\r
-* char *buf : \83f\81[\83^\82ð\93Ç\82Ý\8d\9e\82Þ\83o\83b\83t\83@\r
-* int len : \92·\82³\r
-* int flags : recv\82É\97^\82¦\82é\83t\83\89\83O\r
-* int *TimeOutErr : \83^\83C\83\80\83A\83E\83g\82µ\82½\82©\82Ç\82¤\82©\82ð\95Ô\82·\83\8f\81[\83N\r
+* SOCKET s : ソケット\r
+* char *buf : データを読み込むバッファ\r
+* int len : 長さ\r
+* int flags : recvに与えるフラグ\r
+* int *TimeOutErr : タイムアウトしたかどうかを返すワーク\r
*\r
* Return Value\r
-* int : recv\82Ì\96ß\82è\92l\82Æ\93¯\82¶\r
+* int : recvの戻り値と同じ\r
*\r
* Note\r
-* \83^\83C\83\80\83A\83E\83g\82Ì\8e\9e\82Í TimeOut=YES\81ARet=SOCKET_ERROR \82É\82È\82é\r
+* タイムアウトの時は TimeOut=YES、Ret=SOCKET_ERROR になる\r
*----------------------------------------------------------------------------*/\r
int do_recv(SOCKET s, char *buf, int len, int flags, int *TimeOutErr, int *CancelCheckWork)\r
{\r
if(TimeOut != 0)\r
time(&StartTime);\r
\r
- // FTPS\91Î\89\9e\r
- // OpenSSL\82Å\82Í\8eó\90M\8am\94F\82ÍFD_READ\82ª\95¡\90\94\89ñ\8eó\90M\82³\82ê\82é\89Â\94\\90«\82ª\82 \82é\r
+ // FTPS対応\r
+ // OpenSSLでは受信確認はFD_READが複数回受信される可能性がある\r
// while((*CancelCheckWork == NO) && (AskAsyncDone(s, &Error, FD_READ_BIT) != YES))\r
while(AskCryptMode() == CRYPT_NONE && (*CancelCheckWork == NO) && (AskAsyncDone(s, &Error, FD_READ_BIT) != YES))\r
{\r
DoPrintf("## recv()");\r
#endif\r
\r
- // FTPS\91Î\89\9e\r
+ // FTPS対応\r
// Ret = recv(s, buf, len, flags);\r
if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
Ret = recvS(s, buf, len, flags);\r
Sleep(1);\r
if(BackgrndMessageProc() == YES)\r
break;\r
- // FTPS\91Î\89\9e\r
- // \8eó\90M\8am\94F\82ð\83o\83C\83p\83X\82µ\82½\82½\82ß\82±\82±\82Å\83^\83C\83\80\83A\83E\83g\82Ì\8am\94F\r
+ // FTPS対応\r
+ // 受信確認をバイパスしたためここでタイムアウトの確認\r
if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
{\r
if(BackgrndMessageProc() == YES)\r
if(BackgrndMessageProc() == YES)\r
*CancelCheckWork = YES;\r
\r
- // FTPS\91Î\89\9e\r
- // \91\97\90M\83o\83b\83t\83@\82Ì\8bó\82«\8am\94F\82É\82Í\89e\8b¿\82µ\82È\82¢\82ª\94O\82Ì\82½\82ß\r
+ // FTPS対応\r
+ // 送信バッファの空き確認には影響しないが念のため\r
// while((*CancelCheckWork == NO) && (AskAsyncDone(s, &Error, FD_WRITE_BIT) != YES))\r
while(AskCryptMode() == CRYPT_NONE && (*CancelCheckWork == NO) && (AskAsyncDone(s, &Error, FD_WRITE_BIT) != YES))\r
{\r
DoPrintf("## send()");\r
#endif\r
\r
- // FTPS\91Î\89\9e\r
+ // FTPS対応\r
// Ret = send(s, buf, len, flags);\r
if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
Ret = sendS(s, buf, len, flags);\r
Sleep(1);\r
if(BackgrndMessageProc() == YES)\r
break;\r
- // FTPS\91Î\89\9e\r
- // \91\97\90M\83o\83b\83t\83@\8am\94F\82ð\83o\83C\83p\83X\82µ\82½\82½\82ß\82±\82±\82Å\83^\83C\83\80\83A\83E\83g\82Ì\8am\94F\r
+ // FTPS対応\r
+ // 送信バッファ確認をバイパスしたためここでタイムアウトの確認\r
if(AskCryptMode() == CRYPT_FTPES || AskCryptMode() == CRYPT_FTPIS)\r
{\r
if(BackgrndMessageProc() == YES)\r
* Parameter\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int CheckClosedAndReconnect(void)\r
\r
//SetTaskMsg("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
if(AskAsyncDone(AskCmdCtrlSkt(), &Error, FD_CLOSE_BIT) == YES)\r
{\r
Sts = ReConnectCmdSkt();\r
-// socketwrapper.cpp
+// socketwrapper.cpp
// Copyright (C) 2011 Suguru Kawamoto
-// \83\\83P\83b\83g\83\89\83b\83p\81[
-// socket\8aÖ\98A\8aÖ\90\94\82ðOpenSSL\97p\82É\92u\8a·
-// \83R\83\93\83p\83C\83\8b\82É\82ÍOpenSSL\82Ì\83w\83b\83_\81[\83t\83@\83C\83\8b\82ª\95K\97v
-// \8eÀ\8ds\82É\82ÍOpenSSL\82ÌDLL\82ª\95K\97v
+// ソケットラッパー
+// socket関連関数をOpenSSL用に置換
+// コンパイルにはOpenSSLのヘッダーファイルが必要
+// 実行にはOpenSSLのDLLが必要
#include <windows.h>
#include <mmsystem.h>
if(pSSL_set_fd(*ppSSL, s) != 0)
{
r = TRUE;
- // SSL\82Ì\83l\83S\83V\83G\81[\83V\83\87\83\93\82É\82Í\8e\9e\8aÔ\82ª\82©\82©\82é\8fê\8d\87\82ª\82 \82é
+ // SSLのネゴシエーションには時間がかかる場合がある
while(pSSL_connect(*ppSSL) != 1)
{
LeaveCriticalSection(&g_OpenSSLLock);
-// socketwrapper.h
+// socketwrapper.h
// Copyright (C) 2011 Suguru Kawamoto
-// \83\\83P\83b\83g\83\89\83b\83p\81[
+// ソケットラッパー
#ifndef __SOCKETWRAPPER_H__
#define __SOCKETWRAPPER_H__
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83X\83e\81[\83^\83X\83E\83C\83\93\83h\83E\r
+* ステータスウインドウ\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include "resource.h"\r
\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static HWND hWndSbar = NULL;\r
static int SbarColWidth[5] = { 70, 230, 410, 570, -1 };\r
\r
\r
\r
-/*----- \83X\83e\81[\83^\83X\83E\83C\83\93\83h\83E\82ð\8dì\90¬\82·\82é ----------------------------------------\r
+/*----- ステータスウインドウを作成する ----------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \90e\83E\83C\83\93\83h\83E\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* HINSTANCE hInst : \83C\83\93\83X\83^\83\93\83X\83n\83\93\83h\83\8b\r
+* HWND hWnd : 親ウインドウのウインドウハンドル\r
+* HINSTANCE hInst : インスタンスハンドル\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int MakeStatusBarWindow(HWND hWnd, HINSTANCE hInst)\r
{\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
hWndSbar = CreateWindowEx(0,\r
STATUSCLASSNAME, NULL,\r
WS_CHILD | SBS_SIZEGRIP | WS_CLIPSIBLINGS | SBT_NOBORDERS,\r
{\r
SendMessage(hWndSbar, SB_SETPARTS, sizeof(SbarColWidth)/sizeof(int), (LPARAM)SbarColWidth);\r
ShowWindow(hWndSbar, SW_SHOW);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
}\r
\r
\r
-/*----- \83X\83e\81[\83^\83X\83E\83C\83\93\83h\83E\82ð\8dí\8f\9c --------------------------------------------\r
+/*----- ステータスウインドウを削除 --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DeleteStatusBarWindow(void)\r
}\r
\r
\r
-/*----- \83X\83e\81[\83^\83X\83E\83C\83\93\83h\83E\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· ------------------------\r
+/*----- ステータスウインドウのウインドウハンドルを返す ------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetSbarWnd(void)\r
}\r
\r
\r
-/*----- \83J\83\8c\83\93\83g\83E\83C\83\93\83h\83E\82ð\95\\8e¦ ----------------------------------------------\r
+/*----- カレントウインドウを表示 ----------------------------------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx : -1=\82È\82µ)\r
+* int Win : ウインドウ番号 (WIN_xxx : -1=なし)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispCurrentWindow(int Win)\r
}\r
\r
\r
-/*----- \91I\91ð\82³\82ê\82Ä\82¢\82é\83t\83@\83C\83\8b\90\94\82Æ\83T\83C\83Y\82ð\95\\8e¦ --------------------------------\r
+/*----- 選択されているファイル数とサイズを表示 --------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispSelectedSpace(void)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\8bó\82«\97e\97Ê\82ð\95\\8e¦ --------------------------------------------\r
+/*----- ローカル側の空き容量を表示 --------------------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\96¼\r
+* char *Path : パス名\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispLocalFreeSpace(char *Path)\r
}\r
\r
\r
-/*----- \93]\91\97\82·\82é\83t\83@\83C\83\8b\82Ì\90\94\82ð\95\\8e¦ --------------------------------------------\r
+/*----- 転送するファイルの数を表示 --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispTransferFiles(void)\r
}\r
\r
\r
-/*----- \8eó\90M\92\86\82Ì\83o\83C\83g\90\94\82ð\95\\8e¦ ------------------------------------------------\r
+/*----- 受信中のバイト数を表示 ------------------------------------------------\r
*\r
* Parameter\r
-* LONGLONG Size : \83o\83C\83g\90\94 (-1=\95\\8e¦\82ð\8fÁ\82·)\r
+* LONGLONG Size : バイト数 (-1=表示を消す)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispDownloadSize(LONGLONG Size)\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83^\83X\83N\83E\83C\83\93\83h\83E\r
+* タスクウインドウ\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
\r
\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
extern int ClientWidth;\r
extern int SepaWidth;\r
extern int ListHeight;\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
extern int TaskHeight;\r
extern HFONT ListFont;\r
extern int DebugConsole;\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static HWND hWndTask = NULL;\r
static HANDLE DispLogSemaphore;\r
\r
\r
\r
-/*----- \83^\83X\83N\83E\83C\83\93\83h\83E\82ð\8dì\90¬\82·\82é --------------------------------------------\r
+/*----- タスクウインドウを作成する --------------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \90e\83E\83C\83\93\83h\83E\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* HINSTANCE hInst : \83C\83\93\83X\83^\83\93\83X\83n\83\93\83h\83\8b\r
+* HWND hWnd : 親ウインドウのウインドウハンドル\r
+* HINSTANCE hInst : インスタンスハンドル\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int MakeTaskWindow(HWND hWnd, HINSTANCE hInst)\r
{\r
int Sts;\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
hWndTask = CreateWindowEx(/*WS_EX_STATICEDGE*/WS_EX_CLIENTEDGE,\r
"EDIT", NULL,\r
WS_CHILD | WS_BORDER | ES_AUTOVSCROLL | WS_VSCROLL | ES_MULTILINE | ES_READONLY | WS_CLIPSIBLINGS,\r
SendMessage(hWndTask, WM_SETFONT, (WPARAM)ListFont, MAKELPARAM(TRUE, 0));\r
\r
ShowWindow(hWndTask, SW_SHOW);\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
\r
DispLogSemaphore = CreateSemaphore(NULL, 1, 1, NULL);\r
DispLogSemaphore2 = CreateSemaphore(NULL, 1, 1, NULL);\r
}\r
\r
\r
-/*----- \83^\83X\83N\83E\83C\83\93\83h\83E\82ð\8dí\8f\9c ------------------------------------------------\r
+/*----- タスクウインドウを削除 ------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DeleteTaskWindow(void)\r
}\r
\r
\r
-/*----- \83^\83X\83N\83E\83C\83\93\83h\83E\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· ----------------------------\r
+/*----- タスクウインドウのウインドウハンドルを返す ----------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetTaskWnd(void)\r
}\r
\r
\r
-/*----- \83^\83X\83N\83\81\83b\83Z\81[\83W\82ð\95\\8e¦\82·\82é --------------------------------------------\r
+/*----- タスクメッセージを表示する --------------------------------------------\r
*\r
* Parameter\r
-* char *szFormat : \83t\83H\81[\83}\83b\83g\95¶\8e\9a\97ñ\r
-* ... : \83p\83\89\83\81\81[\83^\r
+* char *szFormat : フォーマット文字列\r
+* ... : パラメータ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetTaskMsg(char *szFormat, ...)\r
strcat(szBuf, "\r\n");\r
Pos = SendMessage(GetTaskWnd(), WM_GETTEXTLENGTH, 0, 0);\r
\r
- /* \83e\83L\83X\83g\83T\83C\83Y\82Ì\83\8a\83~\83b\83g\92l\82ð\83`\83F\83b\83N */\r
+ /* テキストサイズのリミット値をチェック */\r
if((Pos + strlen(szBuf)) >= TASK_BUFSIZE)\r
{\r
- /* \83\8a\83~\83b\83g\82ð\89z\82¦\82»\82¤\82È\82ç\81A\90æ\93ª\95\94\95ª\82ð\90Ø\82è\8eÌ\82Ä\82é */\r
+ /* リミットを越えそうなら、先頭部分を切り捨てる */\r
Pos = SendMessage(GetTaskWnd(), EM_LINEFROMCHAR, TASK_BUFSIZE/10, 0) + 1;\r
Pos = SendMessage(GetTaskWnd(), EM_LINEINDEX, Pos, 0);\r
SendMessage(GetTaskWnd(), EM_SETSEL, 0, Pos);\r
}\r
\r
\r
-/*----- \83^\83X\83N\83\81\83b\83Z\81[\83W\82ð\83t\83@\83C\83\8b\82É\95Û\91¶\82·\82é ----------------------------------\r
+/*----- タスクメッセージをファイルに保存する ----------------------------------\r
*\r
* Parameter\r
-* char *Fname : \83t\83@\83C\83\8b\96¼\r
+* char *Fname : ファイル名\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int SaveTaskMsg(char *Fname)\r
int Sts;\r
\r
\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
Size = SendMessage(GetTaskWnd(), WM_GETTEXTLENGTH, 0, 0);\r
if((Buf = malloc(Size)) != NULL)\r
{\r
{\r
SendMessage(GetTaskWnd(), WM_GETTEXT, Size, (LPARAM)Buf);\r
if(fwrite(Buf, strlen(Buf), 1, Strm) == 1)\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
fclose(Strm);\r
\r
- if(Sts == FAIL)\r
+ if(Sts == FFFTP_FAIL)\r
_unlink(Fname);\r
}\r
free(Buf);\r
}\r
\r
\r
-/*----- \83^\83X\83N\93à\97e\82ð\83r\83\85\81[\83\8f\82Å\95\\8e¦ --------------------------------------------\r
+/*----- タスク内容をビューワで表示 --------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispTaskMsg(void)\r
SetYenTail(Buf);\r
strcat(Buf, "_ffftp.tsk");\r
\r
- if(SaveTaskMsg(Buf) == SUCCESS)\r
+ if(SaveTaskMsg(Buf) == FFFTP_SUCCESS)\r
{\r
AddTempFileList(Buf);\r
ExecViewer(Buf, 0);\r
}\r
\r
\r
-/*----- \83f\83o\83b\83O\83R\83\93\83\\81[\83\8b\82É\83\81\83b\83Z\81[\83W\82ð\95\\8e¦\82·\82é ------------------------------\r
+/*----- デバッグコンソールにメッセージを表示する ------------------------------\r
*\r
* Parameter\r
-* char *szFormat : \83t\83H\81[\83}\83b\83g\95¶\8e\9a\97ñ\r
-* ... : \83p\83\89\83\81\81[\83^\r
+* char *szFormat : フォーマット文字列\r
+* ... : パラメータ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DoPrintf(char *szFormat, ...)\r
}\r
\r
\r
-/*----- \83f\83o\83b\83O\83R\83\93\83\\81[\83\8b\82É\83\81\83b\83Z\81[\83W\82ð\95\\8e¦\82·\82é ------------------------------\r
+/*----- デバッグコンソールにメッセージを表示する ------------------------------\r
*\r
* Parameter\r
-* char *szFormat : \83t\83H\81[\83}\83b\83g\95¶\8e\9a\97ñ\r
-* ... : \83p\83\89\83\81\81[\83^\r
+* char *szFormat : フォーマット文字列\r
+* ... : パラメータ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DoPrintf2(char *szFormat, ...)\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83c\81[\83\8b\r
+* ツール\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include <htmlhelp.h>\r
#include "helpid.h"\r
\r
-// UTF-8\91Î\89\9e\r
+// UTF-8対応\r
#undef __MBSWRAPPER_H__\r
#include "mbswrapper.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static BOOL CALLBACK OtpCalcWinProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
extern HWND hHelpWin;\r
\r
\r
-/*----- \83\8f\83\93\83^\83C\83\80\83p\83X\83\8f\81[\83h\8cv\8eZ ----------------------------------------------\r
+/*----- ワンタイムパスワード計算 ----------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void OtpCalcTool(void)\r
}\r
\r
\r
-/*----- \83\8f\83\93\83^\83C\83\80\83p\83X\83\8f\81[\83h\8cv\8eZ\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------\r
+/*----- ワンタイムパスワード計算ウインドウのコールバック ----------------------\r
*\r
* Parameter\r
-* HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-* WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-* LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
*\r
* Return Value\r
* BOOL TRUE/FALSE\r
/* Seed */\r
if((Pos = GetNextField(Pos)) != NULL)\r
{\r
- if(GetOneField(Pos, Seed, MAX_SEED_LEN) == SUCCESS)\r
+ if(GetOneField(Pos, Seed, MAX_SEED_LEN) == FFFTP_SUCCESS)\r
{\r
Make6WordPass(Seq, Seed, Pass, Type, Tmp);\r
}\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83c\81[\83\8b\83o\81[\82Æ\83\81\83j\83\85\81[\r
+* ツールバーとメニュー\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include "resource.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static void AddOpenMenu(HMENU hMenu, UINT Flg);\r
static LRESULT CALLBACK HistEditBoxWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\r
\r
-/* 2007/09/21 sunasunamix \82±\82±\82©\82ç *********************/\r
+/* 2007/09/21 sunasunamix ここから *********************/\r
static LRESULT CALLBACK CountermeasureTbarMainProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam);\r
static LRESULT CALLBACK CountermeasureTbarLocalProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam);\r
static LRESULT CALLBACK CountermeasureTbarRemoteProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam);\r
-/********************************************* \82±\82±\82Ü\82Å */\r
+/********************************************* ここまで */\r
\r
\r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
\r
extern int SepaWidth;\r
extern int RemoteWidth;\r
\r
extern int CancelFlg;\r
\r
-/* \90Ý\92è\92l */\r
+/* 設定値 */\r
extern int DotFile;\r
extern char AsciiExt[ASCII_EXT_LEN+1];\r
extern int TransMode;\r
extern int TransMode;\r
extern int SortSave;\r
\r
-/*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
+/*===== ローカルなワーク =====*/\r
\r
static HWND hWndTbarMain = NULL;\r
static HWND hWndTbarLocal = NULL;\r
static int TmpHostKanjiCode;\r
static int TmpHostKanaCnv;\r
\r
-// TODO: \83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\82ðShift_JIS\88È\8aO\82É\82à\91Î\89\9e\r
+// TODO: ローカルの漢字コードをShift_JIS以外にも対応\r
static int TmpLocalKanjiCode;\r
\r
static int TmpLocalFileSort;\r
static int HideUI = NO;\r
\r
\r
-/* 2007/09/21 sunasunamix \82±\82±\82©\82ç *********************/\r
+/* 2007/09/21 sunasunamix ここから *********************/\r
static WNDPROC pOldTbarMainProc = NULL;\r
static WNDPROC pOldTbarLocalProc = NULL;\r
static WNDPROC pOldTbarRemoteProc = NULL;\r
-/********************************************* \82±\82±\82Ü\82Å */\r
+/********************************************* ここまで */\r
\r
\r
-/* \88È\91O\81A\83R\83\93\83{\83{\83b\83N\83X\82É\83J\83\8c\83\93\83g\83t\83H\83\8b\83_\82ð\89¯\82¦\82³\82¹\82Ä\82¢\82½\97¬\82ê\82Å */\r
-/* \82±\82Ì\83t\83@\83C\83\8b\82Å\83J\83\8c\83\93\83g\83t\83H\83\8b\83_\82ð\89¯\82¦\82³\82¹\82é */\r
+/* 以前、コンボボックスにカレントフォルダを憶えさせていた流れで */\r
+/* このファイルでカレントフォルダを憶えさせる */\r
static char LocalCurDir[FMAX_PATH+1];\r
static char RemoteCurDir[FMAX_PATH+1];\r
\r
\r
-/* \83\81\83C\83\93\82Ì\83c\81[\83\8b\83o\81[ */\r
+/* メインのツールバー */\r
static TBBUTTON TbarDataMain[] = {\r
{ 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0 },\r
{ 0, MENU_CONNECT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },\r
{ 26, MENU_ABORT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 }\r
};\r
\r
-/* \83\8d\81[\83J\83\8b\91¤\82Ì\83c\81[\83\8b\83o\81[ */\r
+/* ローカル側のツールバー */\r
static TBBUTTON TbarDataLocal[] = {\r
{ 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0 },\r
{ 0, MENU_LOCAL_UPDIR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },\r
{ 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0 }\r
};\r
\r
-/* \83z\83X\83g\91¤\82Ì\83c\81[\83\8b\83o\81[ */\r
+/* ホスト側のツールバー */\r
static TBBUTTON TbarDataRemote[] = {\r
{ 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0 },\r
{ 0, MENU_REMOTE_UPDIR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 },\r
{ 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0 }\r
};\r
\r
-/* \91S\83{\83^\83\93\81^\83\81\83j\83\85\81[\8d\80\96Ú */\r
+/* 全ボタン/メニュー項目 */\r
static const int HideMenus[] = {\r
MENU_CONNECT, MENU_QUICK, MENU_DISCONNECT,\r
MENU_SET_CONNECT, MENU_IMPORT_WS, MENU_EXIT,\r
\r
\r
\r
-/*----- \83c\81[\83\8b\83o\81[\82ð\8dì\90¬\82·\82é --------------------------------------------------\r
+/*----- ツールバーを作成する --------------------------------------------------\r
*\r
* Parameter\r
-* HWND hWnd : \90e\83E\83C\83\93\83h\83E\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-* HINSTANCE hInst : \83C\83\93\83X\83^\83\93\83X\83n\83\93\83h\83\8b\r
+* HWND hWnd : 親ウインドウのウインドウハンドル\r
+* HINSTANCE hInst : インスタンスハンドル\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst)\r
int Tmp2;\r
DWORD NoDrives;\r
\r
- /*===== \83\81\83C\83\93\82Ì\83c\81[\83\8b\83o\81[ =====*/\r
+ /*===== メインのツールバー =====*/\r
\r
hWndTbarMain = CreateToolbarEx(\r
hWnd,\r
\r
if(hWndTbarMain != NULL)\r
{\r
- /* 2007/09/21 sunasunamix \82±\82±\82©\82ç *********************/\r
+ /* 2007/09/21 sunasunamix ここから *********************/\r
pOldTbarMainProc = (WNDPROC)SetWindowLong(hWndTbarMain, GWL_WNDPROC, (DWORD)CountermeasureTbarMainProc);\r
- /********************************************* \82±\82±\82Ü\82Å */\r
+ /********************************************* ここまで */\r
\r
GetClientRect(hWnd, &Rect1);\r
MoveWindow(hWndTbarMain, 0, 0, Rect1.right, TOOLWIN_HEIGHT, FALSE);\r
}\r
\r
- /*===== \83\8d\81[\83J\83\8b\82Ì\83c\81[\83\8b\83o\81[ =====*/\r
+ /*===== ローカルのツールバー =====*/\r
\r
hWndTbarLocal = CreateToolbarEx(\r
hWnd,\r
\r
if(hWndTbarLocal != NULL)\r
{\r
- /* 2007/09/21 sunasunamix \82±\82±\82©\82ç *********************/\r
+ /* 2007/09/21 sunasunamix ここから *********************/\r
pOldTbarLocalProc = (WNDPROC)SetWindowLong(hWndTbarLocal, GWL_WNDPROC, (DWORD)CountermeasureTbarLocalProc);\r
- /********************************************* \82±\82±\82Ü\82Å */\r
+ /********************************************* ここまで */\r
\r
MoveWindow(hWndTbarLocal, 0, TOOLWIN_HEIGHT, LocalWidth, TOOLWIN_HEIGHT, FALSE);\r
\r
- /*===== \83\8d\81[\83J\83\8b\82Ì\83f\83B\83\8c\83N\83g\83\8a\96¼\83E\83C\83\93\83h\83E =====*/\r
+ /*===== ローカルのディレクトリ名ウインドウ =====*/\r
\r
SendMessage(hWndTbarLocal, TB_GETITEMRECT, 3, (LPARAM)&Rect1);\r
#ifndef ENGLISH\r
\r
if(hWndDirLocal != NULL)\r
{\r
- /* \83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b\82ð\92T\82· */\r
+ /* エディットコントロールを探す */\r
hWndDirLocalEdit = GetWindow(hWndDirLocal, GW_CHILD);\r
if(hWndDirLocalEdit != NULL)\r
HistEditBoxProcPtr = (WNDPROC)SetWindowLong(hWndDirLocalEdit, GWL_WNDPROC, (LONG)HistEditBoxWndProc);\r
SendMessage(hWndDirLocal, WM_SETFONT, (WPARAM)DlgFont, MAKELPARAM(TRUE, 0));\r
SendMessage(hWndDirLocal, CB_LIMITTEXT, FMAX_PATH, 0);\r
\r
- /* \83h\83\89\83C\83u\96¼\82ð\83Z\83b\83g\82µ\82Ä\82¨\82 */\r
+ /* ドライブ名をセットしておく */\r
GetLogicalDriveStrings(FMAX_PATH, Tmp);\r
NoDrives = LoadHideDriveListRegistory();\r
Pos = Tmp;\r
}\r
}\r
\r
- /*===== \83z\83X\83g\82Ì\83c\81[\83\8b\83o\81[ =====*/\r
+ /*===== ホストのツールバー =====*/\r
\r
hWndTbarRemote = CreateToolbarEx(\r
hWnd,\r
\r
if(hWndTbarRemote != NULL)\r
{\r
- /* 2007/09/21 sunasunamix \82±\82±\82©\82ç *********************/\r
+ /* 2007/09/21 sunasunamix ここから *********************/\r
pOldTbarRemoteProc = (WNDPROC)SetWindowLong(hWndTbarRemote, GWL_WNDPROC, (DWORD)CountermeasureTbarRemoteProc);\r
- /********************************************* \82±\82±\82Ü\82Å */\r
+ /********************************************* ここまで */\r
\r
MoveWindow(hWndTbarRemote, LocalWidth + SepaWidth, TOOLWIN_HEIGHT, RemoteWidth, TOOLWIN_HEIGHT, FALSE);\r
\r
- /*===== \83z\83X\83g\82Ì\83f\83B\83\8c\83N\83g\83\8a\96¼\83E\83C\83\93\83h\83E =====*/\r
+ /*===== ホストのディレクトリ名ウインドウ =====*/\r
\r
SendMessage(hWndTbarRemote, TB_GETITEMRECT, 3, (LPARAM)&Rect1);\r
hWndDirRemote = CreateWindowEx(WS_EX_CLIENTEDGE,\r
\r
if(hWndDirRemote != NULL)\r
{\r
- /* \83G\83f\83B\83b\83g\83R\83\93\83g\83\8d\81[\83\8b\82ð\92T\82· */\r
+ /* エディットコントロールを探す */\r
hWndDirRemoteEdit = GetWindow(hWndDirRemote, GW_CHILD);\r
if(hWndDirRemoteEdit != NULL)\r
HistEditBoxProcPtr = (WNDPROC)SetWindowLong(hWndDirRemoteEdit, GWL_WNDPROC, (LONG)HistEditBoxWndProc);\r
}\r
}\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
if((hWndTbarMain == NULL) ||\r
(hWndTbarLocal == NULL) ||\r
(hWndTbarRemote == NULL) ||\r
(hWndDirLocal == NULL) ||\r
(hWndDirRemote == NULL))\r
{\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
}\r
return(Sts);\r
}\r
switch (message)\r
{\r
case WM_CHAR :\r
- if(wParam == 0x0D) /* \83\8a\83^\81[\83\93\83L\81[\82ª\89\9f\82³\82ê\82½ */\r
+ if(wParam == 0x0D) /* リターンキーが押された */\r
{\r
if(hWnd == hWndDirLocalEdit)\r
{\r
else\r
{\r
SendMessage(hWndDirRemoteEdit, WM_GETTEXT, FMAX_PATH+1, (LPARAM)Tmp);\r
- if(CheckClosedAndReconnect() == SUCCESS)\r
+ if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
if(DoCWD(Tmp, YES, NO, YES) < FTP_RETRY)\r
GetRemoteDirForWnd(CACHE_NORMAL, &CancelFlg);\r
}\r
}\r
}\r
- else if(wParam == 0x09) /* TAB\83L\81[\82ª\89\9f\82³\82ê\82½ */\r
+ else if(wParam == 0x09) /* TABキーが押された */\r
{\r
if(hWnd == hWndDirLocalEdit)\r
{\r
\r
\r
\r
-/*----- \83c\81[\83\8b\83o\81[\82ð\8dí\8f\9c ------------------------------------------------------\r
+/*----- ツールバーを削除 ------------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DeleteToolBarWindow(void)\r
}\r
\r
\r
-/*----- \83\81\83C\83\93\82Ì\83c\81[\83\8b\83o\81[\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· --------------------------\r
+/*----- メインのツールバーのウインドウハンドルを返す --------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetMainTbarWnd(void)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83q\83X\83g\83\8a\83E\83C\83\93\83h\83E\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· --------------\r
+/*----- ローカル側のヒストリウインドウのウインドウハンドルを返す --------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetLocalHistHwnd(void)\r
}\r
\r
\r
-/*----- \83z\83X\83g\91¤\82Ì\83q\83X\83g\83\8a\83E\83C\83\93\83h\83E\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· ----------------\r
+/*----- ホスト側のヒストリウインドウのウインドウハンドルを返す ----------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetRemoteHistHwnd(void)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83q\83X\83g\83\8a\83G\83f\83B\83b\83g\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· --------------\r
+/*----- ローカル側のヒストリエディットのウインドウハンドルを返す --------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetLocalHistEditHwnd(void)\r
}\r
\r
\r
-/*----- \83z\83X\83g\91¤\82Ì\83q\83X\83g\83\8a\83G\83f\83B\83b\83g\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· ----------------\r
+/*----- ホスト側のヒストリエディットのウインドウハンドルを返す ----------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetRemoteHistEditHwnd(void)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83c\81[\83\8b\83o\81[\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· ----------------------\r
+/*----- ローカル側のツールバーのウインドウハンドルを返す ----------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetLocalTbarWnd(void)\r
}\r
\r
\r
-/*----- \83z\83X\83g\91¤\82Ì\83c\81[\83\8b\83o\81[\82Ì\83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\82ð\95Ô\82· ------------------------\r
+/*----- ホスト側のツールバーのウインドウハンドルを返す ------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* HWND \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
+* HWND ウインドウハンドル\r
*----------------------------------------------------------------------------*/\r
\r
HWND GetRemoteTbarWnd(void)\r
}\r
\r
\r
-/*----- HideUI \82Ì\8fó\91Ô\82ð\95Ô\82· ---------------------------------------------------\r
+/*----- HideUI の状態を返す ---------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int HideUI \82Ì\8fó\91Ô\r
+* int HideUI の状態\r
*----------------------------------------------------------------------------*/\r
\r
int GetHideUI(void)\r
}\r
\r
\r
-/*----- \83c\81[\83\8b\83{\83^\83\93\81^\83\81\83j\83\85\81[\82Ì\83n\83C\83h\8f\88\97\9d ------------------------------------\r
+/*----- ツールボタン/メニューのハイド処理 ------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void MakeButtonsFocus(void)\r
}\r
\r
\r
-/*----- \83\86\81[\83U\82Ì\91\80\8dì\82ð\8bÖ\8e~\82·\82é ------------------------------------------------\r
+/*----- ユーザの操作を禁止する ------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DisableUserOpe(void)\r
}\r
\r
\r
-/*----- \83\86\81[\83U\82Ì\91\80\8dì\82ð\8b\96\89Â\82·\82é ------------------------------------------------\r
+/*----- ユーザの操作を許可する ------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void EnableUserOpe(void)\r
EnableWindow(hWndDirLocal, TRUE);\r
EnableWindow(hWndDirRemote, TRUE);\r
\r
- // \91I\91ð\95s\89Â\82È\8a¿\8e\9a\83R\81[\83h\82Ì\83{\83^\83\93\82ª\95\\8e¦\82³\82ê\82é\83o\83O\82ð\8fC\90³\r
+ // 選択不可な漢字コードのボタンが表示されるバグを修正\r
HideHostKanjiButton();\r
HideLocalKanjiButton();\r
\r
}\r
\r
\r
-/*----- \83\86\81[\83U\82Ì\91\80\8dì\82ª\8bÖ\8e~\82³\82ê\82Ä\82¢\82é\82©\82Ç\82¤\82©\82ð\95Ô\82· ----------------------------\r
+/*----- ユーザの操作が禁止されているかどうかを返す ----------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* YES=\8bÖ\8e~\82³\82ê\82Ä\82¢\82é/NO\r
+* int ステータス\r
+* YES=禁止されている/NO\r
*----------------------------------------------------------------------------*/\r
\r
int AskUserOpeDisabled(void)\r
\r
\r
/*===================================================\r
-* \93]\91\97\83\82\81[\83h\r
+* 転送モード\r
*===================================================*/\r
\r
-/*----- \93]\91\97\83\82\81[\83h\82ð\90Ý\92è\82·\82é --------------------------------------------------\r
+/*----- 転送モードを設定する --------------------------------------------------\r
*\r
* Parameter\r
-* int Mode : \93]\91\97\83\82\81[\83h (TYPE_xx)\r
+* int Mode : 転送モード (TYPE_xx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetTransferTypeImm(int Mode)\r
}\r
\r
\r
-/*----- \83\81\83j\83\85\81[\82É\82æ\82è\93]\91\97\83\82\81[\83h\82ð\90Ý\92è\82·\82é ------------------------------------\r
+/*----- メニューにより転送モードを設定する ------------------------------------\r
*\r
* Parameter\r
-* int Type : \93]\91\97\83\82\81[\83h (MENU_xxxx)\r
+* int Type : 転送モード (MENU_xxxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetTransferType(int Type)\r
}\r
\r
\r
-/*----- \93]\91\97\83\82\81[\83h\82É\82µ\82½\82ª\82Á\82Ä\83{\83^\83\93\82ð\95\\8e¦\82·\82é --------------------------------\r
+/*----- 転送モードにしたがってボタンを表示する --------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispTransferType(void)\r
}\r
\r
\r
-/*----- \90Ý\92è\8fã\82Ì\93]\91\97\83\82\81[\83h\82ð\95Ô\82· ----------------------------------------------\r
+/*----- 設定上の転送モードを返す ----------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \93]\91\97\83\82\81[\83h (TYPE_xx)\r
+* int 転送モード (TYPE_xx)\r
*----------------------------------------------------------------------------*/\r
\r
int AskTransferType(void)\r
}\r
\r
\r
-/*----- \8eÀ\8dÛ\82Ì\93]\91\97\83\82\81[\83h\82ð\95Ô\82· ------------------------------------------------\r
+/*----- 実際の転送モードを返す ------------------------------------------------\r
*\r
* Parameter\r
-* char Fname : \83t\83@\83C\83\8b\96¼\r
-* int Type : \90Ý\92è\8fã\82Ì\93]\91\97\83\82\81[\83h (TYPE_xx)\r
+* char Fname : ファイル名\r
+* int Type : 設定上の転送モード (TYPE_xx)\r
*\r
* Return Value\r
-* int \93]\91\97\83\82\81[\83h (TYPE_xx)\r
+* int 転送モード (TYPE_xx)\r
*----------------------------------------------------------------------------*/\r
\r
int AskTransferTypeAssoc(char *Fname, int Type)\r
Pos = AsciiExt;\r
while(*Pos != NUL)\r
{\r
- if(CheckFname(Name, Pos) == SUCCESS)\r
+ if(CheckFname(Name, Pos) == FFFTP_SUCCESS)\r
{\r
Ret = TYPE_A;\r
break;\r
}\r
\r
\r
-/*----- \93]\91\97\83\82\81[\83h\82ð\95Û\91¶\82·\82é --------------------------------------------------\r
+/*----- 転送モードを保存する --------------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*\r
* Note\r
-* \8c»\8dÝ\82Ì\93]\91\97\83\82\81[\83h\82ª\83\8c\83W\83X\83g\83\8a\82É\95Û\91¶\82³\82ê\82é\r
+* 現在の転送モードがレジストリに保存される\r
*----------------------------------------------------------------------------*/\r
\r
void SaveTransferType(void)\r
\r
\r
/*===================================================\r
-* \8a¿\8e\9a\83\82\81[\83h\r
+* 漢字モード\r
*===================================================*/\r
\r
-/*----- \83z\83X\83g\82Ì\8a¿\8e\9a\83\82\81[\83h\82ð\83Z\83b\83g\82·\82é ----------------------------------------\r
+/*----- ホストの漢字モードをセットする ----------------------------------------\r
*\r
* Parameter\r
-* int Mode : \8a¿\8e\9a\83\82\81[\83h (KANJI_xxxx)\r
+* int Mode : 漢字モード (KANJI_xxxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetHostKanjiCodeImm(int Mode)\r
}\r
\r
\r
-/*----- \83\81\83j\83\85\81[\82É\82æ\82è\83z\83X\83g\82Ì\8a¿\8e\9a\83\82\81[\83h\82ð\90Ý\92è\82·\82é -----------------------------\r
+/*----- メニューによりホストの漢字モードを設定する -----------------------------\r
*\r
* Parameter\r
-* int Type : \8a¿\8e\9a\83\82\81[\83h (MENU_xxxx)\r
+* int Type : 漢字モード (MENU_xxxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetHostKanjiCode(int Type)\r
{\r
switch(Type)\r
{\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
case MENU_KNJ_SJIS :\r
TmpHostKanjiCode = KANJI_SJIS;\r
break;\r
}\r
\r
\r
-/*----- \83z\83X\83g\82Ì\8a¿\8e\9a\83\82\81[\83h\82É\82µ\82½\82ª\82Á\82Ä\83{\83^\83\93\82ð\95\\8e¦\82·\82é ------------------------\r
+/*----- ホストの漢字モードにしたがってボタンを表示する ------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispHostKanjiCode(void)\r
{\r
switch(TmpHostKanjiCode)\r
{\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
case KANJI_SJIS :\r
SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_SJIS, MAKELONG(TRUE, 0));\r
break;\r
}\r
\r
\r
-/*----- \83z\83X\83g\82Ì\8a¿\8e\9a\83\82\81[\83h\82ð\95Ô\82· ----------------------------------------------\r
+/*----- ホストの漢字モードを返す ----------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \8a¿\8e\9a\83\82\81[\83h (KANJI_xxxx)\r
+* int 漢字モード (KANJI_xxxx)\r
*----------------------------------------------------------------------------*/\r
\r
int AskHostKanjiCode(void)\r
}\r
\r
\r
-/*----- \8a¿\8e\9a\83\82\81[\83h\83{\83^\83\93\82Ì\83n\83C\83h\8f\88\97\9d\82ð\8ds\82¤ ------------------------------------\r
+/*----- 漢字モードボタンのハイド処理を行う ------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void HideHostKanjiButton(void)\r
{\r
switch(TmpTransMode)\r
{\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
case TYPE_I : \r
SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_SJIS, MAKELONG(FALSE, 0));\r
SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_EUC, MAKELONG(FALSE, 0));\r
// else\r
// SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));\r
// break;\r
- // \8c»\8dÝ\83J\83i\95Ï\8a·\82ÍShift_JIS\81AJIS\81AEUC\8aÔ\82Å\82Ì\82Ý\8b@\94\\82·\82é\r
+ // 現在カナ変換はShift_JIS、JIS、EUC間でのみ機能する\r
SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));\r
switch(TmpHostKanjiCode)\r
{\r
}\r
\r
\r
-// \83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\r
-// \83e\83L\83X\83g\83\82\81[\83h\93]\91\97\8e\9e\82É\8eg\97p\r
-// \83z\83X\83g\91¤\82ª\96³\95Ï\8a·\82Ì\8e\9e\82Í\83\8d\81[\83J\83\8b\82à\96³\95Ï\8a·\r
+// ローカルの漢字コード\r
+// テキストモード転送時に使用\r
+// ホスト側が無変換の時はローカルも無変換\r
\r
void SetLocalKanjiCodeImm(int Mode)\r
{\r
{\r
switch(Type)\r
{\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
case MENU_L_KNJ_SJIS :\r
TmpLocalKanjiCode = KANJI_SJIS;\r
break;\r
{\r
switch(TmpLocalKanjiCode)\r
{\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
case KANJI_SJIS :\r
SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_SJIS, MAKELONG(TRUE, 0));\r
break;\r
{\r
switch(TmpTransMode)\r
{\r
- // UTF-8\91Î\89\9e\r
+ // UTF-8対応\r
case TYPE_I : \r
SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_SJIS, MAKELONG(FALSE, 0));\r
SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(FALSE, 0));\r
SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0));\r
SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0));\r
SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(TRUE, 0));\r
- // \8c»\8dÝ\83J\83i\95Ï\8a·\82ÍShift_JIS\81AJIS\81AEUC\8aÔ\82Å\82Ì\82Ý\8b@\94\\82·\82é\r
+ // 現在カナ変換はShift_JIS、JIS、EUC間でのみ機能する\r
SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));\r
switch(TmpHostKanjiCode)\r
{\r
\r
\r
/*===================================================\r
-* \94¼\8ap\95Ï\8a·\83\82\81[\83h\r
+* 半角変換モード\r
*===================================================*/\r
\r
-/*----- \83z\83X\83g\82Ì\94¼\8ap\95Ï\8a·\83\82\81[\83h\82ð\90Ý\92è\82·\82é --------------------------------------\r
+/*----- ホストの半角変換モードを設定する --------------------------------------\r
*\r
* Parameter\r
-* int Mode : \94¼\8ap\95Ï\8a·\83\82\81[\83h(YES/NO)\r
+* int Mode : 半角変換モード(YES/NO)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetHostKanaCnvImm(int Mode)\r
}\r
\r
\r
-/*----- \83z\83X\83g\82Ì\94¼\8ap\95Ï\8a·\83\82\81[\83h\82ð\94½\93]\82·\82é --------------------------------------\r
+/*----- ホストの半角変換モードを反転する --------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetHostKanaCnv(void)\r
}\r
\r
\r
-/*----- \83z\83X\83g\82Ì\94¼\8ap\95Ï\8a·\83\82\81[\83h\82É\82µ\82½\82ª\82Á\82Ä\83{\83^\83\93\82ð\95\\8e¦\82·\82é --------------------\r
+/*----- ホストの半角変換モードにしたがってボタンを表示する --------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispHostKanaCnv(void)\r
}\r
\r
\r
-/*----- \83z\83X\83g\82Ì\94¼\8ap\95Ï\8a·\83\82\81[\83h\82ð\95Ô\82· ------------------------------------------\r
+/*----- ホストの半角変換モードを返す ------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \94¼\8ap\95Ï\8a·\83\82\81[\83h\r
+* int 半角変換モード\r
*----------------------------------------------------------------------------*/\r
\r
int AskHostKanaCnv(void)\r
\r
\r
/*===================================================\r
-* \83\\81[\83g\95û\96@\r
+* ソート方法\r
*===================================================*/\r
\r
-/*----- \83\\81[\83g\95û\96@\82ð\83Z\83b\83g\82·\82é ------------------------------------------------\r
+/*----- ソート方法をセットする ------------------------------------------------\r
*\r
* Parameter\r
-* int LFsort : \83\8d\81[\83J\83\8b\91¤\82Ì\83t\83@\83C\83\8b\82Ì\83\\81[\83g\95û\96@ (SORT_xxx)\r
-* int LDsort : \83\8d\81[\83J\83\8b\91¤\82Ì\83f\83B\83\8c\83N\83g\83\8a\82Ì\83\\81[\83g\95û\96@ (SORT_xxx)\r
-* int RFsort : \83z\83X\83g\91¤\82Ì\83t\83@\83C\83\8b\82Ì\83\\81[\83g\95û\96@ (SORT_xxx)\r
-* int RDsort : \83z\83X\83g\91¤\82Ì\83f\83B\83\8c\83N\83g\83\8a\82Ì\83\\81[\83g\95û\96@ (SORT_xxx)\r
+* int LFsort : ローカル側のファイルのソート方法 (SORT_xxx)\r
+* int LDsort : ローカル側のディレクトリのソート方法 (SORT_xxx)\r
+* int RFsort : ホスト側のファイルのソート方法 (SORT_xxx)\r
+* int RDsort : ホスト側のディレクトリのソート方法 (SORT_xxx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetSortTypeImm(int LFsort, int LDsort, int RFsort, int RDsort)\r
}\r
\r
\r
-/*----- \83\8a\83X\83g\83r\83\85\81[\82Ì\83^\83u\83N\83\8a\83b\83N\82É\82æ\82é\83\\81[\83g\95û\96@\82Ì\83Z\83b\83g --------------------\r
+/*----- リストビューのタブクリックによるソート方法のセット --------------------\r
*\r
* Parameter\r
-* int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86\r
-* int Tab : \83J\83\89\83\80\94Ô\8d\86\r
+* int Win : ウインドウ番号\r
+* int Tab : カラム番号\r
*\r
* Return Value\r
-* int \83\\81[\83g\95û\96@ (SORT_xxx)\r
+* int ソート方法 (SORT_xxx)\r
*----------------------------------------------------------------------------*/\r
\r
void SetSortTypeByColumn(int Win, int Tab)\r
}\r
\r
\r
-/*----- \83\\81[\83g\95û\96@\82ð\95Ô\82· ------------------------------------------------------\r
+/*----- ソート方法を返す ------------------------------------------------------\r
*\r
* Parameter\r
-* int Name : \82Ç\82Ì\95\94\95ª\82© (ITEM_xxx)\r
+* int Name : どの部分か (ITEM_xxx)\r
*\r
* Return Value\r
-* int \83\\81[\83g\95û\96@ (SORT_xxx)\r
+* int ソート方法 (SORT_xxx)\r
*----------------------------------------------------------------------------*/\r
\r
int AskSortType(int Name)\r
}\r
\r
\r
-/*----- \83z\83X\83g\82²\82Æ\82É\83\\81[\83g\82ð\95Û\91¶\82·\82é\82©\82Ç\82¤\82©\82ð\83Z\83b\83g\82·\82é-----------------------\r
+/*----- ホストごとにソートを保存するかどうかをセットする-----------------------\r
*\r
* Parameter\r
-* int Sw : \83X\83C\83b\83` (YES/NO)\r
+* int Sw : スイッチ (YES/NO)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetSaveSortToHost(int Sw)\r
}\r
\r
\r
-/*----- \83z\83X\83g\82²\82Æ\82É\83\\81[\83g\82ð\95Û\91¶\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82· ----------------------------\r
+/*----- ホストごとにソートを保存するかどうかを返す ----------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \83X\83C\83b\83` (YES/NO)\r
+* int スイッチ (YES/NO)\r
*----------------------------------------------------------------------------*/\r
\r
int AskSaveSortToHost(void)\r
\r
\r
/*===================================================\r
-* \83\8a\83X\83g\83\82\81[\83h\r
+* リストモード\r
*===================================================*/\r
\r
-/*----- \83\8a\83X\83g\83\82\81[\83h\82É\82µ\82½\82ª\82Á\82Ä\83{\83^\83\93\82ð\95\\8e¦\82·\82é ------------------------------\r
+/*----- リストモードにしたがってボタンを表示する ------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispListType(void)\r
\r
\r
/*===================================================\r
-* \83t\83H\83\8b\83_\93¯\8e\9e\88Ú\93®\83\82\81[\83h\r
+* フォルダ同時移動モード\r
*===================================================*/\r
\r
-/*----- \93]\91\97\83\82\81[\83h\82ð\90Ý\92è\82·\82é --------------------------------------------------\r
+/*----- 転送モードを設定する --------------------------------------------------\r
*\r
* Parameter\r
-* int Mode : \93]\91\97\83\82\81[\83h (TYPE_xx)\r
+* int Mode : 転送モード (TYPE_xx)\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetSyncMoveMode(int Mode)\r
}\r
\r
\r
-/*----- \83t\83H\83\8b\83_\93¯\8e\9e\88Ú\93®\83\82\81[\83h\82ð\90Ø\82è\91Ö\82¦\82é ------------------------------------\r
+/*----- フォルダ同時移動モードを切り替える ------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void ToggleSyncMoveMode(void)\r
}\r
\r
\r
-/*----- \83t\83H\83\8b\83_\93¯\8e\9e\88Ú\93®\82ð\8ds\82¤\82©\82Ç\82¤\82©\82ð\82É\82æ\82Á\82Ä\83\81\83j\83\85\81[\81^\83{\83^\83\93\82ð\95\\8e¦ --------\r
+/*----- フォルダ同時移動を行うかどうかをによってメニュー/ボタンを表示 --------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispSyncMoveMode(void)\r
}\r
\r
\r
-/*----- \83t\83H\83\8b\83_\93¯\8e\9e\88Ú\93®\83\82\81[\83h\82ð\95Ô\82· ------------------------------------------\r
+/*----- フォルダ同時移動モードを返す ------------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* int \94¼\8ap\95Ï\8a·\83\82\81[\83h\r
+* int 半角変換モード\r
*----------------------------------------------------------------------------*/\r
\r
int AskSyncMoveMode(void)\r
\r
\r
/*===================================================\r
-* \83f\83B\83\8c\83N\83g\83\8a\83q\83X\83g\83\8a\r
+* ディレクトリヒストリ\r
*===================================================*/\r
\r
-/*----- \83z\83X\83g\91¤\82Ì\83q\83X\83g\83\8a\88ê\97\97\83E\83C\83\93\83h\83E\82É\93o\98^ --------------------------------\r
+/*----- ホスト側のヒストリ一覧ウインドウに登録 --------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\r
+* char *Path : パス\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetRemoteDirHist(char *Path)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\83q\83X\83g\83\8a\88ê\97\97\83E\83C\83\93\83h\83E\82É\93o\98^ -------------------------------\r
+/*----- ローカル側のヒストリ一覧ウインドウに登録 -------------------------------\r
*\r
* Parameter\r
-* char *Path : \83p\83X\r
+* char *Path : パス\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetLocalDirHist(char *Path)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\82Ì\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ð\95Ô\82· ----------------------------------\r
+/*----- ローカルのカレントディレクトリを返す ----------------------------------\r
*\r
* Parameter\r
-* char *Buf : \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\96¼\82ð\95Ô\82·\83o\83b\83t\83@\r
-* int Max : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
+* char *Buf : カレントディレクトリ名を返すバッファ\r
+* int Max : バッファのサイズ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void AskLocalCurDir(char *Buf, int Max)\r
}\r
\r
\r
-/*----- \83z\83X\83g\82Ì\83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ð\95Ô\82· ------------------------------------\r
+/*----- ホストのカレントディレクトリを返す ------------------------------------\r
*\r
* Parameter\r
-* char *Buf : \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\96¼\82ð\95Ô\82·\83o\83b\83t\83@\r
-* int Max : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
+* char *Buf : カレントディレクトリ名を返すバッファ\r
+* int Max : バッファのサイズ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void AskRemoteCurDir(char *Buf, int Max)\r
}\r
\r
\r
-/*----- \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ð\90Ý\92è\82·\82é ----------------------------------------\r
+/*----- カレントディレクトリを設定する ----------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SetCurrentDirAsDirHist(void)\r
\r
\r
/*===================================================\r
-* \83\81\83j\83\85\81[\r
+* メニュー\r
*===================================================*/\r
\r
-/*----- \83h\83b\83g\83t\83@\83C\83\8b\82ð\95\\8e¦\82·\82é\82©\82Ç\82¤\82©\82ð\83\81\83j\83\85\81[\82É\95\\8e¦\82·\82é ------------------\r
+/*----- ドットファイルを表示するかどうかをメニューに表示する ------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void DispDotFileMode(void)\r
}\r
\r
\r
-/*----- \83\8d\81[\83J\83\8b\91¤\82Ì\89E\83{\83^\83\93\83\81\83j\83\85\81[\82ð\95\\8e¦ ------------------------------------------------\r
+/*----- ローカル側の右ボタンメニューを表示 ------------------------------------------------\r
*\r
* Parameter\r
-* int Pos : \83\81\83j\83\85\81[\82Ì\88Ê\92u\r
-* 0=\83}\83E\83X\83J\81[\83\\83\8b\82Ì\88Ê\92u\r
-* 1=\83E\83C\83\93\83h\83E\82Ì\8d¶\8fã\r
+* int Pos : メニューの位置\r
+* 0=マウスカーソルの位置\r
+* 1=ウインドウの左上\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void LocalRbuttonMenu(int Pos)\r
}\r
\r
\r
-/*----- \83z\83X\83g\91¤\82Ì\89E\83{\83^\83\93\83\81\83j\83\85\81[\82ð\95\\8e¦ --------------------------------------\r
+/*----- ホスト側の右ボタンメニューを表示 --------------------------------------\r
*\r
* Parameter\r
-* int Pos : \83\81\83j\83\85\81[\82Ì\88Ê\92u\r
-* 0=\83}\83E\83X\83J\81[\83\\83\8b\82Ì\88Ê\92u\r
-* 1=\83E\83C\83\93\83h\83E\82Ì\8d¶\8fã\r
+* int Pos : メニューの位置\r
+* 0=マウスカーソルの位置\r
+* 1=ウインドウの左上\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void RemoteRbuttonMenu(int Pos)\r
}\r
\r
\r
-/*----- \89E\83{\83^\83\93\83\81\83j\83\85\81[\82É\81u\8aJ\82\81v\82ð\92Ç\89Á -------------------------------------\r
+/*----- 右ボタンメニューに「開く」を追加 -------------------------------------\r
*\r
* Parameter\r
-* HMENU hMenu : \83\81\83j\83\85\81[\83n\83\93\83h\83\8b\r
-* UINT Flg : \83t\83\89\83O\r
+* HMENU hMenu : メニューハンドル\r
+* UINT Flg : フラグ\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
static void AddOpenMenu(HMENU hMenu, UINT Flg)\r
return;\r
}\r
\r
-/* 2007/09/21 sunasunamix \82±\82±\82©\82ç *********************/\r
+/* 2007/09/21 sunasunamix ここから *********************/\r
\r
-/*----- CreateToolbarEx \82Ì\83}\83E\83X\83N\83\8a\83b\83N\8aÖ\98A\82ð\96³\8e\8b\82·\82é(TbarMain\97p) -----------\r
-* (\83T\83u\83N\83\89\83X\89»\82ð\8ds\82¤\82½\82ß\82Ì\83E\83C\83\93\83h\83E\83v\83\8d\83V\81[\83W\83\83)\r
+/*----- CreateToolbarEx のマウスクリック関連を無視する(TbarMain用) -----------\r
+* (サブクラス化を行うためのウインドウプロシージャ)\r
*----------------------------------------------------------------------------*/\r
static LRESULT CALLBACK CountermeasureTbarMainProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam)\r
{\r
return CallWindowProc(pOldTbarMainProc, hWnd, uMessage, wParam, lParam);\r
}\r
\r
-/*----- CreateToolbarEx \82Ì\83}\83E\83X\83N\83\8a\83b\83N\8aÖ\98A\82ð\96³\8e\8b\82·\82é(TbarLocal\97p) ----------\r
-* (\83T\83u\83N\83\89\83X\89»\82ð\8ds\82¤\82½\82ß\82Ì\83E\83C\83\93\83h\83E\83v\83\8d\83V\81[\83W\83\83)\r
+/*----- CreateToolbarEx のマウスクリック関連を無視する(TbarLocal用) ----------\r
+* (サブクラス化を行うためのウインドウプロシージャ)\r
*----------------------------------------------------------------------------*/\r
static LRESULT CALLBACK CountermeasureTbarLocalProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam)\r
{\r
return CallWindowProc(pOldTbarLocalProc, hWnd, uMessage, wParam, lParam);\r
}\r
\r
-/*----- CreateToolbarEx \82Ì\83}\83E\83X\83N\83\8a\83b\83N\8aÖ\98A\82ð\96³\8e\8b\82·\82é(TbarRemote\97p) ---------\r
-* (\83T\83u\83N\83\89\83X\89»\82ð\8ds\82¤\82½\82ß\82Ì\83E\83C\83\93\83h\83E\83v\83\8d\83V\81[\83W\83\83)\r
+/*----- CreateToolbarEx のマウスクリック関連を無視する(TbarRemote用) ---------\r
+* (サブクラス化を行うためのウインドウプロシージャ)\r
*----------------------------------------------------------------------------*/\r
static LRESULT CALLBACK CountermeasureTbarRemoteProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam)\r
{\r
}\r
return CallWindowProc(pOldTbarRemoteProc, hWnd, uMessage, wParam, lParam);\r
}\r
-/********************************************* \82±\82±\82Ü\82Å */\r
+/********************************************* ここまで */\r
-/*=============================================================================\r
-* \8dX\90V\95\97\91ö\91Î\89\9e\r
+/*=============================================================================\r
+* 更新風鐸対応\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
\r
#define MAIL_ADDRESS "sota@mwa.biglobe.ne.jp"\r
#define SOFTWARE "FFFTP"\r
-#define MYNAME "\91]\93c"\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
\r
\r
-/*----- \8dX\90V\95\97\91ö\82Ì\83\8d\81[\83J\83\8b\8fî\95ñ\82ð\8f\91\82«\8d\9e\82Þ --------------------------------------\r
+/*----- 更新風鐸のローカル情報を書き込む --------------------------------------\r
*\r
* Parameter\r
-* \82È\82µ\r
+* なし\r
*\r
* Return Value\r
-* \82È\82µ\r
+* なし\r
*----------------------------------------------------------------------------*/\r
\r
void SaveUpdateBellInfo(void)\r
-/*=============================================================================\r
+/*=============================================================================\r
*\r
-* \83\8f\83C\83\8b\83h\83J\81[\83h\8c\9f\8dõ\r
+* ワイルドカード検索\r
*\r
===============================================================================\r
/ Copyright (C) 1997-2007 Sota. All rights reserved.\r
#include "jreusr.h"\r
\r
\r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
\r
static int CheckNameMatch(char *str, char *regexp);\r
\r
\r
\r
-/*----- \83\8f\83C\83\8b\83h\83J\81[\83h\82É\83}\83b\83`\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82· ------------------------------\r
+/*----- ワイルドカードにマッチするかどうかを返す ------------------------------\r
*\r
* Parameter\r
-* char *str : \95¶\8e\9a\97ñ\r
-* char *regexp : \83\8f\83C\83\8b\83h\83J\81[\83h\8c\9f\8dõ\8e®\r
+* char *str : 文字列\r
+* char *regexp : ワイルドカード検索式\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*\r
* Note\r
-* VAX VMS\82Ì\8e\9e\82Í ; \88È\8d~\82Í\96³\8e\8b\82·\82é\r
+* VAX VMSの時は ; 以降は無視する\r
*----------------------------------------------------------------------------*/\r
\r
int CheckFname(char *str, char *regexp)\r
strcpy(p1, regexp);\r
strcpy(p2, str);\r
\r
- /* VAX VMS\82Ì\8e\9e\82Ì\82½\82ß\82Ì\8f\88\97\9d */\r
+ /* VAX VMSの時のための処理 */\r
if(AskHostType() == HTYPE_VMS)\r
{\r
if((p = strchr(p2, ';')) != NULL)\r
*p = NUL;\r
}\r
\r
- /* *? \82Æ\82© ** \82Æ\82©\82ð\8dí\8f\9c */\r
+ /* *? とか ** とかを削除 */\r
for(p = p1; *p != NUL; p++)\r
{\r
while((*p == '*') && ((*(p+1) == '?') || (*(p+1) == '*')))\r
if((strcmp(p1, "*.*") == 0) || (strcmp(p1, "????????.???") == 0))\r
strcpy(p1, "*");\r
\r
- Sts = SUCCESS;\r
+ Sts = FFFTP_SUCCESS;\r
if(strcmp(p1, "*") != 0)\r
{\r
if(strcmp(p1, "*.") == 0)\r
{\r
p = strchr(p2, '.');\r
if((p != NULL) && (*(p+1) != NUL))\r
- Sts = FAIL;\r
+ Sts = FFFTP_FAIL;\r
}\r
else\r
Sts = CheckNameMatch(p2, p1);\r
}\r
\r
\r
-/*----- \83\8f\83C\83\8b\83h\83J\81[\83h\8c\9f\8dõ\83T\83u\83\8b\81[\83`\83\93 ----------------------------------------\r
+/*----- ワイルドカード検索サブルーチン ----------------------------------------\r
*\r
* Parameter\r
-* char *str : \95¶\8e\9a\97ñ\r
-* char *regexp : \83\8f\83C\83\8b\83h\83J\81[\83h\8c\9f\8dõ\8e®\r
+* char *str : 文字列\r
+* char *regexp : ワイルドカード検索式\r
*\r
* Return Value\r
-* int \83X\83e\81[\83^\83X\r
-* SUCCESS/FAIL\r
+* int ステータス\r
+* FFFTP_SUCCESS/FFFTP_FAIL\r
*----------------------------------------------------------------------------*/\r
\r
static int CheckNameMatch(char *str, char *regexp)\r
/* Look for a character matching the one after the '*' */\r
p++;\r
if(*p == NUL)\r
- return SUCCESS; /* Automatic match */\r
+ return FFFTP_SUCCESS; /* Automatic match */\r
while(*str != NUL)\r
{\r
while((*str != NUL) && (toupper(*p)!=toupper(*str)))\r
str++;\r
if(CheckNameMatch(str, p))\r
- return SUCCESS;\r
+ return FFFTP_SUCCESS;\r
if(*str == NUL)\r
- return FAIL;\r
+ return FFFTP_FAIL;\r
else\r
str++;\r
}\r
- return FAIL;\r
+ return FFFTP_FAIL;\r
\r
default:\r
if(toupper(*str) != toupper(*p))\r
- return FAIL;\r
+ return FFFTP_FAIL;\r
str++;\r
p++;\r
break;\r
}\r
\r
if((*p == NUL) && (*str == NUL))\r
- return SUCCESS;\r
+ return FFFTP_SUCCESS;\r
\r
if ((*p != NUL) && (str[0] == '.') && (str[1] == 0))\r
- return(SUCCESS);\r
+ return(FFFTP_SUCCESS);\r
\r
if ((*str == NUL) && (*p == '?'))\r
{\r
}\r
\r
if((*str == NUL) && (*p == '*') && (p[1] == '\0'))\r
- return SUCCESS;\r
+ return FFFTP_SUCCESS;\r
\r
- return FAIL;\r
+ return FFFTP_FAIL;\r
}\r
\r