Revision: 8852 https://osdn.net/projects/ttssh2/scm/svn/commits/8852 Author: zmatsuo Date: 2020-07-14 00:31:46 +0900 (Tue, 14 Jul 2020) Log Message: ----------- ログファイルダイアログを追加 - ログダイアログ(IDD_LOGDLG)を追加 - ログファイルのダイアログ表示に共通関数を使用しないよう修正 - GetTransFname()#ttpfile を使用しない - filesys_log.rc, filesys_log_res.h 追加 - ログコメントダイアログ(IDD_COMMENT_DIALOG)を移動 - VS2005,2019,cmake にファイルを追加 - LogVar#filesys.cpp をグローバル変数からファイル内変数に変更 - APIを追加,Log...()#filesys.cpp Modified Paths: -------------- trunk/teraterm/common/tt_res.h trunk/teraterm/common/ttftypes.h trunk/teraterm/common/tttypes.h trunk/teraterm/teraterm/CMakeLists.txt trunk/teraterm/teraterm/filesys.cpp trunk/teraterm/teraterm/filesys.h trunk/teraterm/teraterm/ttdde.c trunk/teraterm/teraterm/ttermpro.rc trunk/teraterm/teraterm/ttermpro.v16.vcxproj trunk/teraterm/teraterm/ttermpro.v16.vcxproj.filters trunk/teraterm/teraterm/ttermpro.vcproj trunk/teraterm/teraterm/vtwin.cpp trunk/teraterm/ttpfile/ttfile.c Added Paths: ----------- trunk/teraterm/teraterm/filesys_log.rc trunk/teraterm/teraterm/filesys_log_res.h -------------- next part -------------- Modified: trunk/teraterm/common/tt_res.h =================================================================== --- trunk/teraterm/common/tt_res.h 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/common/tt_res.h 2020-07-13 15:31:46 UTC (rev 8852) @@ -10,7 +10,6 @@ #define IDI_TTERM_CLASSIC 103 #define IDI_VT_CLASSIC 104 #define IDI_CYGTERM 105 -#define IDD_COMMENT_DIALOG 110 #define IDD_EXTERNAL_SETUP 111 #define IDD_TABSHEET_GENERAL 111 #define IDD_BROADCAST_DIALOG 112 @@ -30,7 +29,6 @@ #define IDD_TABSHEET_CODING 128 #define IDD_TABSHEET_FONT 129 #define IDR_TEKMENU 1000 -#define IDC_EDIT_COMMENT 1000 #define IDC_EDIT_FULLPATH 1001 #define IDC_FULLPATH_LABEL 1002 #define IDC_LINECOPY 1003 Modified: trunk/teraterm/common/ttftypes.h =================================================================== --- trunk/teraterm/common/ttftypes.h 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/common/ttftypes.h 2020-07-13 15:31:46 UTC (rev 8852) @@ -37,7 +37,7 @@ /* GetTransFname function id */ #define GTF_SEND 0 /* Send file */ -#define GTF_LOG 1 /* Log */ +//#define GTF_LOG 1 /* Log */ #define GTF_BP 2 /* B-Plus Send */ /* GetMultiFname function id */ Modified: trunk/teraterm/common/tttypes.h =================================================================== --- trunk/teraterm/common/tttypes.h 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/common/tttypes.h 2020-07-13 15:31:46 UTC (rev 8852) @@ -194,6 +194,7 @@ // LogDialog Option #define LOGDLG_BINARY 1 +#if 0 // TODO\x8F\xC1\x82\xB7 #define LOGDLG_APPEND (1 << 1) #define LOGDLG_PLAINTEXT (1 << 2) #define LOGDLG_TIMESTAMP (1 << 3) @@ -207,6 +208,7 @@ * LOGDLG_ELAPSEDCON == 1 => \x90ڑ\xB1\x8AJ\x8En\x82\xA9\x82\xE7 */ #define LOGDLG_ELAPSEDCON LOGDLG_UTC +#endif // Log Timestamp Type enum LogTimestampType { @@ -216,7 +218,7 @@ TIMESTAMP_ELAPSED_CONNECTED }; -// log flags (used in ts.LogFlag) +// log flags (used in ts.LogFlag) #define LOG_TEL 1 #define LOG_KMT 2 #define LOG_X 4 @@ -822,7 +824,7 @@ typedef struct { PCHAR SetupFN; // setup file name WORD PortType; // TCPIP/Serial - PCHAR HostName; // host name + PCHAR HostName; // host name WORD Telnet; // non-zero: enable telnet WORD TelPort; // default TCP port# for telnet WORD TCPPort; // TCP port # Modified: trunk/teraterm/teraterm/CMakeLists.txt =================================================================== --- trunk/teraterm/teraterm/CMakeLists.txt 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/teraterm/CMakeLists.txt 2020-07-13 15:31:46 UTC (rev 8852) @@ -27,6 +27,8 @@ dnddlg.h filesys.cpp filesys.h + filesys_log.rc + filesys_log_res.h font_pp.cpp font_pp.h font_pp.rc Modified: trunk/teraterm/teraterm/filesys.cpp =================================================================== --- trunk/teraterm/teraterm/filesys.cpp 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/teraterm/filesys.cpp 2020-07-13 15:31:46 UTC (rev 8852) @@ -31,11 +31,13 @@ #include <stdio.h> #include <io.h> #include <process.h> +#include <windows.h> +#include <htmlhelp.h> +#include <assert.h> #include "teraterm.h" #include "tttypes.h" #include "ttftypes.h" -#include "tt_res.h" #include "ftdlg.h" #include "protodlg.h" #include "ttwinman.h" @@ -46,20 +48,20 @@ #include "dlglib.h" #include "vtterm.h" #include "win16api.h" - -#include "filesys.h" #include "ftlib.h" - #include "buffer.h" +#include "helpid.h" +#include "layer_for_unicode.h" -#include <io.h> -#include <process.h> +#include "filesys.h" +#include "tt_res.h" +#include "filesys_log_res.h" #define FS_BRACKET_NONE 0 #define FS_BRACKET_START 1 #define FS_BRACKET_END 2 -PFileVar LogVar = NULL; +static PFileVar LogVar = NULL; PFileVar SendVar = NULL; PFileVar FileVar = NULL; static PCHAR ProtoVar = NULL; @@ -93,7 +95,7 @@ static int TTFILECount = 0; PGetSetupFname GetSetupFname; -PGetTransFname GetTransFname; +static PGetTransFname GetTransFname; PGetMultiFname GetMultiFname; PGetGetFname GetGetFname; PSetFileVar SetFileVar; @@ -350,9 +352,13 @@ } } -// &h \x82\xF0\x83z\x83X\x83g\x96\xBC\x82ɒu\x8A\xB7 (2007.5.14) -// &p \x82\xF0TCP\x83|\x81[\x83g\x94ԍ\x86\x82ɒu\x8A\xB7 (2009.6.12) -void ConvertLogname(char *c, int destlen) +/** + * \x83t\x83@\x83C\x83\x8B\x96\xBC\x95\xB6\x8E\x9A\x97\xF1\x82̒u\x82\xAB\x8A\xB7\x82\xA6 + * &h \x83z\x83X\x83g\x96\xBC\x82ɒu\x8A\xB7 (2007.5.14) + * &p TCP\x83|\x81[\x83g\x94ԍ\x86\x82ɒu\x8A\xB7 (2009.6.12) + * &u \x83\x8D\x83O\x83I\x83\x93\x92\x86\x82̃\x86\x81[\x83U\x96\xBC + */ +static void ConvertLogname(char *c, int destlen) { char buf[MAXPATHLEN], buf2[MAXPATHLEN], *p = c; char tmphost[1024]; @@ -410,7 +416,7 @@ strncpy_s(c, destlen, buf, _TRUNCATE); } -void FixLogOption() +static void FixLogOption() { if (ts.LogBinary) { ts.LogTypePlainText = false; @@ -423,7 +429,6 @@ static void CloseFileSync(PFileVar ptr) { BOOL ret; - DWORD code; if (!ptr->FileOpen) return; @@ -436,7 +441,7 @@ WaitForSingleObject(ptr->LogThread, INFINITE); } else { - code = GetLastError(); + //DWORD code = GetLastError(); } CloseHandle(ptr->LogThread); ptr->LogThread = INVALID_HANDLE_VALUE; @@ -480,139 +485,336 @@ return (0); } - -BOOL LogStart() +/** + * \x83_\x83C\x83A\x83\x8D\x83O\x82̓\xE0\x97e\x82\xF0 ts \x82ɏ\x91\x82\xAB\x96߂\xB5 + * + * TODO + * \x83_\x83C\x83A\x83\x8D\x83O\x82Őݒ肵\x82\xBD\x92l\x82͈ꎞ\x93I\x82Ȃ\xE0\x82̂\xC5 + * \x90ݒ\xE8\x82\xF0\x8F㏑\x82\xAB\x82\xB7\x82\xE9\x82̂͗ǂ\xAD\x82Ȃ\xA2\x82̂ł͂Ȃ\xA2\x82\xBE\x82낤\x82\xA9? + */ +static void SetLogFlags(HWND Dialog) { - LONG Option; - char *logdir; - unsigned tid; - DWORD ofs, size, written_size; - char buf[512]; - const char *crlf = "\r\n"; - DWORD crlf_len = 2; - char FileDirExpanded[MAX_PATH]; + WORD BinFlag, val; - if ((FileLog) || (BinLog)) return FALSE; + GetRB(Dialog, &BinFlag, IDC_FOPTBIN, IDC_FOPTBIN); + ts.LogBinary = BinFlag; - if (! LoadTTFILE()) return FALSE; - if (! NewFileVar(&LogVar)) - { - FreeTTFILE(); - return FALSE; + GetRB(Dialog, &val, IDC_FOPTAPPEND, IDC_FOPTAPPEND); + ts.Append = val; + + if (!BinFlag) { + GetRB(Dialog, &val, IDC_PLAINTEXT, IDC_PLAINTEXT); + ts.LogTypePlainText = val; + + GetRB(Dialog, &val, IDC_TIMESTAMP, IDC_TIMESTAMP); + ts.LogTimestamp = val; } - LogVar->OpId = OpLog; - if (strlen(ts.LogDefaultPath) > 0) { - logdir = ts.LogDefaultPath; + GetRB(Dialog, &val, IDC_HIDEDIALOG, IDC_HIDEDIALOG); + ts.LogHideDialog = val; + + GetRB(Dialog, &val, IDC_ALLBUFF_INFIRST, IDC_ALLBUFF_INFIRST); + ts.LogAllBuffIncludedInFirst = val; + + ts.LogTimestampType = (GetCurSel(Dialog, IDC_TIMESTAMPTYPE) - 1); +} + +/** + * \x83\x8D\x83O\x83t\x83@\x83C\x83\x8B\x83`\x83F\x83b\x83N + * + * @param[in] filename + * @param[out] exist TURE/FALSE + * @param[out] bom 0 no BOM (or file not exist) + * 1 UTF-8 + * 2 UTF-16LE + * 3 UTF-16BE + */ +static void CheckLogFile(const char *filename, BOOL *exist, int *bom) +{ + // \x83t\x83@\x83C\x83\x8B\x82\xAA\x91\xB6\x8D݂\xB7\x82\xE9? + DWORD logdir = GetFileAttributes(filename); + if ((logdir != INVALID_FILE_ATTRIBUTES) && ((logdir & FILE_ATTRIBUTE_DIRECTORY) == 0)) { + // \x83t\x83@\x83C\x83\x8B\x82\xAA\x82\xA0\x82\xC1\x82\xBD , \x83A\x83y\x83\x93\x83h\x82\xB7\x82\xE9\x82\xE0\x82\xE8 + *exist = TRUE; + + // BOM\x97L\x82\xE8/\x96\xB3\x82\xB5\x83`\x83F\x83b\x83N + FILE *fp = fopen(filename, "rb"); + unsigned char tmp[4]; + size_t l = fread(tmp, 1, sizeof(tmp), fp); + fclose(fp); + if (l < 2) { + *bom = 0; + } else if (l >= 2 && tmp[0] == 0xff && tmp[1] == 0xfe) { + // UTF-16LE + *bom = 2; + } else if (l >= 2 && tmp[0] == 0xfe && tmp[1] == 0xff) { + // UTF-16BE + *bom = 3; + } else if (l >= 3 && tmp[0] == 0xef && tmp[1] == 0xbb && tmp[2] == 0xbf) { + // UTF-8 + *bom = 1; + } else { + *bom = 0; + } } - else if (strlen(ts.FileDir) > 0) { - ExpandEnvironmentStrings(ts.FileDir, FileDirExpanded, sizeof(FileDirExpanded)); - logdir = FileDirExpanded; + else { + // \x83t\x83@\x83C\x83\x8B\x82\xAA\x82Ȃ\xA2\x81A\x90V\x8BK + *exist = FALSE; + *bom = 0; } +} + +static void CheckLogFile(HWND Dialog, const char *filename) +{ + BOOL exist; + int bom; + CheckLogFile(filename, &exist, &bom); + if (exist) { + // \x83t\x83@\x83C\x83\x8B\x82\xAA\x91\xB6\x8D݂\xB7\x82\xE9 -> \x83A\x83y\x83\x93\x83h\x82\xB7\x82\xE9\x82\xE0\x82\xE8? + CheckDlgButton(Dialog, IDC_FOPTAPPEND, BST_CHECKED); + if (bom != 0) { + // BOM\x97L\x82\xE8 + CheckDlgButton(Dialog, IDC_BOM, BST_CHECKED); + } + else { + // BOM\x82Ȃ\xB5 + CheckDlgButton(Dialog, IDC_BOM, BST_UNCHECKED); + } + } else { - logdir = ts.HomeDir; + // \x83t\x83@\x83C\x83\x8B\x82\xAA\x82Ȃ\xA2\x81A\x90V\x8BK + CheckDlgButton(Dialog, IDC_FOPTAPPEND, BST_UNCHECKED); + CheckDlgButton(Dialog, IDC_BOM, BST_CHECKED); } +} - if (strlen(&(LogVar->FullName[LogVar->DirLen]))==0) { - Option = 0; +typedef struct { + char *filename; + BOOL append; + BOOL bom; +} LogDlgData_t; + +static INT_PTR CALLBACK LogFnHook(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam) +{ + static const DlgTextInfo TextInfos[] = { + { 0, "DLG_TABSHEET_TITLE_LOG" }, + { IDC_FOPTBIN, "DLG_FOPT_BINARY" }, + { IDC_FOPTAPPEND, "DLG_FOPT_APPEND" }, + { IDC_PLAINTEXT, "DLG_FOPT_PLAIN" }, + { IDC_HIDEDIALOG, "DLG_FOPT_HIDEDIALOG" }, + { IDC_ALLBUFF_INFIRST, "DLG_FOPT_ALLBUFFINFIRST" }, + { IDC_TIMESTAMP, "DLG_FOPT_TIMESTAMP" }, + }; + static const I18nTextInfo timestamp_list[] = { + { "DLG_FOPT_TIMESTAMP_LOCAL", L"Local Time" }, + { "DLG_FOPT_TIMESTAMP_UTC", L"UTC" }, + { "DLG_FOPT_TIMESTAMP_ELAPSED_LOGGING", L"Elapsed Time (Logging)" }, + { "DLG_FOPT_TIMESTAMP_ELAPSED_CONNECTION", L"Elapsed Time (Connection)" }, + }; + const char *UILanguageFile = ts.UILanguageFile; + LogDlgData_t *data = (LogDlgData_t *)GetWindowLongPtr(Dialog, DWLP_USER); + + if (Message == RegisterWindowMessage(HELPMSGSTRING)) { + // \x83R\x83\x82\x83\x93\x83_\x83C\x83A\x83\x8D\x83O\x82\xA9\x82\xE7\x82̃w\x83\x8B\x83v\x83\x81\x83b\x83Z\x81[\x83W\x82\xF0\x95t\x82\xAF\x91ւ\xA6\x82\xE9 + Message = WM_COMMAND; + wParam = IDHELP; + } + switch (Message) { + case WM_INITDIALOG: { + data = (LogDlgData_t *)lParam; + SetWindowLongPtr(Dialog, DWLP_USER, (LONG_PTR)data); + ::DragAcceptFiles(Dialog, TRUE); + + SetDlgTexts(Dialog, TextInfos, _countof(TextInfos), UILanguageFile); + SetI18nList("Tera Term", Dialog, IDC_TIMESTAMPTYPE, timestamp_list, _countof(timestamp_list), + UILanguageFile, 0); + + SendDlgItemMessage(Dialog, IDC_TEXTCODING_DROPDOWN, CB_ADDSTRING, 0, (LPARAM)"UTF-8"); + SendDlgItemMessage(Dialog, IDC_TEXTCODING_DROPDOWN, CB_SETCURSEL, 0, 0); + + SetDlgItemTextA(Dialog, IDC_FOPT_FILENAME_EDIT, data->filename); + free(data->filename); + data->filename = NULL; + + // Binary/Text \x83`\x83F\x83b\x83N\x83{\x83b\x83N\x83X if (ts.LogBinary) { - Option |= LOGDLG_BINARY; + SendDlgItemMessage(Dialog, IDC_FOPTBIN, BM_SETCHECK, BST_CHECKED, 0); } + else { + SendDlgItemMessage(Dialog, IDC_FOPTTEXT, BM_SETCHECK, BST_CHECKED, 0); + } + + // Append \x83`\x83F\x83b\x83N\x83{\x83b\x83N\x83X if (ts.Append) { - Option |= LOGDLG_APPEND; + SetRB(Dialog, 1, IDC_FOPTAPPEND, IDC_FOPTAPPEND); } - if (ts.LogTypePlainText) { - Option |= LOGDLG_PLAINTEXT; + + // Plain Text \x83`\x83F\x83b\x83N\x83{\x83b\x83N\x83X + if (ts.LogBinary) { + // Binary\x83t\x83\x89\x83O\x82\xAA\x97L\x8C\xF8\x82ȂƂ\xAB\x82̓`\x83F\x83b\x83N\x82ł\xAB\x82Ȃ\xA2 + DisableDlgItem(Dialog, IDC_PLAINTEXT, IDC_PLAINTEXT); } - if (ts.LogTimestamp) { - Option |= LOGDLG_TIMESTAMP; + else if (ts.LogTypePlainText) { + SetRB(Dialog, 1, IDC_PLAINTEXT, IDC_PLAINTEXT); } + + // Hide dialog\x83`\x83F\x83b\x83N\x83{\x83b\x83N\x83X (2008.1.30 maya) if (ts.LogHideDialog) { - Option |= LOGDLG_HIDEDIALOG; + SetRB(Dialog, 1, IDC_HIDEDIALOG, IDC_HIDEDIALOG); } + + // Include screen buffer\x83`\x83F\x83b\x83N\x83{\x83b\x83N\x83X (2013.9.29 yutaka) if (ts.LogAllBuffIncludedInFirst) { - Option |= LOGDLG_INCSCRBUFF; + SetRB(Dialog, 1, IDC_ALLBUFF_INFIRST, IDC_ALLBUFF_INFIRST); } - switch (ts.LogTimestampType) { - case TIMESTAMP_LOCAL: - // nothing to do + // timestamp\x83`\x83F\x83b\x83N\x83{\x83b\x83N\x83X (2006.7.23 maya) + if (ts.LogBinary) { + // Binary\x83t\x83\x89\x83O\x82\xAA\x97L\x8C\xF8\x82ȂƂ\xAB\x82̓`\x83F\x83b\x83N\x82ł\xAB\x82Ȃ\xA2 + DisableDlgItem(Dialog, IDC_TIMESTAMP, IDC_TIMESTAMP); + } + else if (ts.LogTimestamp) { + SetRB(Dialog, 1, IDC_TIMESTAMP, IDC_TIMESTAMP); + } + + // timestamp \x8E\xED\x95\xCA + int tstype = ts.LogTimestampType == TIMESTAMP_LOCAL ? 0 : + ts.LogTimestampType == TIMESTAMP_UTC ? 1 : + ts.LogTimestampType == TIMESTAMP_ELAPSED_LOGSTART ? 2 : + ts.LogTimestampType == TIMESTAMP_ELAPSED_CONNECTED ? 3 : 0; + SendDlgItemMessage(Dialog, IDC_TIMESTAMPTYPE, CB_SETCURSEL, tstype, 0); + if (ts.LogBinary || !ts.LogTimestamp) { + DisableDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE); + } + + CenterWindow(Dialog, GetParent(Dialog)); + + return TRUE; + } + + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDOK: { + char filename[MAX_PATH]; + GetDlgItemTextA(Dialog, IDC_FOPT_FILENAME_EDIT, filename, _countof(filename)); + data->filename = _strdup(filename); + data->append = IsDlgButtonChecked(Dialog, IDC_FOPTAPPEND) == BST_CHECKED; + data->bom = IsDlgButtonChecked(Dialog, IDC_BOM) == BST_CHECKED; + SetLogFlags(Dialog); + EndDialog(Dialog, IDOK); break; - case TIMESTAMP_UTC: - Option |= LOGDLG_UTC; + } + case IDCANCEL: + EndDialog(Dialog, IDCANCEL); break; - case TIMESTAMP_ELAPSED_LOGSTART: - Option |= LOGDLG_ELAPSED; + case IDHELP: + OpenHelp(HH_HELP_CONTEXT, HlpFileLog, ts.UILanguageFile); break; - case TIMESTAMP_ELAPSED_CONNECTED: - Option |= LOGDLG_ELAPSED | LOGDLG_ELAPSEDCON; - break; - default: - // not reached - break; - } + case IDC_FOPT_FILENAME_BUTTON: { + /* save current dir */ + wchar_t curdir[MAXPATHLEN]; + _GetCurrentDirectoryW(_countof(curdir), curdir); - // \x83\x8D\x83O\x82̃f\x83t\x83H\x83\x8B\x83g\x83t\x83@\x83C\x83\x8B\x96\xBC\x82\xF0\x90ݒ\xE8 (2006.8.28 maya) - strncat_s(LogVar->FullName, sizeof(LogVar->FullName), ts.LogDefaultName, _TRUNCATE); - ParseStrftimeFileName(LogVar->FullName, sizeof(LogVar->FullName)); - ConvertLogname(LogVar->FullName, sizeof(LogVar->FullName)); + char fname[MAX_PATH]; + GetDlgItemTextA(Dialog, IDC_FOPT_FILENAME_EDIT, fname, _countof(fname)); - strncpy_s(LogVar->LogDefaultPath, sizeof(LogVar->LogDefaultPath), ts.LogDefaultPath, _TRUNCATE); - if (! (*GetTransFname)(LogVar, logdir, GTF_LOG, &Option)) { - FreeFileVar(&LogVar); - FreeTTFILE(); - return FALSE; - } + char FNFilter[128*3]; + get_lang_msg("FILEDLG_ALL_FILTER", FNFilter, sizeof(FNFilter), "All(*.*)\\0*.*\\0\\0", UILanguageFile); - ts.LogBinary = CheckFlag(Option, LOGDLG_BINARY); - CheckFlag(Option, LOGDLG_BINARY); - ts.Append = - CheckFlag(Option, LOGDLG_APPEND); - ts.LogTypePlainText = - CheckFlag(Option, LOGDLG_PLAINTEXT); - ts.LogTimestamp = - CheckFlag(Option, LOGDLG_TIMESTAMP); - ts.LogHideDialog = - CheckFlag(Option, LOGDLG_HIDEDIALOG); - ts.LogAllBuffIncludedInFirst = - CheckFlag(Option, LOGDLG_INCSCRBUFF); + char caption[MAX_PATH]; + char uimsg[MAX_UIMSG]; + get_lang_msg("FILEDLG_TRANS_TITLE_LOG", uimsg, sizeof(uimsg), TitLog, UILanguageFile); + strncpy_s(caption, sizeof(caption),"Tera Term: ", _TRUNCATE); + strncat_s(caption, sizeof(caption), uimsg, _TRUNCATE); - if (Option & LOGDLG_ELAPSED) { - // \x8Co\x89ߎ\x9E\x8A\xD4 - if (Option & LOGDLG_ELAPSEDCON) { - ts.LogTimestampType = TIMESTAMP_ELAPSED_CONNECTED; + OPENFILENAME ofn = {}; + ofn.lStructSize = get_OPENFILENAME_SIZEA(); + //ofn.Flags = OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT; + ofn.Flags |= OFN_EXPLORER | OFN_ENABLESIZING; + ofn.Flags |= OFN_SHOWHELP; + ofn.Flags |= OFN_NOCHANGEDIR; // \x82\xA4\x82܂\xAD\x93\xAE\x8D삵\x82Ȃ\xA2\x8A\xAB\x82\xE0\x82\xA0\x82\xE9\x82悤\x82\xBE + ofn.hwndOwner = Dialog; + ofn.lpstrFilter = FNFilter; + ofn.nFilterIndex = 1; + ofn.lpstrFile = fname; + ofn.nMaxFile = sizeof(fname); + ofn.lpstrTitle = caption; + BOOL Ok = GetSaveFileName(&ofn); + if (Ok) { + SetDlgItemTextA(Dialog, IDC_FOPT_FILENAME_EDIT, fname); } - else { - ts.LogTimestampType = TIMESTAMP_ELAPSED_LOGSTART; - } + + /* restore dir */ + _SetCurrentDirectoryW(curdir); + + break; } - else { - // \x93\xFA\x8E\x9E\x8C`\x8E\xAE - if (Option & LOGDLG_UTC) { - ts.LogTimestampType = TIMESTAMP_UTC; + case IDC_FOPTBIN: + DisableDlgItem(Dialog, IDC_PLAINTEXT, IDC_TIMESTAMP); + DisableDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE); + EnableWindow(GetDlgItem(Dialog, IDC_TEXTCODING_DROPDOWN), FALSE); + break; + case IDC_FOPTTEXT: + EnableWindow(GetDlgItem(Dialog, IDC_TEXTCODING_DROPDOWN), TRUE); + EnableDlgItem(Dialog, IDC_PLAINTEXT, IDC_TIMESTAMP); + // FALLTHROUGH -- BinFlag \x82\xAA off \x82̎\x9E\x82\xCD Timestamp \x8E\xED\x95ʂ̗L\x8C\xF8/\x96\xB3\x8C\xF8\x82\xF0\x90ݒ肷\x82\xE9 + case IDC_TIMESTAMP: + if (IsDlgButtonChecked(Dialog, IDC_TIMESTAMP) == BST_CHECKED) { + EnableDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE); } else { - ts.LogTimestampType = TIMESTAMP_LOCAL; + DisableDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE); } + break; + case IDC_FOPT_FILENAME_EDIT: + if (HIWORD(wParam) == EN_CHANGE){ + char filename[MAX_PATH]; + GetDlgItemTextA(Dialog, IDC_FOPT_FILENAME_EDIT, filename, _countof(filename)); + CheckLogFile(Dialog, filename); + } + break; } + break; + case WM_DROPFILES: { + // \x95\xA1\x90\x94\x83h\x83\x8D\x83b\x83v\x82\xB3\x82\xEA\x82Ă\xE0\x8Dŏ\x89\x82\xCC1\x82\xBE\x82\xAF\x82\xF0\x88\xB5\x82\xA4 + HDROP hDrop = (HDROP)wParam; + const UINT len = _DragQueryFileW(hDrop, 0, NULL, 0); + if (len == 0) { + DragFinish(hDrop); + return TRUE; + } + wchar_t *filename = (wchar_t *)malloc(sizeof(wchar_t) * (len + 1)); + _DragQueryFileW(hDrop, 0, filename, len + 1); + filename[len] = '\0'; + _SetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, filename); + SendDlgItemMessage(Dialog, IDC_FOPT_FILENAME_EDIT, EM_SETSEL, len, len); + free(filename); + DragFinish(hDrop); + return TRUE; } - else { - // LogVar->DirLen = 0 \x82\xBE\x82Ƃ\xB1\x82\xB1\x82ɗ\x88\x82\xE9 - // \x83t\x83\x8B\x83p\x83X\x81E\x91\x8A\x91p\x83X\x82Ƃ\xE0\x82\xC9 LogVar->FullName \x82ɓ\xFC\x82\xEA\x82Ă\xA8\x82\xAD\x95K\x97v\x82\xAA\x82\xA0\x82\xE9 - char FileName[MAX_PATH]; + } + return FALSE; +} - // \x83t\x83\x8B\x83p\x83X\x89\xBB - strncpy_s(FileName, sizeof(FileName), LogVar->FullName, _TRUNCATE); - ConvFName(logdir, FileName, sizeof(FileName), "", LogVar->FullName, sizeof(LogVar->FullName)); +static BOOL LogStart() +{ + unsigned tid; - ParseStrftimeFileName(LogVar->FullName, sizeof(LogVar->FullName)); - ConvertLogname(LogVar->FullName, sizeof(LogVar->FullName)); + if ((FileLog) || (BinLog)) return FALSE; - (*SetFileVar)(LogVar); + assert(LogVar != NULL); - FixLogOption(); + if (strlen(&(LogVar->FullName[LogVar->DirLen]))==0) { + // \x83t\x83@\x83C\x83\x8B\x96\xBC\x82\xAA\x90ݒ肳\x82\xEA\x82Ă\xA2\x82Ȃ\xA2 + return FALSE; } + if (! LoadTTFILE()) return FALSE; + + LogVar->OpId = OpLog; + (*SetFileVar)(LogVar); + FixLogOption(); + if (ts.LogBinary > 0) { BinLog = TRUE; @@ -690,7 +892,7 @@ // \x8Dŏ\x89\x82̃t\x83@\x83C\x83\x8B\x82\xAA\x90ݒ肵\x82\xBD\x83T\x83C\x83Y\x82Ń\x8D\x81[\x83e\x81[\x83g\x82\xB5\x82Ȃ\xA2\x96\xE2\x91\xE8\x82̏C\x90\xB3\x81B // (2016.4.9 yutaka) if (LogVar->RotateMode != ROTATE_NONE) { - size = GetFileSize(LogVar->FileHandle, NULL); + DWORD size = GetFileSize(LogVar->FileHandle, NULL); if (size != -1) LogVar->ByteCount = size; } @@ -721,6 +923,10 @@ // \x83\x8D\x83O\x8D̎\xE6\x82\xF0\x8AJ\x8En\x82\xB7\x82\xE9\x81B // (2013.9.29 yutaka) if (ts.LogAllBuffIncludedInFirst) { + DWORD ofs, size, written_size; + char buf[512]; + const char *crlf = "\r\n"; + DWORD crlf_len = 2; for (ofs = 0 ; ; ofs++ ) { // 1\x82̍s\x82\xF0\x8E擾\x82\xB7\x82\xE9\x81B\x95\xB6\x8E\x9A\x82\xBE\x82\xAF\x82Ȃ̂ŁA\x83G\x83X\x83P\x81[\x83v\x83V\x81[\x83P\x83\x93\x83X\x82͊܂܂\xEA\x82Ȃ\xA2\x81B size = BuffGetAnyLineData(ofs, buf, sizeof(buf)); @@ -820,7 +1026,7 @@ } // \x83R\x83\x81\x83\x93\x83g\x82\xF0\x83\x8D\x83O\x82֒lj\xC1\x82\xB7\x82\xE9 -void CommentLogToFile(char *buf, int size) +static void CommentLogToFile(char *buf, int size) { DWORD wrote; @@ -1469,6 +1675,10 @@ case PROTO_QV: vsize = sizeof(TQVVar); break; + default: + vsize = 0; + assert(FALSE); + break; } ProtoVar = (PCHAR)malloc(vsize); if (ProtoVar==NULL) @@ -1910,3 +2120,226 @@ if (! OpenProtoDlg(FileVar,PROTO_QV,mode,0,0)) ProtoEnd(); } + +/** + * \x83\x8D\x83O\x83\x8D\x81[\x83e\x81[\x83g\x82̐ݒ\xE8 + * \x83\x8D\x83O\x82̃T\x83C\x83Y\x82\xAA<size>\x83o\x83C\x83g\x82\xA6\x82Ă\xA2\x82\xEA\x82A\x83\x8D\x81[\x83e\x81[\x83V\x83\x87\x83\x93\x82\xB7\x82\xE9\x82悤\x90ݒ肷\x82\xE9 + */ +void LogRotateSize(size_t size) +{ + if (LogVar == NULL) { + return; + } + LogVar->RotateMode = ROTATE_SIZE; + LogVar->RotateSize = size; +} + +/** + * \x83\x8D\x83O\x83\x8D\x81[\x83e\x81[\x83g\x82̐ݒ\xE8 + * \x83\x8D\x83O\x83t\x83@\x83C\x83\x8B\x82̐\xA2\x91\xE3\x82\xF0\x90ݒ肷\x82\xE9 + */ +void LogRotateRotate(int step) +{ + if (LogVar == NULL) { + return; + } + LogVar->RotateStep = step; +} + +/** + * \x83\x8D\x83O\x83\x8D\x81[\x83e\x81[\x83g\x82̐ݒ\xE8 + * \x83\x8D\x81[\x83e\x81[\x83V\x83\x87\x83\x93\x82\xF0\x92\xE2\x8E~ + */ +void LogRotateHalt(void) +{ + if (LogVar == NULL) { + return; + } + LogVar->RotateMode = ROTATE_NONE; + LogVar->RotateSize = 0; + LogVar->RotateStep = 0; +} + +static INT_PTR CALLBACK OnCommentDlgProc(HWND hDlgWnd, UINT msg, WPARAM wp, LPARAM lp) +{ + static const DlgTextInfo TextInfos[] = { + { 0, "DLG_COMMENT_TITLE" }, + { IDOK, "BTN_OK" } + }; + char buf[256]; + UINT ret; + + switch (msg) { + case WM_INITDIALOG: + //SetDlgItemText(hDlgWnd, IDC_EDIT_COMMENT, "\x83T\x83\x93\x83v\x83\x8B"); + // \x83G\x83f\x83B\x83b\x83g\x83R\x83\x93\x83g\x83\x8D\x81[\x83\x8B\x82Ƀt\x83H\x81[\x83J\x83X\x82\xF0\x82\xA0\x82Ă\xE9 + SetFocus(GetDlgItem(hDlgWnd, IDC_EDIT_COMMENT)); + SetDlgTexts(hDlgWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile); + return FALSE; + + case WM_COMMAND: + switch (LOWORD(wp)) { + case IDOK: + memset(buf, 0, sizeof(buf)); + ret = GetDlgItemTextA(hDlgWnd, IDC_EDIT_COMMENT, buf, sizeof(buf) - 1); + if (ret > 0) { // \x83e\x83L\x83X\x83g\x8E擾\x90\xAC\x8C\xF7 + //buf[sizeof(buf) - 1] = '\0'; // null-terminate + CommentLogToFile(buf, ret); + } + TTEndDialog(hDlgWnd, IDOK); + break; + default: + return FALSE; + } + break; + case WM_CLOSE: + TTEndDialog(hDlgWnd, 0); + return TRUE; + + default: + return FALSE; + } + return TRUE; +} + +void LogAddCommentDlg(HINSTANCE hInst, HWND hWnd) +{ + // \x83\x8D\x83O\x83t\x83@\x83C\x83\x8B\x82փR\x83\x81\x83\x93\x83g\x82\xF0\x92lj\xC1\x82\xB7\x82\xE9 (2004.8.6 yutaka) + TTDialogBox(hInst, MAKEINTRESOURCE(IDD_COMMENT_DIALOG), + HVTWin, OnCommentDlgProc); +} + +void LogClose() +{ + if (LogVar != NULL) + FileTransEnd(OpLog); +} + +BOOL LogOpen(const char *fname) +{ + BOOL ret; + + if ((LogVar==NULL) && !NewFileVar(&LogVar)) { + return FALSE; + } + + LogVar->DirLen = 0; + LogVar->NoMsg = TRUE; + strncpy_s(LogVar->FullName, sizeof(LogVar->FullName), fname, _TRUNCATE); + ret = LogStart(); + return ret; +} + +BOOL LogIsOpend() +{ + // LogVar->FileOpen + return LogVar != NULL; +} + +void LogWriteStr(const char *str) +{ + if (LogVar != NULL) + { + DWORD wrote; + size_t len = strlen(str); + WriteFile(LogVar->FileHandle, str, len, &wrote, NULL); + LogVar->ByteCount = + LogVar->ByteCount + len; + FLogRefreshNum(); + } +} + +void LogInfo(char *param_ptr, size_t param_len) +{ + if (LogVar) { + param_ptr[0] = '0' + + (ts.LogBinary != 0) + + ((ts.Append != 0) << 1) + + ((ts.LogTypePlainText != 0) << 2) + + ((ts.LogTimestamp != 0) << 3) + + ((ts.LogHideDialog != 0) << 4); + strncpy_s(param_ptr + 1, param_len - 1, LogVar->FullName, _TRUNCATE); + } + else { + param_ptr[0] = '0' - 1; + param_ptr[1] = 0; + } +} + +/** + * \x8C\xBB\x8D݂̃\x8D\x83O\x83t\x83@\x83C\x83\x8B\x96\xBC\x82\xF0\x8E擾 + */ +const char *LogGetFilename() +{ + if (LogVar == NULL) { + return NULL; + } + return LogVar->FullName; +} + +/** + * \x83\x8D\x83O\x83_\x83C\x83A\x83\x8D\x83O\x82\xF0\x8AJ\x82\xAD + * @retval TRUE [ok] \x82\xAA\x89\x9F\x82\xB3\x82ꂽ + * @retval FALSE \x83L\x83\x83\x83\x93\x83Z\x83\x8B\x82\xB3\x82ꂽ + * @param[in,out] filename OK\x8E\x9E\x81A\x83t\x83@\x83C\x83\x8B\x96\xBC\x81A\x95s\x97v\x82ɂȂ\xC1\x82\xBD\x82\xE7free()\x82\xB7\x82邱\x82\xC6 + */ +BOOL LogOpenDialog(char **filename) +{ + LogDlgData_t *data = (LogDlgData_t *)calloc(sizeof(LogDlgData_t), 1); + data->filename = LogGetLogFilename(NULL); + INT_PTR ret = TTDialogBoxParam( + hInst, MAKEINTRESOURCE(IDD_LOGDLG), + HVTWin, LogFnHook, (LPARAM)data); + if (ret == IDOK) { + *filename = data->filename; + } + free(data); + return ret == IDOK ? TRUE : FALSE; +} + +/** + * \x83\x8D\x83O\x83t\x83@\x83C\x83\x8B\x96\xBC\x82\xF0\x8E擾 + * \x83\x8D\x83O\x83t\x83@\x83C\x83\x8B\x96\xBC\x97p\x82̏C\x8F\xFC\x82\xF0\x8Ds\x82\xA4 + * - strftime() \x82Ɠ\xAF\x82\xB6\x93\xFA\x95t\x93W\x8AJ + * - \x90ݒ肳\x82ꂽ\x83\x8D\x83O\x83t\x83@\x83C\x83\x8B\x83t\x83H\x83\x8B\x83_\x82\xF0\x92lj\xC1 + * - \x83z\x83X\x83g\x96\xBC,\x83|\x81[\x83g\x94ԍ\x86\x93W\x8AJ + * + * @param[in] log_filename \x83t\x83@\x83C\x83\x8B\x96\xBC(\x91\x8A\x91\xCE/\x90\xE2\x91ǂ\xBF\x82\xE7\x82ł\xE0ok) + * NULL\x82̏ꍇ\x83f\x83t\x83H\x83\x8B\x83g\x83t\x83@\x83C\x83\x8B\x96\xBC\x82ƂȂ\xE9 + * strftime\x8C`\x8E\xAEok + * @return \x83t\x83\x8B\x83p\x83X\x83t\x83@\x83C\x83\x8B\x96\xBC + * \x95s\x97v\x82ɂȂ\xC1\x82\xBD\x82\xE7 free() \x82\xB7\x82邱\x82\xC6 + */ +char *LogGetLogFilename(const char *log_filename) +{ + // \x83t\x83H\x83\x8B\x83_ + char FileDirExpanded[MAX_PATH]; + char *logdir; + if (strlen(ts.LogDefaultPath) > 0) { + logdir = ts.LogDefaultPath; + } + else if (strlen(ts.FileDir) > 0) { + ExpandEnvironmentStrings(ts.FileDir, FileDirExpanded, sizeof(FileDirExpanded)); + logdir = FileDirExpanded; + } + else { + logdir = ts.HomeDir; + } + + // \x8C\xB3\x82ƂȂ\xE9\x83t\x83@\x83C\x83\x8B\x96\xBC + char base_name[MAX_PATH]; + if (log_filename == NULL) { + strncpy_s(base_name, _countof(base_name), ts.LogDefaultName, _TRUNCATE); + } + else { + strncpy_s(base_name, _countof(base_name), log_filename, _TRUNCATE); + } + + // \x83t\x83\x8B\x83p\x83X\x89\xBB + char full_path[MAX_PATH]; + ConvFName(logdir, base_name, sizeof(base_name), "", full_path, sizeof(full_path)); + ParseStrftimeFileName(full_path, sizeof(full_path)); + ConvertLogname(full_path, sizeof(full_path)); + + return _strdup(full_path); +} Modified: trunk/teraterm/teraterm/filesys.h =================================================================== --- trunk/teraterm/teraterm/filesys.h 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/teraterm/filesys.h 2020-07-13 15:31:46 UTC (rev 8852) @@ -56,7 +56,7 @@ (char *file); extern PGetSetupFname GetSetupFname; -extern PGetTransFname GetTransFname; +//extern PGetTransFname GetTransFname; extern PGetMultiFname GetMultiFname; extern PGetGetFname GetGetFname; extern PSetFileVar SetFileVar; @@ -74,7 +74,6 @@ BOOL NewFileVar(PFileVar *FV); void FreeFileVar(PFileVar *FV); -BOOL LogStart(); void LogPut1(BYTE b); void LogToFile(); BOOL CreateLogBuf(); @@ -99,11 +98,24 @@ void BPStart(int mode); void QVStart(int mode); -extern PFileVar LogVar, SendVar, FileVar; +extern PFileVar SendVar, FileVar; extern BOOL FileLog, BinLog, DDELog; + +// log void logfile_lock_initialize(void); -void CommentLogToFile(char *buf, int size); +void LogRotateSize(size_t size); +void LogRotateRotate(int step); +void LogRotateHalt(void); +void LogAddCommentDlg(HINSTANCE hInst, HWND hWnd); +void LogClose(); +BOOL LogOpen(const char *fname); +BOOL LogIsOpend(); +void LogWriteStr(const char *str); +void LogInfo(char *param_ptr, size_t param_len); +const char *LogGetFilename(); +BOOL LogOpenDialog(char **filename); +char *LogGetLogFilename(const char *log_filename); #ifdef __cplusplus } Added: trunk/teraterm/teraterm/filesys_log.rc =================================================================== --- trunk/teraterm/teraterm/filesys_log.rc (rev 0) +++ trunk/teraterm/teraterm/filesys_log.rc 2020-07-13 15:31:46 UTC (rev 8852) @@ -0,0 +1,154 @@ +// Microsoft Visual C++ generated resource script. +// +#include "filesys_log_res.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include <winresrc.h> +#define IDC_STATIC -1 +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// \x93\xFA\x96{\x8C\xEA (\x93\xFA\x96{) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT +#pragma code_page(932) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "filesys_log_res.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include <winresrc.h>\r\n" + "#define IDC_STATIC -1\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // \x93\xFA\x96{\x8C\xEA (\x93\xFA\x96{) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// \x89p\x8C\xEA (\x95č\x91) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_LOGDLG DIALOGEX 0, 0, 267, 241 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Log" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + LTEXT "&Filename (drop file in this dialog)",IDC_SENDFILE_FILENAME_TITLE,9,7,172,8 + EDITTEXT IDC_FOPT_FILENAME_EDIT,19,21,224,14,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_FOPT_FILENAME_BUTTON,245,21,14,14 + CONTROL "T&ext",IDC_FOPTTEXT,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,7,45,61,10 + CONTROL "Bina&ry",IDC_FOPTBIN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,7,138,61,10 + COMBOBOX IDC_TEXTCODING_DROPDOWN,19,58,64,53,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP + CONTROL "&Plain text",IDC_PLAINTEXT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,76,80,10 + CONTROL "&BOM",IDC_BOM,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,19,91,80,10 + CONTROL "&Timestamp",IDC_TIMESTAMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,105,80,10 + COMBOBOX IDC_TIMESTAMPTYPE,31,120,120,60,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + CONTROL "Hide &dialog",IDC_HIDEDIALOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,153,88,10 + CONTROL "&Append",IDC_FOPTAPPEND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,167,117,10 + CONTROL "In&clude screen buffer",IDC_ALLBUFF_INFIRST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,182,96,10 + DEFPUSHBUTTON "OK",IDOK,156,220,50,14 + PUSHBUTTON "Cancel",IDCANCEL,210,220,50,14 + PUSHBUTTON "Help",IDHELP,101,220,50,14 +END + +IDD_FOPT DIALOGEX 0, 0, 300, 67 +STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS +FONT 8, "Tahoma", 0, 0, 0x0 +BEGIN + GROUPBOX "Option",IDC_FOPT,5,2,290,59 + CONTROL "Bina&ry",IDC_FOPTBIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,10,60,16 + CONTROL "&Append",IDC_FOPTAPPEND,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,100,10,60,16 + CONTROL "&Plain text",IDC_PLAINTEXT,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,179,10,80,16 + CONTROL "Hide &dialog",IDC_HIDEDIALOG,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,10,24,88,16 + CONTROL "In&clude screen buffer",IDC_ALLBUFF_INFIRST,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,100,24,96,16 + CONTROL "&Timestamp",IDC_TIMESTAMP,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,10,38,80,16 + COMBOBOX IDC_TIMESTAMPTYPE,90,40,120,60,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | NOT WS_VISIBLE | WS_VSCROLL | WS_TABSTOP +END + +IDD_COMMENT_DIALOG DIALOGEX 0, 0, 239, 19 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Comment to Log" +FONT 14, "System", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,201,3,32,12 + EDITTEXT IDC_EDIT_COMMENT,6,3,189,12,ES_AUTOHSCROLL +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_LOGDLG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 260 + VERTGUIDE, 19 + TOPMARGIN, 7 + BOTTOMMARGIN, 234 + END + + IDD_FOPT, DIALOG + BEGIN + END + + IDD_COMMENT_DIALOG, DIALOG + BEGIN + LEFTMARGIN, 7 + TOPMARGIN, 7 + BOTTOMMARGIN, 17 + END +END +#endif // APSTUDIO_INVOKED + +#endif // \x89p\x8C\xEA (\x95č\x91) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + Added: trunk/teraterm/teraterm/filesys_log_res.h =================================================================== --- trunk/teraterm/teraterm/filesys_log_res.h (rev 0) +++ trunk/teraterm/teraterm/filesys_log_res.h 2020-07-13 15:31:46 UTC (rev 8852) @@ -0,0 +1,49 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ \x82Ő\xB6\x90\xAC\x82\xB3\x82ꂽ\x83C\x83\x93\x83N\x83\x8B\x81[\x83h \x83t\x83@\x83C\x83\x8B\x81B +// filesys_log.rc \x82Ŏg\x97p +// +#define IDD_COMMENT_DIALOG 110 +#define IDD_LOGDLG 115 +#define IDC_EDIT_COMMENT 1000 +#define IDC_FOPTBIN 1001 +#define IDC_FOPTAPPEND 1002 +#define IDC_PLAINTEXT 1003 +#define IDC_TIMESTAMP 1004 +#define IDC_HIDEDIALOG 1005 +#define IDC_ALLBUFF_INFIRST 1006 +#define IDC_TIMESTAMPTYPE 1007 +#define IDC_PLAINTEXT2 1008 +#define IDC_BOM 1008 +#define IDD_XOPT 1100 +#define IDC_XOPTCHECK 1101 +#define IDC_XOPTCRC 1102 +#define IDC_XOPT1K 1103 +#define IDC_XOPTBIN 1104 +#define IDD_GETFNDLG 2000 +#define IDC_GETFN 2001 +#define IDC_GETFNHELP 2099 +#define IDC_SENDFILE_FILENAME_BUTTON 2596 +#define IDC_FOPT_FILENAME_BUTTON 2596 +#define IDC_SENDFILE_FILENAME_TITLE 2598 +#define IDC_SENDFILE_FILENAME_EDIT 2599 +#define IDC_FOPT_FILENAME_EDIT 2599 +#define IDC_SENDFILE_DELAYTYPE_DROPDOWN 2601 +#define IDC_TEXTCODING_DROPDOWN 2601 +#define IDD_FOPT 2606 +#define IDC_FOPTTEXT 2609 +#define IDC_CHECK1 2611 +#define IDC_FOPT 65535 +#define IDC_FILENAME 65535 +#define IDC_XOPT 65535 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NO_MFC 1 +#define _APS_NEXT_RESOURCE_VALUE 116 +#define _APS_NEXT_COMMAND_VALUE 52031 +#define _APS_NEXT_CONTROL_VALUE 2612 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif Modified: trunk/teraterm/teraterm/ttdde.c =================================================================== --- trunk/teraterm/teraterm/ttdde.c 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/teraterm/ttdde.c 2020-07-13 15:31:46 UTC (rev 8852) @@ -516,27 +516,23 @@ PostMessage(HVTWin,WM_USER_ACCELCOMMAND,IdCmdLoadKeyMap,0); break; - case CmdLogRotate: - if (LogVar != NULL) { - char *p = ParamFileName; - int s; + case CmdLogRotate: { + char *p = ParamFileName; + int s; - if (strncmp(p, "size", 4) == 0) { - s = atoi(&p[5]); - LogVar->RotateMode = ROTATE_SIZE; - LogVar->RotateSize = s; + if (strncmp(p, "size", 4) == 0) { + s = atoi(&p[5]); + LogRotateSize(s); - } else if (strncmp(p, "rotate", 6) == 0) { - s = atoi(&p[7]); - LogVar->RotateStep = s; + } else if (strncmp(p, "rotate", 6) == 0) { + s = atoi(&p[7]); + LogRotateRotate(s); - } else if (strncmp(p, "halt", 4) == 0) { - LogVar->RotateMode = ROTATE_NONE; - LogVar->RotateSize = 0; - LogVar->RotateStep = 0; - } + } else if (strncmp(p, "halt", 4) == 0) { + LogRotateHalt(); } break; + } case CmdLogAutoClose: AutoLogClose = (ParamBinaryFlag!=0); @@ -543,26 +539,20 @@ break; case CmdLogClose: - if (LogVar != NULL) FileTransEnd(OpLog); + LogClose(); break; case CmdLogOpen: - if ((LogVar==NULL) && NewFileVar(&LogVar)) - { - BOOL ret; - LogVar->DirLen = 0; - LogVar->NoMsg = TRUE; - strncpy_s(LogVar->FullName, sizeof(LogVar->FullName),ParamFileName, _TRUNCATE); - ParseStrftimeFileName(LogVar->FullName, sizeof(LogVar->FullName)); - ret = LogStart(); - if (ret) { - strncpy_s(ParamFileName, sizeof(ParamFileName),"1", _TRUNCATE); - } - else { - strncpy_s(ParamFileName, sizeof(ParamFileName),"0", _TRUNCATE); - } + if (LogIsOpend()) { + return DDE_FNOTPROCESSED; } - else - return DDE_FNOTPROCESSED; + else { + char *ParamFileNameA = ToCharU8(ParamFileName); + char *log_filenameA = LogGetLogFilename(ParamFileNameA); + BOOL ret = LogOpen(log_filenameA); + free(log_filenameA); + free(ParamFileNameA); + strncpy_s(ParamFileName, sizeof(ParamFileName), ret ? "1" : "0", _TRUNCATE); + } break; case CmdLogPause: FLogChangeButton(TRUE); @@ -571,14 +561,7 @@ FLogChangeButton(FALSE); break; case CmdLogWrite: - if (LogVar != NULL) - { - DWORD wrote; - WriteFile(LogVar->FileHandle, ParamFileName, strlen(ParamFileName), &wrote, NULL); - LogVar->ByteCount = - LogVar->ByteCount + strlen(ParamFileName); - FLogRefreshNum(); - } + LogWriteStr(ParamFileName); break; case CmdQVRecv: if ((FileVar==NULL) && NewFileVar(&FileVar)) @@ -893,7 +876,7 @@ val = atoi(ParamFileName); switch(val) { - case 1: // Xon/Xoff + case 1: // Xon/Xoff case 2: // RTS/CTS case 3: // none case 4: // DSR/DTR @@ -1017,19 +1000,7 @@ } case CmdLogInfo: - if (LogVar) { - ParamFileName[0] = '0' - + (ts.LogBinary != 0) - + ((ts.Append != 0) << 1) - + ((ts.LogTypePlainText != 0) << 2) - + ((ts.LogTimestamp != 0) << 3) - + ((ts.LogHideDialog != 0) << 4); - strncpy_s(ParamFileName+1, sizeof(ParamFileName)-1, LogVar->FullName, _TRUNCATE); - } - else { - ParamFileName[0] = '0' - 1; - ParamFileName[1] = 0; - } + LogInfo(ParamFileName, sizeof(ParamFileName) - 1); break; default: @@ -1103,7 +1074,7 @@ case XTYP_DISCONNECT: // \x83}\x83N\x83\x8D\x8FI\x97\xB9\x8E\x9E\x81A\x83\x8D\x83O\x8D̎\xE6\x82\xF0\x8E\xA9\x93\xAE\x93I\x82ɒ\xE2\x8E~\x82\xB7\x82\xE9\x81B(2013.6.24 yutaka) if (AutoLogClose) { - if (LogVar != NULL) FileTransEnd(OpLog); + LogClose(); AutoLogClose = FALSE; } ConvH = 0; Modified: trunk/teraterm/teraterm/ttermpro.rc =================================================================== --- trunk/teraterm/teraterm/ttermpro.rc 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/teraterm/ttermpro.rc 2020-07-13 15:31:46 UTC (rev 8852) @@ -53,15 +53,6 @@ LTEXT "Drop with CTRL, this dialog is displayed",IDC_DAD_NOTE,7,221,236,8 END -IDD_COMMENT_DIALOG DIALOGEX 0, 0, 239, 19 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Comment to Log" -FONT 14, "System", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,201,3,32,12 - EDITTEXT IDC_EDIT_COMMENT,6,3,189,12,ES_AUTOHSCROLL -END - IDD_TABSHEET_GENERAL DIALOGEX 0, 0, 258, 188 STYLE DS_SETFONT | DS_CONTROL | WS_CHILD | WS_SYSMENU FONT 8, "Tahoma", 0, 0, 0x0 @@ -390,13 +381,6 @@ BOTTOMMARGIN, 250 END - IDD_COMMENT_DIALOG, DIALOG - BEGIN - LEFTMARGIN, 7 - TOPMARGIN, 7 - BOTTOMMARGIN, 17 - END - IDD_TABSHEET_GENERAL, DIALOG BEGIN LEFTMARGIN, 5 Modified: trunk/teraterm/teraterm/ttermpro.v16.vcxproj =================================================================== --- trunk/teraterm/teraterm/ttermpro.v16.vcxproj 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/teraterm/ttermpro.v16.vcxproj 2020-07-13 15:31:46 UTC (rev 8852) @@ -178,6 +178,7 @@ <ClInclude Include="broadcast.h" /> <ClInclude Include="coding_pp.h" /> <ClInclude Include="coding_pp_res.h" /> + <ClInclude Include="filesys_log_res.h" /> <ClInclude Include="font_pp.h" /> <ClInclude Include="font_pp_res.h" /> <ClInclude Include="sendfiledlg.h" /> @@ -204,6 +205,7 @@ <ResourceCompile Include="../ttpdlg/ttpdlg.rc" /> <ResourceCompile Include="coding_pp.rc" /> <ResourceCompile Include="debug_pp.rc" /> + <ResourceCompile Include="filesys_log.rc" /> <ResourceCompile Include="font_pp.rc" /> <ResourceCompile Include="teraterm_manifest.rc" /> <ResourceCompile Include="tt-version.rc" /> Modified: trunk/teraterm/teraterm/ttermpro.v16.vcxproj.filters =================================================================== --- trunk/teraterm/teraterm/ttermpro.v16.vcxproj.filters 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/teraterm/ttermpro.v16.vcxproj.filters 2020-07-13 15:31:46 UTC (rev 8852) @@ -196,6 +196,9 @@ <ResourceCompile Include="font_pp.rc"> <Filter>dialog</Filter> </ResourceCompile> + <ResourceCompile Include="filesys_log.rc"> + <Filter>Source Files</Filter> + </ResourceCompile> </ItemGroup> <ItemGroup> <ClInclude Include="sizetip.h"> @@ -372,5 +375,8 @@ <ClInclude Include="broadcast.h"> <Filter>Header Files</Filter> </ClInclude> + <ClInclude Include="filesys_log_res.h"> + <Filter>Source Files</Filter> + </ClInclude> </ItemGroup> </Project> \ No newline at end of file Modified: trunk/teraterm/teraterm/ttermpro.vcproj =================================================================== --- trunk/teraterm/teraterm/ttermpro.vcproj 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/teraterm/ttermpro.vcproj 2020-07-13 15:31:46 UTC (rev 8852) @@ -254,6 +254,14 @@ > </File> <File + RelativePath=".\filesys_log.rc" + > + </File> + <File + RelativePath=".\filesys_log_res.h" + > + </File> + <File RelativePath="..\common\tek.ico" > </File> Modified: trunk/teraterm/teraterm/vtwin.cpp =================================================================== --- trunk/teraterm/teraterm/vtwin.cpp 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/teraterm/vtwin.cpp 2020-07-13 15:31:46 UTC (rev 8852) @@ -1247,7 +1247,7 @@ EnableMenuItem(FileMenu,ID_FILE_LOGMEIN,MF_BYCOMMAND | MF_ENABLED); // XXX: \x82\xB1\x82̈ʒu\x82ɂ\xB5\x82Ȃ\xA2\x82ƁAlog\x82\xAA\x83O\x83\x8C\x83C\x82ɂȂ\xE7\x82Ȃ\xA2\x81B (2005.2.1 yutaka) - if (LogVar!=NULL) { // \x83\x8D\x83O\x8D̎惂\x81[\x83h\x82̏ꍇ + if (LogIsOpend()) { // \x83\x8D\x83O\x8D̎惂\x81[\x83h\x82̏ꍇ EnableMenuItem(FileMenu,ID_FILE_LOG,MF_BYCOMMAND | MF_GRAYED); EnableMenuItem(FileMenu,ID_FILE_COMMENTTOLOG, MF_BYCOMMAND | MF_ENABLED); EnableMenuItem(FileMenu,ID_FILE_VIEWLOG, MF_BYCOMMAND | MF_ENABLED); @@ -3572,17 +3572,17 @@ return 0; } - /* Auto start logging (2007.5.31 maya) */ - if (ts.LogAutoStart && ts.LogFN[0]==0) { - strncpy_s(ts.LogFN, sizeof(ts.LogFN), ts.LogDefaultName, _TRUNCATE); + /* Auto start logging or /L= option */ + if (ts.LogAutoStart || ts.LogFN[0] != 0) { + if (ts.LogFN[0] == 0) { + char *filename = LogGetLogFilename(NULL); + strncpy_s(ts.LogFN, sizeof(ts.LogFN), filename, _TRUNCATE); + free(filename); + } + if (ts.LogFN[0]!=0) { + LogOpen(ts.LogFN); + } } - /* \x83\x8D\x83O\x8D̎悪\x97L\x8C\xF8\x82ŊJ\x8En\x82\xB5\x82Ă\xA2\x82Ȃ\xAF\x82\xEA\x82ΊJ\x8En\x82\xB7\x82\xE9 (2006.9.18 maya) */ - if ((ts.LogFN[0]!=0) && (LogVar==NULL) && NewFileVar(&LogVar)) { - LogVar->DirLen = 0; - strncpy_s(LogVar->FullName, sizeof(LogVar->FullName), ts.LogFN, _TRUNCATE); - HelpId = HlpFileLog; - LogStart(); - } if ((ts.PortType==IdTCPIP) && ((ts.PortFlag & PF_BEEPONCONNECT) != 0)) { @@ -4135,58 +4135,17 @@ void CVTWindow::OnFileLog() { - HelpId = HlpFileLog; - LogStart(); -} - - -static LRESULT CALLBACK OnCommentDlgProc(HWND hDlgWnd, UINT msg, WPARAM wp, LPARAM lp) -{ - static const DlgTextInfo TextInfos[] = { - { 0, "DLG_COMMENT_TITLE" }, - { IDOK, "BTN_OK" } - }; - char buf[256]; - UINT ret; - - switch (msg) { - case WM_INITDIALOG: - //SetDlgItemText(hDlgWnd, IDC_EDIT_COMMENT, "\x83T\x83\x93\x83v\x83\x8B"); - // \x83G\x83f\x83B\x83b\x83g\x83R\x83\x93\x83g\x83\x8D\x81[\x83\x8B\x82Ƀt\x83H\x81[\x83J\x83X\x82\xF0\x82\xA0\x82Ă\xE9 - SetFocus(GetDlgItem(hDlgWnd, IDC_EDIT_COMMENT)); - SetDlgTexts(hDlgWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile); - return FALSE; - - case WM_COMMAND: - switch (LOWORD(wp)) { - case IDOK: - memset(buf, 0, sizeof(buf)); - ret = GetDlgItemTextA(hDlgWnd, IDC_EDIT_COMMENT, buf, sizeof(buf) - 1); - if (ret > 0) { // \x83e\x83L\x83X\x83g\x8E擾\x90\xAC\x8C\xF7 - //buf[sizeof(buf) - 1] = '\0'; // null-terminate - CommentLogToFile(buf, ret); - } - TTEndDialog(hDlgWnd, IDOK); - break; - default: - return FALSE; - } - break; - case WM_CLOSE: - TTEndDialog(hDlgWnd, 0); - return TRUE; - - default: - return FALSE; + char *filename; + BOOL r = LogOpenDialog(&filename); + if (r) { + LogOpen(filename); + free(filename); } - return TRUE; } void CVTWindow::OnCommentToLog() { - // \x83\x8D\x83O\x83t\x83@\x83C\x83\x8B\x82փR\x83\x81\x83\x93\x83g\x82\xF0\x92lj\xC1\x82\xB7\x82\xE9 (2004.8.6 yutaka) - TTDialogBox(m_hInst, MAKEINTRESOURCE(IDD_COMMENT_DIALOG), - HVTWin, (DLGPROC)OnCommentDlgProc); + LogAddCommentDlg(m_hInst, HVTWin); } // \x83\x8D\x83O\x82̉{\x97\x97 (2005.1.29 yutaka) @@ -4193,15 +4152,14 @@ void CVTWindow::OnViewLog() { char command[MAX_PATH*2+3]; // command "filename" - char *file; STARTUPINFO si; PROCESS_INFORMATION pi; - if (LogVar == NULL || !LogVar->FileOpen) { + if(!LogIsOpend()) { return; } - file = LogVar->FullName; + const char *file = LogGetFilename(); memset(&si, 0, sizeof(si)); GetStartupInfo(&si); @@ -4760,12 +4718,12 @@ FreeTTDLG(); if (Ok && ts.ComPort > 0) { - /* + /* * TCP/IP\x82ɂ\xE6\x82\xE9\x90ڑ\xB1\x92\x86\x82̏ꍇ\x82͐V\x8BK\x83v\x83\x8D\x83Z\x83X\x82Ƃ\xB5\x82ċN\x93\xAE\x82\xB7\x82\xE9\x81B * New connection\x82\xA9\x82\xE7\x83V\x83\x8A\x83A\x83\x8B\x90ڑ\xB1\x82\xB7\x82铮\x8D\xEC\x82Ɗ\xEE\x96{\x93I\x82ɓ\xAF\x82\xB6\x93\xAE\x8D\xEC\x82ƂȂ\xE9\x81B */ if ( cv.Ready && (cv.PortType != IdSerial) ) { - _snprintf_s(Command, sizeof(Command), + _snprintf_s(Command, sizeof(Command), "ttermpro /C=%u /SPEED=%lu /CDELAYPERCHAR=%u /CDELAYPERLINE=%u ", ts.ComPort, ts.Baud, ts.DelayPerChar, ts.DelayPerLine); @@ -6040,5 +5998,3 @@ } return retval; } - - Modified: trunk/teraterm/ttpfile/ttfile.c =================================================================== --- trunk/teraterm/ttpfile/ttfile.c 2020-07-13 15:31:31 UTC (rev 8851) +++ trunk/teraterm/ttpfile/ttfile.c 2020-07-13 15:31:46 UTC (rev 8852) @@ -160,6 +160,10 @@ if (Ok) strncpy_s(ts->KeyCnfFN, sizeof(ts->KeyCnfFN),Name, _TRUNCATE); break; + default: + assert(FALSE); + Ok = FALSE; + break; } #if defined(_DEBUG) @@ -176,68 +180,6 @@ return Ok; } -static void SetLogFlags(HWND Dialog) -{ - LPLONG pl; - WORD BinFlag, val; - long opt = 0; - - pl = (LPLONG)GetWindowLongPtr(Dialog, DWLP_USER); - if (pl) { - GetRB(Dialog, &BinFlag, IDC_FOPTBIN, IDC_FOPTBIN); - if (BinFlag) { - opt |= LOGDLG_BINARY; - } - - GetRB(Dialog, &val, IDC_FOPTAPPEND, IDC_FOPTAPPEND); - if (val) { - opt |= LOGDLG_APPEND; - } - - if (!BinFlag) { - GetRB(Dialog, &val, IDC_PLAINTEXT, IDC_PLAINTEXT); - if (val) { - opt |= LOGDLG_PLAINTEXT; - } - - GetRB(Dialog, &val, IDC_TIMESTAMP, IDC_TIMESTAMP); - if (val) { - opt |= LOGDLG_TIMESTAMP; - } - } - - GetRB(Dialog, &val, IDC_HIDEDIALOG, IDC_HIDEDIALOG); - if (val) { - opt |= LOGDLG_HIDEDIALOG; - } - - GetRB(Dialog, &val, IDC_ALLBUFF_INFIRST, IDC_ALLBUFF_INFIRST); - if (val) { - opt |= LOGDLG_INCSCRBUFF; - } - - switch (GetCurSel(Dialog, IDC_TIMESTAMPTYPE) - 1) { - case TIMESTAMP_LOCAL: - // nothing to do - break; - case TIMESTAMP_UTC: - opt |= LOGDLG_UTC; - break; - case TIMESTAMP_ELAPSED_LOGSTART: - opt |= LOGDLG_ELAPSED; - break; - case TIMESTAMP_ELAPSED_CONNECTED: - opt |= LOGDLG_ELAPSED | LOGDLG_ELAPSEDCON; - break; - default: - // not reached - break; - } - - *pl = opt; - } -} - /* \x83_\x83C\x83A\x83\x8D\x83O\x82𒆉\x9B\x82Ɉړ\xAE\x82\xB7\x82\xE9 */ static void CenterCommonDialog(HWND hDlg) { @@ -246,198 +188,6 @@ CenterWindow(hWndDlgRoot, GetParent(hWndDlgRoot)); } -/* Hook function for file name dialog box */ -static UINT_PTR CALLBACK LogFnHook(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam) -{ - LPOPENFILENAME ofn; - WORD BinFlag, TsFlag; - LPLONG pl; - long opt; - LPOFNOTIFY notify; - char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG]; - LOGFONT logfont; - HFONT font; - int tstype; - - switch (Message) { - case WM_INITDIALOG: - ofn = (LPOPENFILENAME)lParam; - pl = (LPLONG)(ofn->lCustData); - opt = *pl; - SetWindowLongPtr(Dialog, DWLP_USER, (LONG_PTR)pl); - - font = (HFONT)SendMessage(Dialog, WM_GETFONT, 0, 0); - GetObject(font, sizeof(LOGFONT), &logfont); - if (get_lang_font("DLG_TAHOMA_FONT", Dialog, &logfont, &DlgFoptFont, UILanguageFile)) { - SendDlgItemMessage(Dialog, IDC_FOPT, WM_SETFONT, (WPARAM)DlgFoptFont, MAKELPARAM(TRUE,0)); - SendDlgItemMessage(Dialog, IDC_FOPTBIN, WM_SETFONT, (WPARAM)DlgFoptFont, MAKELPARAM(TRUE,0)); - SendDlgItemMessage(Dialog, IDC_FOPTAPPEND, WM_SETFONT, (WPARAM)DlgFoptFont, MAKELPARAM(TRUE,0)); - SendDlgItemMessage(Dialog, IDC_PLAINTEXT, WM_SETFONT, (WPARAM)DlgFoptFont, MAKELPARAM(TRUE,0)); - SendDlgItemMessage(Dialog, IDC_HIDEDIALOG, WM_SETFONT, (WPARAM)DlgFoptFont, MAKELPARAM(TRUE,0)); - SendDlgItemMessage(Dialog, IDC_ALLBUFF_INFIRST, WM_SETFONT, (WPARAM)DlgFoptFont, MAKELPARAM(TRUE,0)); - SendDlgItemMessage(Dialog, IDC_TIMESTAMP, WM_SETFONT, (WPARAM)DlgFoptFont, MAKELPARAM(TRUE,0)); - SendDlgItemMessage(Dialog, IDC_TIMESTAMPTYPE, WM_SETFONT, (WPARAM)DlgFoptFont, MAKELPARAM(TRUE,0)); - } - else { - DlgFoptFont = NULL; - } - - GetDlgItemText(Dialog, IDC_FOPT, uimsg2, sizeof(uimsg2)); - get_lang_msg("DLG_FOPT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile); - SetDlgItemText(Dialog, IDC_FOPT, uimsg); - GetDlgItemText(Dialog, IDC_FOPTBIN, uimsg2, sizeof(uimsg2)); - get_lang_msg("DLG_FOPT_BINARY", uimsg, sizeof(uimsg), uimsg2, UILanguageFile); - SetDlgItemText(Dialog, IDC_FOPTBIN, uimsg); - GetDlgItemText(Dialog, IDC_FOPTAPPEND, uimsg2, sizeof(uimsg2)); - get_lang_msg("DLG_FOPT_APPEND", uimsg, sizeof(uimsg), uimsg2, UILanguageFile); - SetDlgItemText(Dialog, IDC_FOPTAPPEND, uimsg); - GetDlgItemText(Dialog, IDC_PLAINTEXT, uimsg2, sizeof(uimsg2)); - get_lang_msg("DLG_FOPT_PLAIN", uimsg, sizeof(uimsg), uimsg2, UILanguageFile); - SetDlgItemText(Dialog, IDC_PLAINTEXT, uimsg); - GetDlgItemText(Dialog, IDC_HIDEDIALOG, uimsg2, sizeof(uimsg2)); - get_lang_msg("DLG_FOPT_HIDEDIALOG", uimsg, sizeof(uimsg), uimsg2, UILanguageFile); - SetDlgItemText(Dialog, IDC_HIDEDIALOG, uimsg); - GetDlgItemText(Dialog, IDC_ALLBUFF_INFIRST, uimsg2, sizeof(uimsg2)); - get_lang_msg("DLG_FOPT_ALLBUFFINFIRST", uimsg, sizeof(uimsg), uimsg2, UILanguageFile); - SetDlgItemText(Dialog, IDC_ALLBUFF_INFIRST, uimsg); - GetDlgItemText(Dialog, IDC_TIMESTAMP, uimsg2, sizeof(uimsg2)); - get_lang_msg("DLG_FOPT_TIMESTAMP", uimsg, sizeof(uimsg), uimsg2, UILanguageFile); - SetDlgItemText(Dialog, IDC_TIMESTAMP, uimsg); - - get_lang_msg("DLG_FOPT_TIMESTAMP_LOCAL", uimsg, sizeof(uimsg), "Local Time", UILanguageFile); - SendDlgItemMessage(Dialog, IDC_TIMESTAMPTYPE, CB_ADDSTRING, 0, (LPARAM)uimsg); - get_lang_msg("DLG_FOPT_TIMESTAMP_UTC", uimsg, sizeof(uimsg), "UTC", UILanguageFile); - SendDlgItemMessage(Dialog, IDC_TIMESTAMPTYPE, CB_ADDSTRING, 0, (LPARAM)uimsg); - get_lang_msg("DLG_FOPT_TIMESTAMP_ELAPSED_LOGGING", uimsg, sizeof(uimsg), "Elapsed Time (Logging)", UILanguageFile); - SendDlgItemMessage(Dialog, IDC_TIMESTAMPTYPE, CB_ADDSTRING, 0, (LPARAM)uimsg); - get_lang_msg("DLG_FOPT_TIMESTAMP_ELAPSED_CONNECTION", uimsg, sizeof(uimsg), "Elapsed Time (Connection)", UILanguageFile); - SendDlgItemMessage(Dialog, IDC_TIMESTAMPTYPE, CB_ADDSTRING, 0, (LPARAM)uimsg); - - // Binary \x83`\x83F\x83b\x83N\x83{\x83b\x83N\x83X - BinFlag = CheckFlag(opt, LOGDLG_BINARY); - SetRB(Dialog, BinFlag, IDC_FOPTBIN, IDC_FOPTBIN); - - // Append \x83`\x83F\x83b\x83N\x83{\x83b\x83N\x83X - ShowDlgItem(Dialog, IDC_FOPTAPPEND, IDC_FOPTAPPEND); - if (opt & LOGDLG_APPEND) { - SetRB(Dialog, 1, IDC_FOPTAPPEND, IDC_FOPTAPPEND); - } - - // Plain Text \x83`\x83F\x83b\x83N\x83{\x83b\x83N\x83X - ShowDlgItem(Dialog, IDC_PLAINTEXT, IDC_PLAINTEXT); - if (BinFlag) { - // Binary\x83t\x83\x89\x83O\x82\xAA\x97L\x8C\xF8\x82ȂƂ\xAB\x82̓`\x83F\x83b\x83N\x82ł\xAB\x82Ȃ\xA2 - DisableDlgItem(Dialog, IDC_PLAINTEXT, IDC_PLAINTEXT); - } - else if (opt & LOGDLG_PLAINTEXT) { - SetRB(Dialog, 1, IDC_PLAINTEXT, IDC_PLAINTEXT); - } - - // Hide dialog\x83`\x83F\x83b\x83N\x83{\x83b\x83N\x83X (2008.1.30 maya) - ShowDlgItem(Dialog, IDC_HIDEDIALOG, IDC_HIDEDIALOG); - if (opt & LOGDLG_HIDEDIALOG) { - SetRB(Dialog, 1, IDC_HIDEDIALOG, IDC_HIDEDIALOG); - } - - // Include screen buffer\x83`\x83F\x83b\x83N\x83{\x83b\x83N\x83X (2013.9.29 yutaka) - ShowDlgItem(Dialog, IDC_ALLBUFF_INFIRST, IDC_ALLBUFF_INFIRST); - if (opt & LOGDLG_INCSCRBUFF) { - SetRB(Dialog, 1, IDC_ALLBUFF_INFIRST, IDC_ALLBUFF_INFIRST); - } - - // timestamp\x83`\x83F\x83b\x83N\x83{\x83b\x83N\x83X (2006.7.23 maya) - TsFlag = FALSE; - ShowDlgItem(Dialog, IDC_TIMESTAMP, IDC_TIMESTAMP); - if (BinFlag) { - // Binary\x83t\x83\x89\x83O\x82\xAA\x97L\x8C\xF8\x82ȂƂ\xAB\x82̓`\x83F\x83b\x83N\x82ł\xAB\x82Ȃ\xA2 - DisableDlgItem(Dialog, IDC_TIMESTAMP, IDC_TIMESTAMP); - } - else if (opt & LOGDLG_TIMESTAMP) { - TsFlag = TRUE; - SetRB(Dialog, 1, IDC_TIMESTAMP, IDC_TIMESTAMP); - } - - // timestamp \x8E\xED\x95\xCA - ShowDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE); - if (opt & LOGDLG_ELAPSED) { - // \x8Co\x89ߎ\x9E\x8A\xD4 - if (opt & LOGDLG_ELAPSEDCON) { - tstype = TIMESTAMP_ELAPSED_CONNECTED; - } - else { - tstype = TIMESTAMP_ELAPSED_LOGSTART; - } - } - else { - // \x93\xFA\x8E\x9E\x8C`\x8E\xAE - if (opt & LOGDLG_UTC) { - tstype = TIMESTAMP_UTC; - } - else { - tstype = TIMESTAMP_LOCAL; - } - } - SendDlgItemMessage(Dialog, IDC_TIMESTAMPTYPE, CB_SETCURSEL, tstype, 0); - if (BinFlag || !TsFlag) { - DisableDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE); - } - - CenterCommonDialog(Dialog); - - return TRUE; - - case WM_COMMAND: // for old style dialog - switch (LOWORD(wParam)) { - case IDOK: - SetLogFlags(Dialog); - - if (DlgFoptFont != NULL) { - DeleteObject(DlgFoptFont); - } - break; - case IDCANCEL: - if (DlgFoptFont != NULL) { - DeleteObject(DlgFoptFont); - } - break; - case IDC_FOPTBIN: - GetRB(Dialog, &BinFlag, IDC_FOPTBIN, IDC_FOPTBIN); - if (BinFlag) { - DisableDlgItem(Dialog, IDC_PLAINTEXT, IDC_TIMESTAMP); - DisableDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE); - break; // BinFlag \x82\xAA on \x82̎\x9E\x82\xCD Fall Through \x82\xB5\x82Ȃ\xA2 - } - else { - EnableDlgItem(Dialog, IDC_PLAINTEXT, IDC_TIMESTAMP); - } - // FALLTHROUGH -- BinFlag \x82\xAA off \x82̎\x9E\x82\xCD Timestamp \x8E\xED\x95ʂ̗L\x8C\xF8/\x96\xB3\x8C\xF8\x82\xF0\x90ݒ肷\x82\xE9 - case IDC_TIMESTAMP: - GetRB(Dialog, &TsFlag, IDC_TIMESTAMP, IDC_TIMESTAMP); - if (TsFlag) { - EnableDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE); - } - else { - DisableDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE); - } - break; - } - break; - case WM_NOTIFY: // for Explorer-style dialog - notify = (LPOFNOTIFY)lParam; - switch (notify->hdr.code) { - case CDN_FILEOK: - SetLogFlags(Dialog); - - if (DlgFoptFont != NULL) { - DeleteObject(DlgFoptFont); - } - break; - } - break; - } - return FALSE; -} - static UINT_PTR CALLBACK TransFnHook(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam); BOOL WINAPI GetTransFname(PFileVar fv, PCHAR CurDir, WORD FuncId, LPLONG Option) @@ -445,7 +195,9 @@ char uimsg[MAX_UIMSG]; char FNFilter[sizeof(FileSendFilter)*3], *pf; OPENFILENAME ofn; +#if 0 LONG optl; +#endif WORD optw; char TempDir[MAXPATHLEN]; BOOL Ok; @@ -471,10 +223,12 @@ pf = pf + strlen(pf) + 1; } break; +#if 0 case GTF_LOG: get_lang_msg("FILEDLG_TRANS_TITLE_LOG", uimsg, sizeof(uimsg), TitLog, UILanguageFile); strncat_s(fv->DlgCaption, sizeof(fv->DlgCaption), uimsg, _TRUNCATE); break; +#endif case GTF_BP: get_lang_msg("FILEDLG_TRANS_TITLE_BPSEND", uimsg, sizeof(uimsg), TitBPSend, UILanguageFile); strncat_s(fv->DlgCaption, sizeof(fv->DlgCaption), uimsg, _TRUNCATE); @@ -502,6 +256,7 @@ ofn.lpstrFile = fv->FullName; ofn.nMaxFile = sizeof(fv->FullName); +#if 0 if (FuncId == GTF_LOG) { DWORD logdir = GetFileAttributes(fv->LogDefaultPath); // \x83\x8D\x83O\x95ۑ\xB6\x82̏ꍇ\x82͏\x89\x8A\xFA\x83t\x83H\x83\x8B\x83_\x82\xF0\x8C\x88\x82ߑł\xBF\x82\xB5\x82Ȃ\xA2\x82悤\x82ɂ\xB7\x82\xE9\x81B(2007.8.24 yutaka) @@ -512,11 +267,14 @@ else { ofn.lpstrInitialDir = NULL; } - } else { + } else +#endif + { ofn.lpstrInitialDir = CurDir; } switch (FuncId) { +#if 0 case GTF_LOG: ofn.Flags = OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT; ofn.Flags |= OFN_ENABLETEMPLATE | OFN_ENABLEHOOK | OFN_EXPLORER | OFN_ENABLESIZING; @@ -526,6 +284,7 @@ optl = *Option; ofn.lCustData = (LPARAM)&optl; break; +#endif case GTF_SEND: ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; ofn.Flags |= OFN_ENABLETEMPLATE | OFN_ENABLEHOOK | OFN_EXPLORER | OFN_ENABLESIZING; @@ -542,6 +301,7 @@ ofn.Flags |= OFN_SHOWHELP; +#if 0 if (FuncId != GTF_LOG) { // \x83t\x83B\x83\x8B\x83^\x82\xAA\x83\x8F\x83C\x83\x8B\x83h\x83J\x81[\x83h\x82ł͂Ȃ\xAD\x81A\x82\xBB\x82̃t\x83@\x83C\x83\x8B\x82\xAA\x91\xB6\x8D݂\xB7\x82\xE9\x8Fꍇ // \x82\xA0\x82炩\x82\xB6\x82߃f\x83t\x83H\x83\x8B\x83g\x82̃t\x83@\x83C\x83\x8B\x96\xBC\x82\xF0\x93\xFC\x82\xEA\x82Ă\xA8\x82\xAD (2008.5.18 maya) @@ -556,21 +316,27 @@ } } } +#endif ofn.lpstrTitle = fv->DlgCaption; ofn.hInstance = hInst; // logging\x82̏ꍇ\x81A\x83I\x81[\x83v\x83\x93\x83_\x83C\x83A\x83\x8D\x83O\x82\xF0\x83Z\x81[\x83u\x83_\x83C\x83A\x83\x8D\x83O\x82֕ύX (2005.1.6 yutaka) +#if 0 if (FuncId == GTF_LOG) { Ok = GetSaveFileName(&ofn); - } else { + } else +#endif + { Ok = GetOpenFileName(&ofn); } if (Ok) { +#if 0 if (FuncId==GTF_LOG) *Option = optl; else +#endif *Option = (long)optw; fv->DirLen = ofn.nFileOffset;