From fe1df1ea028f30b85b3b92f2400c6132658ea320 Mon Sep 17 00:00:00 2001
From: Ziusudra <ziusudra@gmail.com>
Date: Sat, 15 Dec 2012 20:49:03 -0700
Subject: [PATCH 3/9] Style cleanup, no functional change intended
- Also added comments explaining which ACS characters we have
---
src/apps/terminal/TermParse.cpp | 166 +++++++++++++++++++--------------------
1 file changed, 82 insertions(+), 84 deletions(-)
diff --git a/src/apps/terminal/TermParse.cpp b/src/apps/terminal/TermParse.cpp
index 0ae798a..8b48806 100644
a
|
b
|
TermParse::PtyReader()
|
252 | 252 | } |
253 | 253 | |
254 | 254 | // Copy read string to PtyBuffer. |
255 | | |
256 | 255 | int32 left = READ_BUF_SIZE - readPos; |
257 | 256 | |
258 | 257 | if (nread >= left) { |
… |
… |
TermParse::DumpState(int *groundtable, int *parsestate, uchar c)
|
297 | 296 | T(gMbcsTable), |
298 | 297 | { NULL, NULL } |
299 | 298 | }; |
300 | | int i; |
301 | 299 | fprintf(stderr, "groundtable: "); |
302 | | for (i = 0; tables[i].p; i++) { |
| 300 | for (int i = 0; tables[i].p; i++) { |
303 | 301 | if (tables[i].p == groundtable) |
304 | 302 | fprintf(stderr, "%s\t", tables[i].name); |
305 | 303 | } |
306 | 304 | fprintf(stderr, "parsestate: "); |
307 | | for (i = 0; tables[i].p; i++) { |
| 305 | for (int i = 0; tables[i].p; i++) { |
308 | 306 | if (tables[i].p == parsestate) |
309 | 307 | fprintf(stderr, "%s\t", tables[i].name); |
310 | 308 | } |
… |
… |
TermParse::EscParse()
|
406 | 404 | currentEncoding = fBuffer->Encoding(); |
407 | 405 | } |
408 | 406 | |
409 | | //debug_printf("TermParse: char: '%c' (%d), parse state: %d\n", c, c, parsestate[c]); |
| 407 | //debug_printf("TermParse: char: '%c' (%d), parse state: %d\n", |
| 408 | // c, c, parsestate[c]); |
410 | 409 | switch (parsestate[c]) { |
411 | 410 | case CASE_PRINT: |
412 | 411 | fBuffer->InsertChar((char)c, fAttr); |
… |
… |
TermParse::EscParse()
|
481 | 480 | case CASE_PRINT_GRA: |
482 | 481 | /* "Special characters and line drawing" enabled by \E(0 */ |
483 | 482 | switch (c) { |
484 | | case 'a': |
| 483 | case 'a': // ACS_CKBOARD |
485 | 484 | fBuffer->InsertChar("\xE2\x96\x92",3,fAttr); |
486 | 485 | break; |
487 | | case 'j': |
| 486 | case 'j': // ACS_LRCORNER |
488 | 487 | fBuffer->InsertChar("\xE2\x94\x98",3,fAttr); |
489 | 488 | break; |
490 | | case 'k': |
| 489 | case 'k': // ACS_URCORNER |
491 | 490 | fBuffer->InsertChar("\xE2\x94\x90",3,fAttr); |
492 | 491 | break; |
493 | | case 'l': |
| 492 | case 'l': // ACS_ULCORNER |
494 | 493 | fBuffer->InsertChar("\xE2\x94\x8C",3,fAttr); |
495 | 494 | break; |
496 | | case 'm': |
| 495 | case 'm': // ACS_LLCORNER |
497 | 496 | fBuffer->InsertChar("\xE2\x94\x94",3,fAttr); |
498 | 497 | break; |
499 | | case 'n': |
| 498 | case 'n': // ACS_PLUS |
500 | 499 | fBuffer->InsertChar("\xE2\x94\xBC",3,fAttr); |
501 | 500 | break; |
502 | | case 'q': |
| 501 | case 'q': // ACS_HLINE |
503 | 502 | fBuffer->InsertChar("\xE2\x94\x80",3,fAttr); |
504 | 503 | break; |
505 | | case 't': |
| 504 | case 't': // ACS_LTEE |
506 | 505 | fBuffer->InsertChar("\xE2\x94\x9C",3,fAttr); |
507 | 506 | break; |
508 | | case 'u': |
| 507 | case 'u': // ACS_RTEE |
509 | 508 | fBuffer->InsertChar("\xE2\x94\xA4",3,fAttr); |
510 | 509 | break; |
511 | | case 'v': |
| 510 | case 'v': // ACS_BTEE |
512 | 511 | fBuffer->InsertChar("\xE2\x94\xB4",3,fAttr); |
513 | 512 | break; |
514 | | case 'w': |
| 513 | case 'w': // ACS_TTEE |
515 | 514 | fBuffer->InsertChar("\xE2\x94\xAC",3,fAttr); |
516 | 515 | break; |
517 | | case 'x': |
| 516 | case 'x': // ACS_VLINE |
518 | 517 | fBuffer->InsertChar("\xE2\x94\x82",3,fAttr); |
519 | 518 | break; |
520 | 519 | default: |
… |
… |
TermParse::EscParse()
|
924 | 923 | } |
925 | 924 | |
926 | 925 | case CASE_CPR: |
927 | | // Q & D hack by Y.Hayakawa (hida@sawada.riec.tohoku.ac.jp) |
928 | | // 21-JUL-99 |
929 | | _DeviceStatusReport(param[0]); |
930 | | parsestate = groundtable; |
931 | | break; |
| 926 | // Q & D hack by Y.Hayakawa 21-JUL-99 |
| 927 | // (hida@sawada.riec.tohoku.ac.jp) |
| 928 | _DeviceStatusReport(param[0]); |
| 929 | parsestate = groundtable; |
| 930 | break; |
932 | 931 | |
933 | 932 | case CASE_DA1: |
934 | | // DA - report device attributes |
935 | | if (param[0] < 1) { |
936 | | // claim to be a VT102 |
937 | | write(fFd, "\033[?6c", 5); |
938 | | } |
939 | | parsestate = groundtable; |
940 | | break; |
| 933 | // DA - report device attributes |
| 934 | if (param[0] < 1) { |
| 935 | // claim to be a VT102 |
| 936 | write(fFd, "\033[?6c", 5); |
| 937 | } |
| 938 | parsestate = groundtable; |
| 939 | break; |
941 | 940 | |
942 | 941 | case CASE_DECSTBM: |
943 | | /* DECSTBM - set scrolling region */ |
944 | | |
945 | | if ((top = param[0]) < 1) |
946 | | top = 1; |
| 942 | /* DECSTBM - set scrolling region */ |
| 943 | if ((top = param[0]) < 1) |
| 944 | top = 1; |
947 | 945 | |
948 | | if (nparam < 2) |
949 | | bottom = fBuffer->Height(); |
950 | | else |
951 | | bottom = param[1]; |
| 946 | if (nparam < 2) |
| 947 | bottom = fBuffer->Height(); |
| 948 | else |
| 949 | bottom = param[1]; |
952 | 950 | |
953 | | top--; |
| 951 | top--; |
954 | 952 | bottom--; |
955 | 953 | |
956 | 954 | if (bottom > top) |
… |
… |
TermParse::EscParse()
|
985 | 983 | parsestate = groundtable; |
986 | 984 | break; |
987 | 985 | |
988 | | // case CASE_GSETS: |
989 | | // screen->gsets[scstype] = GSET(c) | cs96; |
990 | | // parsestate = groundtable; |
991 | | // break; |
| 986 | //case CASE_GSETS: |
| 987 | // screen->gsets[scstype] = GSET(c) | cs96; |
| 988 | // parsestate = groundtable; |
| 989 | // break; |
992 | 990 | |
993 | 991 | case CASE_DECSC: |
994 | 992 | /* DECSC */ |
… |
… |
TermParse::EscParse()
|
1043 | 1041 | break; |
1044 | 1042 | |
1045 | 1043 | case CASE_OSC: |
1046 | | { |
1047 | | /* Operating System Command: ESC ] */ |
1048 | | char string[512]; |
1049 | | uint32 len = 0; |
1050 | | uchar mode_char = _NextParseChar(); |
1051 | | if (mode_char != '0' |
1052 | | && mode_char != '1' |
1053 | | && mode_char != '2') { |
1054 | | parsestate = groundtable; |
| 1044 | { |
| 1045 | /* Operating System Command: ESC ] */ |
| 1046 | char string[512]; |
| 1047 | uint32 len = 0; |
| 1048 | uchar mode_char = _NextParseChar(); |
| 1049 | if (mode_char != '0' |
| 1050 | && mode_char != '1' |
| 1051 | && mode_char != '2') { |
| 1052 | parsestate = groundtable; |
| 1053 | break; |
| 1054 | } |
| 1055 | uchar currentChar = _NextParseChar(); |
| 1056 | while ((currentChar = _NextParseChar()) != 0x7) { |
| 1057 | if (!isprint(currentChar & 0x7f) |
| 1058 | || len+2 >= sizeof(string)) |
1055 | 1059 | break; |
1056 | | } |
1057 | | uchar currentChar = _NextParseChar(); |
1058 | | while ((currentChar = _NextParseChar()) != 0x7) { |
1059 | | if (!isprint(currentChar & 0x7f) |
1060 | | || len+2 >= sizeof(string)) |
| 1060 | string[len++] = currentChar; |
| 1061 | } |
| 1062 | if (currentChar == 0x7) { |
| 1063 | string[len] = '\0'; |
| 1064 | switch (mode_char) { |
| 1065 | case '0': |
| 1066 | case '2': |
| 1067 | fBuffer->SetTitle(string); |
| 1068 | break; |
| 1069 | case '1': |
1061 | 1070 | break; |
1062 | | string[len++] = currentChar; |
1063 | | } |
1064 | | if (currentChar == 0x7) { |
1065 | | string[len] = '\0'; |
1066 | | switch (mode_char) { |
1067 | | case '0': |
1068 | | case '2': |
1069 | | fBuffer->SetTitle(string); |
1070 | | break; |
1071 | | case '1': |
1072 | | break; |
1073 | | } |
1074 | 1071 | } |
1075 | | parsestate = groundtable; |
1076 | | break; |
1077 | 1072 | } |
| 1073 | parsestate = groundtable; |
| 1074 | break; |
| 1075 | } |
1078 | 1076 | |
1079 | 1077 | case CASE_RIS: // ESC c ... Reset terminal. |
1080 | 1078 | break; |
1081 | 1079 | |
1082 | 1080 | case CASE_LS2: |
1083 | 1081 | /* LS2 */ |
1084 | | // screen->curgl = 2; |
| 1082 | //screen->curgl = 2; |
1085 | 1083 | parsestate = groundtable; |
1086 | 1084 | break; |
1087 | 1085 | |
1088 | 1086 | case CASE_LS3: |
1089 | 1087 | /* LS3 */ |
1090 | | // screen->curgl = 3; |
| 1088 | //screen->curgl = 3; |
1091 | 1089 | parsestate = groundtable; |
1092 | 1090 | break; |
1093 | 1091 | |
1094 | 1092 | case CASE_LS3R: |
1095 | 1093 | /* LS3R */ |
1096 | | // screen->curgr = 3; |
| 1094 | //screen->curgr = 3; |
1097 | 1095 | parsestate = groundtable; |
1098 | 1096 | break; |
1099 | 1097 | |
1100 | 1098 | case CASE_LS2R: |
1101 | 1099 | /* LS2R */ |
1102 | | // screen->curgr = 2; |
| 1100 | //screen->curgr = 2; |
1103 | 1101 | parsestate = groundtable; |
1104 | 1102 | break; |
1105 | 1103 | |
1106 | 1104 | case CASE_LS1R: |
1107 | 1105 | /* LS1R */ |
1108 | | // screen->curgr = 1; |
| 1106 | //screen->curgr = 1; |
1109 | 1107 | parsestate = groundtable; |
1110 | 1108 | break; |
1111 | 1109 | |
… |
… |
TermParse::_DeviceStatusReport(int n)
|
1241 | 1239 | |
1242 | 1240 | switch (n) { |
1243 | 1241 | case 5: |
1244 | | { |
1245 | | // Device status report requested |
1246 | | // reply with "no malfunction detected" |
1247 | | const char* toWrite = "\033[0n"; |
1248 | | write(fFd, toWrite, strlen(toWrite)); |
1249 | | break ; |
1250 | | } |
| 1242 | { |
| 1243 | // Device status report requested |
| 1244 | // reply with "no malfunction detected" |
| 1245 | const char* toWrite = "\033[0n"; |
| 1246 | write(fFd, toWrite, strlen(toWrite)); |
| 1247 | break ; |
| 1248 | } |
1251 | 1249 | case 6: |
1252 | 1250 | // Cursor position report requested |
1253 | 1251 | len = sprintf(sbuf, "\033[%" B_PRId32 ";%" B_PRId32 "R", |
… |
… |
TermParse::_DecPrivateModeReset(int value)
|
1399 | 1397 | fBuffer->ReportNormalMouseEvent(false); |
1400 | 1398 | break; |
1401 | 1399 | case 1002: |
1402 | | // Don't send Mouse X and Y on button press and release, and on motion |
1403 | | // when the mouse enter a new cell |
| 1400 | // Don't send Mouse X and Y on button press and release, |
| 1401 | // and on motion when the mouse enter a new cell |
1404 | 1402 | fBuffer->ReportButtonMouseEvent(false); |
1405 | 1403 | break; |
1406 | 1404 | case 1003: |