summaryrefslogtreecommitdiff
path: root/3rdparty/libconfig/extra/gen
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/libconfig/extra/gen')
-rw-r--r--3rdparty/libconfig/extra/gen/clangwarnings.patch25
-rw-r--r--3rdparty/libconfig/extra/gen/grammar.y24
-rw-r--r--3rdparty/libconfig/extra/gen/scanner.l47
3 files changed, 42 insertions, 54 deletions
diff --git a/3rdparty/libconfig/extra/gen/clangwarnings.patch b/3rdparty/libconfig/extra/gen/clangwarnings.patch
index 4240f84d2..c3b45ef33 100644
--- a/3rdparty/libconfig/extra/gen/clangwarnings.patch
+++ b/3rdparty/libconfig/extra/gen/clangwarnings.patch
@@ -11,26 +11,5 @@ index 3595578..26444f8 100644
- YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ YY_SYMBOL_PRINT (yymsg ? yymsg : "Deleting", yytype, yyvaluep, yylocationp);
- switch (yytype)
- {
-diff --git a/scanner.c b/scanner.c
-index aebd34c..c3a717f 100644
---- a/scanner.c
-+++ b/scanner.c
-@@ -1500,6 +1500,8 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
- else
- ret_val = EOB_ACT_CONTINUE_SCAN;
-
-+#ifndef __clang_analyzer__
-+ // FIXME: Clang's static analyzer complains about leaking the result of libconfig_yyrealloc
- if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
- /* Extend the array by 50%, plus the number we really need. */
- yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
-@@ -1507,6 +1509,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
- if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
- }
-+#endif // __clang_analyzer__
-
- yyg->yy_n_chars += number_to_move;
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+ YYUSE (yytype);
+ }
diff --git a/3rdparty/libconfig/extra/gen/grammar.y b/3rdparty/libconfig/extra/gen/grammar.y
index 7eab74780..ef8ed4f18 100644
--- a/3rdparty/libconfig/extra/gen/grammar.y
+++ b/3rdparty/libconfig/extra/gen/grammar.y
@@ -1,8 +1,8 @@
/* -*- mode: C -*- */
/* ----------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2015 Hercules Dev Team
- Copyright (C) 2005-2010 Mark A Lindner
+ Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
@@ -23,7 +23,7 @@
*/
%defines
-%output="y.tab.c"
+%output "y.tab.c"
%pure-parser
%lex-param{void *scanner}
%parse-param{void *scanner}
@@ -63,7 +63,7 @@ static const char *err_duplicate_setting = "duplicate setting name";
(ctx->parent && (ctx->parent->type == CONFIG_TYPE_LIST))
static void capture_parse_pos(void *scanner, struct scan_context *scan_ctx,
- config_setting_t *setting)
+ struct config_setting_t *setting)
{
setting->line = (unsigned int)libconfig_yyget_lineno(scanner);
setting->file = scanctx_current_filename(scan_ctx);
@@ -206,8 +206,8 @@ simple_value:
{
if(IN_ARRAY() || IN_LIST())
{
- config_setting_t *e = config_setting_set_bool_elem(ctx->parent, -1,
- (int)$1);
+ struct config_setting_t *e = config_setting_set_bool_elem(ctx->parent, -1,
+ (int)$1);
if(! e)
{
@@ -226,7 +226,7 @@ simple_value:
{
if(IN_ARRAY() || IN_LIST())
{
- config_setting_t *e = config_setting_set_int_elem(ctx->parent, -1, $1);
+ struct config_setting_t *e = config_setting_set_int_elem(ctx->parent, -1, $1);
if(! e)
{
libconfig_yyerror(scanner, ctx, scan_ctx, err_array_elem_type);
@@ -248,7 +248,7 @@ simple_value:
{
if(IN_ARRAY() || IN_LIST())
{
- config_setting_t *e = config_setting_set_int64_elem(ctx->parent, -1, $1);
+ struct config_setting_t *e = config_setting_set_int64_elem(ctx->parent, -1, $1);
if(! e)
{
libconfig_yyerror(scanner, ctx, scan_ctx, err_array_elem_type);
@@ -270,7 +270,7 @@ simple_value:
{
if(IN_ARRAY() || IN_LIST())
{
- config_setting_t *e = config_setting_set_int_elem(ctx->parent, -1, $1);
+ struct config_setting_t *e = config_setting_set_int_elem(ctx->parent, -1, $1);
if(! e)
{
libconfig_yyerror(scanner, ctx, scan_ctx, err_array_elem_type);
@@ -292,7 +292,7 @@ simple_value:
{
if(IN_ARRAY() || IN_LIST())
{
- config_setting_t *e = config_setting_set_int64_elem(ctx->parent, -1, $1);
+ struct config_setting_t *e = config_setting_set_int64_elem(ctx->parent, -1, $1);
if(! e)
{
libconfig_yyerror(scanner, ctx, scan_ctx, err_array_elem_type);
@@ -314,7 +314,7 @@ simple_value:
{
if(IN_ARRAY() || IN_LIST())
{
- config_setting_t *e = config_setting_set_float_elem(ctx->parent, -1, $1);
+ struct config_setting_t *e = config_setting_set_float_elem(ctx->parent, -1, $1);
if(! e)
{
libconfig_yyerror(scanner, ctx, scan_ctx, err_array_elem_type);
@@ -333,7 +333,7 @@ simple_value:
if(IN_ARRAY() || IN_LIST())
{
const char *s = parsectx_take_string(ctx);
- config_setting_t *e = config_setting_set_string_elem(ctx->parent, -1, s);
+ struct config_setting_t *e = config_setting_set_string_elem(ctx->parent, -1, s);
_delete(s);
if(! e)
diff --git a/3rdparty/libconfig/extra/gen/scanner.l b/3rdparty/libconfig/extra/gen/scanner.l
index 6bcce8116..f717ac273 100644
--- a/3rdparty/libconfig/extra/gen/scanner.l
+++ b/3rdparty/libconfig/extra/gen/scanner.l
@@ -1,8 +1,8 @@
/* -*- mode: C -*- */
/* --------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2013-2015 Hercules Dev Team
- Copyright (C) 2005-2010 Mark A Lindner
+ Copyright (C) 2013-2016 Hercules Dev Team
+ Copyright (C) 2005-2014 Mark A Lindner
This file is part of libconfig.
@@ -23,33 +23,30 @@
*/
%option nounistd
+%option never-interactive
%option reentrant
%option noyywrap
%option yylineno
%option nounput
%option bison-bridge
-%option never-interactive
%option header-file="scanner.h"
%option outfile="lex.yy.c"
%option extra-type="struct scan_context *"
-%top{
-#include "scanctx.h"
-}
-
%{
+
#ifdef _MSC_VER
#pragma warning (disable: 4996)
-/* disable MSVC warning "signed/unsigned mismatch" associated with code generated by flex versions such as 2.5.35. */
-#pragma warning (disable:4018)
#endif
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
+#include <limits.h>
+#include "parsectx.h"
+#include "scanctx.h"
#include "grammar.h"
#include "wincompat.h"
-#include "parsectx.h"
#define YY_NO_INPUT // Suppress generation of useless input() function
@@ -87,13 +84,6 @@ static unsigned long long fromhex(const char *s)
#endif /* __MINGW32__ */
}
-static int fromihex(const char *s) {
- unsigned long l = strtoul(s, NULL, 16);
- if (l > INT32_MAX)
- l &= INT32_MAX;
- return (int)l;
-}
-
%}
true [Tt][Rr][Uu][Ee]
@@ -183,9 +173,28 @@ include_open ^[ \t]*@include[ \t]+\"
{true} { yylval->ival = 1; return(TOK_BOOLEAN); }
{false} { yylval->ival = 0; return(TOK_BOOLEAN); }
{float} { yylval->fval = atof(yytext); return(TOK_FLOAT); }
-{integer} { yylval->ival = atoi(yytext); return(TOK_INTEGER); }
+{integer} {
+ long long llval;
+ llval = atoll(yytext);
+ if((llval < INT_MIN) || (llval > INT_MAX))
+ {
+ yylval->llval = llval;
+ return(TOK_INTEGER64);
+ }
+ else
+ {
+ yylval->ival = (int)llval;
+ return(TOK_INTEGER);
+ }
+ }
{integer64} { yylval->llval = atoll(yytext); return(TOK_INTEGER64); }
-{hex} { yylval->ival = fromihex(yytext); return(TOK_HEX); }
+{hex} {
+ unsigned long ulval = strtoul(yytext, NULL, 16);
+ if (ulval > INT32_MAX)
+ ulval &= INT32_MAX;
+ yylval->ival = (int)ulval;
+ return(TOK_HEX);
+ }
{hex64} { yylval->llval = fromhex(yytext); return(TOK_HEX64); }
{name} { yylval->sval = yytext; return(TOK_NAME); }
\[ { return(TOK_ARRAY_START); }