[ttssh2-commit] [10771] デバグ用文字出力を charset.c へ移動

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2023年 6月 17日 (土) 23:47:20 JST


Revision: 10771
          https://osdn.net/projects/ttssh2/scm/svn/commits/10771
Author:   zmatsuo
Date:     2023-06-17 23:47:20 +0900 (Sat, 17 Jun 2023)
Log Message:
-----------
デバグ用文字出力を charset.c へ移動

- PutDebugChar() を vtterm.c から移動
- 受信文字を表示用文字に変換する箇所が charset.c にまとまった

Modified Paths:
--------------
    trunk/teraterm/common/tttypes_charset.h
    trunk/teraterm/teraterm/charset.c
    trunk/teraterm/teraterm/vtterm.c
    trunk/teraterm/teraterm/vtterm.h
    trunk/teraterm/ttpdlg/ttdlg.c

-------------- next part --------------
Modified: trunk/teraterm/common/tttypes_charset.h
===================================================================
--- trunk/teraterm/common/tttypes_charset.h	2023-06-17 14:47:11 UTC (rev 10770)
+++ trunk/teraterm/common/tttypes_charset.h	2023-06-17 14:47:20 UTC (rev 10771)
@@ -30,13 +30,16 @@
 #pragma once
 
 /* Language */
-#define IdEnglish  1
-#define IdJapanese 2
-#define IdRussian  3
-#define IdKorean   4  //HKS
-#define IdUtf8     5
-#define	IdChinese  6
-#define IdLangMax  IdChinese
+typedef enum {
+	IdEnglish  = 1,
+	IdJapanese,
+	IdRussian,
+	IdKorean,  	//HKS
+	IdUtf8,
+	IdChinese,
+	IdDebug,
+	IdLangMax,
+} IdLanguage;
 
   /* Kanji Code ID */
   /*  ts.KanjiCode, ts.KanjiCodeSend \x82̒l */

Modified: trunk/teraterm/teraterm/charset.c
===================================================================
--- trunk/teraterm/teraterm/charset.c	2023-06-17 14:47:11 UTC (rev 10770)
+++ trunk/teraterm/teraterm/charset.c	2023-06-17 14:47:20 UTC (rev 10771)
@@ -43,6 +43,7 @@
 #include "unicode.h"
 #include "language.h"	// for JIS2SJIS()
 #include "ttcstd.h"
+#include "keyboard.h"	// for DebugFlag
 
 #include "charset.h"
 
@@ -773,20 +774,80 @@
 	return TRUE;
 }
 
