Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/teraterm/filesys_log.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 9134 by nmaya, Fri Jan 22 15:00:52 2021 UTC revision 9324 by zmatsuo, Tue Jun 29 15:20:20 2021 UTC
# Line 50  Line 50 
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    
# Line 362  static void CheckLogFile(const wchar_t * Line 360  static void CheckLogFile(const wchar_t *
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);
# Line 504  static INT_PTR CALLBACK LogFnHook(HWND D Line 502  static INT_PTR CALLBACK LogFnHook(HWND D
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 チェックボックス
# Line 562  static INT_PTR CALLBACK LogFnHook(HWND D Line 560  static INT_PTR CALLBACK LogFnHook(HWND D
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;
# Line 581  static INT_PTR CALLBACK LogFnHook(HWND D Line 579  static INT_PTR CALLBACK LogFnHook(HWND D
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));
# Line 606  static INT_PTR CALLBACK LogFnHook(HWND D Line 604  static INT_PTR CALLBACK LogFnHook(HWND D
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                  }                  }
# Line 658  static INT_PTR CALLBACK LogFnHook(HWND D Line 656  static INT_PTR CALLBACK LogFnHook(HWND D
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);
# Line 685  static void OpenLogFile(PFileVar fv) Line 683  static void OpenLogFile(PFileVar fv)
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    
# Line 892  static void LogRotate(void) Line 890  static void LogRotate(void)
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;
# Line 911  static void LogRotate(void) Line 909  static void LogRotate(void)
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);
# Line 1174  static INT_PTR CALLBACK OnCommentDlgProc Line 1172  static INT_PTR CALLBACK OnCommentDlgProc
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);

Legend:
Removed from v.9134  
changed lines
  Added in v.9324

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26