dump escseq if not handled.
[st.git] / st.c
diff --git a/st.c b/st.c
index a203c72..3940bbd 100644 (file)
--- a/st.c
+++ b/st.c
@@ -1,5 +1,4 @@
 /* See LICENSE for licence details. */
-/* See LICENSE for licence details. */
 #define _XOPEN_SOURCE
 #include <ctype.h>
 #include <errno.h>
@@ -37,8 +36,8 @@
 /* Attribute, Cursor, Character state, Terminal mode, Screen draw mode */
 enum { ATnone=0 , ATreverse=1 , ATunderline=2, ATbold=4 };
 enum { CSup, CSdown, CSright, CSleft, CShide, CSdraw, CSwrap, CSsave, CSload };
-enum { CRset=1 , CRupdate=2 };
-enum { TMwrap=1 , TMinsert=2, TMaltcharset };
+enum { CRset=1, CRupdate=2 };
+enum { TMwrap=1, TMinsert=2, TMaltcharset };
 enum { SCupdate, SCredraw };
 
 typedef int Color;
@@ -592,10 +591,16 @@ tsetscroll(int t, int b) {
 
 void
 eschandle(void) { 
-       /* escdump(); */
        switch(escseq.pre) {
+       default:
+               goto unknown_seq;
        case '[':
                switch(escseq.mode) {
+               default:
+               unknown_seq:
+                       fprintf(stderr, "erresc: unknown sequence\n");
+                       escdump();
+                       break;
                case '@': /* Insert <n> blank char */
                        DEFAULT(escseq.arg[0], 1);
                        tinsertblank(escseq.arg[0]);
@@ -713,15 +718,13 @@ eschandle(void) {
 void
 escdump(void) { 
        int i;
-       puts("------");
        printf("rawbuf  : %s\n", escseq.buf);
        printf("prechar : %c\n", escseq.pre);
        printf("private : %c\n", escseq.priv ? '?' : ' ');
        printf("narg    : %d\n", escseq.narg);
-       if(escseq.narg) {
+       if(escseq.narg)
                for(i = 0; i < escseq.narg; i++)
                        printf("\targ %d = %d\n", i, escseq.arg[i]);
-       }
        printf("mode    : %c\n", escseq.mode);
 }