diff options
author | nicm <nicm> | 2020-05-25 18:57:24 +0000 |
---|---|---|
committer | nicm <nicm> | 2020-05-25 18:57:24 +0000 |
commit | 6f03e49e68dfe0d9c0c7d49079c4383b26aca916 (patch) | |
tree | 86a94f09a878fe2d32cd3ef29a69db242208897f /cmd-parse.y | |
parent | 35779d655d7eec4b904eeb3a670bbef02aba016d (diff) | |
download | rtmux-6f03e49e68dfe0d9c0c7d49079c4383b26aca916.tar.gz rtmux-6f03e49e68dfe0d9c0c7d49079c4383b26aca916.tar.bz2 rtmux-6f03e49e68dfe0d9c0c7d49079c4383b26aca916.zip |
Use the internal representation for UTF-8 keys instead of wchar_t and
drop some code only needed for that.
Diffstat (limited to 'cmd-parse.y')
-rw-r--r-- | cmd-parse.y | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/cmd-parse.y b/cmd-parse.y index 891f2289..9f36af7e 100644 --- a/cmd-parse.y +++ b/cmd-parse.y @@ -26,6 +26,7 @@ #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <wchar.h> #include "tmux.h" @@ -1251,10 +1252,9 @@ error: static int yylex_token_escape(char **buf, size_t *len) { - int ch, type, o2, o3; - u_int size, i, tmp; - char s[9]; - struct utf8_data ud; + int ch, type, o2, o3, mlen; + u_int size, i, tmp; + char s[9], m[MB_LEN_MAX]; ch = yylex_getc(); @@ -1339,11 +1339,12 @@ unicode: yyerror("invalid \\%c argument", type); return (0); } - if (utf8_split(tmp, &ud) != UTF8_DONE) { + mlen = wctomb(m, tmp); + if (mlen <= 0 || mlen > (int)sizeof m) { yyerror("invalid \\%c argument", type); return (0); } - yylex_append(buf, len, ud.data, ud.size); + yylex_append(buf, len, m, mlen); return (1); } |