Revision: 5990
Author: iratqq
Date: Sat Aug 29 22:10:43 2009
Log: * scm/fileio.scm (file-ready?):
  - Add scheme-side implementation.
* uim/fileio.c (c_file_ready, uim_plugin_instance_init):
  - Remove (file-ready?).

http://code.google.com/p/uim/source/detail?r=5990

Modified:
 /trunk/scm/fileio.scm
 /trunk/uim/fileio.c

=======================================
--- /trunk/scm/fileio.scm       Sun Mar 15 23:17:08 2009
+++ /trunk/scm/fileio.scm       Sat Aug 29 22:10:43 2009
@@ -128,3 +128,16 @@
 (define (duplicate-fileno oldd . args)
   (let-optionals* args ((newd #f))
      (duplicate2-fileno oldd newd)))
+
+(define (file-ready? port timeout)
+  (let* ((fd (fd? port))
+         (fds (list (cons fd (assq-cdr '$POLLIN file-poll-flags-alist))))
+         (ret (file-poll fds timeout)))
+    (cond ((not ret)
+           (uim-notify-fatal (N_ "poll error"))
+           #f)
+          ((null? ret)
+           (uim-notify-info (N_ "timeout"))
+           #f)
+          (else
+           #t))))
=======================================
--- /trunk/uim/fileio.c Fri Aug 28 05:31:29 2009
+++ /trunk/uim/fileio.c Sat Aug 29 22:10:43 2009
@@ -295,24 +295,6 @@
   free(fds);
   return uim_scm_callf("reverse", "o", ret_);
 }
-
-static uim_lisp
-c_file_ready(uim_lisp fd_)
-{
-  struct pollfd pfd;
-  int ndfs;
-
-  pfd.fd = C_INT(fd_);
-  pfd.events = POLLIN;
-  ndfs = poll(&pfd, 1, 0);
-
-  if (ndfs < 0) {
-    return uim_scm_f();
-  } else if (ndfs == 0)
-    return uim_scm_f();
-  else
-    return uim_scm_t();
-}

 static uim_lisp
 c_create_pipe(void)
@@ -345,8 +327,6 @@
   uim_lisp_poll_flags = make_arg_list(poll_flags);
   uim_scm_gc_protect(&uim_lisp_poll_flags);

-  uim_scm_init_proc1("file-ready?", c_file_ready);
-
   uim_scm_init_proc0("create-pipe", c_create_pipe);
 }

Reply via email to