]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - interactive.c
net: Drop fd_set parameter from para_accept().
[paraslash.git] / interactive.c
index 041376a1057bcf2e98a4c23c2b23c42d73a68345..3af90a6814d79e248178a3e47ae04cd066a8efad 100644 (file)
@@ -258,18 +258,6 @@ static void clear_bottom_line(void)
        rl_point = point;
 }
 
-static bool input_available(void)
-{
-       fd_set rfds;
-       struct timeval tv = {0, 0};
-       int ret;
-
-       FD_ZERO(&rfds);
-       FD_SET(i9ep->ici->fds[0], &rfds);
-       ret = para_select(1, &rfds, NULL, &tv);
-       return ret > 0;
-}
-
 static void i9e_line_handler(char *line)
 {
        int ret;
@@ -310,7 +298,7 @@ static int i9e_post_select(__a_unused struct sched *s, __a_unused void *context)
        ret = 0;
        if (i9ep->caught_sigint)
                goto rm_btrn;
-       while (input_available()) {
+       while (read_ok(i9ep->ici->fds[0]) > 0) {
                if (i9ep->stdout_btrn) {
                        while (i9ep->key_sequence_length < sizeof(i9ep->key_sequence) - 1) {
                                buf = i9ep->key_sequence + i9ep->key_sequence_length;
@@ -327,7 +315,7 @@ static int i9e_post_select(__a_unused struct sched *s, __a_unused void *context)
                                i9ep->key_sequence_length++;
                                rl_stuff_char((int)(unsigned char)*buf);
                                rl_callback_read_char();
-                               if (!input_available())
+                               if (read_ok(i9ep->ici->fds[0]) <= 0)
                                        break;
                        }
                        i9ep->key_sequence_length = 0;
@@ -610,17 +598,20 @@ void i9e_signal_dispatch(int sig_num)
  * \param n \sa \ref para_select().
  * \param readfds \sa \ref para_select().
  * \param writefds \sa \ref para_select().
- * \param timeout_tv \sa \ref para_select().
+ * \param timeout \sa \ref para_select().
  *
  * \return \sa \ref para_select().
  *
  * The only difference between this function and \ref para_select() is that
  * \ref i9e_select() returns zero if the select call returned \p EINTR.
  */
-int i9e_select(int n, fd_set *readfds, fd_set *writefds,
-               struct timeval *timeout_tv)
+int i9e_select(int n, fd_set *readfds, fd_set *writefds, int timeout)
 {
-       int ret = select(n, readfds, writefds, NULL, timeout_tv);
+       struct timeval tv;
+       int ret;
+
+       ms2tv(timeout, &tv);
+       ret = select(n, readfds, writefds, NULL, &tv);
 
        if (ret < 0) {
                if (errno == EINTR)