From 3082bb7d0c14b5b5604384251806a9a8216473f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Sat, 10 May 2008 13:30:15 +0000 Subject: [PATCH] added a dumpState() call to help debugging EscParse git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25419 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/terminal/TermParse.cpp | 40 ++++++++++++++++++++++++++++++++- src/apps/terminal/TermParse.h | 2 ++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/apps/terminal/TermParse.cpp b/src/apps/terminal/TermParse.cpp index df0276dcff..b48e4dc654 100644 --- a/src/apps/terminal/TermParse.cpp +++ b/src/apps/terminal/TermParse.cpp @@ -281,12 +281,48 @@ TermParse::PtyReader() } +void +TermParse::DumpState(int *groundtable, int *parsestate, uchar c) +{ + static const struct { + int *p; + const char *name; + } tables[] = { +#define T(t) \ + { t, #t } + T(gUTF8GroundTable), + T(gCS96GroundTable), + T(gISO8859GroundTable), + T(gSJISGroundTable), + T(gEscTable), + T(gCsiTable), + T(gDecTable), + T(gScrTable), + T(gIgnoreTable), + T(gIesTable), + T(gEscIgnoreTable), + T(gMbcsTable), + { NULL, NULL } + }; + int i; + fprintf(stderr, "groundtable: "); + for (i = 0; tables[i].p; i++) + if (tables[i].p == groundtable) + fprintf(stderr, "%s\t", tables[i].name); + fprintf(stderr, "parsestate: "); + for (i = 0; tables[i].p; i++) + if (tables[i].p == parsestate) + fprintf(stderr, "%s\t", tables[i].name); + fprintf(stderr, "char: 0x%02x (%d)\n", c, c); +} + + int32 TermParse::EscParse() { int tmp; int top, bot; - int cs96; + int cs96 = 0; uchar curess = 0; uchar cbuf[4], dstbuf[4]; @@ -310,6 +346,8 @@ TermParse::EscParse() if (GetReaderBuf(c) < B_OK) break; + //DumpState(groundtable, parsestate, c); + if (now_coding != fView->Encoding()) { /* * Change coding, change parse table. diff --git a/src/apps/terminal/TermParse.h b/src/apps/terminal/TermParse.h index 8c44271d0e..72a2416386 100644 --- a/src/apps/terminal/TermParse.h +++ b/src/apps/terminal/TermParse.h @@ -60,6 +60,8 @@ private: int32 EscParse(); int32 PtyReader(); + void DumpState(int *groundtable, int *parsestate, uchar c); + static int32 _ptyreader_thread(void *); static int32 _escparse_thread(void *);