• R/O
  • SSH
  • HTTPS

ttssh2: コミット


コミットメタ情報

リビジョン6893 (tree)
日時2017-08-09 22:08:44
作者doda

ログメッセージ

シリアルポート/パイプが開けなかった時のメッセージ強化。 Ticket: #36630

以下のエラーは起き易いので、専用のメッセージを表示する。

・ERROR_FILE_NOT_FOUND(0x02)
・ERROR_ACCESS_DENIED(0x05)

他のエラーはエラーコードを表示する。
他にも頻発するようなエラーがあった場合は別途専用メッセージを追加する。

変更サマリ

差分

--- trunk/doc/en/html/about/history.html (revision 6892)
+++ trunk/doc/en/html/about/history.html (revision 6893)
@@ -44,6 +44,7 @@
4444 <ul>
4545 <li>added the <a href="../setup/teraterm-misc.html#LogTimestampUTC">LogTimestampUTC</a> entry in the teraterm.ini file. The default is off.</li>
4646 </ul></li>
47+ <!-- li>シリアルポートおよび名前付きパイプが開けなかった時、エラーメッセージで理由やエラーコードを表示するようにした。</li -->
4748 <li>added the <a href="../macro/command/sendlnmulticast.html">sendlnmulticast</a> command.</li>
4849 </ul>
4950 </li>
--- trunk/doc/ja/html/about/history.html (revision 6892)
+++ trunk/doc/ja/html/about/history.html (revision 6893)
@@ -44,6 +44,7 @@
4444 <ul>
4545 <li>teraterm.ini に <a href="../setup/teraterm-misc.html#LogTimestampUTC">LogTimestampUTC</a> エントリを追加した。デフォルトはoff。</li>
4646 </ul></li>
47+ <li>シリアルポートおよび名前付きパイプが開けなかった時、エラーメッセージで理由やエラーコードを表示するようにした。</li>
4748 <li><a href="../macro/command/sendlnmulticast.html">sendlnmulticast</a> マクロコマンドを追加した。</li>
4849 </ul>
4950 </li>
--- trunk/teraterm/teraterm/commlib.c (revision 6892)
+++ trunk/teraterm/teraterm/commlib.c (revision 6893)
@@ -447,14 +447,26 @@
447447 strncpy_s(ErrMsg, sizeof(ErrMsg),P, _TRUNCATE);
448448 strncpy_s(P, sizeof(P),"\\\\.\\", _TRUNCATE);
449449 strncat_s(P, sizeof(P),ErrMsg, _TRUNCATE);
450- cv->ComID =
451- PCreateFile(P,GENERIC_READ | GENERIC_WRITE,
452- 0,NULL,OPEN_EXISTING,
453- FILE_FLAG_OVERLAPPED,NULL);
450+ cv->ComID = PCreateFile(P, GENERIC_READ | GENERIC_WRITE, 0, NULL,
451+ OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
454452 if (cv->ComID == INVALID_HANDLE_VALUE ) {
455- get_lang_msg("MSG_CANTOPEN_ERROR", ts->UIMsg, sizeof(ts->UIMsg), "Cannot open %s", ts->UILanguageFile);
456- _snprintf_s(ErrMsg, sizeof(ErrMsg), _TRUNCATE, ts->UIMsg, &P[4]);
453+ DWORD err = GetLastError();
457454
455+ switch (err) {
456+ case ERROR_FILE_NOT_FOUND:
457+ get_lang_msg("MSG_CANTOPEN_ERROR_NOTFOUND", ts->UIMsg, sizeof(ts->UIMsg), "Cannot open %s. Not found.", ts->UILanguageFile);
458+ _snprintf_s(ErrMsg, sizeof(ErrMsg), _TRUNCATE, ts->UIMsg, &P[4]);
459+ break;
460+ case ERROR_ACCESS_DENIED:
461+ get_lang_msg("MSG_CANTOPEN_ERROR_DENIED", ts->UIMsg, sizeof(ts->UIMsg), "Cannot open %s. Access denied.", ts->UILanguageFile);
462+ _snprintf_s(ErrMsg, sizeof(ErrMsg), _TRUNCATE, ts->UIMsg, &P[4]);
463+ break;
464+ default:
465+ get_lang_msg("MSG_CANTOPEN_ERROR", ts->UIMsg, sizeof(ts->UIMsg), "Cannot open %s. (0x%08x)", ts->UILanguageFile);
466+ _snprintf_s(ErrMsg, sizeof(ErrMsg), _TRUNCATE, ts->UIMsg, &P[4], err);
467+ break;
468+ }
469+
458470 if (cv->NoMsg==0) {
459471 get_lang_msg("MSG_TT_ERROR", uimsg, sizeof(uimsg), "Tera Term: Error", ts->UILanguageFile);
460472 MessageBox(cv->HWin,ErrMsg,uimsg,MB_TASKMODAL | MB_ICONEXCLAMATION);
@@ -480,8 +492,7 @@
480492 case IdFile:
481493 InitFileIO(IdFile); /* TTPLUG */
482494 TTXOpenFile(); /* TTPLUG */
483- cv->ComID = PCreateFile(ts->HostName,GENERIC_READ,0,NULL,
484- OPEN_EXISTING,0,NULL);
495+ cv->ComID = PCreateFile(ts->HostName, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
485496 InvalidHost = (cv->ComID == INVALID_HANDLE_VALUE);
486497 if (InvalidHost) {
487498 if (cv->NoMsg==0) {
@@ -517,15 +528,27 @@
517528 break;
518529 }
519530
520- cv->ComID =
521- PCreateFile(P,GENERIC_READ | GENERIC_WRITE,
522- 0,NULL,OPEN_EXISTING,
523- 0, // ブロッキングモードにする(FILE_FLAG_OVERLAPPED は指定しない)
524- NULL);
531+ cv->ComID = PCreateFile(P, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
532+ 0, // ブロッキングモードにする(FILE_FLAG_OVERLAPPED は指定しない)
533+ NULL);
525534 if (cv->ComID == INVALID_HANDLE_VALUE ) {
526- get_lang_msg("MSG_CANTOPEN_ERROR", ts->UIMsg, sizeof(ts->UIMsg), "Cannot open %s", ts->UILanguageFile);
527- _snprintf_s(ErrMsg, sizeof(ErrMsg), _TRUNCATE, ts->UIMsg, &P[4]);
535+ DWORD err = GetLastError();
528536
537+ switch (err) {
538+ case ERROR_FILE_NOT_FOUND:
539+ get_lang_msg("MSG_CANTOPEN_ERROR_NOTFOUND", ts->UIMsg, sizeof(ts->UIMsg), "Cannot open %s. Not found.", ts->UILanguageFile);
540+ _snprintf_s(ErrMsg, sizeof(ErrMsg), _TRUNCATE, ts->UIMsg, &P[4]);
541+ break;
542+ case ERROR_ACCESS_DENIED:
543+ get_lang_msg("MSG_CANTOPEN_ERROR_DENIED", ts->UIMsg, sizeof(ts->UIMsg), "Cannot open %s. Access denied.", ts->UILanguageFile);
544+ _snprintf_s(ErrMsg, sizeof(ErrMsg), _TRUNCATE, ts->UIMsg, &P[4]);
545+ break;
546+ default:
547+ get_lang_msg("MSG_CANTOPEN_ERROR", ts->UIMsg, sizeof(ts->UIMsg), "Cannot open %s. (0x%08x)", ts->UILanguageFile);
548+ _snprintf_s(ErrMsg, sizeof(ErrMsg), _TRUNCATE, ts->UIMsg, &P[4], err);
549+ break;
550+ }
551+
529552 if (cv->NoMsg==0) {
530553 get_lang_msg("MSG_TT_ERROR", uimsg, sizeof(uimsg), "Tera Term: Error", ts->UILanguageFile);
531554 MessageBox(cv->HWin,ErrMsg,uimsg,MB_TASKMODAL | MB_ICONEXCLAMATION);
旧リポジトリブラウザで表示