# HG changeset patch # User nick # Date 1006242934 0 # Node ID ea414257856f735f50700cee04ed7a8cfac561ce # Parent 8bf21c807656d810891082d2dba6ab128cdb8fef Hide terminal's output and text-mode cursor for LCD and DFP diff -r 8bf21c807656 -r ea414257856f linux/vbelib.c --- a/linux/vbelib.c Tue Nov 20 07:53:20 2001 +0000 +++ b/linux/vbelib.c Tue Nov 20 07:55:34 2001 +0000 @@ -89,6 +89,27 @@ #define VBE_LRMI_int(int_no,regs) (VBE_LRMI_int(int_no,regs)) #endif +static FILE *my_stdin; +static FILE *my_stdout; +static FILE *my_stderr; + +static void __set_cursor_type(FILE *stdout_fd,int cursor_on) +{ + fprintf(stdout_fd,"\033[?25%c",cursor_on?'h':'l'); +} + +/* TODO: do it only on LCD or DFP. We should extract such info from DDC */ +static void hide_terminal_output( void ) +{ + my_stdin = fopen(ttyname(fileno(stdin )),"r"); + my_stdout = fopen(ttyname(fileno(stdout)),"w"); + my_stderr = fopen(ttyname(fileno(stderr)),"w"); + __set_cursor_type(stdout,0); +/*if(isatty(fileno(stdin ))) stdin =freopen("/dev/null","r",stdin );*/ + if(isatty(fileno(stdout))) stdout=freopen("/dev/null","w",stdout); + if(isatty(fileno(stderr))) stderr=freopen("/dev/null","w",stderr); +} + static unsigned hh_int_10_seg; static int fd_mem; int vbeInit( void ) @@ -115,11 +136,13 @@ && vbe_pm_info.iopl_ports[i++] > 1023) ioperm(iopl_port,1,1); iopl(3); fd_mem = open("/dev/mem",O_RDWR); + hide_terminal_output(); return VBE_OK; } int vbeDestroy( void ) { + __set_cursor_type(my_stdout,1); close(fd_mem); return VBE_OK; }