Revision: 9539 https://osdn.net/projects/ttssh2/scm/svn/commits/9539 Author: zmatsuo Date: 2021-11-21 00:13:41 +0900 (Sun, 21 Nov 2021) Log Message: ----------- refactoring vtterm.c - コメント追加 - 文字長を size_t に変更(簡単に変更できるか所) - ファイル内でのみ使用している関数に static を追加 Modified Paths: -------------- trunk/teraterm/teraterm/vtterm.c -------------- next part -------------- Modified: trunk/teraterm/teraterm/vtterm.c =================================================================== --- trunk/teraterm/teraterm/vtterm.c 2021-11-20 15:13:32 UTC (rev 9538) +++ trunk/teraterm/teraterm/vtterm.c 2021-11-20 15:13:41 UTC (rev 9539) @@ -581,7 +581,7 @@ } void SendCSIstr(char *str, int len) { - int l; + size_t l; if (str == NULL || len < 0) return; @@ -602,7 +602,7 @@ } void SendOSCstr(char *str, int len, char TermChar) { - int l; + size_t l; if (str == NULL || len < 0) return; @@ -633,7 +633,7 @@ } void SendDCSstr(char *str, int len) { - int l; + size_t l; if (str == NULL || len < 0) return; @@ -1438,7 +1438,7 @@ RelativeOrgMode = Buff->RelativeOrgMode; } -void AnswerTerminalType() +static void AnswerTerminalType(void) { char Tmp[50]; @@ -1490,7 +1490,7 @@ CommBinaryOut(&cv,Tmp,strlen(Tmp)); /* Report terminal ID */ } -void ESCSpace(BYTE b) +static void ESCSpace(BYTE b) { switch (b) { case 'F': // S7C1T @@ -1504,7 +1504,7 @@ } } -void ESCSharp(BYTE b) +static void ESCSharp(BYTE b) { switch (b) { case '8': /* Fill screen with "E" (DECALN) */ @@ -1521,7 +1521,7 @@ } /* select double byte code set */ -void ESCDBCSSelect(BYTE b) +static void ESCDBCSSelect(BYTE b) { int Dist; @@ -1552,7 +1552,7 @@ } } -void ESCSelectCode(BYTE b) +static void ESCSelectCode(BYTE b) { switch (b) { case '0': @@ -1563,7 +1563,7 @@ } /* select single byte code set */ -void ESCSBCSSelect(BYTE b) +static void ESCSBCSSelect(BYTE b) { int Dist; @@ -3262,7 +3262,7 @@ PrintFile_ = NULL; } -void CSQ_i_Mode() // DECMC +static void CSQ_i_Mode(void) // DECMC { switch (Param[1]) { case 1: @@ -3421,7 +3421,7 @@ } } -void CSQuest(BYTE b) +static void CSQuest(BYTE b) { switch (b) { case 'J': CSQSelScreenErase(); break; // DECSED @@ -4205,7 +4205,7 @@ WriteToPrnFile(PrintFile_, b,TRUE); } -void ParseCS(BYTE b) /* b is the final char */ +static void ParseCS(BYTE b) /* b is the final char */ { if (PrinterMode) { // printer mode PrnParseCS(b); @@ -5507,8 +5507,6 @@ * unicode(UTF-32,wchar_t)\x82\xF0\x83o\x83b\x83t\x83@\x82֏\x91\x82\xAB\x8D\x9E\x82\xDE * \x83\x8D\x83O\x82ɂ\xE0\x8F\x91\x82\xAB\x8D\x9E\x82\xDE * - * \x8C\xB3\x82\xCD UnicodeToCP932() \x82\xBE\x82\xC1\x82\xBD - * * PutChar() \x82\xCC UTF-32\x94\xC5 */ static void PutU32(unsigned int code) @@ -6114,9 +6112,26 @@ return ParseFirstJP(b); } + // UTF-8\x83G\x83\x93\x83R\x81[\x83h + // Unicode 1byte, 2byte, 3byte, 4byte + // U+0000 ... U+007f 0x00 .. 0x7f + // U+0080 ... U+07ff 0xc2 .. 0xdf, 0x80 .. 0xbf + // U+0800 ... U+ffff 0xe0 .. 0xef, 0x80 .. 0xbf, 0x80 .. 0xbf + // U+10000 ... U+10ffff 0xf0 .. 0xf4, 0x80 .. 0xbf, 0x80 .. 0xbf, 0x80 .. 0xbf + // UTF-8\x82Ńf\x83R\x81[\x83h\x82ł\xAB\x82Ȃ\xA2\x8Fꍇ + // - 1byte\x96\xDA + // - C1(0x80 - 0x9f) + // - 0xa0 - 0xc1 + // - 0xf5 - 0xff + // - 2byte\x96ڈȍ~ + // - 0x00 - 0x7f + // --0xc0 - 0xff + if ((b & 0x80) != 0x80 || ((b & 0xe0) == 0x80 && count == 0)) { // 1\x83o\x83C\x83g\x96ڂ\xA8\x82\xE6\x82\xD12\x83o\x83C\x83g\x96ڂ\xAAASCII\x82̏ꍇ\x82́A\x82\xB7\x82ׂ\xC4ASCII\x8Fo\x97͂Ƃ\xB7\x82\xE9\x81B // 1\x83o\x83C\x83g\x96ڂ\xAAC1\x90\xA7\x8C䕶\x8E\x9A(0x80-0x9f)\x82̏ꍇ\x82\xE0\x93\xAF\x97l\x81B + + // \x93\xFC\x97͕\xB6\x8E\x9A\x82\xAA 0x00 ... 0x7f if (count == 0 || count == 1) { if (count == 1) { ParseASCII(buf[0]);