diff --git a/ports/libconfig/CMakeLists.txt b/ports/libconfig/CMakeLists.txt index 8762917ef..fe70cb9dd 100644 --- a/ports/libconfig/CMakeLists.txt +++ b/ports/libconfig/CMakeLists.txt @@ -3,26 +3,26 @@ project(libconfig C CXX) if(MSVC) add_compile_options(/W3 /wd4005 /wd4996 /wd4018 -D_CRT_SECURE_NO_WARNINGS) - add_definitions(-Dscandir=libconfig_scandir) endif() set(C_SOURCES lib/grammar.c lib/libconfig.c lib/scanctx.c - lib/win32/scandir.c lib/scanner.c lib/strbuf.c + lib/strvec.c + lib/util.c + lib/wincompat.c ) set(CPP_SOURCES lib/libconfigcpp.cc ) -find_path(DIRENT_H dirent.h) find_path(STDINT_H stdint.h) -include_directories(lib ${DIRENT_H} ${STDINT_H}) +include_directories(lib ${STDINT_H}) add_definitions(-DYY_NO_UNISTD_H -DYY_USE_CONST) @@ -37,6 +37,7 @@ else() target_compile_definitions(libconfig++ PUBLIC -DLIBCONFIGXX_STATIC) endif() +target_link_libraries(libconfig shlwapi) target_link_libraries(libconfig++ PRIVATE libconfig) install( diff --git a/ports/libconfig/CONTROL b/ports/libconfig/CONTROL index cd0469369..d8d00ddd4 100644 --- a/ports/libconfig/CONTROL +++ b/ports/libconfig/CONTROL @@ -1,4 +1,3 @@ Source: libconfig -Version: 1.6.0-1 +Version: 1.7.1 Description: C/C++ library for processing configuration files -Build-Depends: dirent diff --git a/ports/libconfig/fix-scanner-header-msvc-patch.patch b/ports/libconfig/fix-scanner-header-msvc-patch.patch deleted file mode 100644 index c2e13c2ff..000000000 --- a/ports/libconfig/fix-scanner-header-msvc-patch.patch +++ /dev/null @@ -1,108 +0,0 @@ -diff --git a/lib/scanner.h b/lib/scanner.h -index cdca3bb..1fc0509 100644 ---- a/lib/scanner.h -+++ b/lib/scanner.h -@@ -13,7 +13,7 @@ - #define FLEX_SCANNER - #define YY_FLEX_MAJOR_VERSION 2 - #define YY_FLEX_MINOR_VERSION 5 --#define YY_FLEX_SUBMINOR_VERSION 39 -+#define YY_FLEX_SUBMINOR_VERSION 35 - #if YY_FLEX_SUBMINOR_VERSION > 0 - #define FLEX_BETA - #endif -@@ -132,7 +132,15 @@ typedef void* yyscan_t; - - /* Size of default input buffer. */ - #ifndef YY_BUF_SIZE -+#ifdef __ia64__ -+/* On IA-64, the buffer size is 16k, not 8k. -+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. -+ * Ditto for the __ia64__ case accordingly. -+ */ -+#define YY_BUF_SIZE 32768 -+#else - #define YY_BUF_SIZE 16384 -+#endif /* __ia64__ */ - #endif - - #ifndef YY_TYPEDEF_YY_BUFFER_STATE -@@ -162,7 +170,7 @@ struct yy_buffer_state - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ -- yy_size_t yy_n_chars; -+ int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to -@@ -206,13 +214,13 @@ void libconfig_yypop_buffer_state (yyscan_t yyscanner ); - - YY_BUFFER_STATE libconfig_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); - YY_BUFFER_STATE libconfig_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); --YY_BUFFER_STATE libconfig_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); -+YY_BUFFER_STATE libconfig_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); - - void *libconfig_yyalloc (yy_size_t ,yyscan_t yyscanner ); - void *libconfig_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); - void libconfig_yyfree (void * ,yyscan_t yyscanner ); - --#define libconfig_yywrap(yyscanner) 1 -+#define libconfig_yywrap(n) 1 - #define YY_SKIP_YYWRAP - - #define yytext_ptr yytext_r -@@ -221,7 +229,8 @@ void libconfig_yyfree (void * ,yyscan_t yyscanner ); - #define INITIAL 0 - #define COMMENT 1 - #define STRING 2 --#define INCLUDE 3 -+#define INCLUDE_F 3 -+#define INCLUDE_D 4 - - #endif - -@@ -260,7 +269,7 @@ FILE *libconfig_yyget_out (yyscan_t yyscanner ); - - void libconfig_yyset_out (FILE * out_str ,yyscan_t yyscanner ); - --yy_size_t libconfig_yyget_leng (yyscan_t yyscanner ); -+int libconfig_yyget_leng (yyscan_t yyscanner ); - - char *libconfig_yyget_text (yyscan_t yyscanner ); - -@@ -268,10 +277,6 @@ int libconfig_yyget_lineno (yyscan_t yyscanner ); - - void libconfig_yyset_lineno (int line_number ,yyscan_t yyscanner ); - --int libconfig_yyget_column (yyscan_t yyscanner ); -- --void libconfig_yyset_column (int column_no ,yyscan_t yyscanner ); -- - YYSTYPE * libconfig_yyget_lval (yyscan_t yyscanner ); - - void libconfig_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); -@@ -302,7 +307,12 @@ static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); - - /* Amount of stuff to slurp up with each read. */ - #ifndef YY_READ_BUF_SIZE -+#ifdef __ia64__ -+/* On IA-64, the buffer size is 16k, not 8k */ -+#define YY_READ_BUF_SIZE 16384 -+#else - #define YY_READ_BUF_SIZE 8192 -+#endif /* __ia64__ */ - #endif - - /* Number of entries by which start-condition stack grows. */ -@@ -337,8 +347,8 @@ extern int libconfig_yylex \ - #undef YY_DECL - #endif - --#line 207 "scanner.l" -+#line 315 "scanner.l" - --#line 343 "scanner.h" -+#line 353 "scanner.h" - #undef libconfig_yyIN_HEADER - #endif /* libconfig_yyHEADER_H */ diff --git a/ports/libconfig/fix-scanner-source-msvc-patch.patch b/ports/libconfig/fix-scanner-source-msvc-patch.patch deleted file mode 100644 index e8f24e638..000000000 --- a/ports/libconfig/fix-scanner-source-msvc-patch.patch +++ /dev/null @@ -1,1122 +0,0 @@ -diff --git a/lib/scanner.c b/lib/scanner.c -index dc07eb0..efb6730 100644 ---- a/lib/scanner.c -+++ b/lib/scanner.c -@@ -9,7 +9,7 @@ - #define FLEX_SCANNER - #define YY_FLEX_MAJOR_VERSION 2 - #define YY_FLEX_MINOR_VERSION 5 --#define YY_FLEX_SUBMINOR_VERSION 39 -+#define YY_FLEX_SUBMINOR_VERSION 35 - #if YY_FLEX_SUBMINOR_VERSION > 0 - #define FLEX_BETA - #endif -@@ -159,7 +159,15 @@ typedef void* yyscan_t; - - /* Size of default input buffer. */ - #ifndef YY_BUF_SIZE -+#ifdef __ia64__ -+/* On IA-64, the buffer size is 16k, not 8k. -+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. -+ * Ditto for the __ia64__ case accordingly. -+ */ -+#define YY_BUF_SIZE 32768 -+#else - #define YY_BUF_SIZE 16384 -+#endif /* __ia64__ */ - #endif - - /* The state buf must be large enough to hold one state per character in the main buffer. -@@ -171,11 +179,6 @@ typedef void* yyscan_t; - typedef struct yy_buffer_state *YY_BUFFER_STATE; - #endif - --#ifndef YY_TYPEDEF_YY_SIZE_T --#define YY_TYPEDEF_YY_SIZE_T --typedef size_t yy_size_t; --#endif -- - #define EOB_ACT_CONTINUE_SCAN 0 - #define EOB_ACT_END_OF_FILE 1 - #define EOB_ACT_LAST_MATCH 2 -@@ -194,13 +197,6 @@ typedef size_t yy_size_t; - if ( yytext[yyl] == '\n' )\ - --yylineno;\ - }while(0) -- #define YY_LINENO_REWIND_TO(dst) \ -- do {\ -- const char *p;\ -- for ( p = yy_cp-1; p >= (dst); --p)\ -- if ( *p == '\n' )\ -- --yylineno;\ -- }while(0) - - /* Return all but the first "n" matched characters back to the input stream. */ - #define yyless(n) \ -@@ -218,6 +214,11 @@ typedef size_t yy_size_t; - - #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) - -+#ifndef YY_TYPEDEF_YY_SIZE_T -+#define YY_TYPEDEF_YY_SIZE_T -+typedef size_t yy_size_t; -+#endif -+ - #ifndef YY_STRUCT_YY_BUFFER_STATE - #define YY_STRUCT_YY_BUFFER_STATE - struct yy_buffer_state -@@ -235,7 +236,7 @@ struct yy_buffer_state - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ -- yy_size_t yy_n_chars; -+ int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to -@@ -314,7 +315,7 @@ static void libconfig_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yys - - YY_BUFFER_STATE libconfig_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); - YY_BUFFER_STATE libconfig_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); --YY_BUFFER_STATE libconfig_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); -+YY_BUFFER_STATE libconfig_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); - - void *libconfig_yyalloc (yy_size_t ,yyscan_t yyscanner ); - void *libconfig_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); -@@ -344,7 +345,7 @@ void libconfig_yyfree (void * ,yyscan_t yyscanner ); - - #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - --#define libconfig_yywrap(yyscanner) 1 -+#define libconfig_yywrap(n) 1 - #define YY_SKIP_YYWRAP - - typedef unsigned char YY_CHAR; -@@ -368,8 +369,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); - *yy_cp = '\0'; \ - yyg->yy_c_buf_p = yy_cp; - --#define YY_NUM_RULES 42 --#define YY_END_OF_BUFFER 43 -+#define YY_NUM_RULES 47 -+#define YY_END_OF_BUFFER 48 - /* This struct is not used in this scanner, - but its presence is necessary. */ - struct yy_trans_info -@@ -377,20 +378,21 @@ struct yy_trans_info - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; --static yyconst flex_int16_t yy_accept[103] = -+static yyconst flex_int16_t yy_accept[117] = - { 0, -- 0, 0, 0, 0, 0, 0, 0, 0, 43, 41, -- 22, 21, 21, 5, 41, 37, 38, 29, 41, 24, -- 30, 41, 31, 31, 23, 39, 29, 29, 35, 36, -- 25, 26, 22, 41, 3, 4, 3, 6, 15, 14, -- 17, 20, 42, 22, 0, 40, 29, 30, 31, 30, -- 0, 1, 0, 30, 0, 32, 0, 29, 29, 22, -- 0, 0, 2, 6, 12, 0, 11, 10, 7, 8, -- 9, 17, 19, 18, 0, 30, 30, 0, 0, 30, -- 32, 33, 29, 29, 0, 0, 0, 30, 34, 29, -- 27, 0, 13, 34, 28, 0, 0, 0, 0, 0, -- -- 16, 0 -+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 48, 46, 27, 26, 26, 5, 46, 42, 43, 34, -+ 46, 29, 35, 46, 36, 36, 28, 44, 34, 34, -+ 40, 41, 30, 31, 27, 46, 3, 4, 3, 6, -+ 15, 14, 17, 20, 47, 22, 25, 47, 27, 0, -+ 45, 34, 35, 36, 35, 0, 1, 0, 35, 0, -+ 37, 0, 34, 34, 27, 0, 0, 2, 6, 12, -+ 0, 11, 10, 7, 8, 9, 17, 19, 18, 22, -+ 24, 23, 0, 35, 35, 0, 0, 35, 37, 38, -+ 34, 34, 0, 0, 0, 35, 39, 34, 32, 0, -+ -+ 13, 39, 33, 0, 0, 0, 0, 0, 0, 16, -+ 0, 0, 0, 0, 21, 0 - } ; - - static yyconst flex_int32_t yy_ec[256] = -@@ -434,110 +436,116 @@ static yyconst flex_int32_t yy_meta[49] = - 3, 3, 3, 3, 3, 3, 1, 1 - } ; - --static yyconst flex_int16_t yy_base[113] = -+static yyconst flex_int16_t yy_base[129] = - { 0, -- 0, 47, 47, 48, 46, 47, 48, 49, 203, 204, -- 200, 204, 204, 204, 198, 204, 204, 0, 45, 204, -- 47, 50, 60, 74, 204, 204, 178, 28, 204, 204, -- 204, 204, 64, 158, 204, 204, 183, 0, 204, 63, -- 0, 204, 83, 195, 193, 204, 0, 88, 102, 98, -- 62, 204, 190, 104, 119, 162, 0, 67, 65, 121, -- 127, 124, 204, 0, 204, 0, 204, 204, 204, 204, -- 204, 0, 204, 204, 108, 117, 122, 134, 132, 136, -- 204, 139, 136, 116, 126, 0, 140, 142, 135, 130, -- 0, 102, 204, 204, 0, 85, 72, 63, 98, 158, -- -- 204, 204, 169, 173, 177, 181, 183, 187, 191, 89, -- 66, 63 -+ 0, 47, 47, 48, 46, 47, 48, 49, 50, 53, -+ 223, 224, 220, 224, 224, 224, 218, 224, 224, 0, -+ 46, 224, 49, 54, 62, 76, 224, 224, 198, 33, -+ 224, 224, 224, 224, 70, 178, 224, 224, 203, 0, -+ 224, 64, 0, 224, 61, 0, 224, 65, 215, 213, -+ 224, 0, 89, 100, 94, 109, 224, 212, 113, 125, -+ 187, 0, 70, 88, 100, 172, 169, 224, 0, 224, -+ 0, 224, 224, 224, 224, 224, 0, 224, 224, 0, -+ 224, 224, 58, 115, 127, 137, 129, 139, 224, 184, -+ 181, 123, 172, 0, 141, 143, 181, 125, 0, 165, -+ -+ 224, 224, 0, 160, 167, 165, 133, 159, 163, 224, -+ 156, 149, 166, 161, 224, 224, 169, 173, 177, 181, -+ 185, 187, 191, 195, 199, 136, 119, 81 - } ; - --static yyconst flex_int16_t yy_def[113] = -+static yyconst flex_int16_t yy_def[129] = - { 0, -- 102, 1, 103, 103, 104, 104, 105, 105, 102, 102, -- 102, 102, 102, 102, 106, 102, 102, 107, 102, 102, -- 102, 102, 102, 102, 102, 102, 107, 107, 102, 102, -- 102, 102, 102, 102, 102, 102, 102, 108, 102, 102, -- 109, 102, 102, 102, 106, 102, 107, 102, 102, 102, -- 102, 102, 106, 102, 102, 102, 110, 107, 107, 102, -- 102, 102, 102, 108, 102, 111, 102, 102, 102, 102, -- 102, 109, 102, 102, 102, 102, 102, 102, 102, 102, -- 102, 110, 107, 107, 102, 112, 102, 102, 102, 107, -- 107, 102, 102, 102, 107, 102, 102, 102, 102, 102, -- -- 102, 0, 102, 102, 102, 102, 102, 102, 102, 102, -- 102, 102 -+ 116, 1, 117, 117, 118, 118, 119, 119, 120, 120, -+ 116, 116, 116, 116, 116, 116, 121, 116, 116, 122, -+ 116, 116, 116, 116, 116, 116, 116, 116, 122, 122, -+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 123, -+ 116, 116, 124, 116, 116, 125, 116, 116, 116, 121, -+ 116, 122, 116, 116, 116, 116, 116, 121, 116, 116, -+ 116, 126, 122, 122, 116, 116, 116, 116, 123, 116, -+ 127, 116, 116, 116, 116, 116, 124, 116, 116, 125, -+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 126, -+ 122, 122, 116, 128, 116, 116, 116, 122, 122, 116, -+ -+ 116, 116, 122, 116, 116, 116, 116, 116, 116, 116, -+ 116, 116, 116, 116, 116, 0, 116, 116, 116, 116, -+ 116, 116, 116, 116, 116, 116, 116, 116 - } ; - --static yyconst flex_int16_t yy_nxt[253] = -+static yyconst flex_int16_t yy_nxt[273] = - { 0, -- 10, 11, 12, 13, 13, 14, 15, 16, 17, 18, -- 19, 20, 19, 21, 22, 23, 24, 25, 26, 25, -- 10, 18, 18, 18, 27, 18, 18, 18, 18, 28, -- 18, 18, 29, 10, 30, 10, 18, 18, 18, 27, -- 18, 18, 18, 18, 28, 18, 31, 32, 33, 36, -- 36, 39, 39, 42, 42, 59, 37, 37, 48, 52, -- 49, 49, 50, 50, 53, 60, 93, 34, 65, 86, -- 51, 59, 75, 54, 75, 49, 49, 76, 76, 40, -- 40, 43, 43, 55, 61, 51, 56, 54, 73, 49, -- 49, 57, 82, 83, 66, 84, 67, 55, 55, 100, -- -- 56, 99, 68, 50, 50, 69, 70, 71, 83, 98, -- 84, 51, 55, 50, 50, 54, 74, 49, 49, 77, -- 77, 51, 60, 76, 76, 55, 51, 78, 56, 79, -- 97, 79, 76, 76, 80, 80, 51, 77, 77, 91, -- 55, 61, 78, 96, 87, 78, 87, 80, 80, 88, -- 88, 80, 80, 95, 91, 88, 88, 88, 88, 100, -- 78, 94, 92, 101, 90, 89, 85, 62, 95, 35, -- 35, 35, 35, 38, 38, 38, 38, 41, 41, 41, -- 41, 45, 45, 45, 45, 47, 47, 64, 81, 64, -- 64, 72, 46, 72, 72, 46, 44, 63, 62, 58, -- -- 46, 44, 102, 9, 102, 102, 102, 102, 102, 102, -- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, -- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, -- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, -- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, -- 102, 102 -+ 12, 13, 14, 15, 15, 16, 17, 18, 19, 20, -+ 21, 22, 21, 23, 24, 25, 26, 27, 28, 27, -+ 12, 20, 20, 20, 29, 20, 20, 20, 20, 30, -+ 20, 20, 31, 12, 32, 12, 20, 20, 20, 29, -+ 20, 20, 20, 20, 30, 20, 33, 34, 35, 38, -+ 38, 41, 41, 44, 44, 47, 39, 39, 47, 53, -+ 64, 54, 54, 57, 55, 55, 78, 36, 58, 70, -+ 81, 65, 56, 84, 84, 59, 64, 54, 54, 42, -+ 42, 45, 45, 48, 101, 60, 48, 56, 61, 59, -+ 66, 54, 54, 62, 79, 71, 91, 72, 82, 60, -+ -+ 60, 65, 61, 73, 55, 55, 74, 75, 76, 55, -+ 55, 91, 56, 59, 60, 54, 54, 56, 92, 83, -+ 66, 83, 94, 60, 84, 84, 61, 56, 85, 85, -+ 84, 84, 56, 92, 108, 87, 86, 87, 60, 90, -+ 88, 88, 85, 85, 88, 88, 99, 95, 103, 95, -+ 86, 86, 96, 96, 88, 88, 96, 96, 96, 96, -+ 108, 99, 114, 103, 110, 86, 115, 114, 109, 37, -+ 37, 37, 37, 40, 40, 40, 40, 43, 43, 43, -+ 43, 46, 46, 46, 46, 50, 50, 50, 50, 52, -+ 52, 69, 113, 69, 69, 77, 112, 77, 77, 80, -+ -+ 111, 80, 80, 107, 106, 105, 104, 102, 100, 98, -+ 97, 93, 67, 89, 51, 51, 49, 68, 67, 63, -+ 51, 49, 116, 11, 116, 116, 116, 116, 116, 116, -+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, -+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, -+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, -+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, -+ 116, 116 - } ; - --static yyconst flex_int16_t yy_chk[253] = -+static yyconst flex_int16_t yy_chk[273] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, -- 4, 5, 6, 7, 8, 28, 3, 4, 19, 22, -- 19, 19, 21, 21, 22, 33, 112, 2, 40, 111, -- 21, 28, 51, 23, 51, 23, 23, 51, 51, 5, -- 6, 7, 8, 23, 33, 21, 23, 24, 43, 24, -- 24, 23, 110, 58, 40, 59, 40, 24, 23, 99, -- -- 24, 98, 40, 48, 48, 40, 40, 40, 58, 97, -- 59, 48, 24, 50, 50, 49, 43, 49, 49, 54, -- 54, 50, 60, 75, 75, 49, 48, 54, 49, 55, -- 96, 55, 76, 76, 55, 55, 50, 77, 77, 84, -- 49, 60, 54, 92, 78, 77, 78, 79, 79, 78, -- 78, 80, 80, 90, 84, 87, 87, 88, 88, 100, -- 77, 89, 85, 100, 83, 82, 62, 61, 90, 103, -- 103, 103, 103, 104, 104, 104, 104, 105, 105, 105, -- 105, 106, 106, 106, 106, 107, 107, 108, 56, 108, -- 108, 109, 53, 109, 109, 45, 44, 37, 34, 27, -- -- 15, 11, 9, 102, 102, 102, 102, 102, 102, 102, -- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, -- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, -- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, -- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, -- 102, 102 -+ 4, 5, 6, 7, 8, 9, 3, 4, 10, 21, -+ 30, 21, 21, 24, 23, 23, 45, 2, 24, 42, -+ 48, 35, 23, 83, 83, 25, 30, 25, 25, 5, -+ 6, 7, 8, 9, 128, 25, 10, 23, 25, 26, -+ 35, 26, 26, 25, 45, 42, 63, 42, 48, 26, -+ -+ 25, 65, 26, 42, 53, 53, 42, 42, 42, 55, -+ 55, 63, 53, 54, 26, 54, 54, 55, 64, 56, -+ 65, 56, 127, 54, 56, 56, 54, 53, 59, 59, -+ 84, 84, 55, 64, 107, 60, 59, 60, 54, 126, -+ 60, 60, 85, 85, 87, 87, 92, 86, 98, 86, -+ 85, 59, 86, 86, 88, 88, 95, 95, 96, 96, -+ 108, 92, 114, 98, 108, 85, 114, 113, 107, 117, -+ 117, 117, 117, 118, 118, 118, 118, 119, 119, 119, -+ 119, 120, 120, 120, 120, 121, 121, 121, 121, 122, -+ 122, 123, 112, 123, 123, 124, 111, 124, 124, 125, -+ -+ 109, 125, 125, 106, 105, 104, 100, 97, 93, 91, -+ 90, 67, 66, 61, 58, 50, 49, 39, 36, 29, -+ 17, 13, 11, 116, 116, 116, 116, 116, 116, 116, -+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, -+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, -+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, -+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, -+ 116, 116 - } ; - - /* Table of booleans, true if rule could match eol. */ --static yyconst flex_int32_t yy_rule_can_match_eol[43] = -+static yyconst flex_int32_t yy_rule_can_match_eol[48] = - { 0, - 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, }; -+ 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, }; - - /* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. -@@ -550,7 +558,7 @@ static yyconst flex_int32_t yy_rule_can_match_eol[43] = - /* -*- mode: C -*- */ - /* -------------------------------------------------------------------------- - libconfig - A library for processing structured configuration files -- Copyright (C) 2005-2014 Mark A Lindner -+ Copyright (C) 2005-2015 Mark A Lindner - - This file is part of libconfig. - -@@ -577,9 +585,11 @@ static yyconst flex_int32_t yy_rule_can_match_eol[43] = - #endif - - #include -+#include - #include - #include - #include -+#include - #include "parsectx.h" - #include "scanctx.h" - #include "grammar.h" -@@ -621,13 +631,30 @@ static unsigned long long fromhex(const char *s) - #endif /* __MINGW32__ */ - } - -+static int filter_dotfiles(const struct dirent *de) -+{ -+ const char *fname = de->d_name; -+ -+#ifdef _DIRENT_HAVE_D_TYPE -+ /* filter out non-files and non-symlinks */ -+ if((de->d_type != DT_REG) && (de->d_type != DT_LNK) && (de->d_type != DT_UNKNOWN)) -+ return 0; -+#endif -+ -+ return (fname /* != NULL */ -+ && ('\0' != fname[0]) /* can't really happen */ -+ && ('.' != fname[0]) -+ ) ? 1 : 0 ; -+} - --#line 626 "scanner.c" -+ -+#line 652 "scanner.c" - - #define INITIAL 0 - #define COMMENT 1 - #define STRING 2 --#define INCLUDE 3 -+#define INCLUDE_F 3 -+#define INCLUDE_D 4 - - #ifndef YY_NO_UNISTD_H - /* Special case for "unistd.h", since it is non-ANSI. We include it way -@@ -652,8 +679,8 @@ struct yyguts_t - size_t yy_buffer_stack_max; /**< capacity of stack. */ - YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ - char yy_hold_char; -- yy_size_t yy_n_chars; -- yy_size_t yyleng_r; -+ int yy_n_chars; -+ int yyleng_r; - char *yy_c_buf_p; - int yy_init; - int yy_start; -@@ -706,7 +733,7 @@ FILE *libconfig_yyget_out (yyscan_t yyscanner ); - - void libconfig_yyset_out (FILE * out_str ,yyscan_t yyscanner ); - --yy_size_t libconfig_yyget_leng (yyscan_t yyscanner ); -+int libconfig_yyget_leng (yyscan_t yyscanner ); - - char *libconfig_yyget_text (yyscan_t yyscanner ); - -@@ -714,10 +741,6 @@ int libconfig_yyget_lineno (yyscan_t yyscanner ); - - void libconfig_yyset_lineno (int line_number ,yyscan_t yyscanner ); - --int libconfig_yyget_column (yyscan_t yyscanner ); -- --void libconfig_yyset_column (int column_no ,yyscan_t yyscanner ); -- - YYSTYPE * libconfig_yyget_lval (yyscan_t yyscanner ); - - void libconfig_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); -@@ -754,7 +777,12 @@ static int input (yyscan_t yyscanner ); - - /* Amount of stuff to slurp up with each read. */ - #ifndef YY_READ_BUF_SIZE -+#ifdef __ia64__ -+/* On IA-64, the buffer size is 16k, not 8k */ -+#define YY_READ_BUF_SIZE 16384 -+#else - #define YY_READ_BUF_SIZE 8192 -+#endif /* __ia64__ */ - #endif - - /* Copy whatever the last rule matched to the standard output. */ -@@ -861,6 +889,11 @@ YY_DECL - register int yy_act; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - -+#line 121 "scanner.l" -+ -+ -+#line 896 "scanner.c" -+ - yylval = yylval_param; - - if ( !yyg->yy_init ) -@@ -889,12 +922,6 @@ YY_DECL - libconfig_yy_load_buffer_state(yyscanner ); - } - -- { --#line 102 "scanner.l" -- -- --#line 897 "scanner.c" -- - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yyg->yy_c_buf_p; -@@ -912,7 +939,7 @@ YY_DECL - yy_match: - do - { -- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; -+ register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; -@@ -921,13 +948,13 @@ yy_match: - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; -- if ( yy_current_state >= 103 ) -+ if ( yy_current_state >= 117 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } -- while ( yy_current_state != 102 ); -+ while ( yy_current_state != 116 ); - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - -@@ -938,7 +965,7 @@ yy_find_action: - - if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) - { -- yy_size_t yyl; -+ int yyl; - for ( yyl = 0; yyl < yyleng; ++yyl ) - if ( yytext[yyl] == '\n' ) - -@@ -961,69 +988,69 @@ do_action: /* This label is used only to access EOF actions. */ - - case 1: - YY_RULE_SETUP --#line 104 "scanner.l" -+#line 123 "scanner.l" - { BEGIN COMMENT; } - YY_BREAK - case 2: - YY_RULE_SETUP --#line 105 "scanner.l" -+#line 124 "scanner.l" - { BEGIN INITIAL; } - YY_BREAK - case 3: - YY_RULE_SETUP --#line 106 "scanner.l" -+#line 125 "scanner.l" - { /* ignore */ } - YY_BREAK - case 4: - /* rule 4 can match eol */ - YY_RULE_SETUP --#line 107 "scanner.l" -+#line 126 "scanner.l" - { /* ignore */ } - YY_BREAK - case 5: - YY_RULE_SETUP --#line 109 "scanner.l" -+#line 128 "scanner.l" - { BEGIN STRING; } - YY_BREAK - case 6: - /* rule 6 can match eol */ - YY_RULE_SETUP --#line 110 "scanner.l" -+#line 129 "scanner.l" - { scanctx_append_string(yyextra, yytext); } - YY_BREAK - case 7: - YY_RULE_SETUP --#line 111 "scanner.l" -+#line 130 "scanner.l" - { scanctx_append_string(yyextra, "\n"); } - YY_BREAK - case 8: - YY_RULE_SETUP --#line 112 "scanner.l" -+#line 131 "scanner.l" - { scanctx_append_string(yyextra, "\r"); } - YY_BREAK - case 9: - YY_RULE_SETUP --#line 113 "scanner.l" -+#line 132 "scanner.l" - { scanctx_append_string(yyextra, "\t"); } - YY_BREAK - case 10: - YY_RULE_SETUP --#line 114 "scanner.l" -+#line 133 "scanner.l" - { scanctx_append_string(yyextra, "\f"); } - YY_BREAK - case 11: - YY_RULE_SETUP --#line 115 "scanner.l" -+#line 134 "scanner.l" - { scanctx_append_string(yyextra, "\\"); } - YY_BREAK - case 12: - YY_RULE_SETUP --#line 116 "scanner.l" -+#line 135 "scanner.l" - { scanctx_append_string(yyextra, "\""); } - YY_BREAK - case 13: - YY_RULE_SETUP --#line 117 "scanner.l" -+#line 136 "scanner.l" - { - char c[2] = { (char)(strtol(yytext + 2, NULL, 16) & 0xFF), - 0 }; -@@ -1032,12 +1059,12 @@ YY_RULE_SETUP - YY_BREAK - case 14: - YY_RULE_SETUP --#line 122 "scanner.l" -+#line 141 "scanner.l" - { scanctx_append_string(yyextra, "\\"); } - YY_BREAK - case 15: - YY_RULE_SETUP --#line 123 "scanner.l" -+#line 142 "scanner.l" - { - yylval->sval = scanctx_take_string(yyextra); - BEGIN INITIAL; -@@ -1046,198 +1073,304 @@ YY_RULE_SETUP - YY_BREAK - case 16: - YY_RULE_SETUP --#line 129 "scanner.l" --{ BEGIN INCLUDE; } -+#line 148 "scanner.l" -+{ BEGIN INCLUDE_F; } - YY_BREAK - case 17: - /* rule 17 can match eol */ - YY_RULE_SETUP --#line 130 "scanner.l" -+#line 149 "scanner.l" - { scanctx_append_string(yyextra, yytext); } - YY_BREAK - case 18: - YY_RULE_SETUP --#line 131 "scanner.l" -+#line 150 "scanner.l" - { scanctx_append_string(yyextra, "\\"); } - YY_BREAK - case 19: - YY_RULE_SETUP --#line 132 "scanner.l" -+#line 151 "scanner.l" - { scanctx_append_string(yyextra, "\""); } - YY_BREAK - case 20: - YY_RULE_SETUP --#line 133 "scanner.l" -+#line 152 "scanner.l" - { -- const char *error; -- FILE *fp = scanctx_push_include(yyextra, -- (void *)YY_CURRENT_BUFFER, -- &error); -- if(fp) -- { -- yyin = fp; -- libconfig_yy_switch_to_buffer(libconfig_yy_create_buffer(yyin,YY_BUF_SIZE,yyscanner),yyscanner); -- } -- else -- { -- yyextra->config->error_text = error; -- yyextra->config->error_file = scanctx_current_filename( -- yyextra); -- yyextra->config->error_line = libconfig_yyget_lineno( -- yyscanner); -- return TOK_ERROR; -- } -- BEGIN INITIAL; -- } -+ const char *error; -+ FILE *fp = scanctx_push_include(yyextra, -+ (void *)YY_CURRENT_BUFFER, -+ scanctx_getpath(yyextra), -+ &error); -+ if(fp) -+ { -+ yyin = fp; -+ libconfig_yy_switch_to_buffer(libconfig_yy_create_buffer(yyin,YY_BUF_SIZE,yyscanner),yyscanner -+ ); -+ } -+ else -+ { -+ yyextra->config->error_text = error; -+ yyextra->config->error_file = scanctx_current_filename( -+ yyextra); -+ yyextra->config->error_line = libconfig_yyget_lineno(yyscanner); -+ return TOK_ERROR; -+ } -+ BEGIN INITIAL; -+ } - YY_BREAK - case 21: --/* rule 21 can match eol */ - YY_RULE_SETUP --#line 157 "scanner.l" --{ /* ignore */ } -+#line 177 "scanner.l" -+{ BEGIN INCLUDE_D; } - YY_BREAK - case 22: -+/* rule 22 can match eol */ - YY_RULE_SETUP --#line 158 "scanner.l" --{ /* ignore */ } -+#line 178 "scanner.l" -+{ scanctx_append_string(yyextra, yytext); } - YY_BREAK - case 23: - YY_RULE_SETUP --#line 160 "scanner.l" --{ return(TOK_EQUALS); } -+#line 179 "scanner.l" -+{ scanctx_append_string(yyextra, "\\"); } - YY_BREAK - case 24: - YY_RULE_SETUP --#line 161 "scanner.l" --{ return(TOK_COMMA); } -+#line 180 "scanner.l" -+{ scanctx_append_string(yyextra, "\""); } - YY_BREAK - case 25: - YY_RULE_SETUP --#line 162 "scanner.l" --{ return(TOK_GROUP_START); } -+#line 181 "scanner.l" -+{ -+ const char *error; -+ const char* basedir; -+ FILE *fp = NULL; -+ -+ basedir = scanctx_getpath(yyextra); -+ if(scanctx_dirscan(yyextra, basedir, filter_dotfiles, NULL) < 0) -+ { -+ if(basedir) -+ free((void*)basedir); -+ return TOK_ERROR; -+ } -+ -+ if(scanctx_inloop(yyextra)) -+ { -+ fp = scanctx_push_include(yyextra, -+ (void *)YY_CURRENT_BUFFER, -+ scanctx_filename(yyextra, NULL, scanctx_dirnext(yyextra)), -+ &error -+ ); -+ -+ if(fp) -+ { -+ yyin = fp; -+ libconfig_yy_switch_to_buffer(libconfig_yy_create_buffer(yyin,YY_BUF_SIZE,yyscanner),yyscanner -+ ); -+ } -+ else -+ { -+ yyextra->config->error_text = error; -+ yyextra->config->error_file = scanctx_current_filename(yyextra); -+ yyextra->config->error_line = libconfig_yyget_lineno(yyscanner); -+ } -+ } -+ else -+ scanctx_dirend(yyextra); /* avoid leaks */ -+ -+ BEGIN INITIAL; -+ } - YY_BREAK - case 26: -+/* rule 26 can match eol */ - YY_RULE_SETUP --#line 163 "scanner.l" --{ return(TOK_GROUP_END); } -+#line 223 "scanner.l" -+{ /* ignore */ } - YY_BREAK - case 27: - YY_RULE_SETUP --#line 164 "scanner.l" --{ yylval->ival = 1; return(TOK_BOOLEAN); } -+#line 224 "scanner.l" -+{ /* ignore */ } - YY_BREAK - case 28: - YY_RULE_SETUP --#line 165 "scanner.l" --{ yylval->ival = 0; return(TOK_BOOLEAN); } -+#line 226 "scanner.l" -+{ return(TOK_EQUALS); } - YY_BREAK - case 29: - YY_RULE_SETUP --#line 166 "scanner.l" --{ yylval->sval = yytext; return(TOK_NAME); } -+#line 227 "scanner.l" -+{ return(TOK_COMMA); } - YY_BREAK - case 30: - YY_RULE_SETUP --#line 167 "scanner.l" --{ yylval->fval = atof(yytext); return(TOK_FLOAT); } -+#line 228 "scanner.l" -+{ return(TOK_GROUP_START); } - YY_BREAK - case 31: - YY_RULE_SETUP --#line 168 "scanner.l" -+#line 229 "scanner.l" -+{ return(TOK_GROUP_END); } -+ YY_BREAK -+case 32: -+YY_RULE_SETUP -+#line 230 "scanner.l" -+{ yylval->ival = 1; return(TOK_BOOLEAN); } -+ YY_BREAK -+case 33: -+YY_RULE_SETUP -+#line 231 "scanner.l" -+{ yylval->ival = 0; return(TOK_BOOLEAN); } -+ YY_BREAK -+case 34: -+YY_RULE_SETUP -+#line 232 "scanner.l" -+{ yylval->sval = yytext; return(TOK_NAME); } -+ YY_BREAK -+case 35: -+YY_RULE_SETUP -+#line 233 "scanner.l" -+{ yylval->fval = atof(yytext); return(TOK_FLOAT); } -+ YY_BREAK -+case 36: -+YY_RULE_SETUP -+#line 234 "scanner.l" - { - long long llval; -- llval = atoll(yytext); -+ char *endptr; -+ int errsave = errno; -+ errno = 0; -+ llval = strtoll(yytext, &endptr, 0); /* base 10 or base 8 */ -+ if(*endptr || errno) -+ { -+ errno = 0; -+ return(TOK_ERROR); /* some error occured ... */ -+ } -+ errno = errsave; -+ if((*yytext == '0') && (*(yytext+1) != '\0')) -+ { /* it's octal... so INT we go */ -+ yylval->ival = (int)(llval); -+ return(TOK_INTEGER); -+ } -+ - if((llval < INT_MIN) || (llval > INT_MAX)) - { -- yylval->llval = llval; -- return(TOK_INTEGER64); -+ yylval->llval = llval; -+ return(TOK_INTEGER64); - } - else - { -- yylval->ival = llval; -- return(TOK_INTEGER); -+ yylval->ival = llval; -+ return(TOK_INTEGER); - } - } - YY_BREAK --case 32: -+case 37: - YY_RULE_SETUP --#line 182 "scanner.l" -+#line 263 "scanner.l" - { yylval->llval = atoll(yytext); return(TOK_INTEGER64); } - YY_BREAK --case 33: -+case 38: - YY_RULE_SETUP --#line 183 "scanner.l" -+#line 264 "scanner.l" - { - yylval->ival = strtoul(yytext, NULL, 16); - return(TOK_HEX); - } - YY_BREAK --case 34: -+case 39: - YY_RULE_SETUP --#line 187 "scanner.l" -+#line 268 "scanner.l" - { yylval->llval = fromhex(yytext); return(TOK_HEX64); } - YY_BREAK --case 35: -+case 40: - YY_RULE_SETUP --#line 188 "scanner.l" -+#line 269 "scanner.l" - { return(TOK_ARRAY_START); } - YY_BREAK --case 36: -+case 41: - YY_RULE_SETUP --#line 189 "scanner.l" -+#line 270 "scanner.l" - { return(TOK_ARRAY_END); } - YY_BREAK --case 37: -+case 42: - YY_RULE_SETUP --#line 190 "scanner.l" -+#line 271 "scanner.l" - { return(TOK_LIST_START); } - YY_BREAK --case 38: -+case 43: - YY_RULE_SETUP --#line 191 "scanner.l" -+#line 272 "scanner.l" - { return(TOK_LIST_END); } - YY_BREAK --case 39: -+case 44: - YY_RULE_SETUP --#line 192 "scanner.l" -+#line 273 "scanner.l" - { return(TOK_SEMICOLON); } - YY_BREAK --case 40: -+case 45: - *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ - yyg->yy_c_buf_p = yy_cp -= 1; - YY_DO_BEFORE_ACTION; /* set up yytext again */ - YY_RULE_SETUP --#line 193 "scanner.l" -+#line 274 "scanner.l" - { /* ignore */ } - YY_BREAK --case 41: -+case 46: - YY_RULE_SETUP --#line 194 "scanner.l" -+#line 275 "scanner.l" - { return(TOK_GARBAGE); } - YY_BREAK - case YY_STATE_EOF(INITIAL): - case YY_STATE_EOF(COMMENT): - case YY_STATE_EOF(STRING): --case YY_STATE_EOF(INCLUDE): --#line 196 "scanner.l" -+case YY_STATE_EOF(INCLUDE_F): -+case YY_STATE_EOF(INCLUDE_D): -+#line 277 "scanner.l" - { -- YY_BUFFER_STATE buf = (YY_BUFFER_STATE)scanctx_pop_include( -- yyextra); -- if(buf) -- { -- libconfig_yy_delete_buffer(YY_CURRENT_BUFFER,yyscanner); -- libconfig_yy_switch_to_buffer(buf,yyscanner); -- } -- else -- yyterminate(); -- } -+ const char* error; -+ FILE *fp; -+ YY_BUFFER_STATE buf = (YY_BUFFER_STATE)scanctx_pop_include(yyextra); -+ if(buf) -+ { -+ libconfig_yy_delete_buffer(YY_CURRENT_BUFFER,yyscanner); -+ libconfig_yy_switch_to_buffer(buf,yyscanner); -+ } -+ else /* if no more buffers, we are done */ -+ yyterminate(); -+ -+ if(scanctx_inloop(yyextra)) -+ { -+ /* gotta keep looping.... */ -+ fp = scanctx_push_include(yyextra, -+ (void *)YY_CURRENT_BUFFER, -+ scanctx_filename(yyextra, NULL, scanctx_dirnext(yyextra)), -+ &error -+ ); -+ if(fp) -+ { -+ yyin = fp; -+ libconfig_yy_switch_to_buffer(libconfig_yy_create_buffer(yyin,YY_BUF_SIZE,yyscanner),yyscanner -+ ); -+ } -+ else -+ { -+ yyextra->config->error_text = error; -+ yyextra->config->error_file = scanctx_current_filename(yyextra); -+ yyextra->config->error_line = libconfig_yyget_lineno(yyscanner); -+ } -+ } -+ else /* not on loop, or just finished */ -+ scanctx_dirend(yyextra); -+ } - YY_BREAK --case 42: -+case 47: - YY_RULE_SETUP --#line 207 "scanner.l" -+#line 315 "scanner.l" - ECHO; - YY_BREAK --#line 1241 "scanner.c" -+#line 1374 "scanner.c" - - case YY_END_OF_BUFFER: - { -@@ -1367,7 +1500,6 @@ ECHO; - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -- } /* end of user's declarations */ - } /* end of libconfig_yylex */ - - /* yy_get_next_buffer - try to read in a new buffer -@@ -1424,21 +1556,21 @@ static int yy_get_next_buffer (yyscan_t yyscanner) - - else - { -- yy_size_t num_to_read = -+ int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ -- YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; -+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) (yyg->yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { -- yy_size_t new_size = b->yy_buf_size * 2; -+ int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; -@@ -1469,7 +1601,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), -- yyg->yy_n_chars, num_to_read ); -+ yyg->yy_n_chars, (size_t) num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } -@@ -1532,7 +1664,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; -- if ( yy_current_state >= 103 ) -+ if ( yy_current_state >= 117 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; -@@ -1561,13 +1693,12 @@ static int yy_get_next_buffer (yyscan_t yyscanner) - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; -- if ( yy_current_state >= 103 ) -+ if ( yy_current_state >= 117 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; -- yy_is_jam = (yy_current_state == 102); -+ yy_is_jam = (yy_current_state == 116); - -- (void)yyg; - return yy_is_jam ? 0 : yy_current_state; - } - -@@ -1596,7 +1727,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) - - else - { /* need more input */ -- yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; -+ int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; - ++yyg->yy_c_buf_p; - - switch ( yy_get_next_buffer( yyscanner ) ) -@@ -1884,7 +2015,7 @@ void libconfig_yypop_buffer_state (yyscan_t yyscanner) - */ - static void libconfig_yyensure_buffer_stack (yyscan_t yyscanner) - { -- yy_size_t num_to_alloc; -+ int num_to_alloc; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (!yyg->yy_buffer_stack) { -@@ -1982,12 +2113,12 @@ YY_BUFFER_STATE libconfig_yy_scan_string (yyconst char * yystr , yyscan_t yyscan - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ --YY_BUFFER_STATE libconfig_yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) -+YY_BUFFER_STATE libconfig_yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; -- yy_size_t i; -+ int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; -@@ -2097,7 +2228,7 @@ FILE *libconfig_yyget_out (yyscan_t yyscanner) - /** Get the length of the current token. - * @param yyscanner The scanner object. - */ --yy_size_t libconfig_yyget_leng (yyscan_t yyscanner) -+int libconfig_yyget_leng (yyscan_t yyscanner) - { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyleng; -@@ -2133,7 +2264,7 @@ void libconfig_yyset_lineno (int line_number , yyscan_t yyscanner) - - /* lineno is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) -- YY_FATAL_ERROR( "libconfig_yyset_lineno called with no buffer" ); -+ yy_fatal_error( "libconfig_yyset_lineno called with no buffer" , yyscanner); - - yylineno = line_number; - } -@@ -2148,7 +2279,7 @@ void libconfig_yyset_column (int column_no , yyscan_t yyscanner) - - /* column is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) -- YY_FATAL_ERROR( "libconfig_yyset_column called with no buffer" ); -+ yy_fatal_error( "libconfig_yyset_column called with no buffer" , yyscanner); - - yycolumn = column_no; - } -@@ -2372,4 +2503,4 @@ void libconfig_yyfree (void * ptr , yyscan_t yyscanner) - - #define YYTABLES_NAME "yytables" - --#line 207 "scanner.l" -+#line 315 "scanner.l" diff --git a/ports/libconfig/portfile.cmake b/ports/libconfig/portfile.cmake index 73028de7c..2862a8e95 100644 --- a/ports/libconfig/portfile.cmake +++ b/ports/libconfig/portfile.cmake @@ -3,20 +3,12 @@ include(vcpkg_common_functions) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO hyperrealm/libconfig - REF v1.6 - SHA512 6222110851970fda11d21e73bc322be95fb1ce62c513e2f4cc7875d7b32d1d211860971692db679edf8ac46151033a132fc669bd16590fec56360ef3a6e584f8 + REF v1.7.1 + SHA512 b58b468e9e2d5175fbde1ad9765c6604dc9b3f3944613a88404a45d0d232e7d79a47321bf3c06b97cb46a2104b4313fad5c7f8944149f550b7af51ad523e775e HEAD_REF master ) -vcpkg_apply_patches( - SOURCE_PATH ${SOURCE_PATH} - PATCHES - "${CMAKE_CURRENT_LIST_DIR}/fix-scanner-source-msvc-patch.patch" - "${CMAKE_CURRENT_LIST_DIR}/fix-scanner-header-msvc-patch.patch" -) - file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) -file(COPY ${CMAKE_CURRENT_LIST_DIR}/scandir.c DESTINATION ${SOURCE_PATH}/lib/win32) vcpkg_configure_cmake( diff --git a/ports/libconfig/scandir.c b/ports/libconfig/scandir.c deleted file mode 100644 index cab75716e..000000000 --- a/ports/libconfig/scandir.c +++ /dev/null @@ -1,112 +0,0 @@ -// "$Id: scandir.c 1339 2006-04-03 22:47:29Z spitzak $" -// -// Copyright 1998-2006 by Bill Spitzak and others. -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Library General Public -// License as published by the Free Software Foundation; either -// version 2 of the License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Library General Public License for more details. -// -// You should have received a copy of the GNU Library General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA. -// -// Please report all bugs and problems to "fltk-bugs@fltk.org". - -// Emulation of posix scandir() call -// This source file is #include'd by scandir.c -// THIS IS A C FILE! DO NOT CHANGE TO C++!!! -// See @http://www.fltk.org/strfiles/1779/scandir.c - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef FILENAME_MAX -#define FILENAME_MAX 2048 -#endif - -/** - * The scandir() function reads the directory dirname and builds an array of - * pointers to directory entries. It returns the number of entries in the array. - * A pointer to the array of directory entries is stored in the location - * referenced by namelist. - */ -int libconfig_scandir(const char *dirname, struct dirent ***namelist, - int (*select)(struct dirent *), - int (*compar)(struct dirent **, struct dirent **)) { - char *d; - WIN32_FIND_DATA find; - HANDLE h; - int nDir = 0, NDir = 0; - struct dirent **dir = 0, *selectDir; - unsigned long ret; - char findIn[MAX_PATH*4]; - - //utf8tomb(dirname, strlen(dirname), findIn, _MAX_PATH); - strcpy(findIn, dirname); - - d = findIn+strlen(findIn); - if (d==findIn) *d++ = '.'; - if (*(d-1)!='/' && *(d-1)!='\\') *d++ = '/'; - *d++ = '*'; - *d++ = 0; - - if ((h=FindFirstFile(findIn, &find))==INVALID_HANDLE_VALUE) { - ret = GetLastError(); - if (ret != ERROR_NO_MORE_FILES) { - // TODO: return some error code - } - *namelist = dir; - return nDir; - } - do { - selectDir=(struct dirent*)malloc(sizeof(struct dirent)); - strcpy(selectDir->d_name, find.cFileName); - if (!select || (*select)(selectDir)) { - if (nDir==NDir) { - struct dirent **tempDir = (struct dirent **)calloc(sizeof(struct dirent*), NDir+33); - if (NDir) memcpy(tempDir, dir, sizeof(struct dirent*)*NDir); - if (dir) free(dir); - dir = tempDir; - NDir += 32; - } - dir[nDir] = selectDir; - nDir++; - dir[nDir] = 0; - } else { - free(selectDir); - } - } while (FindNextFile(h, &find)); - ret = GetLastError(); - if (ret != ERROR_NO_MORE_FILES) { - // TODO: return some error code - } - FindClose(h); - - if (compar) qsort (dir, nDir, sizeof(*dir), - (int(*)(const void*, const void*))compar); - - *namelist = dir; - return nDir; -} - -#ifdef __cplusplus -} -#endif - -// -// End of "$Id: scandir.c 1339 2006-04-03 22:47:29Z spitzak $". -//