diff options
author | Matthias-Christian Ott <ott@enolink.de> | 2008-06-08 20:47:08 +0200 |
---|---|---|
committer | Matthias-Christian Ott <ott@enolink.de> | 2008-06-08 20:47:08 +0200 |
commit | a6efc851b6b0fa9befe1f81627c5c5955d48e6f6 (patch) | |
tree | 6bc23194617d6f47175bfcd55a870809401eb90b | |
parent | 50b4785f2650a741f827f4be17ecc18844a1b175 (diff) | |
download | st-a6efc851b6b0fa9befe1f81627c5c5955d48e6f6.tar.gz |
replace state with separate variables
-rw-r--r-- | std.c | 19 |
1 files changed, 8 insertions, 11 deletions
@@ -31,8 +31,6 @@ void shell(void); void sigchld(int n); char unbuffer(void); -enum { QuestionMark = 1, Digit = 2 }; - typedef 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; |