-void ParseFirst(BYTE b) {
-	switch (ts.Language) {
-	  case IdUtf8:
-		  ParseFirstUTF8(b);
+static void PutDebugChar(BYTE b)
+{
+	int i;
+	BOOL svInsertMode, svAutoWrapMode;
+	TCharAttr svCharAttr;
+	TCharAttr char_attr;
+
+	svInsertMode = TermGetInsertMode();
+	TermSetInsertMode(FALSE);
+	svAutoWrapMode = TermGetAutoWrapMode();
+	TermSetAutoWrapMode(TRUE);
+
+	TermGetAttr(&svCharAttr);
+	char_attr = svCharAttr;
+	char_attr.Attr = AttrDefault;
+	TermSetAttr(&char_attr);
+
+	if (DebugFlag==DEBUG_FLAG_HEXD) {
+		char buff[3];
+		_snprintf(buff, 3, "%02X", (unsigned int) b);
+
+		for (i=0; i<2; i++)
+			PutChar(buff[i]);
+		PutChar(' ');
+	}
+	else if (DebugFlag==DEBUG_FLAG_NORM) {
+
+		if ((b & 0x80) == 0x80) {
+			//UpdateStr();
+			char_attr.Attr = AttrReverse;
+			TermSetAttr(&char_attr);
+			b = b & 0x7f;
+		}
+
+		if (b<=US) {
+			PutChar('^');
+			PutChar((char)(b+0x40));
+		}
+		else if (b==DEL) {
+			PutChar('<');
+			PutChar('D');
+			PutChar('E');
+			PutChar('L');
+			PutChar('>');
+		}
+		else
+			PutChar(b);
+	}
+
+	TermSetAttr(&char_attr);
+	TermSetInsertMode(svInsertMode);
+	TermSetAutoWrapMode(svAutoWrapMode);
+}
+
+void ParseFirst(BYTE b)
+{
+	WORD language = ts.Language;
+	if (DebugFlag != DEBUG_FLAG_NONE) {
+		language = IdDebug;
+	}
+
+	switch (language) {
+	case IdUtf8:
+		ParseFirstUTF8(b);
 		return;
 
-	  case IdJapanese:
+	case IdJapanese:
 		switch (ts.KanjiCode) {
-		  case IdUTF8:
-			  if (ParseFirstUTF8(b)) {
+		case IdUTF8:
+			if (ParseFirstUTF8(b)) {
 				return;
 			}
 			break;
-		  default:
+		default:
 			if (ParseFirstJP(b))  {
 				return;
 			}
@@ -793,14 +854,14 @@
 		}
 		break;
 
-	  case IdKorean:
+	case IdKorean:
 		switch (ts.KanjiCode) {
-		  case IdUTF8:
+		case IdUTF8:
 			if (ParseFirstUTF8(b)) {
 				return;
 			}
 			break;
-		  default:
+		default:
 			if (ParseFirstKR(b))  {
 				return;
 			}
@@ -807,7 +868,7 @@
 		}
 		break;
 
-	  case IdRussian:
+	case IdRussian:
 		if (ParseFirstRus(b)) {
 			return;
 		}
@@ -832,7 +893,11 @@
 		}
 		break;
 	}
+	case IdDebug: {
+		PutDebugChar(b);
+		return;
 	}
+	}
 
 	if (SSflag) {
 		PutChar(b);

Modified: trunk/teraterm/teraterm/vtterm.c
===================================================================
--- trunk/teraterm/teraterm/vtterm.c	2023-06-17 14:47:11 UTC (rev 10770)
+++ trunk/teraterm/teraterm/vtterm.c	2023-06-17 14:47:20 UTC (rev 10771)
@@ -994,64 +994,6 @@
 	PutU32(b);
 }
 
-static void PutDebugChar(BYTE b)
-{
-	static BYTE buff[3];
-	int i;
-	BOOL svInsertMode, svAutoWrapMode;
-	BYTE svCharAttr;
-
-	if (DebugFlag!=DEBUG_FLAG_NOUT) {
-		svInsertMode = InsertMode;
-		svAutoWrapMode = AutoWrapMode;
-		InsertMode = FALSE;
-		AutoWrapMode = TRUE;
-
-		svCharAttr = CharAttr.Attr;
-		if (CharAttr.Attr != AttrDefault) {
-			UpdateStr();
-			CharAttr.Attr = AttrDefault;
-		}
-
-		if (DebugFlag==DEBUG_FLAG_HEXD) {
-			_snprintf(buff, 3, "%02X", (unsigned int) b);
-
-			for (i=0; i<2; i++)
-				PutChar(buff[i]);
-			PutChar(' ');
-		}
-		else if (DebugFlag==DEBUG_FLAG_NORM) {
-
-			if ((b & 0x80) == 0x80) {
-				UpdateStr();
-				CharAttr.Attr = AttrReverse;
-				b = b & 0x7f;
-			}
-
-			if (b<=US) {
-				PutChar('^');
-				PutChar((char)(b+0x40));
-			}
-			else if (b==DEL) {
-				PutChar('<');
-				PutChar('D');
-				PutChar('E');
-				PutChar('L');
-				PutChar('>');
-			}
-			else
-				PutChar(b);
-		}
-
-		if (CharAttr.Attr != svCharAttr) {
-			UpdateStr();
-			CharAttr.Attr = svCharAttr;
-		}
-		InsertMode = svInsertMode;
-		AutoWrapMode = svAutoWrapMode;
-	}
-}
-
 static void PrnParseControl(BYTE b) // printer mode
 {
 	switch (b) {
@@ -5435,44 +5377,40 @@
 			printf("%02x(%c) ", b, isprint(b) ? b : '.');
 		}
 #endif
-		if (DebugFlag!=DEBUG_FLAG_NONE)
-			PutDebugChar(b);
-		else {
-			switch (ParseMode) {
-			case ModeFirst:
-				ParseFirst(b);
-				break;
-			case ModeESC:
-				EscapeSequence(b);
-				break;
-			case ModeDCS:
-				DeviceControl(b);
-				break;
-			case ModeDCUserKey:
-				DCUserKey(b);
-				break;
-			case ModeSOS:
-				IgnoreString(b);
-				break;
-			case ModeCSI:
-				ControlSequence(b);
-				break;
-			case ModeXS:
-				XSequence(b);
-				break;
-			case ModeDLE:
-				DLESeen(b);
-				break;
-			case ModeCAN:
-				CANSeen(b);
-				break;
-			case ModeIgnore:
-				IgnoreString(b);
-				break;
-			default:
-				ParseMode = ModeFirst;
-				ParseFirst(b);
-			}
+		switch (ParseMode) {
+		case ModeFirst:
+			ParseFirst(b);
+			break;
+		case ModeESC:
+			EscapeSequence(b);
+			break;
+		case ModeDCS:
+			DeviceControl(b);
+			break;
+		case ModeDCUserKey:
+			DCUserKey(b);
+			break;
+		case ModeSOS:
+			IgnoreString(b);
+			break;
+		case ModeCSI:
+			ControlSequence(b);
+			break;
+		case ModeXS:
+			XSequence(b);
+			break;
+		case ModeDLE:
+			DLESeen(b);
+			break;
+		case ModeCAN:
+			CANSeen(b);
+			break;
+		case ModeIgnore:
+			IgnoreString(b);
+			break;
+		default:
+			ParseMode = ModeFirst;
+			ParseFirst(b);
 		}
 
 		PrevCharacter = b;		// memorize previous character for AUTO CR/LF-receive mode
@@ -5915,3 +5853,34 @@
 
 	return;
 }
+
+void TermGetAttr(TCharAttr *attr)
+{
+	*attr = CharAttr;
+}
+
+void TermSetAttr(const TCharAttr *attr)
+{
+	UpdateStr();
+	CharAttr = *attr;
+}
+
+BOOL TermGetInsertMode(void)
+{
+	return InsertMode;
+}
+
+void TermSetInsertMode(BOOL insert_mode)
+{
+	InsertMode = insert_mode;
+}
+
+BOOL TermGetAutoWrapMode(void)
+{
+	return AutoWrapMode;
+}
+
+void TermSetAutoWrapMode(BOOL auto_wrap_mode)
+{
+	AutoWrapMode = auto_wrap_mode;
+}

Modified: trunk/teraterm/teraterm/vtterm.h
===================================================================
--- trunk/teraterm/teraterm/vtterm.h	2023-06-17 14:47:11 UTC (rev 10770)
+++ trunk/teraterm/teraterm/vtterm.h	2023-06-17 14:47:20 UTC (rev 10771)
@@ -29,6 +29,10 @@
 
 /* TERATERM.EXE, VT terminal emulation */
 
+#pragma once
+
+#include "buffer.h" for TCharAttr
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -50,6 +54,12 @@
 void TermPasteString(const wchar_t *str, size_t len);
 void TermSendStartBracket(void);
 void TermSendEndBracket(void);
+void TermGetAttr(TCharAttr *attr);
+void TermSetAttr(const TCharAttr *attr);
+BOOL TermGetInsertMode(void);
+void TermSetInsertMode(BOOL insert_mode);
+BOOL TermGetAutoWrapMode(void);
+void TermSetAutoWrapMode(BOOL auto_wrap_mode);
 
 #ifdef __cplusplus
 }

Modified: trunk/teraterm/ttpdlg/ttdlg.c
===================================================================
--- trunk/teraterm/ttpdlg/ttdlg.c	2023-06-17 14:47:11 UTC (rev 10770)
+++ trunk/teraterm/ttpdlg/ttdlg.c	2023-06-17 14:47:20 UTC (rev 10771)
@@ -2836,7 +2836,7 @@
 
 							// Language \x82\xAA\x95ύX\x82\xB3\x82ꂽ\x82Ƃ\xAB\x81A
 							// KanjiCode/KanjiCodeSend \x82\xF0\x95ύX\x90\xE6\x82\xCC Language \x82ɑ\xB6\x8D݂\xB7\x82\xE9\x92l\x82ɒu\x82\xAB\x8A\xB7\x82\xA6\x82\xE9
-							if (1 <= language && language <= IdLangMax && language != ts->Language) {
+							if (1 <= language && language < IdLangMax && language != ts->Language) {
 								WORD KanjiCode = ts->KanjiCode;
 								WORD KanjiCodeSend = ts->KanjiCodeSend;
 								ts->KanjiCode = KanjiCodeTranslate(language,KanjiCode);


ttssh2-commit メーリングリストの案内
Back to archive index