summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2009-12-03 18:51:32 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2009-12-03 18:51:32 +0000
commitf00c449ba1e11bda4b50d39b9ab60dfc9c889b05 (patch)
treea97f103db67f3d494808b32eaedbc2af5b86600b
parent627e0a14e8718945668b246f18053df0f82ed383 (diff)
downloademacs-f00c449ba1e11bda4b50d39b9ab60dfc9c889b05.tar.gz
emacs-f00c449ba1e11bda4b50d39b9ab60dfc9c889b05.tar.bz2
emacs-f00c449ba1e11bda4b50d39b9ab60dfc9c889b05.zip
(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.
-rw-r--r--src/ChangeLog8
-rw-r--r--src/process.c20
2 files changed, 25 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index bfd3e833d16..383d13cbc07 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -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
diff --git a/src/process.c b/src/process.c
index 90f2a9aa6bb..61cf86e4eb3 100644
--- a/src/process.c
+++ b/src/process.c
@@ -127,7 +127,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
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 @@ int update_tick;
#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 @@ compiled with getaddrinfo, a port number can also be specified as a
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 @@ usage: (make-network-process &rest ARGS) */)
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 @@ exec_sentinel (proc, reason)
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 @@ init_process ()
#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 @@ syms_of_process ()
#endif
Qdatagram = intern_c_string ("datagram");
staticpro (&Qdatagram);
+ Qseqpacket = intern_c_string ("seqpacket");
+ staticpro (&Qseqpacket);
QCport = intern_c_string (":port");
staticpro (&QCport);