replace state with separate variables - st - Simple Terminal
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit a6efc851b6b0fa9befe1f81627c5c5955d48e6f6
 (DIR) parent 50b4785f2650a741f827f4be17ecc18844a1b175
 (HTM) Author: Matthias-Christian Ott <ott@enolink.de>
       Date:   Sun,  8 Jun 2008 20:47:08 +0200
       
       replace state with separate variables
       
       Diffstat:
         std.c                               |      19 ++++++++-----------
       
       1 file changed, 8 insertions(+), 11 deletions(-)
       ---
 (DIR) diff --git a/std.c b/std.c
       @@ -31,8 +31,6 @@ void shell(void);
        void sigchld(int n);
        char unbuffer(void);
        
       -enum { QuestionMark = 1, Digit = 2 };
       -
        ttypedef struct {
                unsigned char data[BUFSIZ];
                int s, e;
       @@ -41,10 +39,10 @@ typedef struct {
        
        int cols = 80, lines = 25;
        int cx = 0, cy = 0;
       -int c, s;
       +int c;
        FILE *fptm = NULL;
        int ptm, pts;
       -_Bool bold;
       +_Bool bold, digit, qmark;
        pid_t pid;
        RingBuffer buf;
        
       @@ -151,28 +149,27 @@ parseesc(void) {
                int arg[16];
        
                memset(arg, 0, LENGTH(arg));
       -        s = 0;
                c = getc(fptm);
                switch(c) {
                case '[':
                        c = getc(fptm);
                        for(j = 0; j < LENGTH(arg);) {
                                if(isdigit(c)) {
       -                                s |= Digit;
       +                                digit = 1;
                                        arg[j] *= 10;
                                        arg[j] += c - '0';
                                }
                                else if(c == '?')
       -                                s |= QuestionMark; 
       +                                qmark = 1;
                                else if(c == ';') {
       -                                if(!(s & Digit))
       +                                if(!digit)
                                                eprint("syntax error\n");
       -                                s &= ~Digit;
       +                                digit = 0;
                                        j++;
                                }
                                else {
       -                                if(s & Digit) {
       -                                        s &= ~Digit;
       +                                if(digit) {
       +                                        digit = 0;
                                                j++;
                                        }
                                        break;