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);

Reply via email to