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