diff options
author | Daniel Silverstone <dsilvers@netsurf-browser.org> | 2010-12-04 18:35:13 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@netsurf-browser.org> | 2010-12-04 18:35:13 +0000 |
commit | d1bc31f47387eda79db87e7db958ea5ed50eaee4 (patch) | |
tree | 8c00ff3cfdd2e298b237298e095a2fade2e4d372 | |
parent | 2fee3114b46682b220c73aae7c4f2466dedb81ff (diff) | |
download | libparserutils-d1bc31f47387eda79db87e7db958ea5ed50eaee4.tar.gz libparserutils-d1bc31f47387eda79db87e7db958ea5ed50eaee4.tar.bz2 |
Make sure we elide trailing non-characters when matching aliases
svn path=/trunk/libparserutils/; revision=10973
-rw-r--r-- | src/charset/aliases.c | 4 | ||||
-rw-r--r-- | test/aliases.c | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/charset/aliases.c b/src/charset/aliases.c index 5c173d0..81962eb 100644 --- a/src/charset/aliases.c +++ b/src/charset/aliases.c @@ -62,6 +62,10 @@ static int parserutils_charset_alias_match(const void *a, const void *b) s_alias++; } + while ((key_left > 0) && IS_PUNCT_OR_SPACE(*s_key)) { + key_left--; s_key++; + } + return key_left - alias_left; } diff --git a/test/aliases.c b/test/aliases.c index 9a9f962..819e4b5 100644 --- a/test/aliases.c +++ b/test/aliases.c @@ -28,6 +28,14 @@ int main (int argc, char **argv) return 1; } + c = parserutils_charset_alias_canonicalise("csinvariant\"", 12); + if (c) { + printf("%s %d\n", c->name, c->mib_enum); + } else { + printf("FAIL - failed finding encoding 'csinvariant'\n"); + return 1; + } + c = parserutils_charset_alias_canonicalise("nats-sefi-add", 13); if (c) { printf("%s %d\n", c->name, c->mib_enum); |