diff options
Diffstat (limited to 'css/makeenum')
-rwxr-xr-x | css/makeenum | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/css/makeenum b/css/makeenum index 4950cc14d..004313d93 100755 --- a/css/makeenum +++ b/css/makeenum @@ -28,17 +28,18 @@ while (<>) { print H join ",\n ${uc_name}_", @uc_enum; print H ",\n ${uc_name}_UNKNOWN\n"; print H "} $name;\n"; - print H "$name ${name}_parse(const char * const s);\n\n"; + print H "$name ${name}_parse(const char * const s, int length);\n\n"; print C "/**\n * $name\n */\n\n"; print C "const char * const ${name}_name[] = {\n \""; print C join "\",\n \"", @enum; print C "\"\n};\n\n"; - print C "$name ${name}_parse(const char * const s)\n{\n"; + print C "$name ${name}_parse(const char * const s, int length)\n{\n"; foreach $x (@enum) { $ux = uc $x; $ux =~ s/-/_/g; - print C " if (strcasecmp(s, \"$x\") == 0) return ${uc_name}_$ux;\n"; + $len = length $x; + print C " if (length == $len && strncasecmp(s, \"$x\", $len) == 0) return ${uc_name}_$ux;\n"; } print C " return ${uc_name}_UNKNOWN;\n}\n\n"; } |