Author: iratqq
Date: Fri Feb 20 04:06:03 2009
New Revision: 5860
Modified:
trunk/uim/fileio.c
Log:
* uim/fileio.c (c_file_set_nonblocking):
- New function.
(uim_plugin_instance_init):
- Add (file-nonblocking!).
Modified: trunk/uim/fileio.c
==============================================================================
--- trunk/uim/fileio.c (original)
+++ trunk/uim/fileio.c Fri Feb 20 04:06:03 2009
@@ -287,6 +287,22 @@
}
static uim_lisp
+c_file_set_nonblocking(uim_lisp fd_)
+{
+ int fd = C_INT(fd_);
+ int flag;
+
+ if ((flag = fcntl(fd, F_GETFL)) == -1) {
+ return uim_scm_f();
+ }
+ flag |= O_NONBLOCK;
+ if (fcntl(fd, F_SETFL, flag) == -1) {
+ uim_scm_f();
+ }
+ return uim_scm_t();
+}
+
+static uim_lisp
c_file_ready(uim_lisp fd_)
{
struct pollfd pfd;
@@ -335,6 +351,7 @@
uim_scm_gc_protect(&uim_lisp_poll_flags);
uim_lisp_poll_flags = make_arg_list(poll_flags);
+ uim_scm_init_proc1("file-nonblocking!", c_file_set_nonblocking);
uim_scm_init_proc1("file-ready?", c_file_ready);
uim_scm_init_proc0("create-pipe", c_create_pipe);