1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-11-03 19:37:16 -05:00

Fixed input timout returning EINVAL on OSX

This commit is contained in:
James Booth 2015-02-04 01:04:56 +00:00
parent 7ab301869f
commit b2536e91c0

View File

@ -39,6 +39,7 @@
#include <string.h>
#include <wchar.h>
#include <sys/time.h>
#include <errno.h>
#include <readline/readline.h>
#include <readline/history.h>
@ -111,8 +112,13 @@ create_input_window(void)
#else
ESCDELAY = 25;
#endif
p_rl_timeout.tv_sec = 0;
p_rl_timeout.tv_usec = inp_timeout * 1000;
if (inp_timeout == 1000) {
p_rl_timeout.tv_sec = 1;
p_rl_timeout.tv_usec = 0;
} else {
p_rl_timeout.tv_sec = 0;
p_rl_timeout.tv_usec = inp_timeout * 1000;
}
rl_readline_name = "profanity";
rl_getc_function = _inp_rl_getc;
@ -134,9 +140,11 @@ inp_readline(void)
{
FD_ZERO(&fds);
FD_SET(fileno(rl_instream), &fds);
errno = 0;
r = select(FD_SETSIZE, &fds, NULL, NULL, &p_rl_timeout);
if (r < 0) {
log_error("Readline failed.");
char *err_msg = strerror(errno);
log_error("Readline failed: %s", err_msg);
return TRUE;
}
@ -155,8 +163,13 @@ inp_readline(void)
prof_handle_idle();
}
p_rl_timeout.tv_sec = 0;
p_rl_timeout.tv_usec = inp_timeout * 1000;
if (inp_timeout == 1000) {
p_rl_timeout.tv_sec = 1;
p_rl_timeout.tv_usec = 0;
} else {
p_rl_timeout.tv_sec = 0;
p_rl_timeout.tv_usec = inp_timeout * 1000;
}
return cmd_result;
}