summaryrefslogtreecommitdiff
path: root/lib/libedit/readline.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libedit/readline.c')
-rw-r--r--lib/libedit/readline.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/lib/libedit/readline.c b/lib/libedit/readline.c
index 25b3fb34d7a..5686053ed84 100644
--- a/lib/libedit/readline.c
+++ b/lib/libedit/readline.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: readline.c,v 1.18 2016/03/20 23:48:27 schwarze Exp $ */
+/* $OpenBSD: readline.c,v 1.19 2016/03/21 17:28:10 schwarze Exp $ */
/* $NetBSD: readline.c,v 1.91 2010/08/28 15:44:59 christos Exp $ */
/*-
@@ -159,13 +159,13 @@ static jmp_buf topbuf;
static unsigned char _el_rl_complete(EditLine *, int);
static unsigned char _el_rl_tstp(EditLine *, int);
static char *_get_prompt(EditLine *);
-static int _getc_function(EditLine *, char *);
+static int _getc_function(EditLine *, wchar_t *);
static HIST_ENTRY *_move_history(int);
static int _history_expand_command(const char *, size_t, size_t,
char **);
static char *_rl_compat_sub(const char *, const char *,
const char *, int);
-static int _rl_event_read_char(EditLine *, char *);
+static int _rl_event_read_char(EditLine *, wchar_t *);
static void _rl_update_pos(void);
@@ -202,14 +202,14 @@ _move_history(int op)
*/
static int
/*ARGSUSED*/
-_getc_function(EditLine *el, char *c)
+_getc_function(EditLine *el __attribute__((__unused__)), wchar_t *c)
{
int i;
i = (*rl_getc_function)(NULL);
if (i == -1)
return 0;
- *c = i;
+ *c = (wchar_t)i;
return 1;
}
@@ -2031,12 +2031,14 @@ rl_stuff_char(int c)
}
static int
-_rl_event_read_char(EditLine *el, char *cp)
+_rl_event_read_char(EditLine *el, wchar_t *wc)
{
+ char ch;
int n;
ssize_t num_read = 0;
- *cp = '\0';
+ ch = '\0';
+ *wc = L'\0';
while (rl_event_hook) {
(*rl_event_hook)();
@@ -2045,7 +2047,7 @@ _rl_event_read_char(EditLine *el, char *cp)
if (ioctl(el->el_infd, FIONREAD, &n) < 0)
return -1;
if (n)
- num_read = read(el->el_infd, cp, 1);
+ num_read = read(el->el_infd, &ch, 1);
else
num_read = 0;
#elif defined(F_SETFL) && defined(O_NDELAY)
@@ -2053,12 +2055,12 @@ _rl_event_read_char(EditLine *el, char *cp)
return -1;
if (fcntl(el->el_infd, F_SETFL, n|O_NDELAY) < 0)
return -1;
- num_read = read(el->el_infd, cp, 1);
+ num_read = read(el->el_infd, &ch, 1);
if (fcntl(el->el_infd, F_SETFL, n))
return -1;
#else
/* not non-blocking, but what you gonna do? */
- num_read = read(el->el_infd, cp, 1);
+ num_read = read(el->el_infd, &ch, 1);
return -1;
#endif
@@ -2070,6 +2072,7 @@ _rl_event_read_char(EditLine *el, char *cp)
}
if (!rl_event_hook)
el_set(el, EL_GETCFN, EL_BUILTIN_GETCFN);
+ *wc = (wchar_t)ch;
return (int)num_read;
}