diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2017-07-10 15:11:06 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-07-10 15:11:06 -0700 |
| commit | a4f50bed86429b0d7be6886352a43c21b45d9bef (patch) | |
| tree | cfa8714e819aef013eb4a11f65508137ea1484ea | |
| parent | 0d7961a8509f34a6d43697b701657989ba08fb67 (diff) | |
| parent | ce69ed555265ec85fd4c24a44600354b94930758 (diff) | |
| download | vcpkg-a4f50bed86429b0d7be6886352a43c21b45d9bef.tar.gz vcpkg-a4f50bed86429b0d7be6886352a43c21b45d9bef.zip | |
Merge pull request #1366 from atkawa7/libconfig
[libconfig] init #1343
| -rw-r--r-- | ports/libconfig/CMakeLists.txt | 51 | ||||
| -rw-r--r-- | ports/libconfig/CONTROL | 4 | ||||
| -rw-r--r-- | ports/libconfig/fix-scanner-header-msvc-patch.patch | 108 | ||||
| -rw-r--r-- | ports/libconfig/fix-scanner-source-msvc-patch.patch | 1122 | ||||
| -rw-r--r-- | ports/libconfig/portfile.cmake | 46 | ||||
| -rw-r--r-- | ports/libconfig/scandir.c | 112 | ||||
| -rw-r--r-- | ports/msinttypes/CONTROL | 3 | ||||
| -rw-r--r-- | ports/msinttypes/portfile.cmake | 13 |
8 files changed, 1459 insertions, 0 deletions
diff --git a/ports/libconfig/CMakeLists.txt b/ports/libconfig/CMakeLists.txt new file mode 100644 index 000000000..8762917ef --- /dev/null +++ b/ports/libconfig/CMakeLists.txt @@ -0,0 +1,51 @@ +cmake_minimum_required(VERSION 3.5.1) +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 +) + +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}) + +add_definitions(-DYY_NO_UNISTD_H -DYY_USE_CONST) + +add_library(libconfig ${C_SOURCES}) +add_library(libconfig++ ${CPP_SOURCES}) + +if(BUILD_SHARED_LIBS) + target_compile_definitions(libconfig PRIVATE -DLIBCONFIG_EXPORTS) + target_compile_definitions(libconfig++ PRIVATE -DLIBCONFIGXX_EXPORTS) +else() + target_compile_definitions(libconfig PUBLIC -DLIBCONFIG_STATIC) + target_compile_definitions(libconfig++ PUBLIC -DLIBCONFIGXX_STATIC) +endif() + +target_link_libraries(libconfig++ PRIVATE libconfig) + +install( + TARGETS libconfig libconfig++ + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) + +if(NOT DISABLE_INSTALL_HEADERS) + install(FILES lib/libconfig.h++ lib/libconfig.h DESTINATION include) +endif() diff --git a/ports/libconfig/CONTROL b/ports/libconfig/CONTROL new file mode 100644 index 000000000..45bf1db9b --- /dev/null +++ b/ports/libconfig/CONTROL @@ -0,0 +1,4 @@ +Source: libconfig +Version: 1.6.0 +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 new file mode 100644 index 000000000..c2e13c2ff --- /dev/null +++ b/ports/libconfig/fix-scanner-header-msvc-patch.patch @@ -0,0 +1,108 @@ +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 new file mode 100644 index 000000000..e8f24e638 --- /dev/null +++ b/ports/libconfig/fix-scanner-source-msvc-patch.patch @@ -0,0 +1,1122 @@ +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 <stdlib.h> ++#include <errno.h> + #include <ctype.h> + #include <string.h> + #include <limits.h> ++#include <dirent.h> + #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 new file mode 100644 index 000000000..73028de7c --- /dev/null +++ b/ports/libconfig/portfile.cmake @@ -0,0 +1,46 @@ +include(vcpkg_common_functions) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO hyperrealm/libconfig + REF v1.6 + SHA512 6222110851970fda11d21e73bc322be95fb1ce62c513e2f4cc7875d7b32d1d211860971692db679edf8ac46151033a132fc669bd16590fec56360ef3a6e584f8 + 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( + SOURCE_PATH ${SOURCE_PATH} + OPTIONS_DEBUG -DDISABLE_INSTALL_HEADERS=ON +) + +vcpkg_install_cmake() + +foreach(FILE ${CURRENT_PACKAGES_DIR}/include/libconfig.h++ ${CURRENT_PACKAGES_DIR}/include/libconfig.h) + file(READ ${FILE} _contents) + string(REPLACE "defined(LIBCONFIGXX_EXPORTS)" "0" _contents "${_contents}") + string(REPLACE "defined(LIBCONFIG_EXPORTS)" "0" _contents "${_contents}") + + if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) + string(REPLACE "defined(LIBCONFIGXX_STATIC)" "0" _contents "${_contents}") + string(REPLACE "defined(LIBCONFIG_STATIC)" "0" _contents "${_contents}") + else() + string(REPLACE "defined(LIBCONFIGXX_STATIC)" "1" _contents "${_contents}") + string(REPLACE "defined(LIBCONFIG_STATIC)" "1" _contents "${_contents}") + endif() + file(WRITE ${FILE} "${_contents}") +endforeach() + +file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/libconfig RENAME copyright) + +vcpkg_copy_pdbs() diff --git a/ports/libconfig/scandir.c b/ports/libconfig/scandir.c new file mode 100644 index 000000000..cab75716e --- /dev/null +++ b/ports/libconfig/scandir.c @@ -0,0 +1,112 @@ +// "$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 <string.h> +#include <windows.h> +#include <stdlib.h> +#include <io.h> +#include <dirent.h> + +#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 $". +// diff --git a/ports/msinttypes/CONTROL b/ports/msinttypes/CONTROL new file mode 100644 index 000000000..a7ed816ee --- /dev/null +++ b/ports/msinttypes/CONTROL @@ -0,0 +1,3 @@ +Source: msinttypes +Version: 2017-06-26-f9e7c5758ed9e3b9f4b2394de1881c704dd79de0 +Description: msinttypes is a package to provide missing ISO C9x compliant headers for Microsoft Visual Studio diff --git a/ports/msinttypes/portfile.cmake b/ports/msinttypes/portfile.cmake new file mode 100644 index 000000000..63fbd05eb --- /dev/null +++ b/ports/msinttypes/portfile.cmake @@ -0,0 +1,13 @@ +include(vcpkg_common_functions) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO chemeris/msinttypes + REF 7636cabe55318824dc702d15b69711f5d7c30250 + SHA512 1c3c350d12c6b69e1cb6469f742afc126d50fd92e137ecacdb8367e320350cd42d7d41fbb0aa38d6a13aefbef5308f9ec89825e9b80a932f552a889f63b35cb2 + HEAD_REF master +) + +file(INSTALL ${SOURCE_PATH}/inttypes.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/msinttypes) +file(INSTALL ${SOURCE_PATH}/stdint.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/msinttypes) +file(INSTALL ${SOURCE_PATH}/stdint.h DESTINATION ${CURRENT_PACKAGES_DIR}/share/msinttypes RENAME copyright) |
