| 50 |
#include "ftlib.h" |
#include "ftlib.h" |
| 51 |
#include "buffer.h" |
#include "buffer.h" |
| 52 |
#include "helpid.h" |
#include "helpid.h" |
|
#include "layer_for_unicode.h" |
|
|
#include "layer_for_unicode_crt.h" |
|
| 53 |
#include "codeconv.h" |
#include "codeconv.h" |
| 54 |
#include "asprintf.h" |
#include "asprintf.h" |
| 55 |
|
|
| 360 |
*bom = 0; |
*bom = 0; |
| 361 |
|
|
| 362 |
// ファイルが存在する? |
// ファイルが存在する? |
| 363 |
DWORD logdir = _GetFileAttributesW(filename); |
DWORD logdir = GetFileAttributesW(filename); |
| 364 |
if ((logdir != INVALID_FILE_ATTRIBUTES) && ((logdir & FILE_ATTRIBUTE_DIRECTORY) == 0)) { |
if ((logdir != INVALID_FILE_ATTRIBUTES) && ((logdir & FILE_ATTRIBUTE_DIRECTORY) == 0)) { |
| 365 |
// ファイルがあった |
// ファイルがあった |
| 366 |
*exist = TRUE; |
*exist = TRUE; |
| 367 |
|
|
| 368 |
// BOM有り/無しチェック |
// BOM有り/無しチェック |
| 369 |
FILE *fp = __wfopen(filename, L"rb"); |
FILE *fp = _wfopen(filename, L"rb"); |
| 370 |
if (fp != NULL) { |
if (fp != NULL) { |
| 371 |
unsigned char tmp[4]; |
unsigned char tmp[4]; |
| 372 |
size_t l = fread(tmp, 1, sizeof(tmp), fp); |
size_t l = fread(tmp, 1, sizeof(tmp), fp); |
| 502 |
SendDlgItemMessage(Dialog, IDC_TEXTCODING_DROPDOWN, CB_ADDSTRING, 0, (LPARAM)"UTF-16BE"); |
SendDlgItemMessage(Dialog, IDC_TEXTCODING_DROPDOWN, CB_ADDSTRING, 0, (LPARAM)"UTF-16BE"); |
| 503 |
SendDlgItemMessage(Dialog, IDC_TEXTCODING_DROPDOWN, CB_SETCURSEL, 0, 0); |
SendDlgItemMessage(Dialog, IDC_TEXTCODING_DROPDOWN, CB_SETCURSEL, 0, 0); |
| 504 |
|
|
| 505 |
_SetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, work->info->filename); |
SetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, work->info->filename); |
| 506 |
work->info->filename = NULL; |
work->info->filename = NULL; |
| 507 |
|
|
| 508 |
// Binary/Text チェックボックス |
// Binary/Text チェックボックス |
| 560 |
switch (LOWORD(wParam)) { |
switch (LOWORD(wParam)) { |
| 561 |
case IDOK: { |
case IDOK: { |
| 562 |
wchar_t filename[MAX_PATH]; |
wchar_t filename[MAX_PATH]; |
| 563 |
_GetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, filename, _countof(filename)); |
GetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, filename, _countof(filename)); |
| 564 |
work->info->filename = _wcsdup(filename); |
work->info->filename = _wcsdup(filename); |
| 565 |
work->info->append = IsDlgButtonChecked(Dialog, IDC_APPEND) == BST_CHECKED; |
work->info->append = IsDlgButtonChecked(Dialog, IDC_APPEND) == BST_CHECKED; |
| 566 |
work->info->bom = IsDlgButtonChecked(Dialog, IDC_BOM) == BST_CHECKED; |
work->info->bom = IsDlgButtonChecked(Dialog, IDC_BOM) == BST_CHECKED; |
| 579 |
/* save current dir */ |
/* save current dir */ |
| 580 |
const char *UILanguageFile = work->pts->UILanguageFile; |
const char *UILanguageFile = work->pts->UILanguageFile; |
| 581 |
wchar_t curdir[MAXPATHLEN]; |
wchar_t curdir[MAXPATHLEN]; |
| 582 |
_GetCurrentDirectoryW(_countof(curdir), curdir); |
GetCurrentDirectoryW(_countof(curdir), curdir); |
| 583 |
|
|
| 584 |
wchar_t fname[MAX_PATH]; |
wchar_t fname[MAX_PATH]; |
| 585 |
GetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, fname, _countof(fname)); |
GetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, fname, _countof(fname)); |
| 604 |
ofn.lpstrFile = fname; |
ofn.lpstrFile = fname; |
| 605 |
ofn.nMaxFile = _countof(fname); |
ofn.nMaxFile = _countof(fname); |
| 606 |
ofn.lpstrTitle = caption; |
ofn.lpstrTitle = caption; |
| 607 |
BOOL Ok = _GetSaveFileNameW(&ofn); |
BOOL Ok = GetSaveFileNameW(&ofn); |
| 608 |
free(FNFilter); |
free(FNFilter); |
| 609 |
if (Ok) { |
if (Ok) { |
| 610 |
SetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, fname); |
SetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, fname); |
| 611 |
} |
} |
| 612 |
|
|
| 613 |
/* restore dir */ |
/* restore dir */ |
| 614 |
_SetCurrentDirectoryW(curdir); |
SetCurrentDirectoryW(curdir); |
| 615 |
|
|
| 616 |
break; |
break; |
| 617 |
} |
} |
| 656 |
case WM_DROPFILES: { |
case WM_DROPFILES: { |
| 657 |
// 複数ドロップされても最初の1つだけを扱う |
// 複数ドロップされても最初の1つだけを扱う |
| 658 |
HDROP hDrop = (HDROP)wParam; |
HDROP hDrop = (HDROP)wParam; |
| 659 |
const UINT len = _DragQueryFileW(hDrop, 0, NULL, 0); |
const UINT len = DragQueryFileW(hDrop, 0, NULL, 0); |
| 660 |
if (len == 0) { |
if (len == 0) { |
| 661 |
DragFinish(hDrop); |
DragFinish(hDrop); |
| 662 |
return TRUE; |
return TRUE; |
| 663 |
} |
} |
| 664 |
wchar_t *filename = (wchar_t *)malloc(sizeof(wchar_t) * (len + 1)); |
wchar_t *filename = (wchar_t *)malloc(sizeof(wchar_t) * (len + 1)); |
| 665 |
_DragQueryFileW(hDrop, 0, filename, len + 1); |
DragQueryFileW(hDrop, 0, filename, len + 1); |
| 666 |
filename[len] = '\0'; |
filename[len] = '\0'; |
| 667 |
CheckRadioButton(Dialog, IDC_NEW_OVERWRITE, IDC_APPEND, IDC_APPEND); |
CheckRadioButton(Dialog, IDC_NEW_OVERWRITE, IDC_APPEND, IDC_APPEND); |
| 668 |
_SetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, filename); |
SetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, filename); |
| 669 |
SendDlgItemMessage(Dialog, IDC_FOPT_FILENAME_EDIT, EM_SETSEL, len, len); |
SendDlgItemMessage(Dialog, IDC_FOPT_FILENAME_EDIT, EM_SETSEL, len, len); |
| 670 |
free(filename); |
free(filename); |
| 671 |
DragFinish(hDrop); |
DragFinish(hDrop); |
| 683 |
if (!ts.LogLockExclusive) { |
if (!ts.LogLockExclusive) { |
| 684 |
dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE; |
dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE; |
| 685 |
} |
} |
| 686 |
LogVar->FileHandle = _CreateFileW(LogVar->FullName, GENERIC_WRITE, dwShareMode, NULL, |
LogVar->FileHandle = CreateFileW(LogVar->FullName, GENERIC_WRITE, dwShareMode, NULL, |
| 687 |
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); |
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); |
| 688 |
} |
} |
| 689 |
|
|
| 890 |
for (i = 1 ; i <= loopmax ; i++) { |
for (i = 1 ; i <= loopmax ; i++) { |
| 891 |
wchar_t *filename; |
wchar_t *filename; |
| 892 |
aswprintf(&filename, L"%s.%d", LogVar->FullName, i); |
aswprintf(&filename, L"%s.%d", LogVar->FullName, i); |
| 893 |
DWORD attr = _GetFileAttributesW(filename); |
DWORD attr = GetFileAttributesW(filename); |
| 894 |
free(filename); |
free(filename); |
| 895 |
if (attr == INVALID_FILE_ATTRIBUTES) |
if (attr == INVALID_FILE_ATTRIBUTES) |
| 896 |
break; |
break; |
| 909 |
aswprintf(&oldfile, L"%s.%d", LogVar->FullName, k); |
aswprintf(&oldfile, L"%s.%d", LogVar->FullName, k); |
| 910 |
wchar_t *newfile; |
wchar_t *newfile; |
| 911 |
aswprintf(&newfile, L"%s.%d", LogVar->FullName, k+1); |
aswprintf(&newfile, L"%s.%d", LogVar->FullName, k+1); |
| 912 |
_DeleteFileW(newfile); |
DeleteFileW(newfile); |
| 913 |
if (_MoveFileW(oldfile, newfile) == 0) { |
if (MoveFileW(oldfile, newfile) == 0) { |
| 914 |
OutputDebugPrintf("%s: rename %d\n", __FUNCTION__, errno); |
OutputDebugPrintf("%s: rename %d\n", __FUNCTION__, errno); |
| 915 |
} |
} |
| 916 |
free(oldfile); |
free(oldfile); |
| 1172 |
case WM_COMMAND: |
case WM_COMMAND: |
| 1173 |
switch (LOWORD(wp)) { |
switch (LOWORD(wp)) { |
| 1174 |
case IDOK: { |
case IDOK: { |
| 1175 |
size_t len = _SendDlgItemMessageW(hDlgWnd, IDC_EDIT_COMMENT, WM_GETTEXTLENGTH, 0, 0); |
size_t len = SendDlgItemMessageW(hDlgWnd, IDC_EDIT_COMMENT, WM_GETTEXTLENGTH, 0, 0); |
| 1176 |
len += 1; |
len += 1; |
| 1177 |
wchar_t *buf = (wchar_t *)malloc(len * sizeof(wchar_t)); |
wchar_t *buf = (wchar_t *)malloc(len * sizeof(wchar_t)); |
| 1178 |
_GetDlgItemTextW(hDlgWnd, IDC_EDIT_COMMENT, buf, (int)len); |
GetDlgItemTextW(hDlgWnd, IDC_EDIT_COMMENT, buf, (int)len); |
| 1179 |
FLogWriteStr(buf); |
FLogWriteStr(buf); |
| 1180 |
FLogWriteStr(L"\n"); // TODO 改行コード |
FLogWriteStr(L"\n"); // TODO 改行コード |
| 1181 |
free(buf); |
free(buf); |