summaryrefslogtreecommitdiffstats
path: root/cmd-parse.y
diff options
context:
space:
mode:
authornicm <nicm>2020-05-25 18:57:24 +0000
committernicm <nicm>2020-05-25 18:57:24 +0000
commit6f03e49e68dfe0d9c0c7d49079c4383b26aca916 (patch)
tree86a94f09a878fe2d32cd3ef29a69db242208897f /cmd-parse.y
parent35779d655d7eec4b904eeb3a670bbef02aba016d (diff)
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.y13
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);
}