X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=lexer.c;h=08774997babc8a675f78d843463a3f2593aba6bc;hb=8100b4a9336172bceb7d67992aed642b26a4508e;hp=111bc6dab247e8f7a9105c63fe97c1b71c396387;hpb=58dd06a9b74b47e8f6be918b3c4852045bab3391;p=cparser diff --git a/lexer.c b/lexer.c index 111bc6d..0877499 100644 --- a/lexer.c +++ b/lexer.c @@ -333,10 +333,20 @@ static named_decoder_t const decoders[] = { { NULL, NULL } }; +/** strcasecmp is not part of C99 so we need our own implementation here */ +static int my_strcasecmp(const char *s1, const char *s2) +{ + for ( ; *s1 != 0; ++s1, ++s2) { + if (tolower(*s1) != tolower(*s2)) + break; + } + return (unsigned char)*s1 - (unsigned char)*s2; +} + void select_input_encoding(char const* const encoding) { for (named_decoder_t const *i = decoders; i->name != NULL; ++i) { - if (strcasecmp(encoding, i->name) != 0) + if (my_strcasecmp(encoding, i->name) != 0) continue; decoder = i->decoder; return; @@ -758,7 +768,7 @@ static void parse_number(void) /* check for invalid octal digits */ for (size_t i= 0; i < size; ++i) { char t = string[i]; - if (t == '8' || t == '9') + if (t >= '8') errorf(&lexer_token.source_position, "invalid digit '%c' in octal number", t); }