terminfo: capability is "rev" not "reverse"

While I'm at it, comment up all these properties,
and eliminate double lookup of smkx.
pull/747/head
nick black 4 years ago
parent cdd96af8df
commit 3985085d04
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -22,13 +22,14 @@ query_rgb(void){
return rgb; return rgb;
} }
int term_verify_seq(char** gseq, const char* name){ int terminfostr(char** gseq, const char* name){
char* seq; char* seq;
if(gseq == NULL){ if(gseq == NULL){
gseq = &seq; gseq = &seq;
} }
*gseq = tigetstr(name); *gseq = tigetstr(name);
if(*gseq == NULL || *gseq == (char*)-1){ if(*gseq == NULL || *gseq == (char*)-1){
*gseq = NULL;
return -1; return -1;
} }
return 0; return 0;
@ -43,56 +44,51 @@ int interrogate_terminfo(tinfo* ti){
ti->RGBflag = false; ti->RGBflag = false;
ti->initc = NULL; ti->initc = NULL;
}else{ }else{
term_verify_seq(&ti->initc, "initc"); terminfostr(&ti->initc, "initc");
if(ti->initc){ if(ti->initc){
ti->CCCflag = tigetflag("ccc") == 1; ti->CCCflag = tigetflag("ccc") == 1;
}else{ }else{
ti->CCCflag = false; ti->CCCflag = false;
} }
} }
term_verify_seq(&ti->cup, "cup"); // check that the terminal provides cursor addressing (absolute movement)
terminfostr(&ti->cup, "cup");
if(ti->cup == NULL){ if(ti->cup == NULL){
fprintf(stderr, "Required terminfo capability 'cup' not defined\n"); fprintf(stderr, "Required terminfo capability 'cup' not defined\n");
return -1; return -1;
} }
// check that the terminal provides automatic margins
ti->AMflag = tigetflag("am") == 1; ti->AMflag = tigetflag("am") == 1;
if(!ti->AMflag){ if(!ti->AMflag){
fprintf(stderr, "Required terminfo capability 'am' not defined\n"); fprintf(stderr, "Required terminfo capability 'am' not defined\n");
return -1; return -1;
} }
term_verify_seq(&ti->civis, "civis"); terminfostr(&ti->civis, "civis"); // cursor invisible
term_verify_seq(&ti->cnorm, "cnorm"); terminfostr(&ti->cnorm, "cnorm"); // cursor normal (undo civis/cvvis)
term_verify_seq(&ti->standout, "smso"); // smso / rmso terminfostr(&ti->standout, "smso"); // begin standout mode
term_verify_seq(&ti->uline, "smul"); terminfostr(&ti->uline, "smul"); // begin underline mode
term_verify_seq(&ti->reverse, "reverse"); terminfostr(&ti->reverse, "rev"); // begin reverse video mode
term_verify_seq(&ti->blink, "blink"); terminfostr(&ti->blink, "blink"); // turn on blinking
term_verify_seq(&ti->dim, "dim"); terminfostr(&ti->dim, "dim"); // turn on half-bright mode
term_verify_seq(&ti->bold, "bold"); terminfostr(&ti->bold, "bold"); // turn on extra-bright mode
term_verify_seq(&ti->italics, "sitm"); terminfostr(&ti->italics, "sitm"); // begin italic mode
term_verify_seq(&ti->italoff, "ritm"); terminfostr(&ti->italoff, "ritm"); // end italic mode
term_verify_seq(&ti->sgr, "sgr"); terminfostr(&ti->sgr, "sgr"); // define video attributes
term_verify_seq(&ti->sgr0, "sgr0"); terminfostr(&ti->sgr0, "sgr0"); // turn off all video attributes
term_verify_seq(&ti->op, "op"); terminfostr(&ti->op, "op"); // restore defaults to default pair
term_verify_seq(&ti->oc, "oc"); terminfostr(&ti->oc, "oc"); // restore defaults to all colors
term_verify_seq(&ti->home, "home"); terminfostr(&ti->home, "home"); // home the cursor
term_verify_seq(&ti->clearscr, "clear"); terminfostr(&ti->clearscr, "clear");// clear screen, home cursor
term_verify_seq(&ti->cleareol, "el"); terminfostr(&ti->cleareol, "el"); // clear to end of line
term_verify_seq(&ti->clearbol, "el1"); terminfostr(&ti->clearbol, "el1"); // clear to beginning of line
term_verify_seq(&ti->cuu, "cuu"); // move N up terminfostr(&ti->cuu, "cuu"); // move N up
term_verify_seq(&ti->cud, "cud"); // move N down terminfostr(&ti->cud, "cud"); // move N down
term_verify_seq(&ti->hpa, "hpa"); terminfostr(&ti->hpa, "hpa"); // set horizontal position
term_verify_seq(&ti->vpa, "vpa"); terminfostr(&ti->vpa, "vpa"); // set verical position
term_verify_seq(&ti->cuf, "cuf"); // n non-destructive spaces terminfostr(&ti->cuf, "cuf"); // n non-destructive spaces
term_verify_seq(&ti->cub, "cub"); // n non-destructive backspaces terminfostr(&ti->cub, "cub"); // n non-destructive backspaces
term_verify_seq(&ti->cuf1, "cuf1"); // non-destructive space terminfostr(&ti->cuf1, "cuf1"); // non-destructive space
term_verify_seq(&ti->cub1, "cub1"); // non-destructive backspace terminfostr(&ti->cub1, "cub1"); // non-destructive backspace
term_verify_seq(&ti->smkx, "smkx"); // set application mode
if(ti->smkx){
if(putp(tiparm(ti->smkx)) != OK){
fprintf(stderr, "Error entering application mode\n");
return -1;
}
}
// Some terminals cannot combine certain styles with colors. Don't advertise // Some terminals cannot combine certain styles with colors. Don't advertise
// support for the style in that case. // support for the style in that case.
int nocolor_stylemask = tigetnum("ncv"); int nocolor_stylemask = tigetnum("ncv");
@ -119,11 +115,18 @@ int interrogate_terminfo(tinfo* ti){
ti->italics = NULL; ti->italics = NULL;
} }
} }
term_verify_seq(&ti->getm, "getm"); // get mouse events terminfostr(&ti->getm, "getm"); // get mouse events
// Not all terminals support setting the fore/background independently // Not all terminals support setting the fore/background independently
term_verify_seq(&ti->setaf, "setaf"); terminfostr(&ti->setaf, "setaf"); // set forground color
term_verify_seq(&ti->setab, "setab"); terminfostr(&ti->setab, "setab"); // set background color
term_verify_seq(&ti->smkx, "smkx"); terminfostr(&ti->smkx, "smkx"); // enable keypad transmit
term_verify_seq(&ti->rmkx, "rmkx"); terminfostr(&ti->rmkx, "rmkx"); // disable keypad transmit
// if the keypad neen't be explicitly enabled, smkx is not present
if(ti->smkx){
if(putp(tiparm(ti->smkx)) != OK){
fprintf(stderr, "Error entering keypad transmit mode\n");
return -1;
}
}
return 0; return 0;
} }

Loading…
Cancel
Save