| 122 |
static BOOL CreateBinBuf(void); |
static BOOL CreateBinBuf(void); |
| 123 |
void LogPut1(BYTE b); |
void LogPut1(BYTE b); |
| 124 |
static void OutputStr(const wchar_t *str); |
static void OutputStr(const wchar_t *str); |
| 125 |
|
static void LogToFile(void); |
| 126 |
|
|
| 127 |
static BOOL OpenFTDlg_(PFileVar fv) |
static BOOL OpenFTDlg_(PFileVar fv) |
| 128 |
{ |
{ |
| 761 |
StartThread(LogVar); |
StartThread(LogVar); |
| 762 |
} |
} |
| 763 |
|
|
|
// 現在バッファにあるデータをすべて書き出してから、 |
|
|
// ログ採取を開始する。 |
|
|
// (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つの行を取得する。文字だけなので、エスケープシーケンスは含まれない。 |
|
|
size = BuffGetAnyLineData(ofs, buf, sizeof(buf)); |
|
|
if (size == -1) |
|
|
break; |
|
|
|
|
|
#if 0 |
|
|
if (ts.DeferredLogWriteMode) { // 遅延書き込み |
|
|
char *pbuf = (char *)malloc(size + 2); |
|
|
memcpy(pbuf, buf, size); |
|
|
pbuf[size] = '\r'; |
|
|
pbuf[size+1] = '\n'; |
|
|
Sleep(1); // スレッドキューが作られるように、コンテキストスイッチを促す。 |
|
|
PostThreadMessage(LogVar->LogThreadId, WM_DPC_LOGTHREAD_SEND, (WPARAM)pbuf, size + 2); |
|
|
} else { // 直書き。ネットワーク経由だと遅い。 |
|
|
#endif |
|
|
WriteFile(LogVar->FileHandle, buf, size, &written_size, NULL); |
|
|
WriteFile(LogVar->FileHandle, crlf, crlf_len, &written_size, NULL); |
|
|
#if 0 |
|
|
} |
|
|
#endif |
|
|
} |
|
|
} |
|
|
|
|
| 764 |
if (FileLog) { |
if (FileLog) { |
| 765 |
cv.Log1Byte = LogPut1; |
cv.Log1Byte = LogPut1; |
| 766 |
} |
} |
| 773 |
} |
} |
| 774 |
|
|
| 775 |
/** |
/** |
| 776 |
|
* 現在バッファにあるデータをすべてログに書き出す |
| 777 |
|
* (2013.9.29 yutaka) |
| 778 |
|
* |
| 779 |
|
* TODO |
| 780 |
|
* 1行の長さ |
| 781 |
|
*/ |
| 782 |
|
void FLogOutputAllBuffer(void) |
| 783 |
|
{ |
| 784 |
|
DWORD ofs, written_size; |
| 785 |
|
int size; |
| 786 |
|
wchar_t buf[512]; |
| 787 |
|
for (ofs = 0 ; ; ofs++ ) { |
| 788 |
|
// 1つの行を取得する。文字だけなので、エスケープシーケンスは含まれない。 |
| 789 |
|
size = BuffGetAnyLineDataW(ofs, buf, _countof(buf)); |
| 790 |
|
if (size == -1) |
| 791 |
|
break; |
| 792 |
|
|
| 793 |
|
OutputStr(buf); |
| 794 |
|
OutputStr(L"\r\n"); |
| 795 |
|
LogToFile(); |
| 796 |
|
} |
| 797 |
|
} |
| 798 |
|
|
| 799 |
|
/** |
| 800 |
* ログへ1byte書き込み |
* ログへ1byte書き込み |
| 801 |
* バッファへ書き込まれる |
* バッファへ書き込まれる |
| 802 |
* 実際の書き込みは LogToFile() で行われる |
* 実際の書き込みは LogToFile() で行われる |
| 1597 |
break; |
break; |
| 1598 |
case 1: |
case 1: |
| 1599 |
// UTF-16LE |
// UTF-16LE |
|
LogPut1(0xfe); |
|
| 1600 |
LogPut1(0xff); |
LogPut1(0xff); |
| 1601 |
|
LogPut1(0xfe); |
| 1602 |
break; |
break; |
| 1603 |
case 2: |
case 2: |
| 1604 |
// UTF-16BE |
// UTF-16BE |
|
LogPut1(0xff); |
|
| 1605 |
LogPut1(0xfe); |
LogPut1(0xfe); |
| 1606 |
|
LogPut1(0xff); |
| 1607 |
break; |
break; |
| 1608 |
default: |
default: |
| 1609 |
break; |
break; |