Skip to content

Commit 5d11f33

Browse files
committed
Try and play nicer with UTF-8 input sequences
1 parent a591a47 commit 5d11f33

3 files changed

Lines changed: 18 additions & 3 deletions

File tree

embedded_cli.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ bool embedded_cli_insert_char(struct embedded_cli *cli, char ch)
399399
cli_putchar(cli, '\n', true);
400400
break;
401401
default:
402-
if (ch > 0)
402+
if (ch < 0 || ch >= 32)
403403
embedded_cli_insert_default_char(cli, ch);
404404
}
405405
}

examples/posix_demo.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ int main(void)
9595
cli_argc = embedded_cli_argc(&cli, &cli_argv);
9696
printf("Got %d args\n", cli_argc);
9797
for (int i = 0; i < cli_argc; i++) {
98-
printf("Arg %d/%d: '%s'\n", i, cli_argc, cli_argv[i]);
98+
printf("Arg %d/%d: [%lu bytes] '%s'\n", i, cli_argc, strlen(cli_argv[i]), cli_argv[i]);
9999
}
100100
done = cli_argc >= 1 && (strcmp(cli_argv[0], "quit") == 0);
101101

tests/embedded_cli_test.c

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,20 @@ static void test_max_chars(void)
300300
TEST_ASSERT(cli.buffer[sizeof(cli.buffer) - 2] == 'f');
301301
}
302302

303+
static void test_utf8(void)
304+
{
305+
struct embedded_cli cli;
306+
char **argv;
307+
embedded_cli_init(&cli, NULL, NULL, NULL);
308+
test_insert_line(&cli, "normal ñ ü 中文 text\n");
309+
int argc = embedded_cli_argc(&cli, &argv);
310+
TEST_ASSERT(argc == 5);
311+
TEST_ASSERT(strcmp(argv[0], "normal") == 0);
312+
TEST_ASSERT(strcmp(argv[1], "ñ") == 0);
313+
TEST_ASSERT(strcmp(argv[2], "ü") == 0);
314+
TEST_ASSERT(strcmp(argv[3], "中文") == 0);
315+
}
316+
303317
TEST_LIST = {
304318
{"simple", test_simple},
305319
{"argc", test_argc},
@@ -317,5 +331,6 @@ TEST_LIST = {
317331
{"quotes", test_quotes},
318332
{"too_many_args", test_too_many_args},
319333
{"max_chars", test_max_chars},
320-
{NULL, NULL},
334+
{"utf8", test_utf8},
335+
{NULL, NULL}
321336
};

0 commit comments

Comments
 (0)