X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fconsole-stream.c;h=39538500831dd71ce376cf4c6e56b560290f40d7;hb=ddf160705829afe71eae7c9f4cb9c54425fbec98;hp=393d19d71f1da1cc9d293b776a11e12980abd743;hpb=2e3e3f9ee27fec50f45c282d71eaddf7c673bc56;p=chise%2Fxemacs-chise.git- diff --git a/src/console-stream.c b/src/console-stream.c index 393d19d..3953850 100644 --- a/src/console-stream.c +++ b/src/console-stream.c @@ -46,41 +46,33 @@ Lisp_Object Vterminal_frame; Lisp_Object Vstdio_str; static void -allocate_stream_console_struct (struct console *con) -{ - if (!CONSOLE_STREAM_DATA (con)) - CONSOLE_STREAM_DATA (con) = xnew_and_zero (struct stream_console); - else - xzero (*CONSOLE_STREAM_DATA (con)); -} - -static void stream_init_console (struct console *con, Lisp_Object params) { Lisp_Object tty = CONSOLE_CONNECTION (con); - FILE *infd, *outfd, *errfd; + struct stream_console *stream_con; - /* Open the specified console */ + if (CONSOLE_STREAM_DATA (con) == NULL) + CONSOLE_STREAM_DATA (con) = xnew (struct stream_console); + + stream_con = CONSOLE_STREAM_DATA (con); + stream_con->needs_newline = 0; + + /* Open the specified console */ if (NILP (tty) || internal_equal (tty, Vstdio_str, 0)) { - infd = stdin; - outfd = stdout; - errfd = stderr; + stream_con->in = stdin; + stream_con->out = stdout; + stream_con->err = stderr; } else { CHECK_STRING (tty); - infd = outfd = errfd = + stream_con->in = stream_con->out = stream_con->err = fopen ((char *) XSTRING_DATA (tty), "r+"); - if (!infd) + if (!stream_con->in) error ("Unable to open tty %s", XSTRING_DATA (tty)); } - - allocate_stream_console_struct (con); - CONSOLE_STREAM_DATA (con)->infd = infd; - CONSOLE_STREAM_DATA (con)->outfd = outfd; - CONSOLE_STREAM_DATA (con)->errfd = errfd; } static void @@ -88,8 +80,8 @@ stream_init_device (struct device *d, Lisp_Object params) { struct console *con = XCONSOLE (DEVICE_CONSOLE (d)); - DEVICE_INFD (d) = fileno (CONSOLE_STREAM_DATA (con)->infd); - DEVICE_OUTFD (d) = fileno (CONSOLE_STREAM_DATA (con)->outfd); + DEVICE_INFD (d) = fileno (CONSOLE_STREAM_DATA (con)->in); + DEVICE_OUTFD (d) = fileno (CONSOLE_STREAM_DATA (con)->out); init_baud_rate (d); init_one_device (d); } @@ -100,30 +92,26 @@ stream_initially_selected_for_input (struct console *con) return noninteractive && initialized; } -static void -free_stream_console_struct (struct console *con) -{ - if (CONSOLE_STREAM_DATA (con)) - { - xfree (CONSOLE_STREAM_DATA (con)); - CONSOLE_STREAM_DATA (con) = NULL; - } -} - extern int stdout_needs_newline; static void stream_delete_console (struct console *con) { - if (/* CONSOLE_STREAM_DATA (con)->needs_newline */ - stdout_needs_newline) /* #### clean this up */ + struct stream_console *stream_con = CONSOLE_STREAM_DATA (con); + if (stream_con) { - fputc ('\n', CONSOLE_STREAM_DATA (con)->outfd); - fflush (CONSOLE_STREAM_DATA (con)->outfd); + if (/* stream_con->needs_newline */ + stdout_needs_newline) /* #### clean this up */ + { + fputc ('\n', stream_con->out); + fflush (stream_con->out); + } + if (stream_con->in != stdin) + fclose (stream_con->in); + + xfree (stream_con); + CONSOLE_STREAM_DATA (con) = NULL; } - if (CONSOLE_STREAM_DATA (con)->infd != stdin) - fclose (CONSOLE_STREAM_DATA (con)->infd); - free_stream_console_struct (con); } Lisp_Object @@ -241,8 +229,10 @@ stream_clear_to_window_end (struct window *w, int ypos1, int ypos2) } static void -stream_clear_region (Lisp_Object locale, face_index findex, int x, int y, - int width, int height) +stream_clear_region (Lisp_Object window, struct device* d, struct frame * f, + face_index findex, int x, int y, + int width, int height, Lisp_Object fcolor, Lisp_Object bcolor, + Lisp_Object background_pixmap) { } @@ -261,8 +251,8 @@ static void stream_ring_bell (struct device *d, int volume, int pitch, int duration) { struct console *c = XCONSOLE (DEVICE_CONSOLE (d)); - fputc (07, CONSOLE_STREAM_DATA (c)->outfd); - fflush (CONSOLE_STREAM_DATA (c)->outfd); + fputc (07, CONSOLE_STREAM_DATA (c)->out); + fflush (CONSOLE_STREAM_DATA (c)->out); }