diff src/console.c @ 440:8de8e3f6228a r21-2-28

Import from CVS: tag r21-2-28
author cvs
date Mon, 13 Aug 2007 11:33:38 +0200
parents 3ecd8885ac67
children abe6d1db359e
line wrap: on
line diff
--- a/src/console.c	Mon Aug 13 11:32:27 2007 +0200
+++ b/src/console.c	Mon Aug 13 11:33:38 2007 +0200
@@ -129,7 +129,7 @@
   sprintf (buf, "#<%s-console", !CONSOLE_LIVE_P (con) ? "dead" :
 	   CONSOLE_TYPE_NAME (con));
   write_c_string (buf, printcharfun);
-  if (CONSOLE_LIVE_P (con))
+  if (CONSOLE_LIVE_P (con) && !NILP (CONSOLE_CONNECTION (con)))
     {
       write_c_string (" on ", printcharfun);
       print_internal (CONSOLE_CONNECTION (con), printcharfun, 1);
@@ -355,16 +355,24 @@
 semi_canonicalize_console_connection (struct console_methods *meths,
 				      Lisp_Object name, Error_behavior errb)
 {
-  return CONTYPE_METH_OR_GIVEN (meths, semi_canonicalize_console_connection,
-				(name, errb), name);
+  if (HAS_CONTYPE_METH_P (meths, semi_canonicalize_console_connection))
+    return CONTYPE_METH (meths, semi_canonicalize_console_connection,
+			 (name, errb));
+  else
+    return CONTYPE_METH_OR_GIVEN (meths, canonicalize_console_connection,
+				  (name, errb), name);
 }
 
 static Lisp_Object
 canonicalize_console_connection (struct console_methods *meths,
 				 Lisp_Object name, Error_behavior errb)
 {
-  return CONTYPE_METH_OR_GIVEN (meths, canonicalize_console_connection,
-				(name, errb), name);
+  if (HAS_CONTYPE_METH_P (meths, canonicalize_console_connection))
+    return CONTYPE_METH (meths, canonicalize_console_connection,
+			 (name, errb));
+  else
+    return CONTYPE_METH_OR_GIVEN (meths, semi_canonicalize_console_connection,
+				  (name, errb), name);
 }
 
 static Lisp_Object
@@ -488,7 +496,7 @@
   /* Do it this way so that the console list is in order of creation */
   Vconsole_list = nconc2 (Vconsole_list, Fcons (console, Qnil));
 
-  if (CONMETH (con, initially_selected_for_input, (con)))
+  if (CONMETH_OR_GIVEN (con, initially_selected_for_input, (con), 0))
     event_stream_select_console (con);
 
   UNGCPRO;
@@ -878,7 +886,9 @@
       Extcount count;
       Extbyte *p;
 
-      GET_STRING_EXT_DATA_ALLOCA (stuffstring, FORMAT_KEYBOARD, p, count);
+      TO_EXTERNAL_FORMAT (LISP_STRING, stuffstring,
+			  ALLOCA, (p, count),
+			  Qkeyboard);
       while (count-- > 0)
 	stuff_char (XCONSOLE (Vcontrolling_terminal), *p++);
       stuff_char (XCONSOLE (Vcontrolling_terminal), '\n');
@@ -1099,34 +1109,35 @@
 }
 
 static const struct lrecord_description cte_description_1[] = {
-  { XD_LISP_OBJECT, offsetof(console_type_entry, symbol), 1 },
-  { XD_STRUCT_PTR,  offsetof(console_type_entry, meths), 1, &console_methods_description },
+  { XD_LISP_OBJECT, offsetof (console_type_entry, symbol) },
+  { XD_STRUCT_PTR,  offsetof (console_type_entry, meths), 1, &console_methods_description },
   { XD_END }
 };
 
 static const struct struct_description cte_description = {
-  sizeof(console_type_entry),
+  sizeof (console_type_entry),
   cte_description_1
 };
 
 static const struct lrecord_description cted_description_1[] = {
-  XD_DYNARR_DESC(console_type_entry_dynarr, &cte_description),
+  XD_DYNARR_DESC (console_type_entry_dynarr, &cte_description),
   { XD_END }
 };
 
 const struct struct_description cted_description = {
-  sizeof(console_type_entry_dynarr),
+  sizeof (console_type_entry_dynarr),
   cted_description_1
 };
 
 static const struct lrecord_description console_methods_description_1[] = {
-  { XD_LISP_OBJECT, offsetof(struct console_methods, symbol), 2 },
-  { XD_LISP_OBJECT, offsetof(struct console_methods, image_conversion_list), 1 },
+  { XD_LISP_OBJECT, offsetof (struct console_methods, symbol) },
+  { XD_LISP_OBJECT, offsetof (struct console_methods, predicate_symbol) },
+  { XD_LISP_OBJECT, offsetof (struct console_methods, image_conversion_list) },
   { XD_END }
 };
 
 const struct struct_description console_methods_description = {
-  sizeof(struct console_methods),
+  sizeof (struct console_methods),
   console_methods_description_1
 };
 
@@ -1321,7 +1332,7 @@
 
 
 static const struct lrecord_description console_slots_description_1[] = {
-  { XD_LISP_OBJECT, 0, CONSOLE_SLOTS_COUNT },
+  { XD_LISP_OBJECT_ARRAY, 0, CONSOLE_SLOTS_COUNT },
   { XD_END }
 };
 
@@ -1373,7 +1384,7 @@
 */ );
 
 #ifdef HAVE_TTY
-  /* ### Should this somehow go to TTY data?  How do we make it
+  /* #### Should this somehow go to TTY data?  How do we make it
      accessible from Lisp, then?  */
   DEFVAR_CONSOLE_LOCAL ("tty-erase-char", tty_erase_char /*
 The ERASE character as set by the user with stty.