diff src/dispnew.c @ 104816:4129eea9d003

(Fsend_string_to_terminal): Make it work again on the initial terminal as well.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Thu, 03 Sep 2009 00:36:11 +0000
parents 3abca9a8122f
children 81757111b576
line wrap: on
line diff
--- a/src/dispnew.c	Wed Sep 02 17:03:20 2009 +0000
+++ b/src/dispnew.c	Thu Sep 03 00:36:11 2009 +0000
@@ -6475,8 +6475,8 @@
      Lisp_Object string;
      Lisp_Object terminal;
 {
-  struct terminal *t = get_tty_terminal (terminal, 1);
-  struct tty_display_info *tty;
+  struct terminal *t = get_terminal (terminal, 1);
+  FILE *out;
 
   /* ??? Perhaps we should do something special for multibyte strings here.  */
   CHECK_STRING (string);
@@ -6485,18 +6485,26 @@
   if (!t)
     error ("Unknown terminal device");
 
-  tty = t->display_info.tty;
-
-  if (! tty->output)
-    error ("Terminal is currently suspended");
-
-  if (tty->termscript)
-    {
-      fwrite (SDATA (string), 1, SBYTES (string), tty->termscript);
-      fflush (tty->termscript);
-    }
-  fwrite (SDATA (string), 1, SBYTES (string), tty->output);
-  fflush (tty->output);
+  if (t->type == output_initial)
+    out = stdout;
+  else if (t->type != output_termcap && t->type != output_msdos_raw)
+    error ("Device %d is not a termcap terminal device", t->id);
+  else
+    {
+      struct tty_display_info *tty = t->display_info.tty;
+
+      if (! tty->output)
+	error ("Terminal is currently suspended");
+
+      if (tty->termscript)
+	{
+	  fwrite (SDATA (string), 1, SBYTES (string), tty->termscript);
+	  fflush (tty->termscript);
+	}
+      out = tty->output;
+    }
+  fwrite (SDATA (string), 1, SBYTES (string), out);
+  fflush (out);
   UNBLOCK_INPUT;
   return Qnil;
 }