X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fliboconfig%2Fscanner.l;h=7efa78a3fd85dff042cba40824d095d7fcf5bd0a;hb=7c9d772c992647fcba64a96800c146eb9f1647f8;hp=7a831c2a8f63390e8435adca419867c1a5604fc9;hpb=aef15b632b9f415e5ebfadd4e41fa8a3c19407ee;p=collectd.git diff --git a/src/liboconfig/scanner.l b/src/liboconfig/scanner.l index 7a831c2a..7efa78a3 100644 --- a/src/liboconfig/scanner.l +++ b/src/liboconfig/scanner.l @@ -27,16 +27,27 @@ */ %{ +#ifdef WIN32 +#include "gnulib_config.h" +#include "config.h" +#endif + #include #include #include "oconfig.h" #include "aux_types.h" #include "parser.h" +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmissing-noreturn" +#endif + + /* multiline string buffer */ -static char *ml_buffer = NULL; -static int ml_pos = 0; -static int ml_len = 0; +static char *ml_buffer; +static size_t ml_pos; +static size_t ml_len; #define ml_free (ml_len - ml_pos) @@ -104,12 +115,12 @@ IPV6_ADDR ({IPV6_BASE})|(\[{IPV6_BASE}\](:{PORT})?) {UNQUOTED_STRING} {yylval.string = yytext; return (UNQUOTED_STRING);} \"{QUOTED_STRING}\\{EOL} { - int len = strlen (yytext); + size_t len = strlen (yytext); ml_pos = 0; /* remove "\\" */ - if ('\r' == yytext[len - 2]) + if (yytext[len - 2] == '\r') len -= 3; else len -= 2; @@ -120,10 +131,10 @@ IPV6_ADDR ({IPV6_BASE})|(\[{IPV6_BASE}\](:{PORT})?) } ^{WHITE_SPACE}+ {/* remove leading white-space */} {NON_WHITE_SPACE}{QUOTED_STRING}\\{EOL} { - int len = strlen (yytext); + size_t len = strlen (yytext); /* remove "\\" */ - if ('\r' == yytext[len - 2]) + if (yytext[len - 2] == '\r') len -= 3; else len -= 2; @@ -141,21 +152,23 @@ IPV6_ADDR ({IPV6_BASE})|(\[{IPV6_BASE}\](:{PORT})?) %% static void ml_append (char *string) { - int len = strlen (string); - int s; + size_t len = strlen (string); if (ml_free <= len) { ml_len += len - ml_free + 1; ml_buffer = realloc (ml_buffer, ml_len); - if (NULL == ml_buffer) + if (ml_buffer == NULL) YY_FATAL_ERROR ("out of dynamic memory in ml_append"); } - s = snprintf (ml_buffer + ml_pos, ml_free, "%s", string); - if ((0 > s) || (ml_free <= s)) + int s = snprintf(ml_buffer + ml_pos, ml_free, "%s", string); + if (s < 0 || (size_t)s >= ml_free) YY_FATAL_ERROR ("failed to write to multiline buffer"); ml_pos += s; return; } /* ml_append */ +#ifdef __clang__ +#pragma clang diagnostic pop +#endif