changeset 106397:210af1fb2669

(Qseqpacket): New symbol. (HAVE_SEQPACKET): New macro. (Fmake_network_process): Accept new :type `seqpacket'. (init_process): Add `seqpacket' feature when applicable. (syms_of_process): Initialize Qseqpacket.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Thu, 03 Dec 2009 18:51:32 +0000
parents b99306fb62cc
children 31424b91531a
files src/ChangeLog src/process.c
diffstat 2 files changed, 25 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Thu Dec 03 17:14:33 2009 +0000
+++ b/src/ChangeLog	Thu Dec 03 18:51:32 2009 +0000
@@ -1,3 +1,11 @@
+2009-12-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* process.c (Qseqpacket): New symbol.
+	(HAVE_SEQPACKET): New macro.
+	(Fmake_network_process): Accept new :type `seqpacket'.
+	(init_process): Add `seqpacket' feature when applicable.
+	(syms_of_process): Initialize Qseqpacket.
+
 2009-12-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
 	* font.c (font_load_for_lface, font_open_by_name): Don't store name
--- a/src/process.c	Thu Dec 03 17:14:33 2009 +0000
+++ b/src/process.c	Thu Dec 03 18:51:32 2009 +0000
@@ -127,7 +127,7 @@
 Lisp_Object Qprocessp;
 Lisp_Object Qrun, Qstop, Qsignal;
 Lisp_Object Qopen, Qclosed, Qconnect, Qfailed, Qlisten;
-Lisp_Object Qlocal, Qipv4, Qdatagram;
+Lisp_Object Qlocal, Qipv4, Qdatagram, Qseqpacket;
 Lisp_Object Qreal, Qnetwork, Qserial;
 #ifdef AF_INET6
 Lisp_Object Qipv6;
@@ -253,6 +253,10 @@
 #endif /* DATAGRAM_SOCKETS */
 #endif /* BROKEN_DATAGRAM_SOCKETS */
 
+#if defined HAVE_LOCAL_SOCKETS && defined DATAGRAM_SOCKETS
+# define HAVE_SEQPACKET
+#endif
+
 #if !defined (ADAPTIVE_READ_BUFFERING) && !defined (NO_ADAPTIVE_READ_BUFFERING)
 #ifdef EMACS_HAS_USECS
 #define ADAPTIVE_READ_BUFFERING
@@ -3123,7 +3127,8 @@
 string, e.g. "80", as well as an integer.  This is not portable.)
 
 :type TYPE -- TYPE is the type of connection.  The default (nil) is a
-stream type connection, `datagram' creates a datagram type connection.
+stream type connection, `datagram' creates a datagram type connection,
+`seqpacket' creates a reliable datagram connection.
 
 :family FAMILY -- FAMILY is the address (and protocol) family for the
 service specified by HOST and SERVICE.  The default (nil) is to use
@@ -3302,6 +3307,10 @@
   else if (EQ (tem, Qdatagram))
     socktype = SOCK_DGRAM;
 #endif
+#ifdef HAVE_SEQPACKET
+  else if (EQ (tem, Qseqpacket))
+    socktype = SOCK_SEQPACKET;
+#endif
   else
     error ("Unsupported connection type");
 
@@ -6859,7 +6868,7 @@
   record_unwind_protect (exec_sentinel_unwind, Fcons (proc, sentinel));
   /* Inhibit quit so that random quits don't screw up a running filter.  */
   specbind (Qinhibit_quit, Qt);
-  specbind (Qlast_nonmenu_event, Qt);
+  specbind (Qlast_nonmenu_event, Qt); /* Why? --Stef  */
 
   /* In case we get recursively called,
      and we already saved the match data nonrecursively,
@@ -7330,6 +7339,9 @@
 #ifdef DATAGRAM_SOCKETS
    ADD_SUBFEATURE (QCtype, Qdatagram);
 #endif
+#ifdef HAVE_SEQPACKET
+   ADD_SUBFEATURE (QCtype, Qseqpacket);
+#endif
 #ifdef HAVE_LOCAL_SOCKETS
    ADD_SUBFEATURE (QCfamily, Qlocal);
 #endif
@@ -7403,6 +7415,8 @@
 #endif
   Qdatagram = intern_c_string ("datagram");
   staticpro (&Qdatagram);
+  Qseqpacket = intern_c_string ("seqpacket");
+  staticpro (&Qseqpacket);
 
   QCport = intern_c_string (":port");
   staticpro (&QCport);