-/*=============================================================================\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 <stdarg.h>\r
#include <string.h>\r
#include <mbstring.h>\r
-#include <winsock.h>\r
+// IPv6対応\r
+//#include <winsock.h>\r
+#include <winsock2.h>\r
#include <windowsx.h>\r
#include <commctrl.h>\r
#include <shlobj.h>\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
+// 64ビット対応\r
+//static BOOL CALLBACK InputDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR 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
-static BOOL CALLBACK InputDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK InputDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK InputDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
{\r
char Tmp[FMAX_PATH+1];\r
\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
-BOOL CALLBACK ExeEscDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//BOOL CALLBACK ExeEscDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+INT_PTR CALLBACK ExeEscDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
switch (message)\r
{\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
-BOOL CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//BOOL CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+INT_PTR CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
switch (message)\r
{\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(User, Tmp, USER_NAME_LEN);\r
}\r
\r
+ // IPv6対応\r
+ if((Pos2 = _mbschr(Pos1, '[')) != NULL && Pos2 < _mbschr(Pos1, ':'))\r
+ {\r
+ Pos1 = Pos2 + 1;\r
+ if((Pos2 = _mbschr(Pos2, ']')) != NULL)\r
+ {\r
+ memcpy(Host, Pos1, min1(Pos2-Pos1, HOST_ADRS_LEN));\r
+ Pos1 = Pos2 + 1;\r
+ }\r
+ }\r
+\r
if((Pos2 = _mbschr(Pos1, ':')) != NULL)\r
{\r
- memcpy(Host, Pos1, min1(Pos2-Pos1, HOST_ADRS_LEN));\r
+ // IPv6対応\r
+// memcpy(Host, Pos1, min1(Pos2-Pos1, HOST_ADRS_LEN));\r
+ if(strlen(Host) == 0)\r
+ memcpy(Host, Pos1, min1(Pos2-Pos1, HOST_ADRS_LEN));\r
Pos2++;\r
if(IsDigit(*Pos2))\r
{\r
}\r
else if((Pos2 = _mbschr(Pos1, '/')) != NULL)\r
{\r
- memcpy(Host, Pos1, min1(Pos2-Pos1, HOST_ADRS_LEN));\r
+ // IPv6対応\r
+// memcpy(Host, Pos1, min1(Pos2-Pos1, HOST_ADRS_LEN));\r
+ if(strlen(Host) == 0)\r
+ memcpy(Host, Pos1, min1(Pos2-Pos1, HOST_ADRS_LEN));\r
RemoveFileName(Pos2, Path);\r
strncpy(File, GetFileName(Pos2), FMAX_PATH);\r
}\r
else\r
{\r
- strncpy(Host, Pos1, HOST_ADRS_LEN);\r
+ // IPv6対応\r
+// strncpy(Host, Pos1, HOST_ADRS_LEN);\r
+ if(strlen(Host) == 0)\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
+// 異なるファイルが表示されるバグ修正\r
+\r
+// ShellExecute等で使用されるファイル名を修正\r
+// UNCでない場合に末尾の半角スペースは無視されるため拡張子が補完されなくなるまで半角スペースを追加\r
+// 現在UNC対応の予定は無い\r
+char* MakeDistinguishableFileName(char* Out, char* In)\r
+{\r
+ char* Fname;\r
+ char Tmp[FMAX_PATH+1];\r
+ char Tmp2[FMAX_PATH+3];\r
+ HANDLE hFind;\r
+ WIN32_FIND_DATA Find;\r
+ if(strlen(GetFileExt(GetFileName(In))) > 0)\r
+ strcpy(Out, In);\r
+ else\r
+ {\r
+ Fname = GetFileName(In);\r
+ strcpy(Tmp, In);\r
+ strcpy(Tmp2, Tmp);\r
+ strcat(Tmp2, ".*");\r
+ while(strlen(Tmp) < FMAX_PATH && (hFind = FindFirstFile(Tmp2, &Find)) != INVALID_HANDLE_VALUE)\r
+ {\r
+ do\r
+ {\r
+ if(strcmp(Find.cFileName, Fname) != 0)\r
+ break;\r
+ }\r
+ while(FindNextFile(hFind, &Find));\r
+ FindClose(hFind);\r
+ if(strcmp(Find.cFileName, Fname) != 0)\r
+ {\r
+ strcat(Tmp, " ");\r
+ strcpy(Tmp2, Tmp);\r
+ strcat(Tmp2, ".*");\r
+ }\r
+ else\r
+ break;\r
+ }\r
+ strcpy(Out, Tmp);\r
+ }\r
+ return Out;\r
+}\r
+\r
+// 環境依存の不具合対策\r
+char* GetAppTempPath(char* Buf)\r
+{\r
+ char Temp[32];\r
+ GetTempPath(MAX_PATH, Buf);\r
+ SetYenTail(Buf);\r
+ sprintf(Temp, "ffftp%08x", GetCurrentProcessId());\r
+ strcat(Buf, Temp);\r
+ return Buf;\r
+}\r
+\r