pump_control_read: tighten checks for DA response #2024

dankamongmen/iterm2complete
nick black 3 years ago
parent 8f1a63bfc4
commit 731b56f299
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -1327,9 +1327,11 @@ pump_control_read(query_state* inits, unsigned char c){
break; break;
case STATE_DA_1: case STATE_DA_1:
//fprintf(stderr, "DA1: %c\n", c); //fprintf(stderr, "DA1: %c\n", c);
if(c >= 0x40 && c <= 0x7E){ if(c == 'c'){
inits->state = STATE_NULL; inits->state = STATE_NULL;
return 1; return 1;
}else if(c >= 0x40 && c <= 0x7E){
inits->state = STATE_NULL;
}else if(c == ';'){ }else if(c == ';'){
inits->state = STATE_DA_1_SEMI; inits->state = STATE_DA_1_SEMI;
} // FIXME error? } // FIXME error?
@ -1345,18 +1347,22 @@ pump_control_read(query_state* inits, unsigned char c){
} // FIXME error? } // FIXME error?
break; break;
case STATE_DA_1_SEMI_2: case STATE_DA_1_SEMI_2:
if(c == 'S'){ if(c == 'c'){
inits->state = STATE_NULL;
return 1;
}else if(c == 'S'){
inits->state = STATE_NULL; inits->state = STATE_NULL;
}else if(c >= 0x40 && c <= 0x7E){ }else if(c >= 0x40 && c <= 0x7E){
inits->state = STATE_NULL; inits->state = STATE_NULL;
return 1;
} }
break; break;
case STATE_DA_1_0: case STATE_DA_1_0:
//fprintf(stderr, "DA_!_0: %c\n", c); //fprintf(stderr, "DA_!_0: %c\n", c);
if(c >= 0x40 && c <= 0x7E){ if(c == 'c'){
inits->state = STATE_NULL; inits->state = STATE_NULL;
return 1; return 1;
}else if(c >= 0x40 && c <= 0x7E){
inits->state = STATE_NULL;
}else if(c == ';'){ }else if(c == ';'){
inits->state = STATE_SIXEL_CREGS; inits->state = STATE_SIXEL_CREGS;
} // FIXME error? } // FIXME error?
@ -1371,16 +1377,20 @@ pump_control_read(query_state* inits, unsigned char c){
} }
break; break;
case STATE_DA_6: case STATE_DA_6:
if(c >= 0x40 && c <= 0x7E){ if(c == 'c'){
inits->state = STATE_NULL; inits->state = STATE_NULL;
return 1; return 1;
}else if(c >= 0x40 && c <= 0x7E){
inits->state = STATE_NULL;
} }
// FIXME // FIXME
break; break;
case STATE_DA_DRAIN: case STATE_DA_DRAIN:
if(c >= 0x40 && c <= 0x7E){ if(c == 'c'){
inits->state = STATE_NULL; inits->state = STATE_NULL;
return 1; return 1;
}else if(c >= 0x40 && c <= 0x7E){
inits->state = STATE_NULL;
} }
break; break;
case STATE_SIXEL: case STATE_SIXEL:
@ -1472,7 +1482,7 @@ control_read(int ttyfd, query_state* qstate){
int r = pump_control_read(qstate, buf[idx]); int r = pump_control_read(qstate, buf[idx]);
if(r == 1){ // success! if(r == 1){ // success!
free(buf); free(buf);
//fprintf(stderr, "at end, derived terminal %d\n", inits.qterm); //fprintf(stderr, "at end, derived terminal %d\n", qstate->qterm);
return 0; return 0;
}else if(r < 0){ }else if(r < 0){
goto err; goto err;

Loading…
Cancel
Save