X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=conio.c;h=32cbb8c559b36b0f967cb4e46b1407aeba344e62;hb=e4a5aba24b9db10449c830ac1dee3f4040caf533;hp=9c37ad5225c654155d7474ad6a1ea2ff3f0e56d5;hpb=49483a1747cd310e33eea758b32a453fb46d4aac;p=super-star-trek.git diff --git a/conio.c b/conio.c index 9c37ad5..32cbb8c 100644 --- a/conio.c +++ b/conio.c @@ -31,7 +31,6 @@ char color_warning=1; int directvideo; WINDOW *conio_scr; -#ifdef SERGEEV /* Some internals... */ static int colortab(int a) /* convert LINUX Color code to DOS-standard */ { @@ -47,7 +46,6 @@ static int colortab(int a) /* convert LINUX Color code to DOS-standard */ } return COLOR_BLACK; } -#endif /* SERGEEV */ static void docolor (int color) /* Set DOS-like text mode colors */ { @@ -61,9 +59,8 @@ static void docolor (int color) /* Set DOS-like text mode colors */ wattron(conio_scr,COLOR_PAIR(1+(color&7)+((color&112)>>1))); } -#ifdef SERGEEV /* Call this before any call to linux conio - except the port functions ! */ -void __attribute__((constructor)) initconio (void) /* This is needed, because ncurses needs to be initialized */ +void initconio (void) { int x,y; short pair; @@ -93,7 +90,6 @@ void __attribute__((constructor)) initconio (void) /* This is needed, because nc textcolor(7); textbackground(0); } -#endif /* SERGEEV */ /* Call this on exiting your program */ void doneconio (void) @@ -124,16 +120,22 @@ char *cgets (char *str) /* ugly function :-( */ } void clreol (void) +/* clear to end of line -- can be a no-op in tty mode */ { - wclrtoeol(conio_scr); - wrefresh(conio_scr); + if (conio_scr) { + wclrtoeol(conio_scr); + wrefresh(conio_scr); + } } void clrscr (void) +/* clear screen -- can be a no-op in tty mode */ { - wclear(conio_scr); - wmove(conio_scr,0,0); - wrefresh(conio_scr); + if (conio_scr) { + wclear(conio_scr); + wmove(conio_scr,0,0); + wrefresh(conio_scr); + } } int cprintf (char *format, ... ) @@ -144,8 +146,12 @@ int cprintf (char *format, ... ) va_start(argp,format); vsprintf(buffer,format,argp); va_end(argp); - i=waddstr(conio_scr,buffer); - wrefresh(conio_scr); + + if (conio_scr) { + i=waddstr(conio_scr,buffer); + wrefresh(conio_scr); + } else + i=printf(buffer); return(i); } @@ -215,17 +221,22 @@ void gettextinfo(struct text_info *inforec) } void gotoxy (int x, int y) +/* address cursor -- OK for this to be a no-op in TTY mode */ { - y--; - x--; - wmove(conio_scr,y,x); - wrefresh(conio_scr); + if (conio_scr) { + y--; + x--; + wmove(conio_scr,y,x); + wrefresh(conio_scr); + } } void highvideo (void) { - textcolor(15); /* White */ - textbackground(0); /* Black */ + if (conio_scr) { + textcolor(15); /* White */ + textbackground(0); /* Black */ + } } void insline (void) @@ -276,11 +287,14 @@ void textbackground (int color) docolor(color); } + void textcolor (int color) { - fgc=color; - color=(bgc*16)+fgc; - docolor(color); + if (conio_scr) { + fgc=color; + color=(bgc*16)+fgc; + docolor(color); + } } void textmode (int mode) @@ -290,20 +304,26 @@ void textmode (int mode) int wherex (void) { - int y; - int x; - getyx(conio_scr,y,x); - x++; - return(x); + if (conio_scr) { + int y; + int x; + getyx(conio_scr,y,x); + x++; + return(x); + } + return (0); } int wherey (void) { - int y; - int x; - getyx(conio_scr,y,x); - y++; - return(y); + if (conio_scr) { + int y; + int x; + getyx(conio_scr,y,x); + y++; + return(y); + } + return (0); } void window (int left,int top,int right,int bottom)