Author: iratqq
Date: Mon Feb 16 23:21:17 2009
New Revision: 5856
Modified:
trunk/scm/socket.scm
trunk/uim/socket.c
Log:
* scm/socket.scm (shutdown-how-alist):
- New variable.
* uim/socket.c (c_shutdown_how_alist, c_shutdown):
- New functions.
(uim_plugin_instance_init):
- Add (shutdown) and (shutdown-how-alist?).
Modified: trunk/scm/socket.scm
==============================================================================
--- trunk/scm/socket.scm (original)
+++ trunk/scm/socket.scm Mon Feb 16 23:21:17 2009
@@ -77,3 +77,5 @@
(delete-sockaddr-un sun)
ret)))
+
+(define shutdown-how-alist (shutdown-how-alist?))
Modified: trunk/uim/socket.c
==============================================================================
--- trunk/uim/socket.c (original)
+++ trunk/uim/socket.c Mon Feb 16 23:21:17 2009
@@ -289,6 +289,24 @@
return MAKE_INT(listen(C_INT(s_), C_INT(backlog_)));
}
+const static opt_args shutdown_how[] = {
+ { SHUT_RD, "$SHUT_RD" },
+ { SHUT_WR, "$SHUT_WR" },
+ { SHUT_RDWR, "$SHUT_RDWR" },
+ { 0, 0 }
+};
+static uim_lisp uim_lisp_shutdown_how_alist;
+static uim_lisp
+c_shutdown_how_alist(void)
+{
+ return uim_lisp_shutdown_how_alist;
+}
+static uim_lisp
+c_shutdown(uim_lisp s_, uim_lisp how_)
+{
+ return MAKE_INT(shutdown(C_INT(s_), C_INT(how_)));
+}
+
static uim_lisp
c_make_sockaddr_storage(void)
{
@@ -437,6 +455,10 @@
uim_scm_init_proc3("connect", c_connect);
uim_scm_init_proc3("bind", c_bind);
uim_scm_init_proc2("listen", c_listen);
+ uim_scm_init_proc2("shutdown", c_shutdown);
+ uim_scm_init_proc0("shutdown-how-alist?", c_shutdown_how_alist);
+ uim_scm_gc_protect(&uim_lisp_shutdown_how_alist);
+ uim_lisp_shutdown_how_alist = make_arg_list(shutdown_how);
uim_scm_init_proc0("make-sockaddr-storage", c_make_sockaddr_storage);
uim_scm_init_proc1("delete-sockaddr-storage", c_delete_sockaddr_storage);