(Fsend_string_to_terminal): Make it work again on the initial terminal as well.
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 3 Sep 2009 00:36:11 +0000 (00:36 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 3 Sep 2009 00:36:11 +0000 (00:36 +0000)
src/ChangeLog
src/dispnew.c

index 9dd82c5..b8d21c5 100644 (file)
@@ -1,7 +1,12 @@
+2009-09-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * dispnew.c (Fsend_string_to_terminal): Make it work again on the
+       initial terminal as well.
+
 2009-09-02  Jan Djärv  <jan.h.d@swipnet.se>
 
        * xterm.h: Rename x_non_menubar_window_to_frame to
-       x_menubar_window_to_frame
+       x_menubar_window_to_frame.
 
        * xterm.c: Remove declarations also in xterm.h
        (XTmouse_position): Do not return valid positions
index 5236d53..22a876c 100644 (file)
@@ -6475,8 +6475,8 @@ currently selected frame.  */)
      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 @@ currently selected frame.  */)
   if (!t)
     error ("Unknown terminal device");
 
-  tty = t->display_info.tty;
+  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->output)
+       error ("Terminal is currently suspended");
 
-  if (tty->termscript)
-    {
-      fwrite (SDATA (string), 1, SBYTES (string), tty->termscript);
-      fflush (tty->termscript);
+      if (tty->termscript)
+       {
+         fwrite (SDATA (string), 1, SBYTES (string), tty->termscript);
+         fflush (tty->termscript);
+       }
+      out = tty->output;
     }
-  fwrite (SDATA (string), 1, SBYTES (string), tty->output);
-  fflush (tty->output);
+  fwrite (SDATA (string), 1, SBYTES (string), out);
+  fflush (out);
   UNBLOCK_INPUT;
   return Qnil;
 }