changeset 3016:ea414257856f

Hide terminal's output and text-mode cursor for LCD and DFP
author nick
date Tue, 20 Nov 2001 07:55:34 +0000
parents 8bf21c807656
children fb792e58aac5
files linux/vbelib.c
diffstat 1 files changed, 23 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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;
 }