JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Convert VT102ID to a config variable
[st.git] / st.c
diff --git a/st.c b/st.c
index e0aae9d..6e5953a 100644 (file)
--- a/st.c
+++ b/st.c
@@ -86,8 +86,6 @@ char *argv0;
 #define TRUEBLUE(x)      (((x) & 0xff) << 8)
 
 
-#define VT102ID "\033[?6c"
-
 enum glyph_attribute {
        ATTR_NULL      = 0,
        ATTR_BOLD      = 1,
@@ -382,7 +380,7 @@ static void tnewline(int);
 static void tputtab(int);
 static void tputc(char *, int);
 static void treset(void);
-static int tresize(int, int);
+static void tresize(int, int);
 static void tscrollup(int, int);
 static void tscrolldown(int, int);
 static void tsetattr(int *, int);
@@ -1965,7 +1963,7 @@ csihandle(void) {
                break;
        case 'c': /* DA -- Device Attributes */
                if(csiescseq.arg[0] == 0)
-                       ttywrite(VT102ID, sizeof(VT102ID) - 1);
+                       ttywrite(vtiden, sizeof(vtiden) - 1);
                break;
        case 'C': /* CUF -- Cursor <n> Forward */
        case 'a': /* HPR -- Cursor <n> Forward */
@@ -2311,13 +2309,13 @@ techo(char *buf, int len) {
        for(; len > 0; buf++, len--) {
                char c = *buf;
 
-               if(ISCONTROL(c)) { /* control code */
+               if(ISCONTROL((uchar) c)) { /* control code */
                        if(c & 0x80) {
                                c &= 0x7f;
                                tputc("^", 1);
                                tputc("[", 1);
                        } else if(c != '\n' && c != '\r' && c != '\t') {
-                               c ^= '\x40';
+                               c ^= 0x40;
                                tputc("^", 1);
                        }
                        tputc(&c, 1);
@@ -2433,7 +2431,7 @@ tcontrolcode(uchar ascii) {
        case 0x98:   /* TODO: SOS */
                break;
        case 0x9a:   /* DECID -- Identify Terminal */
-               ttywrite(VT102ID, sizeof(VT102ID) - 1);
+               ttywrite(vtiden, sizeof(vtiden) - 1);
                break;
        case 0x9b:   /* TODO: CSI */
        case 0x9c:   /* TODO: ST */
@@ -2589,7 +2587,7 @@ tputc(char *c, int len) {
                                }
                                break;
                        case 'Z': /* DECID -- Identify Terminal */
-                               ttywrite(VT102ID, sizeof(VT102ID) - 1);
+                               ttywrite(vtiden, sizeof(vtiden) - 1);
                                break;
                        case 'c': /* RIS -- Reset to inital state */
                                treset();
@@ -2656,7 +2654,7 @@ tputc(char *c, int len) {
        }
 }
 
-int
+void
 tresize(int col, int row) {
        int i;
        int minrow = MIN(row, term.row);
@@ -2666,8 +2664,11 @@ tresize(int col, int row) {
        Line *orig;
        TCursor c;
 
-       if(col < 1 || row < 1)
-               return 0;
+       if(col < 1 || row < 1) {
+               fprintf(stderr,
+                       "tresize: error resizing to %dx%d\n", col, row);
+               return;
+       }
 
        /* free unneeded rows */
        i = 0;
@@ -2697,14 +2698,12 @@ tresize(int col, int row) {
 
        /* resize each row to new width, zero-pad if needed */
        for(i = 0; i < minrow; i++) {
-               term.dirty[i] = 1;
                term.line[i] = xrealloc(term.line[i], col * sizeof(Glyph));
                term.alt[i]  = xrealloc(term.alt[i],  col * sizeof(Glyph));
        }
 
        /* allocate any new rows */
        for(/* i == minrow */; i < row; i++) {
-               term.dirty[i] = 1;
                term.line[i] = xmalloc(col * sizeof(Glyph));
                term.alt[i] = xmalloc(col * sizeof(Glyph));
        }
@@ -2724,7 +2723,7 @@ tresize(int col, int row) {
        tsetscroll(0, row-1);
        /* make use of the LIMIT in tmoveto */
        tmoveto(term.c.x, term.c.y);
-       /* Clearing both screens */
+       /* Clearing both screens (it makes dirty all lines) */
        orig = term.line;
        c = term.c;
        do {
@@ -2738,8 +2737,6 @@ tresize(int col, int row) {
                tcursor(CURSOR_LOAD);
        } while(orig != term.line);
        term.c = c;
-
-       return (slide > 0);
 }
 
 void