replace state with separate variables
parent
50b4785f26
commit
a6efc851b6
19
std.c
19
std.c
|
@ -31,8 +31,6 @@ void shell(void);
|
||||||
void sigchld(int n);
|
void sigchld(int n);
|
||||||
char unbuffer(void);
|
char unbuffer(void);
|
||||||
|
|
||||||
enum { QuestionMark = 1, Digit = 2 };
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned char data[BUFSIZ];
|
unsigned char data[BUFSIZ];
|
||||||
int s, e;
|
int s, e;
|
||||||
|
@ -41,10 +39,10 @@ typedef struct {
|
||||||
|
|
||||||
int cols = 80, lines = 25;
|
int cols = 80, lines = 25;
|
||||||
int cx = 0, cy = 0;
|
int cx = 0, cy = 0;
|
||||||
int c, s;
|
int c;
|
||||||
FILE *fptm = NULL;
|
FILE *fptm = NULL;
|
||||||
int ptm, pts;
|
int ptm, pts;
|
||||||
_Bool bold;
|
_Bool bold, digit, qmark;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
RingBuffer buf;
|
RingBuffer buf;
|
||||||
|
|
||||||
|
@ -151,28 +149,27 @@ parseesc(void) {
|
||||||
int arg[16];
|
int arg[16];
|
||||||
|
|
||||||
memset(arg, 0, LENGTH(arg));
|
memset(arg, 0, LENGTH(arg));
|
||||||
s = 0;
|
|
||||||
c = getc(fptm);
|
c = getc(fptm);
|
||||||
switch(c) {
|
switch(c) {
|
||||||
case '[':
|
case '[':
|
||||||
c = getc(fptm);
|
c = getc(fptm);
|
||||||
for(j = 0; j < LENGTH(arg);) {
|
for(j = 0; j < LENGTH(arg);) {
|
||||||
if(isdigit(c)) {
|
if(isdigit(c)) {
|
||||||
s |= Digit;
|
digit = 1;
|
||||||
arg[j] *= 10;
|
arg[j] *= 10;
|
||||||
arg[j] += c - '0';
|
arg[j] += c - '0';
|
||||||
}
|
}
|
||||||
else if(c == '?')
|
else if(c == '?')
|
||||||
s |= QuestionMark;
|
qmark = 1;
|
||||||
else if(c == ';') {
|
else if(c == ';') {
|
||||||
if(!(s & Digit))
|
if(!digit)
|
||||||
eprint("syntax error\n");
|
eprint("syntax error\n");
|
||||||
s &= ~Digit;
|
digit = 0;
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(s & Digit) {
|
if(digit) {
|
||||||
s &= ~Digit;
|
digit = 0;
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Reference in New Issue