diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2015-06-02 21:28:41 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2015-06-02 21:28:41 +0200 |
commit | 897bb00af12ac069a8c1fc717ee40e9333329b48 (patch) | |
tree | 06766f3a7640e6672a65b0053af673b3ef6b7b4c | |
parent | a6782e5e60427d32ef8aecc5179c5b34fc5dcbb5 (diff) | |
download | xK-897bb00af12ac069a8c1fc717ee40e9333329b48.tar.gz xK-897bb00af12ac069a8c1fc717ee40e9333329b48.tar.xz xK-897bb00af12ac069a8c1fc717ee40e9333329b48.zip |
degesch: add & use strncasecmp_ascii()
-rw-r--r-- | common.c | 11 | ||||
-rw-r--r-- | degesch.c | 4 |
2 files changed, 13 insertions, 2 deletions
@@ -70,6 +70,17 @@ str_vector_find (const struct str_vector *v, const char *s) return -1; } +static int +strncasecmp_ascii (const char *a, const char *b, size_t n) +{ + int x; + while (n-- && (*a || *b)) + if ((x = tolower_ascii (*(const unsigned char *) a++) + - tolower_ascii (*(const unsigned char *) b++))) + return x; + return 0; +} + // --- Logging ----------------------------------------------------------------- static void @@ -6388,11 +6388,11 @@ complete_command (struct app_context *ctx, struct completion *data, prefix = "/"; } + size_t word_len = strlen (word); for (size_t i = 0; i < N_ELEMENTS (g_command_handlers); i++) { struct command_handler *handler = &g_command_handlers[i]; - // FIXME: we want an ASCII version - if (!strncasecmp (word, handler->name, strlen (word))) + if (!strncasecmp_ascii (word, handler->name, word_len)) str_vector_add_owned (output, xstrdup_printf ("%s%s", prefix, handler->name)); } |