replace state with separate variables

This commit is contained in:
Matthias-Christian Ott 2008-06-08 20:47:08 +02:00
parent 538a0c4431
commit 512ca99d8c
1 changed files with 8 additions and 11 deletions

19
std.c
View File

@ -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;