Browse Source

style: git子模块添加cJSON,dlfc-win32,pcre2

SongZihuan 3 years ago
parent
commit
31e51db0c4
100 changed files with 76 additions and 20929 deletions
  1. 9 0
      .gitmodules
  2. 17 0
      src/deps/README
  3. 0 8
      src/deps/README.md
  4. 2 2
      src/deps/cjson/CMakeLists.txt
  5. 0 20
      src/deps/cjson/LICENSE
  6. 13 0
      src/deps/cjson/README
  7. 1 0
      src/deps/cjson/cJSON
  8. 0 3095
      src/deps/cjson/cJSON.c
  9. 1 293
      src/deps/cjson/cJSON.h
  10. 1 1
      src/deps/dlfcn/CMakeLists.txt
  11. 0 17
      src/deps/dlfcn/COPYING
  12. 12 0
      src/deps/dlfcn/README
  13. 1 0
      src/deps/dlfcn/dlfcn-win32
  14. 0 785
      src/deps/dlfcn/dlfcn.c
  15. 1 94
      src/deps/dlfcn/dlfcn.h
  16. 5 4
      src/deps/regex/CMakeLists.txt
  17. 12 0
      src/deps/regex/README
  18. 1 0
      src/deps/regex/pcre2
  19. 0 47
      src/deps/regex/pcre2/.gitignore
  20. 0 314
      src/deps/regex/pcre2/132html
  21. 0 36
      src/deps/regex/pcre2/AUTHORS
  22. 0 1017
      src/deps/regex/pcre2/CMakeLists.txt
  23. 0 5
      src/deps/regex/pcre2/COPYING
  24. 0 2487
      src/deps/regex/pcre2/ChangeLog
  25. 0 78
      src/deps/regex/pcre2/CheckMan
  26. 0 113
      src/deps/regex/pcre2/CleanTxt
  27. 0 35
      src/deps/regex/pcre2/Detrail
  28. 0 830
      src/deps/regex/pcre2/HACKING
  29. 0 94
      src/deps/regex/pcre2/LICENCE
  30. 0 868
      src/deps/regex/pcre2/Makefile.am
  31. 0 355
      src/deps/regex/pcre2/NEWS
  32. 0 410
      src/deps/regex/pcre2/NON-AUTOTOOLS-BUILD
  33. 0 236
      src/deps/regex/pcre2/PrepareRelease
  34. 0 907
      src/deps/regex/pcre2/README
  35. 0 821
      src/deps/regex/pcre2/RunGrepTest
  36. 0 699
      src/deps/regex/pcre2/RunGrepTest.bat
  37. 0 869
      src/deps/regex/pcre2/RunTest
  38. 0 525
      src/deps/regex/pcre2/RunTest.bat
  39. 0 45
      src/deps/regex/pcre2/autogen.sh
  40. 0 22
      src/deps/regex/pcre2/cmake/COPYING-CMAKE-SCRIPTS
  41. 0 17
      src/deps/regex/pcre2/cmake/FindEditline.cmake
  42. 0 58
      src/deps/regex/pcre2/cmake/FindPackageHandleStandardArgs.cmake
  43. 0 29
      src/deps/regex/pcre2/cmake/FindReadline.cmake
  44. 0 58
      src/deps/regex/pcre2/config-cmake.h.in
  45. 0 1115
      src/deps/regex/pcre2/configure.ac
  46. 0 410
      src/deps/regex/pcre2/doc/html/NON-AUTOTOOLS-BUILD.txt
  47. 0 907
      src/deps/regex/pcre2/doc/html/README.txt
  48. 0 312
      src/deps/regex/pcre2/doc/html/index.html
  49. 0 102
      src/deps/regex/pcre2/doc/html/pcre2-config.html
  50. 0 213
      src/deps/regex/pcre2/doc/html/pcre2.html
  51. 0 63
      src/deps/regex/pcre2/doc/html/pcre2_callout_enumerate.html
  52. 0 43
      src/deps/regex/pcre2/doc/html/pcre2_code_copy.html
  53. 0 44
      src/deps/regex/pcre2/doc/html/pcre2_code_copy_with_tables.html
  54. 0 42
      src/deps/regex/pcre2/doc/html/pcre2_code_free.html
  55. 0 107
      src/deps/regex/pcre2/doc/html/pcre2_compile.html
  56. 0 41
      src/deps/regex/pcre2/doc/html/pcre2_compile_context_copy.html
  57. 0 42
      src/deps/regex/pcre2/doc/html/pcre2_compile_context_create.html
  58. 0 41
      src/deps/regex/pcre2/doc/html/pcre2_compile_context_free.html
  59. 0 84
      src/deps/regex/pcre2/doc/html/pcre2_config.html
  60. 0 40
      src/deps/regex/pcre2/doc/html/pcre2_convert_context_copy.html
  61. 0 41
      src/deps/regex/pcre2/doc/html/pcre2_convert_context_create.html
  62. 0 40
      src/deps/regex/pcre2/doc/html/pcre2_convert_context_free.html
  63. 0 40
      src/deps/regex/pcre2/doc/html/pcre2_converted_pattern_free.html
  64. 0 80
      src/deps/regex/pcre2/doc/html/pcre2_dfa_match.html
  65. 0 42
      src/deps/regex/pcre2/doc/html/pcre2_general_context_copy.html
  66. 0 44
      src/deps/regex/pcre2/doc/html/pcre2_general_context_create.html
  67. 0 40
      src/deps/regex/pcre2/doc/html/pcre2_general_context_free.html
  68. 0 51
      src/deps/regex/pcre2/doc/html/pcre2_get_error_message.html
  69. 0 47
      src/deps/regex/pcre2/doc/html/pcre2_get_mark.html
  70. 0 39
      src/deps/regex/pcre2/doc/html/pcre2_get_match_data_size.html
  71. 0 39
      src/deps/regex/pcre2/doc/html/pcre2_get_ovector_count.html
  72. 0 40
      src/deps/regex/pcre2/doc/html/pcre2_get_ovector_pointer.html
  73. 0 44
      src/deps/regex/pcre2/doc/html/pcre2_get_startchar.html
  74. 0 63
      src/deps/regex/pcre2/doc/html/pcre2_jit_compile.html
  75. 0 43
      src/deps/regex/pcre2/doc/html/pcre2_jit_free_unused_memory.html
  76. 0 60
      src/deps/regex/pcre2/doc/html/pcre2_jit_match.html
  77. 0 75
      src/deps/regex/pcre2/doc/html/pcre2_jit_stack_assign.html
  78. 0 49
      src/deps/regex/pcre2/doc/html/pcre2_jit_stack_create.html
  79. 0 43
      src/deps/regex/pcre2/doc/html/pcre2_jit_stack_free.html
  80. 0 48
      src/deps/regex/pcre2/doc/html/pcre2_maketables.html
  81. 0 44
      src/deps/regex/pcre2/doc/html/pcre2_maketables_free.html
  82. 0 85
      src/deps/regex/pcre2/doc/html/pcre2_match.html
  83. 0 41
      src/deps/regex/pcre2/doc/html/pcre2_match_context_copy.html
  84. 0 42
      src/deps/regex/pcre2/doc/html/pcre2_match_context_create.html
  85. 0 41
      src/deps/regex/pcre2/doc/html/pcre2_match_context_free.html
  86. 0 49
      src/deps/regex/pcre2/doc/html/pcre2_match_data_create.html
  87. 0 50
      src/deps/regex/pcre2/doc/html/pcre2_match_data_create_from_pattern.html
  88. 0 46
      src/deps/regex/pcre2/doc/html/pcre2_match_data_free.html
  89. 0 70
      src/deps/regex/pcre2/doc/html/pcre2_pattern_convert.html
  90. 0 109
      src/deps/regex/pcre2/doc/html/pcre2_pattern_info.html
  91. 0 65
      src/deps/regex/pcre2/doc/html/pcre2_serialize_decode.html
  92. 0 66
      src/deps/regex/pcre2/doc/html/pcre2_serialize_encode.html
  93. 0 41
      src/deps/regex/pcre2/doc/html/pcre2_serialize_free.html
  94. 0 49
      src/deps/regex/pcre2/doc/html/pcre2_serialize_get_number_of_codes.html
  95. 0 42
      src/deps/regex/pcre2/doc/html/pcre2_set_bsr.html
  96. 0 43
      src/deps/regex/pcre2/doc/html/pcre2_set_callout.html
  97. 0 45
      src/deps/regex/pcre2/doc/html/pcre2_set_character_tables.html
  98. 0 47
      src/deps/regex/pcre2/doc/html/pcre2_set_compile_extra_options.html
  99. 0 46
      src/deps/regex/pcre2/doc/html/pcre2_set_compile_recursion_guard.html
  100. 0 40
      src/deps/regex/pcre2/doc/html/pcre2_set_depth_limit.html

+ 9 - 0
.gitmodules

@@ -0,0 +1,9 @@
+[submodule "src/deps/cjson/cJSON"]
+	path = src/deps/cjson/cJSON
+	url = git@github.com:aFun-org/cJSON.git
+[submodule "src/deps/dlfcn/dlfcn-win32"]
+	path = src/deps/dlfcn/dlfcn-win32
+	url = git@github.com:aFun-org/dlfcn-win32.git
+[submodule "src/deps/regex/pcre2"]
+	path = src/deps/regex/pcre2
+	url = git@github.com:aFun-org/pcre2.git

+ 17 - 0
src/deps/README

@@ -0,0 +1,17 @@
+src/deps 文件夹
+-------------------------
+该文件夹用于存在aFunlang的依赖库, 及其`git`子模块
+
+* cjson依赖库
+该库用于处理json文件
+git子模块: cJSON
+url: https://github.com/DaveGamble/cJSON
+
+* dlfcn依赖库
+该库用于msvc平台下的posix动态库函数
+git子模块: dlfcn-win32
+url: https://github.com/dlfcn-win32/dlfcn-win32
+
+* regex依赖库
+该库用于处理正则表达式
+封装自`pcre2`库

+ 0 - 8
src/deps/README.md

@@ -1,8 +0,0 @@
-#`src/deps`文件夹
-## 介绍
-该文件夹存放的是`aFunlang`的依赖库源码。  
-### 依赖库
-
-- cJSON
-- dlfcn-win32
-- pcre2

+ 2 - 2
src/deps/cjson/CMakeLists.txt

@@ -1,5 +1,5 @@
 PROJECT(cJson LANGUAGES C)
-ADD_LIBRARY(cJson cJSON.c)
+ADD_LIBRARY(cJson STATIC cJSON/cJSON.c)
 
 
 PROJECT(af_json LANGUAGES C)
@@ -7,4 +7,4 @@ ADD_LIBRARY(af_json tool.c)
 SET_TARGET_PROPERTIES(af_json PROPERTIES OUTPUT_NAME "aFunJson")
 TARGET_LINK_LIBRARIES(af_json af_tool cJson)
 
-INSTALL(TARGETS af_json cJson)
+INSTALL(TARGETS af_json)

+ 0 - 20
src/deps/cjson/LICENSE

@@ -1,20 +0,0 @@
-Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-

+ 13 - 0
src/deps/cjson/README

@@ -0,0 +1,13 @@
+cjson依赖库
+-------------------------
+
+该库依赖自cJSON库
+提供json文件的处理函数
+./cJSON文件夹是git子模块
+tool.c是用于对该模块的封装
+
+只使用`cJSON`在`cJSON.c`和`cJSON.h`文件
+使用`CMakeLists.txt`再编译该库
+
+项目url: https://github.com/DaveGamble/cJSON
+子模块: https://github.com/aFun-org/cJSON

+ 1 - 0
src/deps/cjson/cJSON

@@ -0,0 +1 @@
+Subproject commit f50dafc7d0bfd4f45449ab5665bfea831a82f2eb

+ 0 - 3095
src/deps/cjson/cJSON.c

@@ -1,3095 +0,0 @@
-/*
-  Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-  THE SOFTWARE.
-*/
-
-/* cJSON */
-/* JSON parser in C. */
-
-/* disable warnings about old C89 functions in MSVC */
-#if !defined(_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER)
-#define _CRT_SECURE_NO_DEPRECATE
-#endif
-
-#ifdef __GNUC__
-#pragma GCC visibility push(default)
-#endif
-#if defined(_MSC_VER)
-#pragma warning (push)
-/* disable warning about single line comments in system headers */
-#pragma warning (disable : 4001)
-#endif
-
-#include <string.h>
-#include <stdio.h>
-#include <math.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <ctype.h>
-#include <float.h>
-
-#ifdef ENABLE_LOCALES
-#include <locale.h>
-#endif
-
-#if defined(_MSC_VER)
-#pragma warning (pop)
-#endif
-#ifdef __GNUC__
-#pragma GCC visibility pop
-#endif
-
-#include "cJSON.h"
-
-/* define our own boolean type */
-#ifdef true
-#undef true
-#endif
-#define true ((cJSON_bool)1)
-
-#ifdef false
-#undef false
-#endif
-#define false ((cJSON_bool)0)
-
-/* define isnan and isinf for ANSI C, if in C99 or above, isnan and isinf has been defined in math.h */
-#ifndef isinf
-#define isinf(d) (isnan((d - d)) && !isnan(d))
-#endif
-#ifndef isnan
-#define isnan(d) (d != d)
-#endif
-
-#ifndef NAN
-#define NAN 0.0/0.0
-#endif
-
-typedef struct {
-    const unsigned char *json;
-    size_t position;
-} error;
-static error global_error = { NULL, 0 };
-
-CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void)
-{
-    return (const char*) (global_error.json + global_error.position);
-}
-
-CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item) 
-{
-    if (!cJSON_IsString(item)) 
-    {
-        return NULL;
-    }
-
-    return item->valuestring;
-}
-
-CJSON_PUBLIC(double) cJSON_GetNumberValue(const cJSON * const item) 
-{
-    if (!cJSON_IsNumber(item)) 
-    {
-        return (double) NAN;
-    }
-
-    return item->valuedouble;
-}
-
-/* This is a safeguard to prevent copy-pasters from using incompatible C and header files */
-#if (CJSON_VERSION_MAJOR != 1) || (CJSON_VERSION_MINOR != 7) || (CJSON_VERSION_PATCH != 14)
-    #error cJSON.h and cJSON.c have different versions. Make sure that both have the same.
-#endif
-
-CJSON_PUBLIC(const char*) cJSON_Version(void)
-{
-    static char version[15];
-    sprintf(version, "%i.%i.%i", CJSON_VERSION_MAJOR, CJSON_VERSION_MINOR, CJSON_VERSION_PATCH);
-
-    return version;
-}
-
-/* Case insensitive string comparison, doesn't consider two NULL pointers equal though */
-static int case_insensitive_strcmp(const unsigned char *string1, const unsigned char *string2)
-{
-    if ((string1 == NULL) || (string2 == NULL))
-    {
-        return 1;
-    }
-
-    if (string1 == string2)
-    {
-        return 0;
-    }
-
-    for(; tolower(*string1) == tolower(*string2); (void)string1++, string2++)
-    {
-        if (*string1 == '\0')
-        {
-            return 0;
-        }
-    }
-
-    return tolower(*string1) - tolower(*string2);
-}
-
-typedef struct internal_hooks
-{
-    void *(CJSON_CDECL *allocate)(size_t size);
-    void (CJSON_CDECL *deallocate)(void *pointer);
-    void *(CJSON_CDECL *reallocate)(void *pointer, size_t size);
-} internal_hooks;
-
-#if defined(_MSC_VER)
-/* work around MSVC error C2322: '...' address of dllimport '...' is not static */
-static void * CJSON_CDECL internal_malloc(size_t size)
-{
-    return malloc(size);
-}
-static void CJSON_CDECL internal_free(void *pointer)
-{
-    free(pointer);
-}
-static void * CJSON_CDECL internal_realloc(void *pointer, size_t size)
-{
-    return realloc(pointer, size);
-}
-#else
-#define internal_malloc malloc
-#define internal_free free
-#define internal_realloc realloc
-#endif
-
-/* strlen of character literals resolved at compile time */
-#define static_strlen(string_literal) (sizeof(string_literal) - sizeof(""))
-
-static internal_hooks global_hooks = { internal_malloc, internal_free, internal_realloc };
-
-static unsigned char* cJSON_strdup(const unsigned char* string, const internal_hooks * const hooks)
-{
-    size_t length = 0;
-    unsigned char *copy = NULL;
-
-    if (string == NULL)
-    {
-        return NULL;
-    }
-
-    length = strlen((const char*)string) + sizeof("");
-    copy = (unsigned char*)hooks->allocate(length);
-    if (copy == NULL)
-    {
-        return NULL;
-    }
-    memcpy(copy, string, length);
-
-    return copy;
-}
-
-CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks)
-{
-    if (hooks == NULL)
-    {
-        /* Reset hooks */
-        global_hooks.allocate = malloc;
-        global_hooks.deallocate = free;
-        global_hooks.reallocate = realloc;
-        return;
-    }
-
-    global_hooks.allocate = malloc;
-    if (hooks->malloc_fn != NULL)
-    {
-        global_hooks.allocate = hooks->malloc_fn;
-    }
-
-    global_hooks.deallocate = free;
-    if (hooks->free_fn != NULL)
-    {
-        global_hooks.deallocate = hooks->free_fn;
-    }
-
-    /* use realloc only if both free and malloc are used */
-    global_hooks.reallocate = NULL;
-    if ((global_hooks.allocate == malloc) && (global_hooks.deallocate == free))
-    {
-        global_hooks.reallocate = realloc;
-    }
-}
-
-/* Internal constructor. */
-static cJSON *cJSON_New_Item(const internal_hooks * const hooks)
-{
-    cJSON* node = (cJSON*)hooks->allocate(sizeof(cJSON));
-    if (node)
-    {
-        memset(node, '\0', sizeof(cJSON));
-    }
-
-    return node;
-}
-
-/* Delete a cJSON structure. */
-CJSON_PUBLIC(void) cJSON_Delete(cJSON *item)
-{
-    cJSON *next = NULL;
-    while (item != NULL)
-    {
-        next = item->next;
-        if (!(item->type & cJSON_IsReference) && (item->child != NULL))
-        {
-            cJSON_Delete(item->child);
-        }
-        if (!(item->type & cJSON_IsReference) && (item->valuestring != NULL))
-        {
-            global_hooks.deallocate(item->valuestring);
-        }
-        if (!(item->type & cJSON_StringIsConst) && (item->string != NULL))
-        {
-            global_hooks.deallocate(item->string);
-        }
-        global_hooks.deallocate(item);
-        item = next;
-    }
-}
-
-/* get the decimal point character of the current locale */
-static unsigned char get_decimal_point(void)
-{
-#ifdef ENABLE_LOCALES
-    struct lconv *lconv = localeconv();
-    return (unsigned char) lconv->decimal_point[0];
-#else
-    return '.';
-#endif
-}
-
-typedef struct
-{
-    const unsigned char *content;
-    size_t length;
-    size_t offset;
-    size_t depth; /* How deeply nested (in arrays/objects) is the input at the current offset. */
-    internal_hooks hooks;
-} parse_buffer;
-
-/* check if the given size is left to read in a given parse buffer (starting with 1) */
-#define can_read(buffer, size) ((buffer != NULL) && (((buffer)->offset + size) <= (buffer)->length))
-/* check if the buffer can be accessed at the given index (starting with 0) */
-#define can_access_at_index(buffer, index) ((buffer != NULL) && (((buffer)->offset + index) < (buffer)->length))
-#define cannot_access_at_index(buffer, index) (!can_access_at_index(buffer, index))
-/* get a pointer to the buffer at the position */
-#define buffer_at_offset(buffer) ((buffer)->content + (buffer)->offset)
-
-/* Parse the input text to generate a number, and populate the result into item. */
-static cJSON_bool parse_number(cJSON * const item, parse_buffer * const input_buffer)
-{
-    double number = 0;
-    unsigned char *after_end = NULL;
-    unsigned char number_c_string[64];
-    unsigned char decimal_point = get_decimal_point();
-    size_t i = 0;
-
-    if ((input_buffer == NULL) || (input_buffer->content == NULL))
-    {
-        return false;
-    }
-
-    /* copy the number into a temporary buffer and replace '.' with the decimal point
-     * of the current locale (for strtod)
-     * This also takes care of '\0' not necessarily being available for marking the end of the input */
-    for (i = 0; (i < (sizeof(number_c_string) - 1)) && can_access_at_index(input_buffer, i); i++)
-    {
-        switch (buffer_at_offset(input_buffer)[i])
-        {
-            case '0':
-            case '1':
-            case '2':
-            case '3':
-            case '4':
-            case '5':
-            case '6':
-            case '7':
-            case '8':
-            case '9':
-            case '+':
-            case '-':
-            case 'e':
-            case 'E':
-                number_c_string[i] = buffer_at_offset(input_buffer)[i];
-                break;
-
-            case '.':
-                number_c_string[i] = decimal_point;
-                break;
-
-            default:
-                goto loop_end;
-        }
-    }
-loop_end:
-    number_c_string[i] = '\0';
-
-    number = strtod((const char*)number_c_string, (char**)&after_end);
-    if (number_c_string == after_end)
-    {
-        return false; /* parse_error */
-    }
-
-    item->valuedouble = number;
-
-    /* use saturation in case of overflow */
-    if (number >= INT_MAX)
-    {
-        item->valueint = INT_MAX;
-    }
-    else if (number <= (double)INT_MIN)
-    {
-        item->valueint = INT_MIN;
-    }
-    else
-    {
-        item->valueint = (int)number;
-    }
-
-    item->type = cJSON_Number;
-
-    input_buffer->offset += (size_t)(after_end - number_c_string);
-    return true;
-}
-
-/* don't ask me, but the original cJSON_SetNumberValue returns an integer or double */
-CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number)
-{
-    if (number >= INT_MAX)
-    {
-        object->valueint = INT_MAX;
-    }
-    else if (number <= (double)INT_MIN)
-    {
-        object->valueint = INT_MIN;
-    }
-    else
-    {
-        object->valueint = (int)number;
-    }
-
-    return object->valuedouble = number;
-}
-
-CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring)
-{
-    char *copy = NULL;
-    /* if object's type is not cJSON_String or is cJSON_IsReference, it should not set valuestring */
-    if (!(object->type & cJSON_String) || (object->type & cJSON_IsReference))
-    {
-        return NULL;
-    }
-    if (strlen(valuestring) <= strlen(object->valuestring))
-    {
-        strcpy(object->valuestring, valuestring);
-        return object->valuestring;
-    }
-    copy = (char*) cJSON_strdup((const unsigned char*)valuestring, &global_hooks);
-    if (copy == NULL)
-    {
-        return NULL;
-    }
-    if (object->valuestring != NULL)
-    {
-        cJSON_free(object->valuestring);
-    }
-    object->valuestring = copy;
-
-    return copy;
-}
-
-typedef struct
-{
-    unsigned char *buffer;
-    size_t length;
-    size_t offset;
-    size_t depth; /* current nesting depth (for formatted printing) */
-    cJSON_bool noalloc;
-    cJSON_bool format; /* is this print a formatted print */
-    internal_hooks hooks;
-} printbuffer;
-
-/* realloc printbuffer if necessary to have at least "needed" bytes more */
-static unsigned char* ensure(printbuffer * const p, size_t needed)
-{
-    unsigned char *newbuffer = NULL;
-    size_t newsize = 0;
-
-    if ((p == NULL) || (p->buffer == NULL))
-    {
-        return NULL;
-    }
-
-    if ((p->length > 0) && (p->offset >= p->length))
-    {
-        /* make sure that offset is valid */
-        return NULL;
-    }
-
-    if (needed > INT_MAX)
-    {
-        /* sizes bigger than INT_MAX are currently not supported */
-        return NULL;
-    }
-
-    needed += p->offset + 1;
-    if (needed <= p->length)
-    {
-        return p->buffer + p->offset;
-    }
-
-    if (p->noalloc) {
-        return NULL;
-    }
-
-    /* calculate new buffer size */
-    if (needed > (INT_MAX / 2))
-    {
-        /* overflow of int, use INT_MAX if possible */
-        if (needed <= INT_MAX)
-        {
-            newsize = INT_MAX;
-        }
-        else
-        {
-            return NULL;
-        }
-    }
-    else
-    {
-        newsize = needed * 2;
-    }
-
-    if (p->hooks.reallocate != NULL)
-    {
-        /* reallocate with realloc if available */
-        newbuffer = (unsigned char*)p->hooks.reallocate(p->buffer, newsize);
-        if (newbuffer == NULL)
-        {
-            p->hooks.deallocate(p->buffer);
-            p->length = 0;
-            p->buffer = NULL;
-
-            return NULL;
-        }
-    }
-    else
-    {
-        /* otherwise reallocate manually */
-        newbuffer = (unsigned char*)p->hooks.allocate(newsize);
-        if (!newbuffer)
-        {
-            p->hooks.deallocate(p->buffer);
-            p->length = 0;
-            p->buffer = NULL;
-
-            return NULL;
-        }
-        if (newbuffer)
-        {
-            memcpy(newbuffer, p->buffer, p->offset + 1);
-        }
-        p->hooks.deallocate(p->buffer);
-    }
-    p->length = newsize;
-    p->buffer = newbuffer;
-
-    return newbuffer + p->offset;
-}
-
-/* calculate the new length of the string in a printbuffer and update the offset */
-static void update_offset(printbuffer * const buffer)
-{
-    const unsigned char *buffer_pointer = NULL;
-    if ((buffer == NULL) || (buffer->buffer == NULL))
-    {
-        return;
-    }
-    buffer_pointer = buffer->buffer + buffer->offset;
-
-    buffer->offset += strlen((const char*)buffer_pointer);
-}
-
-/* securely comparison of floating-point variables */
-static cJSON_bool compare_double(double a, double b)
-{
-    double maxVal = fabs(a) > fabs(b) ? fabs(a) : fabs(b);
-    return (fabs(a - b) <= maxVal * DBL_EPSILON);
-}
-
-/* Render the number nicely from the given item into a string. */
-static cJSON_bool print_number(const cJSON * const item, printbuffer * const output_buffer)
-{
-    unsigned char *output_pointer = NULL;
-    double d = item->valuedouble;
-    int length = 0;
-    size_t i = 0;
-    unsigned char number_buffer[26] = {0}; /* temporary buffer to print the number into */
-    unsigned char decimal_point = get_decimal_point();
-    double test = 0.0;
-
-    if (output_buffer == NULL)
-    {
-        return false;
-    }
-
-    /* This checks for NaN and Infinity */
-    if (isnan(d) || isinf(d))
-    {
-        length = sprintf((char*)number_buffer, "null");
-    }
-    else
-    {
-        /* Try 15 decimal places of precision to avoid nonsignificant nonzero digits */
-        length = sprintf((char*)number_buffer, "%1.15g", d);
-
-        /* Check whether the original double can be recovered */
-        if ((sscanf((char*)number_buffer, "%lg", &test) != 1) || !compare_double((double)test, d))
-        {
-            /* If not, print with 17 decimal places of precision */
-            length = sprintf((char*)number_buffer, "%1.17g", d);
-        }
-    }
-
-    /* sprintf failed or buffer overrun occurred */
-    if ((length < 0) || (length > (int)(sizeof(number_buffer) - 1)))
-    {
-        return false;
-    }
-
-    /* reserve appropriate space in the output */
-    output_pointer = ensure(output_buffer, (size_t)length + sizeof(""));
-    if (output_pointer == NULL)
-    {
-        return false;
-    }
-
-    /* copy the printed number to the output and replace locale
-     * dependent decimal point with '.' */
-    for (i = 0; i < ((size_t)length); i++)
-    {
-        if (number_buffer[i] == decimal_point)
-        {
-            output_pointer[i] = '.';
-            continue;
-        }
-
-        output_pointer[i] = number_buffer[i];
-    }
-    output_pointer[i] = '\0';
-
-    output_buffer->offset += (size_t)length;
-
-    return true;
-}
-
-/* parse 4 digit hexadecimal number */
-static unsigned parse_hex4(const unsigned char * const input)
-{
-    unsigned int h = 0;
-    size_t i = 0;
-
-    for (i = 0; i < 4; i++)
-    {
-        /* parse digit */
-        if ((input[i] >= '0') && (input[i] <= '9'))
-        {
-            h += (unsigned int) input[i] - '0';
-        }
-        else if ((input[i] >= 'A') && (input[i] <= 'F'))
-        {
-            h += (unsigned int) 10 + input[i] - 'A';
-        }
-        else if ((input[i] >= 'a') && (input[i] <= 'f'))
-        {
-            h += (unsigned int) 10 + input[i] - 'a';
-        }
-        else /* invalid */
-        {
-            return 0;
-        }
-
-        if (i < 3)
-        {
-            /* shift left to make place for the next nibble */
-            h = h << 4;
-        }
-    }
-
-    return h;
-}
-
-/* converts a UTF-16 literal to UTF-8
- * A literal can be one or two sequences of the form \uXXXX */
-static unsigned char utf16_literal_to_utf8(const unsigned char * const input_pointer, const unsigned char * const input_end, unsigned char **output_pointer)
-{
-    long unsigned int codepoint = 0;
-    unsigned int first_code = 0;
-    const unsigned char *first_sequence = input_pointer;
-    unsigned char utf8_length = 0;
-    unsigned char utf8_position = 0;
-    unsigned char sequence_length = 0;
-    unsigned char first_byte_mark = 0;
-
-    if ((input_end - first_sequence) < 6)
-    {
-        /* input ends unexpectedly */
-        goto fail;
-    }
-
-    /* get the first utf16 sequence */
-    first_code = parse_hex4(first_sequence + 2);
-
-    /* check that the code is valid */
-    if (((first_code >= 0xDC00) && (first_code <= 0xDFFF)))
-    {
-        goto fail;
-    }
-
-    /* UTF16 surrogate pair */
-    if ((first_code >= 0xD800) && (first_code <= 0xDBFF))
-    {
-        const unsigned char *second_sequence = first_sequence + 6;
-        unsigned int second_code = 0;
-        sequence_length = 12; /* \uXXXX\uXXXX */
-
-        if ((input_end - second_sequence) < 6)
-        {
-            /* input ends unexpectedly */
-            goto fail;
-        }
-
-        if ((second_sequence[0] != '\\') || (second_sequence[1] != 'u'))
-        {
-            /* missing second half of the surrogate pair */
-            goto fail;
-        }
-
-        /* get the second utf16 sequence */
-        second_code = parse_hex4(second_sequence + 2);
-        /* check that the code is valid */
-        if ((second_code < 0xDC00) || (second_code > 0xDFFF))
-        {
-            /* invalid second half of the surrogate pair */
-            goto fail;
-        }
-
-
-        /* calculate the unicode codepoint from the surrogate pair */
-        codepoint = 0x10000 + (((first_code & 0x3FF) << 10) | (second_code & 0x3FF));
-    }
-    else
-    {
-        sequence_length = 6; /* \uXXXX */
-        codepoint = first_code;
-    }
-
-    /* encode as UTF-8
-     * takes at maximum 4 bytes to encode:
-     * 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
-    if (codepoint < 0x80)
-    {
-        /* normal ascii, encoding 0xxxxxxx */
-        utf8_length = 1;
-    }
-    else if (codepoint < 0x800)
-    {
-        /* two bytes, encoding 110xxxxx 10xxxxxx */
-        utf8_length = 2;
-        first_byte_mark = 0xC0; /* 11000000 */
-    }
-    else if (codepoint < 0x10000)
-    {
-        /* three bytes, encoding 1110xxxx 10xxxxxx 10xxxxxx */
-        utf8_length = 3;
-        first_byte_mark = 0xE0; /* 11100000 */
-    }
-    else if (codepoint <= 0x10FFFF)
-    {
-        /* four bytes, encoding 1110xxxx 10xxxxxx 10xxxxxx 10xxxxxx */
-        utf8_length = 4;
-        first_byte_mark = 0xF0; /* 11110000 */
-    }
-    else
-    {
-        /* invalid unicode codepoint */
-        goto fail;
-    }
-
-    /* encode as utf8 */
-    for (utf8_position = (unsigned char)(utf8_length - 1); utf8_position > 0; utf8_position--)
-    {
-        /* 10xxxxxx */
-        (*output_pointer)[utf8_position] = (unsigned char)((codepoint | 0x80) & 0xBF);
-        codepoint >>= 6;
-    }
-    /* encode first byte */
-    if (utf8_length > 1)
-    {
-        (*output_pointer)[0] = (unsigned char)((codepoint | first_byte_mark) & 0xFF);
-    }
-    else
-    {
-        (*output_pointer)[0] = (unsigned char)(codepoint & 0x7F);
-    }
-
-    *output_pointer += utf8_length;
-
-    return sequence_length;
-
-fail:
-    return 0;
-}
-
-/* Parse the input text into an unescaped cinput, and populate item. */
-static cJSON_bool parse_string(cJSON * const item, parse_buffer * const input_buffer)
-{
-    const unsigned char *input_pointer = buffer_at_offset(input_buffer) + 1;
-    const unsigned char *input_end = buffer_at_offset(input_buffer) + 1;
-    unsigned char *output_pointer = NULL;
-    unsigned char *output = NULL;
-
-    /* not a string */
-    if (buffer_at_offset(input_buffer)[0] != '\"')
-    {
-        goto fail;
-    }
-
-    {
-        /* calculate approximate size of the output (overestimate) */
-        size_t allocation_length = 0;
-        size_t skipped_bytes = 0;
-        while (((size_t)(input_end - input_buffer->content) < input_buffer->length) && (*input_end != '\"'))
-        {
-            /* is escape sequence */
-            if (input_end[0] == '\\')
-            {
-                if ((size_t)(input_end + 1 - input_buffer->content) >= input_buffer->length)
-                {
-                    /* prevent buffer overflow when last input character is a backslash */
-                    goto fail;
-                }
-                skipped_bytes++;
-                input_end++;
-            }
-            input_end++;
-        }
-        if (((size_t)(input_end - input_buffer->content) >= input_buffer->length) || (*input_end != '\"'))
-        {
-            goto fail; /* string ended unexpectedly */
-        }
-
-        /* This is at most how much we need for the output */
-        allocation_length = (size_t) (input_end - buffer_at_offset(input_buffer)) - skipped_bytes;
-        output = (unsigned char*)input_buffer->hooks.allocate(allocation_length + sizeof(""));
-        if (output == NULL)
-        {
-            goto fail; /* allocation failure */
-        }
-    }
-
-    output_pointer = output;
-    /* loop through the string literal */
-    while (input_pointer < input_end)
-    {
-        if (*input_pointer != '\\')
-        {
-            *output_pointer++ = *input_pointer++;
-        }
-        /* escape sequence */
-        else
-        {
-            unsigned char sequence_length = 2;
-            if ((input_end - input_pointer) < 1)
-            {
-                goto fail;
-            }
-
-            switch (input_pointer[1])
-            {
-                case 'b':
-                    *output_pointer++ = '\b';
-                    break;
-                case 'f':
-                    *output_pointer++ = '\f';
-                    break;
-                case 'n':
-                    *output_pointer++ = '\n';
-                    break;
-                case 'r':
-                    *output_pointer++ = '\r';
-                    break;
-                case 't':
-                    *output_pointer++ = '\t';
-                    break;
-                case '\"':
-                case '\\':
-                case '/':
-                    *output_pointer++ = input_pointer[1];
-                    break;
-
-                /* UTF-16 literal */
-                case 'u':
-                    sequence_length = utf16_literal_to_utf8(input_pointer, input_end, &output_pointer);
-                    if (sequence_length == 0)
-                    {
-                        /* failed to convert UTF16-literal to UTF-8 */
-                        goto fail;
-                    }
-                    break;
-
-                default:
-                    goto fail;
-            }
-            input_pointer += sequence_length;
-        }
-    }
-
-    /* zero terminate the output */
-    *output_pointer = '\0';
-
-    item->type = cJSON_String;
-    item->valuestring = (char*)output;
-
-    input_buffer->offset = (size_t) (input_end - input_buffer->content);
-    input_buffer->offset++;
-
-    return true;
-
-fail:
-    if (output != NULL)
-    {
-        input_buffer->hooks.deallocate(output);
-    }
-
-    if (input_pointer != NULL)
-    {
-        input_buffer->offset = (size_t)(input_pointer - input_buffer->content);
-    }
-
-    return false;
-}
-
-/* Render the cstring provided to an escaped version that can be printed. */
-static cJSON_bool print_string_ptr(const unsigned char * const input, printbuffer * const output_buffer)
-{
-    const unsigned char *input_pointer = NULL;
-    unsigned char *output = NULL;
-    unsigned char *output_pointer = NULL;
-    size_t output_length = 0;
-    /* numbers of additional characters needed for escaping */
-    size_t escape_characters = 0;
-
-    if (output_buffer == NULL)
-    {
-        return false;
-    }
-
-    /* empty string */
-    if (input == NULL)
-    {
-        output = ensure(output_buffer, sizeof("\"\""));
-        if (output == NULL)
-        {
-            return false;
-        }
-        strcpy((char*)output, "\"\"");
-
-        return true;
-    }
-
-    /* set "flag" to 1 if something needs to be escaped */
-    for (input_pointer = input; *input_pointer; input_pointer++)
-    {
-        switch (*input_pointer)
-        {
-            case '\"':
-            case '\\':
-            case '\b':
-            case '\f':
-            case '\n':
-            case '\r':
-            case '\t':
-                /* one character escape sequence */
-                escape_characters++;
-                break;
-            default:
-                if (*input_pointer < 32)
-                {
-                    /* UTF-16 escape sequence uXXXX */
-                    escape_characters += 5;
-                }
-                break;
-        }
-    }
-    output_length = (size_t)(input_pointer - input) + escape_characters;
-
-    output = ensure(output_buffer, output_length + sizeof("\"\""));
-    if (output == NULL)
-    {
-        return false;
-    }
-
-    /* no characters have to be escaped */
-    if (escape_characters == 0)
-    {
-        output[0] = '\"';
-        memcpy(output + 1, input, output_length);
-        output[output_length + 1] = '\"';
-        output[output_length + 2] = '\0';
-
-        return true;
-    }
-
-    output[0] = '\"';
-    output_pointer = output + 1;
-    /* copy the string */
-    for (input_pointer = input; *input_pointer != '\0'; (void)input_pointer++, output_pointer++)
-    {
-        if ((*input_pointer > 31) && (*input_pointer != '\"') && (*input_pointer != '\\'))
-        {
-            /* normal character, copy */
-            *output_pointer = *input_pointer;
-        }
-        else
-        {
-            /* character needs to be escaped */
-            *output_pointer++ = '\\';
-            switch (*input_pointer)
-            {
-                case '\\':
-                    *output_pointer = '\\';
-                    break;
-                case '\"':
-                    *output_pointer = '\"';
-                    break;
-                case '\b':
-                    *output_pointer = 'b';
-                    break;
-                case '\f':
-                    *output_pointer = 'f';
-                    break;
-                case '\n':
-                    *output_pointer = 'n';
-                    break;
-                case '\r':
-                    *output_pointer = 'r';
-                    break;
-                case '\t':
-                    *output_pointer = 't';
-                    break;
-                default:
-                    /* escape and print as unicode codepoint */
-                    sprintf((char*)output_pointer, "u%04x", *input_pointer);
-                    output_pointer += 4;
-                    break;
-            }
-        }
-    }
-    output[output_length + 1] = '\"';
-    output[output_length + 2] = '\0';
-
-    return true;
-}
-
-/* Invoke print_string_ptr (which is useful) on an item. */
-static cJSON_bool print_string(const cJSON * const item, printbuffer * const p)
-{
-    return print_string_ptr((unsigned char*)item->valuestring, p);
-}
-
-/* Predeclare these prototypes. */
-static cJSON_bool parse_value(cJSON * const item, parse_buffer * const input_buffer);
-static cJSON_bool print_value(const cJSON * const item, printbuffer * const output_buffer);
-static cJSON_bool parse_array(cJSON * const item, parse_buffer * const input_buffer);
-static cJSON_bool print_array(const cJSON * const item, printbuffer * const output_buffer);
-static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_buffer);
-static cJSON_bool print_object(const cJSON * const item, printbuffer * const output_buffer);
-
-/* Utility to jump whitespace and cr/lf */
-static parse_buffer *buffer_skip_whitespace(parse_buffer * const buffer)
-{
-    if ((buffer == NULL) || (buffer->content == NULL))
-    {
-        return NULL;
-    }
-
-    if (cannot_access_at_index(buffer, 0))
-    {
-        return buffer;
-    }
-
-    while (can_access_at_index(buffer, 0) && (buffer_at_offset(buffer)[0] <= 32))
-    {
-       buffer->offset++;
-    }
-
-    if (buffer->offset == buffer->length)
-    {
-        buffer->offset--;
-    }
-
-    return buffer;
-}
-
-/* skip the UTF-8 BOM (byte order mark) if it is at the beginning of a buffer */
-static parse_buffer *skip_utf8_bom(parse_buffer * const buffer)
-{
-    if ((buffer == NULL) || (buffer->content == NULL) || (buffer->offset != 0))
-    {
-        return NULL;
-    }
-
-    if (can_access_at_index(buffer, 4) && (strncmp((const char*)buffer_at_offset(buffer), "\xEF\xBB\xBF", 3) == 0))
-    {
-        buffer->offset += 3;
-    }
-
-    return buffer;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated)
-{
-    size_t buffer_length;
-
-    if (NULL == value)
-    {
-        return NULL;
-    }
-
-    /* Adding null character size due to require_null_terminated. */
-    buffer_length = strlen(value) + sizeof("");
-
-    return cJSON_ParseWithLengthOpts(value, buffer_length, return_parse_end, require_null_terminated);
-}
-
-/* Parse an object - create a new root, and populate. */
-CJSON_PUBLIC(cJSON *) cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated)
-{
-    parse_buffer buffer = { 0, 0, 0, 0, { 0, 0, 0 } };
-    cJSON *item = NULL;
-
-    /* reset error position */
-    global_error.json = NULL;
-    global_error.position = 0;
-
-    if (value == NULL || 0 == buffer_length)
-    {
-        goto fail;
-    }
-
-    buffer.content = (const unsigned char*)value;
-    buffer.length = buffer_length; 
-    buffer.offset = 0;
-    buffer.hooks = global_hooks;
-
-    item = cJSON_New_Item(&global_hooks);
-    if (item == NULL) /* memory fail */
-    {
-        goto fail;
-    }
-
-    if (!parse_value(item, buffer_skip_whitespace(skip_utf8_bom(&buffer))))
-    {
-        /* parse failure. ep is set. */
-        goto fail;
-    }
-
-    /* if we require null-terminated JSON without appended garbage, skip and then check for a null terminator */
-    if (require_null_terminated)
-    {
-        buffer_skip_whitespace(&buffer);
-        if ((buffer.offset >= buffer.length) || buffer_at_offset(&buffer)[0] != '\0')
-        {
-            goto fail;
-        }
-    }
-    if (return_parse_end)
-    {
-        *return_parse_end = (const char*)buffer_at_offset(&buffer);
-    }
-
-    return item;
-
-fail:
-    if (item != NULL)
-    {
-        cJSON_Delete(item);
-    }
-
-    if (value != NULL)
-    {
-        error local_error;
-        local_error.json = (const unsigned char*)value;
-        local_error.position = 0;
-
-        if (buffer.offset < buffer.length)
-        {
-            local_error.position = buffer.offset;
-        }
-        else if (buffer.length > 0)
-        {
-            local_error.position = buffer.length - 1;
-        }
-
-        if (return_parse_end != NULL)
-        {
-            *return_parse_end = (const char*)local_error.json + local_error.position;
-        }
-
-        global_error = local_error;
-    }
-
-    return NULL;
-}
-
-/* Default options for cJSON_Parse */
-CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value)
-{
-    return cJSON_ParseWithOpts(value, 0, 0);
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_ParseWithLength(const char *value, size_t buffer_length)
-{
-    return cJSON_ParseWithLengthOpts(value, buffer_length, 0, 0);
-}
-
-#define cjson_min(a, b) (((a) < (b)) ? (a) : (b))
-
-static unsigned char *print(const cJSON * const item, cJSON_bool format, const internal_hooks * const hooks)
-{
-    static const size_t default_buffer_size = 256;
-    printbuffer buffer[1];
-    unsigned char *printed = NULL;
-
-    memset(buffer, 0, sizeof(buffer));
-
-    /* create buffer */
-    buffer->buffer = (unsigned char*) hooks->allocate(default_buffer_size);
-    buffer->length = default_buffer_size;
-    buffer->format = format;
-    buffer->hooks = *hooks;
-    if (buffer->buffer == NULL)
-    {
-        goto fail;
-    }
-
-    /* print the value */
-    if (!print_value(item, buffer))
-    {
-        goto fail;
-    }
-    update_offset(buffer);
-
-    /* check if reallocate is available */
-    if (hooks->reallocate != NULL)
-    {
-        printed = (unsigned char*) hooks->reallocate(buffer->buffer, buffer->offset + 1);
-        if (printed == NULL) {
-            goto fail;
-        }
-        buffer->buffer = NULL;
-    }
-    else /* otherwise copy the JSON over to a new buffer */
-    {
-        printed = (unsigned char*) hooks->allocate(buffer->offset + 1);
-        if (printed == NULL)
-        {
-            goto fail;
-        }
-        memcpy(printed, buffer->buffer, cjson_min(buffer->length, buffer->offset + 1));
-        printed[buffer->offset] = '\0'; /* just to be sure */
-
-        /* free the buffer */
-        hooks->deallocate(buffer->buffer);
-    }
-
-    return printed;
-
-fail:
-    if (buffer->buffer != NULL)
-    {
-        hooks->deallocate(buffer->buffer);
-    }
-
-    if (printed != NULL)
-    {
-        hooks->deallocate(printed);
-    }
-
-    return NULL;
-}
-
-/* Render a cJSON item/entity/structure to text. */
-CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item)
-{
-    return (char*)print(item, true, &global_hooks);
-}
-
-CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item)
-{
-    return (char*)print(item, false, &global_hooks);
-}
-
-CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt)
-{
-    printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } };
-
-    if (prebuffer < 0)
-    {
-        return NULL;
-    }
-
-    p.buffer = (unsigned char*)global_hooks.allocate((size_t)prebuffer);
-    if (!p.buffer)
-    {
-        return NULL;
-    }
-
-    p.length = (size_t)prebuffer;
-    p.offset = 0;
-    p.noalloc = false;
-    p.format = fmt;
-    p.hooks = global_hooks;
-
-    if (!print_value(item, &p))
-    {
-        global_hooks.deallocate(p.buffer);
-        return NULL;
-    }
-
-    return (char*)p.buffer;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format)
-{
-    printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } };
-
-    if ((length < 0) || (buffer == NULL))
-    {
-        return false;
-    }
-
-    p.buffer = (unsigned char*)buffer;
-    p.length = (size_t)length;
-    p.offset = 0;
-    p.noalloc = true;
-    p.format = format;
-    p.hooks = global_hooks;
-
-    return print_value(item, &p);
-}
-
-/* Parser core - when encountering text, process appropriately. */
-static cJSON_bool parse_value(cJSON * const item, parse_buffer * const input_buffer)
-{
-    if ((input_buffer == NULL) || (input_buffer->content == NULL))
-    {
-        return false; /* no input */
-    }
-
-    /* parse the different types of values */
-    /* null */
-    if (can_read(input_buffer, 4) && (strncmp((const char*)buffer_at_offset(input_buffer), "null", 4) == 0))
-    {
-        item->type = cJSON_NULL;
-        input_buffer->offset += 4;
-        return true;
-    }
-    /* false */
-    if (can_read(input_buffer, 5) && (strncmp((const char*)buffer_at_offset(input_buffer), "false", 5) == 0))
-    {
-        item->type = cJSON_False;
-        input_buffer->offset += 5;
-        return true;
-    }
-    /* true */
-    if (can_read(input_buffer, 4) && (strncmp((const char*)buffer_at_offset(input_buffer), "true", 4) == 0))
-    {
-        item->type = cJSON_True;
-        item->valueint = 1;
-        input_buffer->offset += 4;
-        return true;
-    }
-    /* string */
-    if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '\"'))
-    {
-        return parse_string(item, input_buffer);
-    }
-    /* number */
-    if (can_access_at_index(input_buffer, 0) && ((buffer_at_offset(input_buffer)[0] == '-') || ((buffer_at_offset(input_buffer)[0] >= '0') && (buffer_at_offset(input_buffer)[0] <= '9'))))
-    {
-        return parse_number(item, input_buffer);
-    }
-    /* array */
-    if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '['))
-    {
-        return parse_array(item, input_buffer);
-    }
-    /* object */
-    if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '{'))
-    {
-        return parse_object(item, input_buffer);
-    }
-
-    return false;
-}
-
-/* Render a value to text. */
-static cJSON_bool print_value(const cJSON * const item, printbuffer * const output_buffer)
-{
-    unsigned char *output = NULL;
-
-    if ((item == NULL) || (output_buffer == NULL))
-    {
-        return false;
-    }
-
-    switch ((item->type) & 0xFF)
-    {
-        case cJSON_NULL:
-            output = ensure(output_buffer, 5);
-            if (output == NULL)
-            {
-                return false;
-            }
-            strcpy((char*)output, "null");
-            return true;
-
-        case cJSON_False:
-            output = ensure(output_buffer, 6);
-            if (output == NULL)
-            {
-                return false;
-            }
-            strcpy((char*)output, "false");
-            return true;
-
-        case cJSON_True:
-            output = ensure(output_buffer, 5);
-            if (output == NULL)
-            {
-                return false;
-            }
-            strcpy((char*)output, "true");
-            return true;
-
-        case cJSON_Number:
-            return print_number(item, output_buffer);
-
-        case cJSON_Raw:
-        {
-            size_t raw_length = 0;
-            if (item->valuestring == NULL)
-            {
-                return false;
-            }
-
-            raw_length = strlen(item->valuestring) + sizeof("");
-            output = ensure(output_buffer, raw_length);
-            if (output == NULL)
-            {
-                return false;
-            }
-            memcpy(output, item->valuestring, raw_length);
-            return true;
-        }
-
-        case cJSON_String:
-            return print_string(item, output_buffer);
-
-        case cJSON_Array:
-            return print_array(item, output_buffer);
-
-        case cJSON_Object:
-            return print_object(item, output_buffer);
-
-        default:
-            return false;
-    }
-}
-
-/* Build an array from input text. */
-static cJSON_bool parse_array(cJSON * const item, parse_buffer * const input_buffer)
-{
-    cJSON *head = NULL; /* head of the linked list */
-    cJSON *current_item = NULL;
-
-    if (input_buffer->depth >= CJSON_NESTING_LIMIT)
-    {
-        return false; /* to deeply nested */
-    }
-    input_buffer->depth++;
-
-    if (buffer_at_offset(input_buffer)[0] != '[')
-    {
-        /* not an array */
-        goto fail;
-    }
-
-    input_buffer->offset++;
-    buffer_skip_whitespace(input_buffer);
-    if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ']'))
-    {
-        /* empty array */
-        goto success;
-    }
-
-    /* check if we skipped to the end of the buffer */
-    if (cannot_access_at_index(input_buffer, 0))
-    {
-        input_buffer->offset--;
-        goto fail;
-    }
-
-    /* step back to character in front of the first element */
-    input_buffer->offset--;
-    /* loop through the comma separated array elements */
-    do
-    {
-        /* allocate next item */
-        cJSON *new_item = cJSON_New_Item(&(input_buffer->hooks));
-        if (new_item == NULL)
-        {
-            goto fail; /* allocation failure */
-        }
-
-        /* attach next item to list */
-        if (head == NULL)
-        {
-            /* start the linked list */
-            current_item = head = new_item;
-        }
-        else
-        {
-            /* add to the end and advance */
-            current_item->next = new_item;
-            new_item->prev = current_item;
-            current_item = new_item;
-        }
-
-        /* parse next value */
-        input_buffer->offset++;
-        buffer_skip_whitespace(input_buffer);
-        if (!parse_value(current_item, input_buffer))
-        {
-            goto fail; /* failed to parse value */
-        }
-        buffer_skip_whitespace(input_buffer);
-    }
-    while (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ','));
-
-    if (cannot_access_at_index(input_buffer, 0) || buffer_at_offset(input_buffer)[0] != ']')
-    {
-        goto fail; /* expected end of array */
-    }
-
-success:
-    input_buffer->depth--;
-
-    if (head != NULL) {
-        head->prev = current_item;
-    }
-
-    item->type = cJSON_Array;
-    item->child = head;
-
-    input_buffer->offset++;
-
-    return true;
-
-fail:
-    if (head != NULL)
-    {
-        cJSON_Delete(head);
-    }
-
-    return false;
-}
-
-/* Render an array to text */
-static cJSON_bool print_array(const cJSON * const item, printbuffer * const output_buffer)
-{
-    unsigned char *output_pointer = NULL;
-    size_t length = 0;
-    cJSON *current_element = item->child;
-
-    if (output_buffer == NULL)
-    {
-        return false;
-    }
-
-    /* Compose the output array. */
-    /* opening square bracket */
-    output_pointer = ensure(output_buffer, 1);
-    if (output_pointer == NULL)
-    {
-        return false;
-    }
-
-    *output_pointer = '[';
-    output_buffer->offset++;
-    output_buffer->depth++;
-
-    while (current_element != NULL)
-    {
-        if (!print_value(current_element, output_buffer))
-        {
-            return false;
-        }
-        update_offset(output_buffer);
-        if (current_element->next)
-        {
-            length = (size_t) (output_buffer->format ? 2 : 1);
-            output_pointer = ensure(output_buffer, length + 1);
-            if (output_pointer == NULL)
-            {
-                return false;
-            }
-            *output_pointer++ = ',';
-            if(output_buffer->format)
-            {
-                *output_pointer++ = ' ';
-            }
-            *output_pointer = '\0';
-            output_buffer->offset += length;
-        }
-        current_element = current_element->next;
-    }
-
-    output_pointer = ensure(output_buffer, 2);
-    if (output_pointer == NULL)
-    {
-        return false;
-    }
-    *output_pointer++ = ']';
-    *output_pointer = '\0';
-    output_buffer->depth--;
-
-    return true;
-}
-
-/* Build an object from the text. */
-static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_buffer)
-{
-    cJSON *head = NULL; /* linked list head */
-    cJSON *current_item = NULL;
-
-    if (input_buffer->depth >= CJSON_NESTING_LIMIT)
-    {
-        return false; /* to deeply nested */
-    }
-    input_buffer->depth++;
-
-    if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != '{'))
-    {
-        goto fail; /* not an object */
-    }
-
-    input_buffer->offset++;
-    buffer_skip_whitespace(input_buffer);
-    if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '}'))
-    {
-        goto success; /* empty object */
-    }
-
-    /* check if we skipped to the end of the buffer */
-    if (cannot_access_at_index(input_buffer, 0))
-    {
-        input_buffer->offset--;
-        goto fail;
-    }
-
-    /* step back to character in front of the first element */
-    input_buffer->offset--;
-    /* loop through the comma separated array elements */
-    do
-    {
-        /* allocate next item */
-        cJSON *new_item = cJSON_New_Item(&(input_buffer->hooks));
-        if (new_item == NULL)
-        {
-            goto fail; /* allocation failure */
-        }
-
-        /* attach next item to list */
-        if (head == NULL)
-        {
-            /* start the linked list */
-            current_item = head = new_item;
-        }
-        else
-        {
-            /* add to the end and advance */
-            current_item->next = new_item;
-            new_item->prev = current_item;
-            current_item = new_item;
-        }
-
-        /* parse the data of the child */
-        input_buffer->offset++;
-        buffer_skip_whitespace(input_buffer);
-        if (!parse_string(current_item, input_buffer))
-        {
-            goto fail; /* failed to parse data */
-        }
-        buffer_skip_whitespace(input_buffer);
-
-        /* swap valuestring and string, because we parsed the data */
-        current_item->string = current_item->valuestring;
-        current_item->valuestring = NULL;
-
-        if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != ':'))
-        {
-            goto fail; /* invalid object */
-        }
-
-        /* parse the value */
-        input_buffer->offset++;
-        buffer_skip_whitespace(input_buffer);
-        if (!parse_value(current_item, input_buffer))
-        {
-            goto fail; /* failed to parse value */
-        }
-        buffer_skip_whitespace(input_buffer);
-    }
-    while (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ','));
-
-    if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != '}'))
-    {
-        goto fail; /* expected end of object */
-    }
-
-success:
-    input_buffer->depth--;
-
-    if (head != NULL) {
-        head->prev = current_item;
-    }
-
-    item->type = cJSON_Object;
-    item->child = head;
-
-    input_buffer->offset++;
-    return true;
-
-fail:
-    if (head != NULL)
-    {
-        cJSON_Delete(head);
-    }
-
-    return false;
-}
-
-/* Render an object to text. */
-static cJSON_bool print_object(const cJSON * const item, printbuffer * const output_buffer)
-{
-    unsigned char *output_pointer = NULL;
-    size_t length = 0;
-    cJSON *current_item = item->child;
-
-    if (output_buffer == NULL)
-    {
-        return false;
-    }
-
-    /* Compose the output: */
-    length = (size_t) (output_buffer->format ? 2 : 1); /* fmt: {\n */
-    output_pointer = ensure(output_buffer, length + 1);
-    if (output_pointer == NULL)
-    {
-        return false;
-    }
-
-    *output_pointer++ = '{';
-    output_buffer->depth++;
-    if (output_buffer->format)
-    {
-        *output_pointer++ = '\n';
-    }
-    output_buffer->offset += length;
-
-    while (current_item)
-    {
-        if (output_buffer->format)
-        {
-            size_t i;
-            output_pointer = ensure(output_buffer, output_buffer->depth);
-            if (output_pointer == NULL)
-            {
-                return false;
-            }
-            for (i = 0; i < output_buffer->depth; i++)
-            {
-                *output_pointer++ = '\t';
-            }
-            output_buffer->offset += output_buffer->depth;
-        }
-
-        /* print key */
-        if (!print_string_ptr((unsigned char*)current_item->string, output_buffer))
-        {
-            return false;
-        }
-        update_offset(output_buffer);
-
-        length = (size_t) (output_buffer->format ? 2 : 1);
-        output_pointer = ensure(output_buffer, length);
-        if (output_pointer == NULL)
-        {
-            return false;
-        }
-        *output_pointer++ = ':';
-        if (output_buffer->format)
-        {
-            *output_pointer++ = '\t';
-        }
-        output_buffer->offset += length;
-
-        /* print value */
-        if (!print_value(current_item, output_buffer))
-        {
-            return false;
-        }
-        update_offset(output_buffer);
-
-        /* print comma if not last */
-        length = ((size_t)(output_buffer->format ? 1 : 0) + (size_t)(current_item->next ? 1 : 0));
-        output_pointer = ensure(output_buffer, length + 1);
-        if (output_pointer == NULL)
-        {
-            return false;
-        }
-        if (current_item->next)
-        {
-            *output_pointer++ = ',';
-        }
-
-        if (output_buffer->format)
-        {
-            *output_pointer++ = '\n';
-        }
-        *output_pointer = '\0';
-        output_buffer->offset += length;
-
-        current_item = current_item->next;
-    }
-
-    output_pointer = ensure(output_buffer, output_buffer->format ? (output_buffer->depth + 1) : 2);
-    if (output_pointer == NULL)
-    {
-        return false;
-    }
-    if (output_buffer->format)
-    {
-        size_t i;
-        for (i = 0; i < (output_buffer->depth - 1); i++)
-        {
-            *output_pointer++ = '\t';
-        }
-    }
-    *output_pointer++ = '}';
-    *output_pointer = '\0';
-    output_buffer->depth--;
-
-    return true;
-}
-
-/* Get Array size/item / object item. */
-CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array)
-{
-    cJSON *child = NULL;
-    size_t size = 0;
-
-    if (array == NULL)
-    {
-        return 0;
-    }
-
-    child = array->child;
-
-    while(child != NULL)
-    {
-        size++;
-        child = child->next;
-    }
-
-    /* FIXME: Can overflow here. Cannot be fixed without breaking the API */
-
-    return (int)size;
-}
-
-static cJSON* get_array_item(const cJSON *array, size_t index)
-{
-    cJSON *current_child = NULL;
-
-    if (array == NULL)
-    {
-        return NULL;
-    }
-
-    current_child = array->child;
-    while ((current_child != NULL) && (index > 0))
-    {
-        index--;
-        current_child = current_child->next;
-    }
-
-    return current_child;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index)
-{
-    if (index < 0)
-    {
-        return NULL;
-    }
-
-    return get_array_item(array, (size_t)index);
-}
-
-static cJSON *get_object_item(const cJSON * const object, const char * const name, const cJSON_bool case_sensitive)
-{
-    cJSON *current_element = NULL;
-
-    if ((object == NULL) || (name == NULL))
-    {
-        return NULL;
-    }
-
-    current_element = object->child;
-    if (case_sensitive)
-    {
-        while ((current_element != NULL) && (current_element->string != NULL) && (strcmp(name, current_element->string) != 0))
-        {
-            current_element = current_element->next;
-        }
-    }
-    else
-    {
-        while ((current_element != NULL) && (case_insensitive_strcmp((const unsigned char*)name, (const unsigned char*)(current_element->string)) != 0))
-        {
-            current_element = current_element->next;
-        }
-    }
-
-    if ((current_element == NULL) || (current_element->string == NULL)) {
-        return NULL;
-    }
-
-    return current_element;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string)
-{
-    return get_object_item(object, string, false);
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string)
-{
-    return get_object_item(object, string, true);
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string)
-{
-    return cJSON_GetObjectItem(object, string) ? 1 : 0;
-}
-
-/* Utility for array list handling. */
-static void suffix_object(cJSON *prev, cJSON *item)
-{
-    prev->next = item;
-    item->prev = prev;
-}
-
-/* Utility for handling references. */
-static cJSON *create_reference(const cJSON *item, const internal_hooks * const hooks)
-{
-    cJSON *reference = NULL;
-    if (item == NULL)
-    {
-        return NULL;
-    }
-
-    reference = cJSON_New_Item(hooks);
-    if (reference == NULL)
-    {
-        return NULL;
-    }
-
-    memcpy(reference, item, sizeof(cJSON));
-    reference->string = NULL;
-    reference->type |= cJSON_IsReference;
-    reference->next = reference->prev = NULL;
-    return reference;
-}
-
-static cJSON_bool add_item_to_array(cJSON *array, cJSON *item)
-{
-    cJSON *child = NULL;
-
-    if ((item == NULL) || (array == NULL) || (array == item))
-    {
-        return false;
-    }
-
-    child = array->child;
-    /*
-     * To find the last item in array quickly, we use prev in array
-     */
-    if (child == NULL)
-    {
-        /* list is empty, start new one */
-        array->child = item;
-        item->prev = item;
-        item->next = NULL;
-    }
-    else
-    {
-        /* append to the end */
-        if (child->prev)
-        {
-            suffix_object(child->prev, item);
-            array->child->prev = item;
-        }
-    }
-
-    return true;
-}
-
-/* Add item to array/object. */
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item)
-{
-    return add_item_to_array(array, item);
-}
-
-#if defined(__clang__) || (defined(__GNUC__)  && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5))))
-    #pragma GCC diagnostic push
-#endif
-#ifdef __GNUC__
-#pragma GCC diagnostic ignored "-Wcast-qual"
-#endif
-/* helper function to cast away const */
-static void* cast_away_const(const void* string)
-{
-    return (void*)string;
-}
-#if defined(__clang__) || (defined(__GNUC__)  && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5))))
-    #pragma GCC diagnostic pop
-#endif
-
-
-static cJSON_bool add_item_to_object(cJSON * const object, const char * const string, cJSON * const item, const internal_hooks * const hooks, const cJSON_bool constant_key)
-{
-    char *new_key = NULL;
-    int new_type = cJSON_Invalid;
-
-    if ((object == NULL) || (string == NULL) || (item == NULL) || (object == item))
-    {
-        return false;
-    }
-
-    if (constant_key)
-    {
-        new_key = (char*)cast_away_const(string);
-        new_type = item->type | cJSON_StringIsConst;
-    }
-    else
-    {
-        new_key = (char*)cJSON_strdup((const unsigned char*)string, hooks);
-        if (new_key == NULL)
-        {
-            return false;
-        }
-
-        new_type = item->type & ~cJSON_StringIsConst;
-    }
-
-    if (!(item->type & cJSON_StringIsConst) && (item->string != NULL))
-    {
-        hooks->deallocate(item->string);
-    }
-
-    item->string = new_key;
-    item->type = new_type;
-
-    return add_item_to_array(object, item);
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item)
-{
-    return add_item_to_object(object, string, item, &global_hooks, false);
-}
-
-/* Add an item to an object with constant string as key */
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item)
-{
-    return add_item_to_object(object, string, item, &global_hooks, true);
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item)
-{
-    if (array == NULL)
-    {
-        return false;
-    }
-
-    return add_item_to_array(array, create_reference(item, &global_hooks));
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item)
-{
-    if ((object == NULL) || (string == NULL))
-    {
-        return false;
-    }
-
-    return add_item_to_object(object, string, create_reference(item, &global_hooks), &global_hooks, false);
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name)
-{
-    cJSON *null = cJSON_CreateNull();
-    if (add_item_to_object(object, name, null, &global_hooks, false))
-    {
-        return null;
-    }
-
-    cJSON_Delete(null);
-    return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name)
-{
-    cJSON *true_item = cJSON_CreateTrue();
-    if (add_item_to_object(object, name, true_item, &global_hooks, false))
-    {
-        return true_item;
-    }
-
-    cJSON_Delete(true_item);
-    return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name)
-{
-    cJSON *false_item = cJSON_CreateFalse();
-    if (add_item_to_object(object, name, false_item, &global_hooks, false))
-    {
-        return false_item;
-    }
-
-    cJSON_Delete(false_item);
-    return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean)
-{
-    cJSON *bool_item = cJSON_CreateBool(boolean);
-    if (add_item_to_object(object, name, bool_item, &global_hooks, false))
-    {
-        return bool_item;
-    }
-
-    cJSON_Delete(bool_item);
-    return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number)
-{
-    cJSON *number_item = cJSON_CreateNumber(number);
-    if (add_item_to_object(object, name, number_item, &global_hooks, false))
-    {
-        return number_item;
-    }
-
-    cJSON_Delete(number_item);
-    return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string)
-{
-    cJSON *string_item = cJSON_CreateString(string);
-    if (add_item_to_object(object, name, string_item, &global_hooks, false))
-    {
-        return string_item;
-    }
-
-    cJSON_Delete(string_item);
-    return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw)
-{
-    cJSON *raw_item = cJSON_CreateRaw(raw);
-    if (add_item_to_object(object, name, raw_item, &global_hooks, false))
-    {
-        return raw_item;
-    }
-
-    cJSON_Delete(raw_item);
-    return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name)
-{
-    cJSON *object_item = cJSON_CreateObject();
-    if (add_item_to_object(object, name, object_item, &global_hooks, false))
-    {
-        return object_item;
-    }
-
-    cJSON_Delete(object_item);
-    return NULL;
-}
-
-CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name)
-{
-    cJSON *array = cJSON_CreateArray();
-    if (add_item_to_object(object, name, array, &global_hooks, false))
-    {
-        return array;
-    }
-
-    cJSON_Delete(array);
-    return NULL;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item)
-{
-    if ((parent == NULL) || (item == NULL))
-    {
-        return NULL;
-    }
-
-    if (item != parent->child)
-    {
-        /* not the first element */
-        item->prev->next = item->next;
-    }
-    if (item->next != NULL)
-    {
-        /* not the last element */
-        item->next->prev = item->prev;
-    }
-
-    if (item == parent->child)
-    {
-        /* first element */
-        parent->child = item->next;
-    }
-    else if (item->next == NULL)
-    {
-        /* last element */
-        parent->child->prev = item->prev;
-    }
-
-    /* make sure the detached item doesn't point anywhere anymore */
-    item->prev = NULL;
-    item->next = NULL;
-
-    return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which)
-{
-    if (which < 0)
-    {
-        return NULL;
-    }
-
-    return cJSON_DetachItemViaPointer(array, get_array_item(array, (size_t)which));
-}
-
-CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which)
-{
-    cJSON_Delete(cJSON_DetachItemFromArray(array, which));
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string)
-{
-    cJSON *to_detach = cJSON_GetObjectItem(object, string);
-
-    return cJSON_DetachItemViaPointer(object, to_detach);
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string)
-{
-    cJSON *to_detach = cJSON_GetObjectItemCaseSensitive(object, string);
-
-    return cJSON_DetachItemViaPointer(object, to_detach);
-}
-
-CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string)
-{
-    cJSON_Delete(cJSON_DetachItemFromObject(object, string));
-}
-
-CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string)
-{
-    cJSON_Delete(cJSON_DetachItemFromObjectCaseSensitive(object, string));
-}
-
-/* Replace array/object items with new ones. */
-CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem)
-{
-    cJSON *after_inserted = NULL;
-
-    if (which < 0)
-    {
-        return false;
-    }
-
-    after_inserted = get_array_item(array, (size_t)which);
-    if (after_inserted == NULL)
-    {
-        return add_item_to_array(array, newitem);
-    }
-
-    newitem->next = after_inserted;
-    newitem->prev = after_inserted->prev;
-    after_inserted->prev = newitem;
-    if (after_inserted == array->child)
-    {
-        array->child = newitem;
-    }
-    else
-    {
-        newitem->prev->next = newitem;
-    }
-    return true;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement)
-{
-    if ((parent == NULL) || (replacement == NULL) || (item == NULL))
-    {
-        return false;
-    }
-
-    if (replacement == item)
-    {
-        return true;
-    }
-
-    replacement->next = item->next;
-    replacement->prev = item->prev;
-
-    if (replacement->next != NULL)
-    {
-        replacement->next->prev = replacement;
-    }
-    if (parent->child == item)
-    {
-        if (parent->child->prev == parent->child)
-        {
-            replacement->prev = replacement;
-        }
-        parent->child = replacement;
-    }
-    else
-    {   /*
-         * To find the last item in array quickly, we use prev in array.
-         * We can't modify the last item's next pointer where this item was the parent's child
-         */
-        if (replacement->prev != NULL)
-        {
-            replacement->prev->next = replacement;
-        }
-        if (replacement->next == NULL)
-        {
-            parent->child->prev = replacement;
-        }
-    }
-
-    item->next = NULL;
-    item->prev = NULL;
-    cJSON_Delete(item);
-
-    return true;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem)
-{
-    if (which < 0)
-    {
-        return false;
-    }
-
-    return cJSON_ReplaceItemViaPointer(array, get_array_item(array, (size_t)which), newitem);
-}
-
-static cJSON_bool replace_item_in_object(cJSON *object, const char *string, cJSON *replacement, cJSON_bool case_sensitive)
-{
-    if ((replacement == NULL) || (string == NULL))
-    {
-        return false;
-    }
-
-    /* replace the data in the replacement */
-    if (!(replacement->type & cJSON_StringIsConst) && (replacement->string != NULL))
-    {
-        cJSON_free(replacement->string);
-    }
-    replacement->string = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks);
-    replacement->type &= ~cJSON_StringIsConst;
-
-    return cJSON_ReplaceItemViaPointer(object, get_object_item(object, string, case_sensitive), replacement);
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem)
-{
-    return replace_item_in_object(object, string, newitem, false);
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object, const char *string, cJSON *newitem)
-{
-    return replace_item_in_object(object, string, newitem, true);
-}
-
-/* Create basic types: */
-CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void)
-{
-    cJSON *item = cJSON_New_Item(&global_hooks);
-    if(item)
-    {
-        item->type = cJSON_NULL;
-    }
-
-    return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void)
-{
-    cJSON *item = cJSON_New_Item(&global_hooks);
-    if(item)
-    {
-        item->type = cJSON_True;
-    }
-
-    return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void)
-{
-    cJSON *item = cJSON_New_Item(&global_hooks);
-    if(item)
-    {
-        item->type = cJSON_False;
-    }
-
-    return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean)
-{
-    cJSON *item = cJSON_New_Item(&global_hooks);
-    if(item)
-    {
-        item->type = boolean ? cJSON_True : cJSON_False;
-    }
-
-    return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num)
-{
-    cJSON *item = cJSON_New_Item(&global_hooks);
-    if(item)
-    {
-        item->type = cJSON_Number;
-        item->valuedouble = num;
-
-        /* use saturation in case of overflow */
-        if (num >= INT_MAX)
-        {
-            item->valueint = INT_MAX;
-        }
-        else if (num <= (double)INT_MIN)
-        {
-            item->valueint = INT_MIN;
-        }
-        else
-        {
-            item->valueint = (int)num;
-        }
-    }
-
-    return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string)
-{
-    cJSON *item = cJSON_New_Item(&global_hooks);
-    if(item)
-    {
-        item->type = cJSON_String;
-        item->valuestring = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks);
-        if(!item->valuestring)
-        {
-            cJSON_Delete(item);
-            return NULL;
-        }
-    }
-
-    return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string)
-{
-    cJSON *item = cJSON_New_Item(&global_hooks);
-    if (item != NULL)
-    {
-        item->type = cJSON_String | cJSON_IsReference;
-        item->valuestring = (char*)cast_away_const(string);
-    }
-
-    return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child)
-{
-    cJSON *item = cJSON_New_Item(&global_hooks);
-    if (item != NULL) {
-        item->type = cJSON_Object | cJSON_IsReference;
-        item->child = (cJSON*)cast_away_const(child);
-    }
-
-    return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child) {
-    cJSON *item = cJSON_New_Item(&global_hooks);
-    if (item != NULL) {
-        item->type = cJSON_Array | cJSON_IsReference;
-        item->child = (cJSON*)cast_away_const(child);
-    }
-
-    return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw)
-{
-    cJSON *item = cJSON_New_Item(&global_hooks);
-    if(item)
-    {
-        item->type = cJSON_Raw;
-        item->valuestring = (char*)cJSON_strdup((const unsigned char*)raw, &global_hooks);
-        if(!item->valuestring)
-        {
-            cJSON_Delete(item);
-            return NULL;
-        }
-    }
-
-    return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void)
-{
-    cJSON *item = cJSON_New_Item(&global_hooks);
-    if(item)
-    {
-        item->type=cJSON_Array;
-    }
-
-    return item;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void)
-{
-    cJSON *item = cJSON_New_Item(&global_hooks);
-    if (item)
-    {
-        item->type = cJSON_Object;
-    }
-
-    return item;
-}
-
-/* Create Arrays: */
-CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count)
-{
-    size_t i = 0;
-    cJSON *n = NULL;
-    cJSON *p = NULL;
-    cJSON *a = NULL;
-
-    if ((count < 0) || (numbers == NULL))
-    {
-        return NULL;
-    }
-
-    a = cJSON_CreateArray();
-    for(i = 0; a && (i < (size_t)count); i++)
-    {
-        n = cJSON_CreateNumber(numbers[i]);
-        if (!n)
-        {
-            cJSON_Delete(a);
-            return NULL;
-        }
-        if(!i)
-        {
-            a->child = n;
-        }
-        else
-        {
-            suffix_object(p, n);
-        }
-        p = n;
-    }
-    a->child->prev = n;
-
-    return a;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count)
-{
-    size_t i = 0;
-    cJSON *n = NULL;
-    cJSON *p = NULL;
-    cJSON *a = NULL;
-
-    if ((count < 0) || (numbers == NULL))
-    {
-        return NULL;
-    }
-
-    a = cJSON_CreateArray();
-
-    for(i = 0; a && (i < (size_t)count); i++)
-    {
-        n = cJSON_CreateNumber((double)numbers[i]);
-        if(!n)
-        {
-            cJSON_Delete(a);
-            return NULL;
-        }
-        if(!i)
-        {
-            a->child = n;
-        }
-        else
-        {
-            suffix_object(p, n);
-        }
-        p = n;
-    }
-    a->child->prev = n;
-
-    return a;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count)
-{
-    size_t i = 0;
-    cJSON *n = NULL;
-    cJSON *p = NULL;
-    cJSON *a = NULL;
-
-    if ((count < 0) || (numbers == NULL))
-    {
-        return NULL;
-    }
-
-    a = cJSON_CreateArray();
-
-    for(i = 0;a && (i < (size_t)count); i++)
-    {
-        n = cJSON_CreateNumber(numbers[i]);
-        if(!n)
-        {
-            cJSON_Delete(a);
-            return NULL;
-        }
-        if(!i)
-        {
-            a->child = n;
-        }
-        else
-        {
-            suffix_object(p, n);
-        }
-        p = n;
-    }
-    a->child->prev = n;
-
-    return a;
-}
-
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count)
-{
-    size_t i = 0;
-    cJSON *n = NULL;
-    cJSON *p = NULL;
-    cJSON *a = NULL;
-
-    if ((count < 0) || (strings == NULL))
-    {
-        return NULL;
-    }
-
-    a = cJSON_CreateArray();
-
-    for (i = 0; a && (i < (size_t)count); i++)
-    {
-        n = cJSON_CreateString(strings[i]);
-        if(!n)
-        {
-            cJSON_Delete(a);
-            return NULL;
-        }
-        if(!i)
-        {
-            a->child = n;
-        }
-        else
-        {
-            suffix_object(p,n);
-        }
-        p = n;
-    }
-    a->child->prev = n;
-
-    return a;
-}
-
-/* Duplication */
-CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse)
-{
-    cJSON *newitem = NULL;
-    cJSON *child = NULL;
-    cJSON *next = NULL;
-    cJSON *newchild = NULL;
-
-    /* Bail on bad ptr */
-    if (!item)
-    {
-        goto fail;
-    }
-    /* Create new item */
-    newitem = cJSON_New_Item(&global_hooks);
-    if (!newitem)
-    {
-        goto fail;
-    }
-    /* Copy over all vars */
-    newitem->type = item->type & (~cJSON_IsReference);
-    newitem->valueint = item->valueint;
-    newitem->valuedouble = item->valuedouble;
-    if (item->valuestring)
-    {
-        newitem->valuestring = (char*)cJSON_strdup((unsigned char*)item->valuestring, &global_hooks);
-        if (!newitem->valuestring)
-        {
-            goto fail;
-        }
-    }
-    if (item->string)
-    {
-        newitem->string = (item->type&cJSON_StringIsConst) ? item->string : (char*)cJSON_strdup((unsigned char*)item->string, &global_hooks);
-        if (!newitem->string)
-        {
-            goto fail;
-        }
-    }
-    /* If non-recursive, then we're done! */
-    if (!recurse)
-    {
-        return newitem;
-    }
-    /* Walk the ->next chain for the child. */
-    child = item->child;
-    while (child != NULL)
-    {
-        newchild = cJSON_Duplicate(child, true); /* Duplicate (with recurse) each item in the ->next chain */
-        if (!newchild)
-        {
-            goto fail;
-        }
-        if (next != NULL)
-        {
-            /* If newitem->child already set, then crosswire ->prev and ->next and move on */
-            next->next = newchild;
-            newchild->prev = next;
-            next = newchild;
-        }
-        else
-        {
-            /* Set newitem->child and move to it */
-            newitem->child = newchild;
-            next = newchild;
-        }
-        child = child->next;
-    }
-    if (newitem && newitem->child)
-    {
-        newitem->child->prev = newchild;
-    }
-
-    return newitem;
-
-fail:
-    if (newitem != NULL)
-    {
-        cJSON_Delete(newitem);
-    }
-
-    return NULL;
-}
-
-static void skip_oneline_comment(char **input)
-{
-    *input += static_strlen("//");
-
-    for (; (*input)[0] != '\0'; ++(*input))
-    {
-        if ((*input)[0] == '\n') {
-            *input += static_strlen("\n");
-            return;
-        }
-    }
-}
-
-static void skip_multiline_comment(char **input)
-{
-    *input += static_strlen("/*");
-
-    for (; (*input)[0] != '\0'; ++(*input))
-    {
-        if (((*input)[0] == '*') && ((*input)[1] == '/'))
-        {
-            *input += static_strlen("*/");
-            return;
-        }
-    }
-}
-
-static void minify_string(char **input, char **output) {
-    (*output)[0] = (*input)[0];
-    *input += static_strlen("\"");
-    *output += static_strlen("\"");
-
-
-    for (; (*input)[0] != '\0'; (void)++(*input), ++(*output)) {
-        (*output)[0] = (*input)[0];
-
-        if ((*input)[0] == '\"') {
-            (*output)[0] = '\"';
-            *input += static_strlen("\"");
-            *output += static_strlen("\"");
-            return;
-        } else if (((*input)[0] == '\\') && ((*input)[1] == '\"')) {
-            (*output)[1] = (*input)[1];
-            *input += static_strlen("\"");
-            *output += static_strlen("\"");
-        }
-    }
-}
-
-CJSON_PUBLIC(void) cJSON_Minify(char *json)
-{
-    char *into = json;
-
-    if (json == NULL)
-    {
-        return;
-    }
-
-    while (json[0] != '\0')
-    {
-        switch (json[0])
-        {
-            case ' ':
-            case '\t':
-            case '\r':
-            case '\n':
-                json++;
-                break;
-
-            case '/':
-                if (json[1] == '/')
-                {
-                    skip_oneline_comment(&json);
-                }
-                else if (json[1] == '*')
-                {
-                    skip_multiline_comment(&json);
-                } else {
-                    json++;
-                }
-                break;
-
-            case '\"':
-                minify_string(&json, (char**)&into);
-                break;
-
-            default:
-                into[0] = json[0];
-                json++;
-                into++;
-        }
-    }
-
-    /* and null-terminate. */
-    *into = '\0';
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item)
-{
-    if (item == NULL)
-    {
-        return false;
-    }
-
-    return (item->type & 0xFF) == cJSON_Invalid;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item)
-{
-    if (item == NULL)
-    {
-        return false;
-    }
-
-    return (item->type & 0xFF) == cJSON_False;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item)
-{
-    if (item == NULL)
-    {
-        return false;
-    }
-
-    return (item->type & 0xff) == cJSON_True;
-}
-
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item)
-{
-    if (item == NULL)
-    {
-        return false;
-    }
-
-    return (item->type & (cJSON_True | cJSON_False)) != 0;
-}
-CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item)
-{
-    if (item == NULL)
-    {
-        return false;
-    }
-
-    return (item->type & 0xFF) == cJSON_NULL;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item)
-{
-    if (item == NULL)
-    {
-        return false;
-    }
-
-    return (item->type & 0xFF) == cJSON_Number;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item)
-{
-    if (item == NULL)
-    {
-        return false;
-    }
-
-    return (item->type & 0xFF) == cJSON_String;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item)
-{
-    if (item == NULL)
-    {
-        return false;
-    }
-
-    return (item->type & 0xFF) == cJSON_Array;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item)
-{
-    if (item == NULL)
-    {
-        return false;
-    }
-
-    return (item->type & 0xFF) == cJSON_Object;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item)
-{
-    if (item == NULL)
-    {
-        return false;
-    }
-
-    return (item->type & 0xFF) == cJSON_Raw;
-}
-
-CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive)
-{
-    if ((a == NULL) || (b == NULL) || ((a->type & 0xFF) != (b->type & 0xFF)) || cJSON_IsInvalid(a))
-    {
-        return false;
-    }
-
-    /* check if type is valid */
-    switch (a->type & 0xFF)
-    {
-        case cJSON_False:
-        case cJSON_True:
-        case cJSON_NULL:
-        case cJSON_Number:
-        case cJSON_String:
-        case cJSON_Raw:
-        case cJSON_Array:
-        case cJSON_Object:
-            break;
-
-        default:
-            return false;
-    }
-
-    /* identical objects are equal */
-    if (a == b)
-    {
-        return true;
-    }
-
-    switch (a->type & 0xFF)
-    {
-        /* in these cases and equal type is enough */
-        case cJSON_False:
-        case cJSON_True:
-        case cJSON_NULL:
-            return true;
-
-        case cJSON_Number:
-            if (compare_double(a->valuedouble, b->valuedouble))
-            {
-                return true;
-            }
-            return false;
-
-        case cJSON_String:
-        case cJSON_Raw:
-            if ((a->valuestring == NULL) || (b->valuestring == NULL))
-            {
-                return false;
-            }
-            if (strcmp(a->valuestring, b->valuestring) == 0)
-            {
-                return true;
-            }
-
-            return false;
-
-        case cJSON_Array:
-        {
-            cJSON *a_element = a->child;
-            cJSON *b_element = b->child;
-
-            for (; (a_element != NULL) && (b_element != NULL);)
-            {
-                if (!cJSON_Compare(a_element, b_element, case_sensitive))
-                {
-                    return false;
-                }
-
-                a_element = a_element->next;
-                b_element = b_element->next;
-            }
-
-            /* one of the arrays is longer than the other */
-            if (a_element != b_element) {
-                return false;
-            }
-
-            return true;
-        }
-
-        case cJSON_Object:
-        {
-            cJSON *a_element = NULL;
-            cJSON *b_element = NULL;
-            cJSON_ArrayForEach(a_element, a)
-            {
-                /* TODO This has O(n^2) runtime, which is horrible! */
-                b_element = get_object_item(b, a_element->string, case_sensitive);
-                if (b_element == NULL)
-                {
-                    return false;
-                }
-
-                if (!cJSON_Compare(a_element, b_element, case_sensitive))
-                {
-                    return false;
-                }
-            }
-
-            /* doing this twice, once on a and b to prevent true comparison if a subset of b
-             * TODO: Do this the proper way, this is just a fix for now */
-            cJSON_ArrayForEach(b_element, b)
-            {
-                a_element = get_object_item(a, b_element->string, case_sensitive);
-                if (a_element == NULL)
-                {
-                    return false;
-                }
-
-                if (!cJSON_Compare(b_element, a_element, case_sensitive))
-                {
-                    return false;
-                }
-            }
-
-            return true;
-        }
-
-        default:
-            return false;
-    }
-}
-
-CJSON_PUBLIC(void *) cJSON_malloc(size_t size)
-{
-    return global_hooks.allocate(size);
-}
-
-CJSON_PUBLIC(void) cJSON_free(void *object)
-{
-    global_hooks.deallocate(object);
-}

+ 1 - 293
src/deps/cjson/cJSON.h

@@ -1,293 +1 @@
-/*
-  Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-  THE SOFTWARE.
-*/
-
-#ifndef cJSON__h
-#define cJSON__h
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#if !defined(__WINDOWS__) && (defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32))
-#define __WINDOWS__
-#endif
-
-#ifdef __WINDOWS__
-
-/* When compiling for windows, we specify a specific calling convention to avoid issues where we are being called from a project with a different default calling convention.  For windows you have 3 define options:
-
-CJSON_HIDE_SYMBOLS - Define this in the case where you don't want to ever dllexport symbols
-CJSON_EXPORT_SYMBOLS - Define this on library build when you want to dllexport symbols (default)
-CJSON_IMPORT_SYMBOLS - Define this if you want to dllimport symbol
-
-For *nix builds that support visibility attribute, you can define similar behavior by
-
-setting default visibility to hidden by adding
--fvisibility=hidden (for gcc)
-or
--xldscope=hidden (for sun cc)
-to CFLAGS
-
-then using the CJSON_API_VISIBILITY flag to "export" the same symbols the way CJSON_EXPORT_SYMBOLS does
-
-*/
-
-#define CJSON_CDECL __cdecl
-#define CJSON_STDCALL __stdcall
-
-/* export symbols by default, this is necessary for copy pasting the C and header file */
-#if !defined(CJSON_HIDE_SYMBOLS) && !defined(CJSON_IMPORT_SYMBOLS) && !defined(CJSON_EXPORT_SYMBOLS)
-#define CJSON_EXPORT_SYMBOLS
-#endif
-
-#if defined(CJSON_HIDE_SYMBOLS)
-#define CJSON_PUBLIC(type)   type CJSON_STDCALL
-#elif defined(CJSON_EXPORT_SYMBOLS)
-#define CJSON_PUBLIC(type)   __declspec(dllexport) type CJSON_STDCALL
-#elif defined(CJSON_IMPORT_SYMBOLS)
-#define CJSON_PUBLIC(type)   __declspec(dllimport) type CJSON_STDCALL
-#endif
-#else /* !__WINDOWS__ */
-#define CJSON_CDECL
-#define CJSON_STDCALL
-
-#if (defined(__GNUC__) || defined(__SUNPRO_CC) || defined (__SUNPRO_C)) && defined(CJSON_API_VISIBILITY)
-#define CJSON_PUBLIC(type)   __attribute__((visibility("default"))) type
-#else
-#define CJSON_PUBLIC(type) type
-#endif
-#endif
-
-/* project version */
-#define CJSON_VERSION_MAJOR 1
-#define CJSON_VERSION_MINOR 7
-#define CJSON_VERSION_PATCH 14
-
-#include <stddef.h>
-
-/* cJSON Types: */
-#define cJSON_Invalid (0)
-#define cJSON_False  (1 << 0)
-#define cJSON_True   (1 << 1)
-#define cJSON_NULL   (1 << 2)
-#define cJSON_Number (1 << 3)
-#define cJSON_String (1 << 4)
-#define cJSON_Array  (1 << 5)
-#define cJSON_Object (1 << 6)
-#define cJSON_Raw    (1 << 7) /* raw json */
-
-#define cJSON_IsReference 256
-#define cJSON_StringIsConst 512
-
-/* The cJSON structure: */
-typedef struct cJSON
-{
-    /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */
-    struct cJSON *next;
-    struct cJSON *prev;
-    /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */
-    struct cJSON *child;
-
-    /* The type of the item, as above. */
-    int type;
-
-    /* The item's string, if type==cJSON_String  and type == cJSON_Raw */
-    char *valuestring;
-    /* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */
-    int valueint;
-    /* The item's number, if type==cJSON_Number */
-    double valuedouble;
-
-    /* The item's data string, if this item is the child of, or is in the list of subitems of an object. */
-    char *string;
-} cJSON;
-
-typedef struct cJSON_Hooks
-{
-      /* malloc/free are CDECL on Windows regardless of the default calling convention of the compiler, so ensure the hooks allow passing those functions directly. */
-      void *(CJSON_CDECL *malloc_fn)(size_t sz);
-      void (CJSON_CDECL *free_fn)(void *ptr);
-} cJSON_Hooks;
-
-typedef int cJSON_bool;
-
-/* Limits how deeply nested arrays/objects can be before cJSON rejects to parse them.
- * This is to prevent stack overflows. */
-#ifndef CJSON_NESTING_LIMIT
-#define CJSON_NESTING_LIMIT 1000
-#endif
-
-/* returns the version of cJSON as a string */
-CJSON_PUBLIC(const char*) cJSON_Version(void);
-
-/* Supply malloc, realloc and free functions to cJSON */
-CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks);
-
-/* Memory Management: the caller is always responsible to free the results from all variants of cJSON_Parse (with cJSON_Delete) and cJSON_Print (with stdlib free, cJSON_Hooks.free_fn, or cJSON_free as appropriate). The exception is cJSON_PrintPreallocated, where the caller has full responsibility of the buffer. */
-/* Supply a code_block of JSON, and this returns a cJSON object you can interrogate. */
-CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);
-CJSON_PUBLIC(cJSON *) cJSON_ParseWithLength(const char *value, size_t buffer_length);
-/* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */
-/* If you supply a ptr in return_parse_end and parsing fails, then return_parse_end will contain a pointer to the error so will match cJSON_GetErrorPtr(). */
-CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated);
-CJSON_PUBLIC(cJSON *) cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated);
-
-/* Render a cJSON entity to text for transfer/storage. */
-CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item);
-/* Render a cJSON entity to text for transfer/storage without any formatting. */
-CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item);
-/* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess at the final size. guessing well reduces reallocation. fmt=0 gives unformatted, =1 gives formatted */
-CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt);
-/* Render a cJSON entity to text using a buffer already allocated in memory with given length. Returns 1 on success and 0 on failure. */
-/* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */
-CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format);
-/* Delete a cJSON entity and all subentities. */
-CJSON_PUBLIC(void) cJSON_Delete(cJSON *item);
-
-/* Returns the number of items in an array (or object). */
-CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array);
-/* Retrieve item number "index" from array "array". Returns NULL if unsuccessful. */
-CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index);
-/* Get item "string" from object. Case insensitive. */
-CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string);
-CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string);
-CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string);
-/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
-CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void);
-
-/* Check item type and return its value */
-CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item);
-CJSON_PUBLIC(double) cJSON_GetNumberValue(const cJSON * const item);
-
-/* These functions check the type of an item */
-CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item);
-CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item);
-
-/* These calls create a cJSON item of the appropriate type. */
-CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void);
-CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void);
-CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void);
-CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean);
-CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num);
-CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string);
-/* raw json */
-CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw);
-CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void);
-CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);
-
-/* Create a string where valuestring references a string so
- * it will not be freed by cJSON_Delete */
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string);
-/* Create an object/array that only references it's elements so
- * they will not be freed by cJSON_Delete */
-CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child);
-CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child);
-
-/* These utilities create an Array of count items.
- * The parameter count cannot be greater than the number of elements in the number array, otherwise array access will be out of bounds.*/
-CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count);
-CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count);
-CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count);
-CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count);
-
-/* Append item to the specified array/object. */
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item);
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
-/* Use this when string is definitely const (i.e. a literal, or as good as), and will definitely survive the cJSON object.
- * WARNING: When this function was used, make sure to always check that (item->type & cJSON_StringIsConst) is zero before
- * writing to `item->string` */
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item);
-/* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
-CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
-
-/* Remove/Detach items from Arrays/Objects. */
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item);
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which);
-CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string);
-CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string);
-CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string);
-CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string);
-
-/* Update array items. */
-CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem); /* Shifts pre-existing items to the right. */
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement);
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
-CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const char *string,cJSON *newitem);
-
-/* Duplicate a cJSON item */
-CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse);
-/* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will
- * need to be released. With recurse!=0, it will duplicate any children connected to the item.
- * The item->next and ->prev pointers are always zero on return from Duplicate. */
-/* Recursively compare two cJSON items for equality. If either a or b is NULL or invalid, they will be considered unequal.
- * case_sensitive determines if object keys are treated case sensitive (1) or case insensitive (0) */
-CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive);
-
-/* Minify a strings, remove blank characters(such as ' ', '\t', '\r', '\n') from strings.
- * The input pointer json cannot point to a read-only address area, such as a string constant, 
- * but should point to a readable and writable adress area. */
-CJSON_PUBLIC(void) cJSON_Minify(char *json);
-
-/* Helper functions for creating and adding items to an object at the same time.
- * They return the added item or NULL on failure. */
-CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name);
-CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name);
-CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name);
-CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean);
-CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number);
-CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string);
-CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw);
-CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name);
-CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name);
-
-/* When assigning an integer value, it needs to be propagated to valuedouble too. */
-#define cJSON_SetIntValue(object, number) ((object) ? (object)->valueint = (object)->valuedouble = (number) : (number))
-/* helper for the cJSON_SetNumberValue macro */
-CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number);
-#define cJSON_SetNumberValue(object, number) ((object != NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number))
-/* Change the valuestring of a cJSON_String object, only takes effect when type of object is cJSON_String */
-CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring);
-
-/* Macro for iterating over an array or object */
-#define cJSON_ArrayForEach(element, array) for(element = (array != NULL) ? (array)->child : NULL; element != NULL; element = element->next)
-
-/* malloc/free objects using the malloc/free functions that have been set with cJSON_InitHooks */
-CJSON_PUBLIC(void *) cJSON_malloc(size_t size);
-CJSON_PUBLIC(void) cJSON_free(void *object);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+#include "./cJSON/cJSON.h"

+ 1 - 1
src/deps/dlfcn/CMakeLists.txt

@@ -1,3 +1,3 @@
 PROJECT(dl LANGUAGES C)
-ADD_LIBRARY(dl dlfcn.c)
+ADD_LIBRARY(dl dlfcn-win32/src/dlfcn.c)
 INSTALL(TARGETS dl)

+ 0 - 17
src/deps/dlfcn/COPYING

@@ -1,17 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

+ 12 - 0
src/deps/dlfcn/README

@@ -0,0 +1,12 @@
+dlfcn依赖库
+-------------------------
+
+该库依赖自dlfcn-win32库
+提供msvc下posix的dl动态库
+./dlfcn-win32文件夹是git子模块
+
+只使用`dlfcn-win32`在`src/dlfcn.c`和`src/dlfcn.h`文件
+使用`CMakeLists.txt`再编译该库
+
+项目url: https://github.com/dlfcn-win32/dlfcn-win32
+子模块: https://github.com/aFun-org/dlfcn-win32

+ 1 - 0
src/deps/dlfcn/dlfcn-win32

@@ -0,0 +1 @@
+Subproject commit 010969070719fe14435f4b146ecef5e65df0098f

+ 0 - 785
src/deps/dlfcn/dlfcn.c

@@ -1,785 +0,0 @@
-/*
- * dlfcn-win32
- * Copyright (c) 2007 Ramiro Polla
- * Copyright (c) 2015 Tiancheng "Timothy" Gu
- * Copyright (c) 2019 Pali Rohár <pali.rohar@gmail.com>
- * Copyright (c) 2020 Ralf Habacker <ralf.habacker@freenet.de>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifdef _DEBUG
-#define _CRTDBG_MAP_ALLOC
-#include <stdlib.h>
-#include <crtdbg.h>
-#endif
-#include <Windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-/* Older versions do not have this type */
-#if _WIN32_WINNT < 0x0500
-typedef ULONG ULONG_PTR;
-#endif
-
-/* Older SDK versions do not have these macros */
-#ifndef GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
-#define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 0x4
-#endif
-#ifndef GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT
-#define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 0x2
-#endif
-
-#ifdef _MSC_VER
-/* https://docs.microsoft.com/en-us/cpp/intrinsics/returnaddress */
-#pragma intrinsic( _ReturnAddress )
-#else
-/* https://gcc.gnu.org/onlinedocs/gcc/Return-Address.html */
-#ifndef _ReturnAddress
-#define _ReturnAddress( ) ( __builtin_extract_return_addr( __builtin_return_address( 0 ) ) )
-#endif
-#endif
-
-#ifdef DLFCN_WIN32_SHARED
-#define DLFCN_WIN32_EXPORTS
-#endif
-#include "dlfcn.h"
-
-#if defined( _MSC_VER ) && _MSC_VER >= 1300
-/* https://docs.microsoft.com/en-us/cpp/cpp/noinline */
-#define DLFCN_NOINLINE __declspec( noinline )
-#elif defined( __GNUC__ ) && ( ( __GNUC__ > 3 ) || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 ) )
-/* https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html */
-#define DLFCN_NOINLINE __attribute__(( noinline ))
-#else
-#define DLFCN_NOINLINE
-#endif
-
-/* Note:
- * MSDN says these functions are not thread-safe. We make no efforts to have
- * any kind of thread safety.
- */
-
-typedef struct local_object {
-    HMODULE hModule;
-    struct local_object *previous;
-    struct local_object *next;
-} local_object;
-
-static local_object first_object;
-
-/* These functions implement a double linked list for the local objects. */
-static local_object *local_search( HMODULE hModule )
-{
-    local_object *pobject;
-
-    if( hModule == NULL )
-        return NULL;
-
-    for( pobject = &first_object; pobject; pobject = pobject->next )
-        if( pobject->hModule == hModule )
-            return pobject;
-
-    return NULL;
-}
-
-static BOOL local_add( HMODULE hModule )
-{
-    local_object *pobject;
-    local_object *nobject;
-
-    if( hModule == NULL )
-        return TRUE;
-
-    pobject = local_search( hModule );
-
-    /* Do not add object again if it's already on the list */
-    if( pobject != NULL )
-        return TRUE;
-
-    for( pobject = &first_object; pobject->next; pobject = pobject->next );
-
-    nobject = (local_object *) malloc( sizeof( local_object ) );
-
-    if( !nobject )
-        return FALSE;
-
-    pobject->next = nobject;
-    nobject->next = NULL;
-    nobject->previous = pobject;
-    nobject->hModule = hModule;
-
-    return TRUE;
-}
-
-static void local_rem( HMODULE hModule )
-{
-    local_object *pobject;
-
-    if( hModule == NULL )
-        return;
-
-    pobject = local_search( hModule );
-
-    if( pobject == NULL )
-        return;
-
-    if( pobject->next )
-        pobject->next->previous = pobject->previous;
-    if( pobject->previous )
-        pobject->previous->next = pobject->next;
-
-    free( pobject );
-}
-
-/* POSIX says dlerror( ) doesn't have to be thread-safe, so we use one
- * static buffer.
- * MSDN says the buffer cannot be larger than 64K bytes, so we set it to
- * the limit.
- */
-static char error_buffer[65535];
-static BOOL error_occurred;
-
-static void save_err_str( const char *str, DWORD dwMessageId )
-{
-    DWORD ret;
-    size_t pos, len;
-
-    len = strlen( str );
-    if( len > sizeof( error_buffer ) - 5 )
-        len = sizeof( error_buffer ) - 5;
-
-    /* Format error message to:
-     * "<argument to function that failed>": <Windows localized error message>
-      */
-    pos = 0;
-    error_buffer[pos++] = '"';
-    memcpy( error_buffer + pos, str, len );
-    pos += len;
-    error_buffer[pos++] = '"';
-    error_buffer[pos++] = ':';
-    error_buffer[pos++] = ' ';
-
-    ret = FormatMessageA( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwMessageId,
-        MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ),
-        error_buffer + pos, (DWORD) ( sizeof( error_buffer ) - pos ), NULL );
-    pos += ret;
-
-    /* When FormatMessageA() fails it returns zero and does not touch buffer
-     * so add trailing null byte */
-    if( ret == 0 )
-        error_buffer[pos] = '\0';
-
-    if( pos > 1 )
-    {
-        /* POSIX says the string must not have trailing <newline> */
-        if( error_buffer[pos-2] == '\r' && error_buffer[pos-1] == '\n' )
-            error_buffer[pos-2] = '\0';
-    }
-
-    error_occurred = TRUE;
-}
-
-static void save_err_ptr_str( const void *ptr, DWORD dwMessageId )
-{
-    char ptr_buf[2 + 2 * sizeof( ptr ) + 1];
-    char num;
-    size_t i;
-
-    ptr_buf[0] = '0';
-    ptr_buf[1] = 'x';
-
-    for( i = 0; i < 2 * sizeof( ptr ); i++ )
-    {
-        num = (char) ( ( ( (ULONG_PTR) ptr ) >> ( 8 * sizeof( ptr ) - 4 * ( i + 1 ) ) ) & 0xF );
-        ptr_buf[2 + i] = num + ( ( num < 0xA ) ? '0' : ( 'A' - 0xA ) );
-    }
-
-    ptr_buf[2 + 2 * sizeof( ptr )] = 0;
-
-    save_err_str( ptr_buf, dwMessageId );
-}
-
-static HMODULE MyGetModuleHandleFromAddress( const void *addr )
-{
-    static BOOL (WINAPI *GetModuleHandleExAPtr)(DWORD, LPCSTR, HMODULE *) = NULL;
-    static BOOL failed = FALSE;
-    HMODULE kernel32;
-    HMODULE hModule;
-    MEMORY_BASIC_INFORMATION info;
-    SIZE_T sLen;
-
-    if( !failed && GetModuleHandleExAPtr == NULL )
-    {
-        kernel32 = GetModuleHandleA( "Kernel32.dll" );
-        if( kernel32 != NULL )
-            GetModuleHandleExAPtr = (BOOL (WINAPI *)(DWORD, LPCSTR, HMODULE *)) GetProcAddress( kernel32, "GetModuleHandleExA" );
-        if( GetModuleHandleExAPtr == NULL )
-            failed = TRUE;
-    }
-
-    if( !failed )
-    {
-        /* If GetModuleHandleExA is available use it with GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS */
-        if( !GetModuleHandleExAPtr( GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, addr, &hModule ) )
-            return NULL;
-    }
-    else
-    {
-        /* To get HMODULE from address use undocumented hack from https://stackoverflow.com/a/2396380
-         * The HMODULE of a DLL is the same value as the module's base address.
-         */
-        sLen = VirtualQuery( addr, &info, sizeof( info ) );
-        if( sLen != sizeof( info ) )
-            return NULL;
-        hModule = (HMODULE) info.AllocationBase;
-    }
-
-    return hModule;
-}
-
-/* Load Psapi.dll at runtime, this avoids linking caveat */
-static BOOL MyEnumProcessModules( HANDLE hProcess, HMODULE *lphModule, DWORD cb, LPDWORD lpcbNeeded )
-{
-    static BOOL (WINAPI *EnumProcessModulesPtr)(HANDLE, HMODULE *, DWORD, LPDWORD) = NULL;
-    static BOOL failed = FALSE;
-    UINT uMode;
-    HMODULE psapi;
-
-    if( failed )
-        return FALSE;
-
-    if( EnumProcessModulesPtr == NULL )
-    {
-        /* Windows 7 and newer versions have K32EnumProcessModules in Kernel32.dll which is always pre-loaded */
-        psapi = GetModuleHandleA( "Kernel32.dll" );
-        if( psapi != NULL )
-            EnumProcessModulesPtr = (BOOL (WINAPI *)(HANDLE, HMODULE *, DWORD, LPDWORD)) GetProcAddress( psapi, "K32EnumProcessModules" );
-
-        /* Windows Vista and older version have EnumProcessModules in Psapi.dll which needs to be loaded */
-        if( EnumProcessModulesPtr == NULL )
-        {
-            /* Do not let Windows display the critical-error-handler message box */
-            uMode = SetErrorMode( SEM_FAILCRITICALERRORS );
-            psapi = LoadLibraryA( "Psapi.dll" );
-            if( psapi != NULL )
-            {
-                EnumProcessModulesPtr = (BOOL (WINAPI *)(HANDLE, HMODULE *, DWORD, LPDWORD)) GetProcAddress( psapi, "EnumProcessModules" );
-                if( EnumProcessModulesPtr == NULL )
-                    FreeLibrary( psapi );
-            }
-            SetErrorMode( uMode );
-        }
-
-        if( EnumProcessModulesPtr == NULL )
-        {
-            failed = TRUE;
-            return FALSE;
-        }
-    }
-
-    return EnumProcessModulesPtr( hProcess, lphModule, cb, lpcbNeeded );
-}
-
-DLFCN_EXPORT
-void *dlopen( const char *file, int mode )
-{
-    HMODULE hModule;
-    UINT uMode;
-
-    error_occurred = FALSE;
-
-    /* Do not let Windows display the critical-error-handler message box */
-    uMode = SetErrorMode( SEM_FAILCRITICALERRORS );
-
-    if( file == NULL )
-    {
-        /* POSIX says that if the value of file is NULL, a handle on a global
-         * symbol object must be provided. That object must be able to access
-         * all symbols from the original program file, and any objects loaded
-         * with the RTLD_GLOBAL flag.
-         * The return value from GetModuleHandle( ) allows us to retrieve
-         * symbols only from the original program file. EnumProcessModules() is
-         * used to access symbols from other libraries. For objects loaded
-         * with the RTLD_LOCAL flag, we create our own list later on. They are
-         * excluded from EnumProcessModules() iteration.
-         */
-        hModule = GetModuleHandle( NULL );
-
-        if( !hModule )
-            save_err_str( "(null)", GetLastError( ) );
-    }
-    else
-    {
-        HANDLE hCurrentProc;
-        DWORD dwProcModsBefore, dwProcModsAfter;
-        char lpFileName[MAX_PATH];
-        size_t i, len;
-
-        len = strlen( file );
-
-        if( len >= sizeof( lpFileName ) )
-        {
-            save_err_str( file, ERROR_FILENAME_EXCED_RANGE );
-            hModule = NULL;
-        }
-        else
-        {
-            /* MSDN says backslashes *must* be used instead of forward slashes. */
-            for( i = 0; i < len; i++ )
-            {
-                if( file[i] == '/' )
-                    lpFileName[i] = '\\';
-                else
-                    lpFileName[i] = file[i];
-            }
-            lpFileName[len] = '\0';
-
-            hCurrentProc = GetCurrentProcess( );
-
-            if( MyEnumProcessModules( hCurrentProc, NULL, 0, &dwProcModsBefore ) == 0 )
-                dwProcModsBefore = 0;
-
-            /* POSIX says the search path is implementation-defined.
-             * LOAD_WITH_ALTERED_SEARCH_PATH is used to make it behave more closely
-             * to UNIX's search paths (start with system folders instead of current
-             * folder).
-             */
-            hModule = LoadLibraryExA( lpFileName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH );
-
-            if( !hModule )
-            {
-                save_err_str( lpFileName, GetLastError( ) );
-            }
-            else
-            {
-                if( MyEnumProcessModules( hCurrentProc, NULL, 0, &dwProcModsAfter ) == 0 )
-                    dwProcModsAfter = 0;
-
-                /* If the object was loaded with RTLD_LOCAL, add it to list of local
-                 * objects, so that its symbols cannot be retrieved even if the handle for
-                 * the original program file is passed. POSIX says that if the same
-                 * file is specified in multiple invocations, and any of them are
-                 * RTLD_GLOBAL, even if any further invocations use RTLD_LOCAL, the
-                 * symbols will remain global. If number of loaded modules was not
-                 * changed after calling LoadLibraryEx(), it means that library was
-                 * already loaded.
-                 */
-                if( (mode & RTLD_LOCAL) && dwProcModsBefore != dwProcModsAfter )
-                {
-                    if( !local_add( hModule ) )
-                    {
-                        save_err_str( lpFileName, ERROR_NOT_ENOUGH_MEMORY );
-                        FreeLibrary( hModule );
-                        hModule = NULL;
-                    }
-                }
-                else if( !(mode & RTLD_LOCAL) && dwProcModsBefore == dwProcModsAfter )
-                {
-                    local_rem( hModule );
-                }
-            }
-        }
-    }
-
-    /* Return to previous state of the error-mode bit flags. */
-    SetErrorMode( uMode );
-
-    return (void *) hModule;
-}
-
-DLFCN_EXPORT
-int dlclose( void *handle )
-{
-    HMODULE hModule = (HMODULE) handle;
-    BOOL ret;
-
-    error_occurred = FALSE;
-
-    ret = FreeLibrary( hModule );
-
-    /* If the object was loaded with RTLD_LOCAL, remove it from list of local
-     * objects.
-     */
-    if( ret )
-        local_rem( hModule );
-    else
-        save_err_ptr_str( handle, GetLastError( ) );
-
-    /* dlclose's return value in inverted in relation to FreeLibrary's. */
-    ret = !ret;
-
-    return (int) ret;
-}
-
-DLFCN_NOINLINE /* Needed for _ReturnAddress() */
-DLFCN_EXPORT
-void *dlsym( void *handle, const char *name )
-{
-    FARPROC symbol;
-    HMODULE hCaller;
-    HMODULE hModule;
-    DWORD dwMessageId;
-
-    error_occurred = FALSE;
-
-    symbol = NULL;
-    hCaller = NULL;
-    hModule = GetModuleHandle( NULL );
-    dwMessageId = 0;
-
-    if( handle == RTLD_DEFAULT )
-    {
-        /* The symbol lookup happens in the normal global scope; that is,
-         * a search for a symbol using this handle would find the same
-         * definition as a direct use of this symbol in the program code.
-         * So use same lookup procedure as when filename is NULL.
-         */
-        handle = hModule;
-    }
-    else if( handle == RTLD_NEXT )
-    {
-        /* Specifies the next object after this one that defines name.
-         * This one refers to the object containing the invocation of dlsym().
-         * The next object is the one found upon the application of a load
-         * order symbol resolution algorithm. To get caller function of dlsym()
-         * use _ReturnAddress() intrinsic. To get HMODULE of caller function
-         * use MyGetModuleHandleFromAddress() which calls either standard
-         * GetModuleHandleExA() function or hack via VirtualQuery().
-         */
-        hCaller = MyGetModuleHandleFromAddress( _ReturnAddress( ) );
-
-        if( hCaller == NULL )
-        {
-            dwMessageId = ERROR_INVALID_PARAMETER;
-            goto end;
-        }
-    }
-
-    if( handle != RTLD_NEXT )
-    {
-        symbol = GetProcAddress( (HMODULE) handle, name );
-
-        if( symbol != NULL )
-            goto end;
-    }
-
-    /* If the handle for the original program file is passed, also search
-     * in all globally loaded objects.
-     */
-
-    if( hModule == handle || handle == RTLD_NEXT )
-    {
-        HANDLE hCurrentProc;
-        HMODULE *modules;
-        DWORD cbNeeded;
-        DWORD dwSize;
-        size_t i;
-
-        hCurrentProc = GetCurrentProcess( );
-
-        /* GetModuleHandle( NULL ) only returns the current program file. So
-         * if we want to get ALL loaded module including those in linked DLLs,
-         * we have to use EnumProcessModules( ).
-         */
-        if( MyEnumProcessModules( hCurrentProc, NULL, 0, &dwSize ) != 0 )
-        {
-            modules = malloc( dwSize );
-            if( modules )
-            {
-                if( MyEnumProcessModules( hCurrentProc, modules, dwSize, &cbNeeded ) != 0 && dwSize == cbNeeded )
-                {
-                    for( i = 0; i < dwSize / sizeof( HMODULE ); i++ )
-                    {
-                        if( handle == RTLD_NEXT && hCaller )
-                        {
-                            /* Next modules can be used for RTLD_NEXT */
-                            if( hCaller == modules[i] )
-                                hCaller = NULL;
-                            continue;
-                        }
-                        if( local_search( modules[i] ) )
-                            continue;
-                        symbol = GetProcAddress( modules[i], name );
-                        if( symbol != NULL )
-                        {
-                            free( modules );
-                            goto end;
-                        }
-                    }
-
-                }
-                free( modules );
-            }
-            else
-            {
-                dwMessageId = ERROR_NOT_ENOUGH_MEMORY;
-                goto end;
-            }
-        }
-    }
-
-end:
-    if( symbol == NULL )
-    {
-        if( !dwMessageId )
-            dwMessageId = ERROR_PROC_NOT_FOUND;
-        save_err_str( name, dwMessageId );
-    }
-
-    return *(void **) (&symbol);
-}
-
-DLFCN_EXPORT
-char *dlerror( void )
-{
-    /* If this is the second consecutive call to dlerror, return NULL */
-    if( !error_occurred )
-        return NULL;
-
-    /* POSIX says that invoking dlerror( ) a second time, immediately following
-     * a prior invocation, shall result in NULL being returned.
-     */
-    error_occurred = FALSE;
-
-    return error_buffer;
-}
-
-/* See https://docs.microsoft.com/en-us/archive/msdn-magazine/2002/march/inside-windows-an-in-depth-look-into-the-win32-portable-executable-file-format-part-2
- * for details */
-
-/* Get specific image section */
-static BOOL get_image_section( HMODULE module, int index, void **ptr, DWORD *size )
-{
-    IMAGE_DOS_HEADER *dosHeader;
-    IMAGE_OPTIONAL_HEADER *optionalHeader;
-
-    dosHeader = (IMAGE_DOS_HEADER *) module;
-
-    if( dosHeader->e_magic != 0x5A4D )
-        return FALSE;
-
-    optionalHeader = (IMAGE_OPTIONAL_HEADER *) ( (BYTE *) module + dosHeader->e_lfanew + 24 );
-
-    if( optionalHeader->Magic != IMAGE_NT_OPTIONAL_HDR_MAGIC )
-        return FALSE;
-
-    if( index < 0 || index > IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR )
-        return FALSE;
-
-    if( optionalHeader->DataDirectory[index].Size == 0 || optionalHeader->DataDirectory[index].VirtualAddress == 0 )
-        return FALSE;
-
-    if( size != NULL )
-        *size = optionalHeader->DataDirectory[index].Size;
-
-    *ptr = (void *)( (BYTE *) module + optionalHeader->DataDirectory[index].VirtualAddress );
-
-    return TRUE;
-}
-
-/* Return symbol name for a given address from export table */
-static const char *get_export_symbol_name( HMODULE module, IMAGE_EXPORT_DIRECTORY *ied, const void *addr, void **func_address )
-{
-    DWORD i;
-    void *candidateAddr = NULL;
-    int candidateIndex = -1;
-    BYTE *base = (BYTE *) module;
-    DWORD *functionAddressesOffsets = (DWORD *) (base + ied->AddressOfFunctions);
-    DWORD *functionNamesOffsets = (DWORD *) (base + ied->AddressOfNames);
-    USHORT *functionNameOrdinalsIndexes = (USHORT *) (base + ied->AddressOfNameOrdinals);
-
-    for( i = 0; i < ied->NumberOfFunctions; i++ )
-    {
-        if( (void *) ( base + functionAddressesOffsets[i] ) > addr || candidateAddr >= (void *) ( base + functionAddressesOffsets[i] ) )
-            continue;
-
-        candidateAddr = (void *) ( base + functionAddressesOffsets[i] );
-        candidateIndex = i;
-    }
-
-    if( candidateIndex == -1 )
-        return NULL;
-
-    *func_address = candidateAddr;
-
-    for( i = 0; i < ied->NumberOfNames; i++ )
-    {
-        if( functionNameOrdinalsIndexes[i] == candidateIndex )
-            return (const char *) ( base + functionNamesOffsets[i] );
-    }
-
-    return NULL;
-}
-
-static BOOL is_valid_address( const void *addr )
-{
-    MEMORY_BASIC_INFORMATION info;
-    SIZE_T result;
-
-    if( addr == NULL )
-        return FALSE;
-
-    /* check valid pointer */
-    result = VirtualQuery( addr, &info, sizeof( info ) );
-
-    if( result == 0 || info.AllocationBase == NULL || info.AllocationProtect == 0 || info.AllocationProtect == PAGE_NOACCESS )
-        return FALSE;
-
-    return TRUE;
-}
-
-/* Return state if address points to an import thunk
- *
- * An import thunk is setup with a 'jmp' instruction followed by an
- * absolute address (32bit) or relative offset (64bit) pointing into
- * the import address table (iat), which is partially maintained by
- * the runtime linker.
- */
-static BOOL is_import_thunk( const void *addr )
-{
-    return *(short *) addr == 0x25ff ? TRUE : FALSE;
-}
-
-/* Return adress from the import address table (iat),
- * if the original address points to a thunk table entry.
- */
-static void *get_address_from_import_address_table( void *iat, DWORD iat_size, const void *addr )
-{
-    BYTE *thkp = (BYTE *) addr;
-    /* Get offset from thunk table (after instruction 0xff 0x25)
-     *   4018c8 <_VirtualQuery>: ff 25 4a 8a 00 00
-     */
-    ULONG offset = *(ULONG *)( thkp + 2 );
-#ifdef _WIN64
-    /* On 64 bit the offset is relative
-     *      4018c8:   ff 25 4a 8a 00 00    jmpq    *0x8a4a(%rip)    # 40a318 <__imp_VirtualQuery>
-     * And can be also negative (MSVC in WDK)
-     *   100002f20:   ff 25 3a e1 ff ff    jmpq   *-0x1ec6(%rip)    # 0x100001060
-     * So cast to signed LONG type
-     */
-    BYTE *ptr = (BYTE *)( thkp + 6 + (LONG) offset );
-#else
-    /* On 32 bit the offset is absolute
-     *   4019b4:    ff 25 90 71 40 00    jmp    *0x40719
-     */
-    BYTE *ptr = (BYTE *) offset;
-#endif
-
-    if( !is_valid_address( ptr ) || ptr < (BYTE *) iat || ptr > (BYTE *) iat + iat_size )
-        return NULL;
-
-    return *(void **) ptr;
-}
-
-/* Holds module filename */
-static char module_filename[2*MAX_PATH];
-
-static BOOL fill_info( const void *addr, Dl_info *info )
-{
-    HMODULE hModule;
-    DWORD dwSize;
-    IMAGE_EXPORT_DIRECTORY *ied;
-    void *funcAddress = NULL;
-
-    /* Get module of the specified address */
-    hModule = MyGetModuleHandleFromAddress( addr );
-
-    if( hModule == NULL )
-        return FALSE;
-
-    dwSize = GetModuleFileNameA( hModule, module_filename, sizeof( module_filename ) );
-
-    if( dwSize == 0 || dwSize == sizeof( module_filename ) )
-        return FALSE;
-
-    info->dli_fname = module_filename;
-    info->dli_fbase = (void *) hModule;
-
-    /* Find function name and function address in module's export table */
-    if( get_image_section( hModule, IMAGE_DIRECTORY_ENTRY_EXPORT, (void **) &ied, NULL ) )
-        info->dli_sname = get_export_symbol_name( hModule, ied, addr, &funcAddress );
-    else
-        info->dli_sname = NULL;
-
-    info->dli_saddr = info->dli_sname == NULL ? NULL : funcAddress != NULL ? funcAddress : (void *) addr;
-
-    return TRUE;
-}
-
-DLFCN_EXPORT
-int dladdr( const void *addr, Dl_info *info )
-{
-    if( info == NULL )
-        return 0;
-
-    if( !is_valid_address( addr ) )
-        return 0;
-
-    if( is_import_thunk( addr ) )
-    {
-        void *iat;
-        DWORD iatSize;
-        HMODULE hModule;
-
-        /* Get module of the import thunk address */
-        hModule = MyGetModuleHandleFromAddress( addr );
-
-        if( hModule == NULL )
-            return 0;
-
-        if( !get_image_section( hModule, IMAGE_DIRECTORY_ENTRY_IAT, &iat, &iatSize ) )
-        {
-            /* Fallback for cases where the iat is not defined,
-             * for example i586-mingw32msvc-gcc */
-            IMAGE_IMPORT_DESCRIPTOR *iid;
-            DWORD iidSize;
-
-            if( !get_image_section( hModule, IMAGE_DIRECTORY_ENTRY_IMPORT, (void **) &iid, &iidSize ) )
-                return 0;
-
-            if( iid == NULL || iid->Characteristics == 0 || iid->FirstThunk == 0 )
-                return 0;
-
-            iat = (void *)( (BYTE *) hModule + iid->FirstThunk );
-            /* We assume that in this case iid and iat's are in linear order */
-            iatSize = iidSize - (DWORD) ( (BYTE *) iat - (BYTE *) iid );
-        }
-
-        addr = get_address_from_import_address_table( iat, iatSize, addr );
-
-        if( !is_valid_address( addr ) )
-            return 0;
-    }
-
-    if( !fill_info( addr, info ) )
-        return 0;
-
-    return 1;
-}
-
-#ifdef DLFCN_WIN32_SHARED
-BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
-{
-    (void) hinstDLL;
-    (void) fdwReason;
-    (void) lpvReserved;
-    return TRUE;
-}
-#endif

+ 1 - 94
src/deps/dlfcn/dlfcn.h

@@ -1,94 +1 @@
-/*
- * dlfcn-win32
- * Copyright (c) 2007 Ramiro Polla
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifndef DLFCN_H
-#define DLFCN_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined(DLFCN_WIN32_SHARED)
-#if defined(DLFCN_WIN32_EXPORTS)
-#   define DLFCN_EXPORT __declspec(dllexport)
-#else
-#   define DLFCN_EXPORT __declspec(dllimport)
-#endif
-#else
-#   define DLFCN_EXPORT
-#endif
-
-/* Relocations are performed when the object is loaded. */
-#define RTLD_NOW    0
-
-/* Relocations are performed at an implementation-defined time.
- * Windows API does not support lazy symbol resolving (when first reference
- * to a given symbol occurs). So RTLD_LAZY implementation is same as RTLD_NOW.
- */
-#define RTLD_LAZY   RTLD_NOW
-
-/* All symbols are available for relocation processing of other modules. */
-#define RTLD_GLOBAL (1 << 1)
-
-/* All symbols are not made available for relocation processing by other modules. */
-#define RTLD_LOCAL  (1 << 2)
-
-/* These two were added in The Open Group Base Specifications Issue 6.
- * Note: All other RTLD_* flags in any dlfcn.h are not standard compliant.
- */
-
-/* The symbol lookup happens in the normal global scope. */
-#define RTLD_DEFAULT    ((void *)0)
-
-/* Specifies the next object after this one that defines data. */
-#define RTLD_NEXT       ((void *)-1)
-
-/* Structure filled in by dladdr() */
-typedef struct dl_info
-{
-   const char *dli_fname;  /* Filename of defining object (thread unsafe and reused on every call to dladdr) */
-   void       *dli_fbase;  /* Load address of that object */
-   const char *dli_sname;  /* Name of nearest lower symbol */
-   void       *dli_saddr;  /* Exact value of nearest symbol */
-} Dl_info;
-
-/* Open a symbol table handle. */
-DLFCN_EXPORT void *dlopen(const char *file, int mode);
-
-/* Close a symbol table handle. */
-DLFCN_EXPORT int dlclose(void *handle);
-
-/* Get the address of a symbol from a symbol table handle. */
-DLFCN_EXPORT void *dlsym(void *handle, const char *name);
-
-/* Get diagnostic information. */
-DLFCN_EXPORT char *dlerror(void);
-
-/* Translate address to symbolic information (no POSIX standard) */
-DLFCN_EXPORT int dladdr(const void *addr, Dl_info *info);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* DLFCN_H */
+#include "./dlfcn-win32/src/dlfcn.h"

+ 5 - 4
src/deps/regex/CMakeLists.txt

@@ -9,14 +9,15 @@ PROJECT(af_regex LANGUAGES C)
 
 
 SET(PCRE2_SHOW_REPORT OFF)
-SET(PCRE2_BUILD_TEST OFF)
-SET(BUILD_SHARED_LIBS ON)
+SET(PCRE2_BUILD_TESTS OFF)
+SET(PCRE2_BUILD_PCRE2GREP OFF)
+SET(BUILD_SHARED_LIBS OFF)
 SET(CMAKE_INSTALL_LIBDIR  ${LIBRARY_OUTPUT_PATH})
 ADD_DEFINITIONS(-DHAVE_STRERROR=1)
 ADD_SUBDIRECTORY(pcre2)
 
 ADD_LIBRARY(af_regex regex.c)
 SET_TARGET_PROPERTIES(af_regex PROPERTIES OUTPUT_NAME "afRegex")
-TARGET_LINK_LIBRARIES(af_regex af_tool pcre2-8)
+TARGET_LINK_LIBRARIES(af_regex af_tool pcre2-8-static)
 
-INSTALL(TARGETS af_regex pcre2-8)
+INSTALL(TARGETS af_regex)

+ 12 - 0
src/deps/regex/README

@@ -0,0 +1,12 @@
+regex依赖库
+-------------------------
+
+该库依赖来自pcre2库
+提供正则表达式编译和匹配
+./pcre2文件夹是git子模块
+
+只使用`dlfcn-win32`在`src/dlfcn.c`和`src/dlfcn.h`文件
+使用`CMakeLists.txt`再编译该库
+
+项目url: https://github.com/dlfcn-win32/dlfcn-win32
+子模块: https://github.com/aFun-org/dlfcn-win32

+ 1 - 0
src/deps/regex/pcre2

@@ -0,0 +1 @@
+Subproject commit e49d7bb7483c205d836bfe365275488e355274f4

+ 0 - 47
src/deps/regex/pcre2/.gitignore

@@ -1,47 +0,0 @@
-INSTALL
-Makefile.in
-aclocal.m4
-ar-lib
-compile
-config.guess
-config.sub
-configure
-depcomp
-install-sh
-ltmain.sh
-m4/
-missing
-test-driver
-
-Makefile
-config.log
-config.status
-libpcre2-*.pc
-libtool
-pcre2-config
-src/.deps
-src/config.h
-src/pcre2.h
-src/stamp-h1
-
-.libs
-*.o
-*.lo
-*.a
-*.la
-src/.dirstamp
-src/pcre2_chartables.c
-
-pcre2grep
-pcre2test
-pcre2_jit_test
-
-RunGrepTest.log
-RunGrepTest.trs
-RunTest.log
-RunTest.trs
-pcre2_jit_test.log
-pcre2_jit_test.trs
-test-suite.log
-
-*~

+ 0 - 314
src/deps/regex/pcre2/132html

@@ -1,314 +0,0 @@
-#! /usr/bin/perl -w
-
-# Script to turn PCRE2 man pages into HTML
-
-
-# Subroutine to handle font changes and other escapes
-
-sub do_line {
-my($s) = $_[0];
-
-$s =~ s/</&#60;/g;                   # Deal with < and >
-$s =~ s/>/&#62;/g;
-$s =~ s"\\fI(.*?)\\f[RP]"<i>$1</i>"g;
-$s =~ s"\\fB(.*?)\\f[RP]"<b>$1</b>"g;
-$s =~ s"\\e"\\"g;
-$s =~ s/(?<=Copyright )\(c\)/&copy;/g;
-$s;
-}
-
-# Subroutine to ensure not in a paragraph
-
-sub end_para {
-if ($inpara)
-  {
-  print TEMP "</PRE>\n" if ($inpre);
-  print TEMP "</P>\n";
-  }
-$inpara = $inpre = 0;
-$wrotetext = 0;
-}
-
-# Subroutine to start a new paragraph
-
-sub new_para {
-&end_para();
-print TEMP "<P>\n";
-$inpara = 1;
-}
-
-
-# Main program
-
-$innf = 0;
-$inpara = 0;
-$inpre = 0;
-$wrotetext = 0;
-$toc = 0;
-$ref = 1;
-
-while ($#ARGV >= 0 && $ARGV[0] =~ /^-/)
-  {
-  $toc = 1 if $ARGV[0] eq "-toc";
-  shift;
-  }
-
-# Initial output to STDOUT
-
-print <<End ;
-<html>
-<head>
-<title>$ARGV[0] specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>$ARGV[0] man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-End
-
-print "<ul>\n" if ($toc);
-
-open(TEMP, ">/tmp/$$") || die "Can't open /tmp/$$ for output\n";
-
-while (<STDIN>)
-  {
-  # Handle lines beginning with a dot
-
-  if (/^\./)
-    {
-    # Some of the PCRE2 man pages used to contain instances of .br. However,
-    # they should have all been removed because they cause trouble in some
-    # (other) automated systems that translate man pages to HTML. Complain if
-    # we find .br or .in (another macro that is deprecated).
-
-    if (/^\.br/ || /^\.in/)
-      {
-      print STDERR "\n*** Deprecated macro encountered - rewrite needed\n";
-      print STDERR "*** $_\n";
-      die "*** Processing abandoned\n";
-      }
-
-    # Instead of .br, relevent "literal" sections are enclosed in .nf/.fi.
-
-    elsif (/^\.nf/)
-      {
-      $innf = 1;
-      }
-
-    elsif (/^\.fi/)
-      {
-      $innf = 0;
-      }
-
-    # Handling .sp is subtle. If it is inside a literal section, do nothing if
-    # the next line is a non literal text line; similarly, if not inside a
-    # literal section, do nothing if a literal follows, unless we are inside
-    # a .nf/.fi section or about to enter one. The point being that the <pre>
-    # and </pre> that delimit literal sections will do the spacing. Always skip
-    # if no previous output.
-
-    elsif (/^\.sp/)
-      {
-      if ($wrotetext)
-        {
-        $_ = <STDIN>;
-        if ($inpre)
-          {
-          print TEMP "\n" if (/^[\s.]/);
-          }
-        else
-          {
-          print TEMP "<br>\n<br>\n" if ($innf || /^\.nf/ || !/^[\s.]/);
-          }
-        redo;    # Now process the lookahead line we just read
-        }
-      }
-    elsif (/^\.TP/ || /^\.PP/ || /^\.P/)
-      {
-      &new_para();
-      }
-    elsif (/^\.SH\s*("?)(.*)\1/)
-      {
-      # Ignore the NAME section
-      if ($2 =~ /^NAME\b/)
-        {
-        <STDIN>;
-        next;
-        }
-
-      &end_para();
-      my($title) = &do_line($2);
-      if ($toc)
-        {
-        printf("<li><a name=\"TOC%d\" href=\"#SEC%d\">$title</a>\n",
-          $ref, $ref);
-        printf TEMP ("<br><a name=\"SEC%d\" href=\"#TOC1\">$title</a><br>\n",
-          $ref);
-        $ref++;
-        }
-      else
-        {
-        print TEMP "<br><b>\n$title\n</b><br>\n";
-        }
-      }
-    elsif (/^\.SS\s*("?)(.*)\1/)
-      {
-      &end_para();
-      my($title) = &do_line($2);
-      print TEMP "<br><b>\n$title\n</b><br>\n";
-      }
-    elsif (/^\.B\s*(.*)/)
-      {
-      &new_para() if (!$inpara);
-      $_ = &do_line($1);
-      s/"(.*?)"/$1/g;
-      print TEMP "<b>$_</b>\n";
-      $wrotetext = 1;
-      }
-    elsif (/^\.I\s*(.*)/)
-      {
-      &new_para() if (!$inpara);
-      $_ = &do_line($1);
-      s/"(.*?)"/$1/g;
-      print TEMP "<i>$_</i>\n";
-      $wrotetext = 1;
-      }
-
-    # A comment that starts "HREF" takes the next line as a name that
-    # is turned into a hyperlink, using the text given, which might be
-    # in a special font. If it ends in () or (digits) or punctuation, they
-    # aren't part of the link.
-
-    elsif (/^\.\\"\s*HREF/)
-      {
-      $_=<STDIN>;
-      chomp;
-      $_ = &do_line($_);
-      $_ =~ s/\s+$//;
-      $_ =~ /^(?:<.>)?([^<(]+)(?:\(\))?(?:<\/.>)?(?:\(\d+\))?[.,;:]?$/;
-      print TEMP "<a href=\"$1.html\">$_</a>\n";
-      }
-
-    # A comment that starts "HTML" inserts literal HTML
-
-    elsif (/^\.\\"\s*HTML\s*(.*)/)
-      {
-      print TEMP $1;
-      }
-
-    # A comment that starts < inserts that HTML at the end of the
-    # *next* input line - so as not to get a newline between them.
-
-    elsif (/^\.\\"\s*(<.*>)/)
-      {
-      my($markup) = $1;
-      $_=<STDIN>;
-      chomp;
-      $_ = &do_line($_);
-      $_ =~ s/\s+$//;
-      print TEMP "$_$markup\n";
-      }
-
-    # A comment that starts JOIN joins the next two lines together, with one
-    # space between them. Then that line is processed. This is used in some
-    # displays where two lines are needed for the "man" version. JOINSH works
-    # the same, except that it assumes this is a shell command, so removes
-    # continuation backslashes.
-
-    elsif (/^\.\\"\s*JOIN(SH)?/)
-      {
-      my($one,$two);
-      $one = <STDIN>;
-      $two = <STDIN>;
-      $one =~ s/\s*\\e\s*$// if (defined($1));
-      chomp($one);
-      $two =~ s/^\s+//;
-      $_ = "$one $two";
-      redo;            # Process the joined lines
-      }
-
-    # .EX/.EE are used in the pcre2demo page to bracket the entire program,
-    # which is unmodified except for turning backslash into "\e".
-
-    elsif (/^\.EX\s*$/)
-      {
-      print TEMP "<PRE>\n";
-      while (<STDIN>)
-        {
-        last if /^\.EE\s*$/;
-        s/\\e/\\/g;
-        s/&/&amp;/g;
-        s/</&lt;/g;
-        s/>/&gt;/g;
-        print TEMP;
-        }
-      }
-
-    # Ignore anything not recognized
-
-    next;
-    }
-
-  # Line does not begin with a dot. Replace blank lines with new paragraphs
-
-  if (/^\s*$/)
-    {
-    &end_para() if ($wrotetext);
-    next;
-    }
-
-  # Convert fonts changes and output an ordinary line. Ensure that indented
-  # lines are marked as literal.
-
-  $_ = &do_line($_);
-  &new_para() if (!$inpara);
-
-  if (/^\s/)
-    {
-    if (!$inpre)
-      {
-      print TEMP "<pre>\n";
-      $inpre = 1;
-      }
-    }
-  elsif ($inpre)
-    {
-    print TEMP "</pre>\n";
-    $inpre = 0;
-    }
-
-  # Add <br> to the end of a non-literal line if we are within .nf/.fi
-
-  $_ .= "<br>\n" if (!$inpre && $innf);
-
-  print TEMP;
-  $wrotetext = 1;
-  }
-
-# The TOC, if present, will have been written - terminate it
-
-print "</ul>\n" if ($toc);
-
-# Copy the remainder to the standard output
-
-close(TEMP);
-open(TEMP, "/tmp/$$") || die "Can't open /tmp/$$ for input\n";
-
-print while (<TEMP>);
-
-print <<End ;
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-End
-
-close(TEMP);
-unlink("/tmp/$$");
-
-# End

+ 0 - 36
src/deps/regex/pcre2/AUTHORS

@@ -1,36 +0,0 @@
-THE MAIN PCRE2 LIBRARY CODE
----------------------------
-
-Written by:       Philip Hazel
-Email local part: Philip.Hazel
-Email domain:     gmail.com
-
-University of Cambridge Computing Service,
-Cambridge, England.
-
-Copyright (c) 1997-2021 University of Cambridge
-All rights reserved
-
-
-PCRE2 JUST-IN-TIME COMPILATION SUPPORT
---------------------------------------
-
-Written by:       Zoltan Herczeg
-Email local part: hzmester
-Emain domain:     freemail.hu
-
-Copyright(c) 2010-2021 Zoltan Herczeg
-All rights reserved.
-
-
-STACK-LESS JUST-IN-TIME COMPILER
---------------------------------
-
-Written by:       Zoltan Herczeg
-Email local part: hzmester
-Emain domain:     freemail.hu
-
-Copyright(c) 2009-2021 Zoltan Herczeg
-All rights reserved.
-
-####

+ 0 - 1017
src/deps/regex/pcre2/CMakeLists.txt

@@ -1,1017 +0,0 @@
-# CMakeLists.txt
-#
-# This file enables PCRE2 to be built with the CMake configuration and build
-# tool. Download CMake in source or binary form from http://www.cmake.org/
-# Converted to support PCRE2 from the original PCRE file, August 2014.
-#
-# Original listfile by Christian Ehrlicher <Ch.Ehrlicher@gmx.de>
-# Refined and expanded by Daniel Richard G. <skunk@iSKUNK.ORG>
-# 2007-09-14 mod by Sheri so 7.4 supported configuration options can be entered
-# 2007-09-19 Adjusted by PH to retain previous default settings
-# 2007-12-26 (a) On UNIX, use names libpcre instead of just pcre
-#            (b) Ensure pcretest and pcregrep link with the local library,
-#                not a previously-installed one.
-#            (c) Add PCRE_SUPPORT_LIBREADLINE, PCRE_SUPPORT_LIBZ, and
-#                PCRE_SUPPORT_LIBBZ2.
-# 2008-01-20 Brought up to date to include several new features by Christian
-#            Ehrlicher.
-# 2008-01-22 Sheri added options for backward compatibility of library names
-#            when building with minGW:
-#            if "ON", NON_STANDARD_LIB_PREFIX causes shared libraries to
-#            be built without "lib" as prefix. (The libraries will be named
-#            pcre.dll, pcreposix.dll and pcrecpp.dll).
-#            if "ON", NON_STANDARD_LIB_SUFFIX causes shared libraries to
-#            be built with suffix of "-0.dll". (The libraries will be named
-#            libpcre-0.dll, libpcreposix-0.dll and libpcrecpp-0.dll - same names
-#            built by default with Configure and Make.
-# 2008-01-23 PH removed the automatic build of pcredemo.
-# 2008-04-22 PH modified READLINE support so it finds NCURSES when needed.
-# 2008-07-03 PH updated for revised UCP property support (change of files)
-# 2009-03-23 PH applied Steven Van Ingelgem's patch to change the name
-#            CMAKE_BINARY_DIR to PROJECT_BINARY_DIR so that it works when PCRE
-#            is included within another project.
-# 2009-03-23 PH applied a modified version of Steven Van Ingelgem's patches to
-#            add options to stop the building of pcregrep and the tests, and
-#            to disable the final configuration report.
-# 2009-04-11 PH applied Christian Ehrlicher's patch to show compiler flags that
-#            are set by specifying a release type.
-# 2010-01-02 PH added test for stdint.h
-# 2010-03-02 PH added test for inttypes.h
-# 2011-08-01 PH added PCREGREP_BUFSIZE
-# 2011-08-22 PH added PCRE_SUPPORT_JIT
-# 2011-09-06 PH modified WIN32 ADD_TEST line as suggested by Sergey Cherepanov
-# 2011-09-06 PH added PCRE_SUPPORT_PCREGREP_JIT
-# 2011-10-04 Sheri added support for including coff data in windows shared libraries
-#            compiled with MINGW if pcre.rc and/or pcreposix.rc are placed in
-#            the source dir by the user prior to building
-# 2011-10-04 Sheri changed various add_test's to use exes' location built instead
-#            of DEBUG location only (likely only matters in MSVC)
-# 2011-10-04 Sheri added scripts to provide needed variables to RunTest and
-#            RunGrepTest (used for UNIX and Msys)
-# 2011-10-04 Sheri added scripts to provide needed variables and to execute
-#            RunTest.bat in Win32 (for effortless testing with "make test")
-# 2011-10-04 Sheri Increased minimum required cmake version
-# 2012-01-06 PH removed pcre_info.c and added pcre_string_utils.c
-# 2012-01-10 Zoltan Herczeg added libpcre16 support
-# 2012-01-13 Stephen Kelly added out of source build support
-# 2012-01-17 PH applied Stephen Kelly's patch to parse the version data out
-#            of the configure.ac file
-# 2012-02-26 PH added support for libedit
-# 2012-09-06 PH added support for PCRE_EBCDIC_NL25
-# 2012-09-08 ChPe added PCRE32 support
-# 2012-10-23 PH added support for VALGRIND and GCOV
-# 2012-12-08 PH added patch from Daniel Richard G to quash some MSVC warnings
-# 2013-07-01 PH realized that the "support" for GCOV was a total nonsense and
-#            so it has been removed.
-# 2013-10-08 PH got rid of the "source" command, which is a bash-ism (use ".")
-# 2013-11-05 PH added support for PARENS_NEST_LIMIT
-# 2014-08-29 PH converted the file for PCRE2 (which has no C++).
-# 2015-04-24 PH added support for PCRE2_DEBUG
-# 2015-07-16 PH updated for new pcre2_find_bracket source module
-# 2015-08-24 PH correct C_FLAGS setting (patch from Roy Ivy III)
-# 2015-10=16 PH added support for never-backslash-C
-# 2016-03-01 PH applied Chris Wilson's patch for MSVC static
-# 2016-06-24 PH applied Chris Wilson's second patch, putting the first under
-#            a new option instead of being unconditional.
-# 2016-10-05 PH fixed a typo (PCRE should be PCRE2) in above patch
-#            fix by David Gaussmann
-# 2016-10-07 PH added PCREGREP_MAX_BUFSIZE
-# 2017-03-11 PH turned HEAP_MATCH_RECURSE into a NO-OP for 10.30
-# 2017-04-08 PH added HEAP_LIMIT
-# 2017-06-15 ZH added SUPPORT_JIT_SEALLOC support
-# 2018-06-19 PH added checks for stdint.h and inttypes.h (later removed)
-# 2018-06-27 PH added Daniel's patch to increase the stack for MSVC
-# 2018-11-14 PH removed unnecessary checks for stdint.h and inttypes.h
-# 2018-11-16 PH added PCRE2GREP_SUPPORT_CALLOUT_FORK support and tidied
-# 2019-02-16 PH hacked to avoid CMP0026 policy issue (see comments below)
-# 2020-03-16 PH renamed dftables as pcre2_dftables (as elsewhere)
-# 2020-03-24 PH changed CMAKE_MODULE_PATH definition to add, not replace
-# 2020-04-08 Carlo added function check for secure_getenv, fixed strerror
-# 2020-04-16 enh added check for __attribute__((uninitialized))
-# 2020-04-25 PH applied patches from Uwe Korn to support pkg-config and
-#            library versioning.
-# 2020-04-25 Carlo added function check for mkostemp used in ProtExecAllocator
-# 2020-04-28 PH added function check for memfd_create based on Carlo's patch
-# 2020-05-25 PH added a check for Intel CET
-# 2020-12-03 PH altered the definition of pcre2test as suggested by Daniel
-
-PROJECT(PCRE2 C)
-
-# Increased minimum to 2.8.5 to support GNUInstallDirs.
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8.5)
-
-# Set policy CMP0026 to avoid warnings for the use of LOCATION in
-# GET_TARGET_PROPERTY. This should no longer be required.
-# CMAKE_POLICY(SET CMP0026 OLD)
-
-# For FindReadline.cmake. This was changed to allow setting CMAKE_MODULE_PATH
-# on the command line.
-# SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
-
-LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
-
-INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src)
-
-# external packages
-FIND_PACKAGE( BZip2 )
-FIND_PACKAGE( ZLIB )
-FIND_PACKAGE( Readline )
-FIND_PACKAGE( Editline )
-
-# Configuration checks
-
-INCLUDE(CheckCSourceCompiles)
-INCLUDE(CheckFunctionExists)
-INCLUDE(CheckSymbolExists)
-INCLUDE(CheckIncludeFile)
-INCLUDE(CheckTypeSize)
-INCLUDE(GNUInstallDirs) # for CMAKE_INSTALL_LIBDIR
-
-CHECK_INCLUDE_FILE(dirent.h     HAVE_DIRENT_H)
-CHECK_INCLUDE_FILE(stdint.h     HAVE_STDINT_H)
-CHECK_INCLUDE_FILE(inttypes.h   HAVE_INTTYPES_H)
-CHECK_INCLUDE_FILE(sys/stat.h   HAVE_SYS_STAT_H)
-CHECK_INCLUDE_FILE(sys/types.h  HAVE_SYS_TYPES_H)
-CHECK_INCLUDE_FILE(unistd.h     HAVE_UNISTD_H)
-CHECK_INCLUDE_FILE(windows.h    HAVE_WINDOWS_H)
-
-CHECK_SYMBOL_EXISTS(bcopy         "strings.h"  HAVE_BCOPY)
-CHECK_SYMBOL_EXISTS(memfd_create  "sys/mman.h" HAVE_MEMFD_CREATE)
-CHECK_SYMBOL_EXISTS(memmove       "string.h"   HAVE_MEMMOVE)
-CHECK_SYMBOL_EXISTS(secure_getenv "stdlib.h"   HAVE_SECURE_GETENV)
-CHECK_SYMBOL_EXISTS(strerror      "string.h"   HAVE_STRERROR)
-
-set(ORIG_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
-set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror")
-CHECK_C_SOURCE_COMPILES(
-  "int main() { char buf[128] __attribute__((uninitialized)); (void)buf; return 0; }"
-  HAVE_ATTRIBUTE_UNINITIALIZED
-)
-set(CMAKE_REQUIRED_FLAGS ${ORIG_CMAKE_REQUIRED_FLAGS})
-
-# Check whether Intel CET is enabled, and if so, adjust compiler flags. This
-# code was written by PH, trying to imitate the logic from the autotools
-# configuration.
-
-CHECK_C_SOURCE_COMPILES(
-  "#ifndef __CET__
-   #error CET is not enabled
-   #endif
-   int main() { return 0; }"
-  INTEL_CET_ENABLED
-)
-
-IF (INTEL_CET_ENABLED)
-  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mshstk")
-ENDIF(INTEL_CET_ENABLED)
-
-
-
-# User-configurable options
-#
-# Note: CMakeSetup displays these in alphabetical order, regardless of
-# the order we use here.
-
-SET(BUILD_SHARED_LIBS OFF CACHE BOOL
-    "Build shared libraries instead of static ones.")
-
-OPTION(PCRE2_BUILD_PCRE2_8 "Build 8 bit PCRE2 library" ON)
-
-OPTION(PCRE2_BUILD_PCRE2_16 "Build 16 bit PCRE2 library" OFF)
-
-OPTION(PCRE2_BUILD_PCRE2_32 "Build 32 bit PCRE2 library" OFF)
-
-OPTION(PCRE2_DEBUG "Include debugging code" OFF)
-
-OPTION(PCRE2_DISABLE_PERCENT_ZT "Disable the use of %zu and %td (rarely needed)" OFF)
-
-SET(PCRE2_EBCDIC OFF CACHE BOOL
-    "Use EBCDIC coding instead of ASCII. (This is rarely used outside of mainframe systems.)")
-
-SET(PCRE2_EBCDIC_NL25 OFF CACHE BOOL
-    "Use 0x25 as EBCDIC NL character instead of 0x15; implies EBCDIC.")
-
-SET(PCRE2_LINK_SIZE "2" CACHE STRING
-    "Internal link size (2, 3 or 4 allowed). See LINK_SIZE in config.h.in for details.")
-
-SET(PCRE2_PARENS_NEST_LIMIT "250" CACHE STRING
-    "Default nested parentheses limit. See PARENS_NEST_LIMIT in config.h.in for details.")
-
-SET(PCRE2_HEAP_LIMIT "20000000" CACHE STRING
-    "Default limit on heap memory (kibibytes). See HEAP_LIMIT in config.h.in for details.")
-
-SET(PCRE2_MATCH_LIMIT "10000000" CACHE STRING
-    "Default limit on internal looping. See MATCH_LIMIT in config.h.in for details.")
-
-SET(PCRE2_MATCH_LIMIT_DEPTH "MATCH_LIMIT" CACHE STRING
-    "Default limit on internal depth of search. See MATCH_LIMIT_DEPTH in config.h.in for details.")
-
-SET(PCRE2GREP_BUFSIZE "20480" CACHE STRING
-    "Buffer starting size parameter for pcre2grep. See PCRE2GREP_BUFSIZE in config.h.in for details.")
-
-SET(PCRE2GREP_MAX_BUFSIZE "1048576" CACHE STRING
-    "Buffer maximum size parameter for pcre2grep. See PCRE2GREP_MAX_BUFSIZE in config.h.in for details.")
-
-SET(PCRE2_NEWLINE "LF" CACHE STRING
-    "What to recognize as a newline (one of CR, LF, CRLF, ANY, ANYCRLF, NUL).")
-
-SET(PCRE2_HEAP_MATCH_RECURSE OFF CACHE BOOL
-    "Obsolete option: do not use")
-
-SET(PCRE2_SUPPORT_JIT OFF CACHE BOOL
-    "Enable support for Just-in-time compiling.")
-
-IF(${CMAKE_SYSTEM_NAME} MATCHES Linux|NetBSD)
-    SET(PCRE2_SUPPORT_JIT_SEALLOC OFF CACHE BOOL
-        "Enable SELinux compatible execmem allocator in JIT (experimental).")
-ELSE(${CMAKE_SYSTEM_NAME} MATCHES Linux|NetBSD)
-    SET(PCRE2_SUPPORT_JIT_SEALLOC IGNORE)
-ENDIF(${CMAKE_SYSTEM_NAME} MATCHES Linux|NetBSD)
-
-SET(PCRE2GREP_SUPPORT_JIT ON CACHE BOOL
-    "Enable use of Just-in-time compiling in pcre2grep.")
-
-SET(PCRE2GREP_SUPPORT_CALLOUT ON CACHE BOOL
-    "Enable callout string support in pcre2grep.")
-
-SET(PCRE2GREP_SUPPORT_CALLOUT_FORK ON CACHE BOOL
-    "Enable callout string fork support in pcre2grep.")
-
-SET(PCRE2_SUPPORT_UNICODE ON CACHE BOOL
-    "Enable support for Unicode and UTF-8/UTF-16/UTF-32 encoding.")
-
-SET(PCRE2_SUPPORT_BSR_ANYCRLF OFF CACHE BOOL
-    "ON=Backslash-R matches only LF CR and CRLF, OFF=Backslash-R matches all Unicode Linebreaks")
-
-SET(PCRE2_NEVER_BACKSLASH_C OFF CACHE BOOL
-    "If ON, backslash-C (upper case C) is locked out.")
-
-SET(PCRE2_SUPPORT_VALGRIND OFF CACHE BOOL
-    "Enable Valgrind support.")
-
-OPTION(PCRE2_SHOW_REPORT     "Show the final configuration report" ON)
-OPTION(PCRE2_BUILD_PCRE2GREP "Build pcre2grep" ON)
-OPTION(PCRE2_BUILD_TESTS     "Build the tests" ON)
-
-IF (MINGW)
-  OPTION(NON_STANDARD_LIB_PREFIX
-         "ON=Shared libraries built in mingw will be named pcre2.dll, etc., instead of libpcre2.dll, etc."
-         OFF)
-
-  OPTION(NON_STANDARD_LIB_SUFFIX
-         "ON=Shared libraries built in mingw will be named libpcre2-0.dll, etc., instead of libpcre2.dll, etc."
-         OFF)
-ENDIF(MINGW)
-
-IF(MSVC)
-  OPTION(PCRE2_STATIC_RUNTIME
-	"ON=Compile against the static runtime (/MT)."
-	OFF)
-  OPTION(INSTALL_MSVC_PDB
-         "ON=Install .pdb files built by MSVC, if generated"
-         OFF)
-ENDIF(MSVC)
-
-# bzip2 lib
-IF(BZIP2_FOUND)
-  OPTION (PCRE2_SUPPORT_LIBBZ2 "Enable support for linking pcre2grep with libbz2." ON)
-ENDIF(BZIP2_FOUND)
-IF(PCRE2_SUPPORT_LIBBZ2)
-  INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR})
-ENDIF(PCRE2_SUPPORT_LIBBZ2)
-
-# zlib
-IF(ZLIB_FOUND)
-  OPTION (PCRE2_SUPPORT_LIBZ "Enable support for linking pcre2grep with libz." ON)
-ENDIF(ZLIB_FOUND)
-IF(PCRE2_SUPPORT_LIBZ)
-  INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
-ENDIF(PCRE2_SUPPORT_LIBZ)
-
-# editline lib
-IF(EDITLINE_FOUND)
-  OPTION (PCRE2_SUPPORT_LIBEDIT  "Enable support for linking pcre2test with libedit." OFF)
-ENDIF(EDITLINE_FOUND)
-IF(PCRE2_SUPPORT_LIBEDIT)
-  INCLUDE_DIRECTORIES(${EDITLINE_INCLUDE_DIR})
-ENDIF(PCRE2_SUPPORT_LIBEDIT)
-
-# readline lib
-IF(READLINE_FOUND)
-  OPTION (PCRE2_SUPPORT_LIBREADLINE  "Enable support for linking pcre2test with libreadline." ON)
-ENDIF(READLINE_FOUND)
-IF(PCRE2_SUPPORT_LIBREADLINE)
-  INCLUDE_DIRECTORIES(${READLINE_INCLUDE_DIR})
-ENDIF(PCRE2_SUPPORT_LIBREADLINE)
-
-# Prepare build configuration
-
-IF(NOT BUILD_SHARED_LIBS)
-        SET(PCRE2_STATIC 1)
-ENDIF(NOT BUILD_SHARED_LIBS)
-
-IF(NOT PCRE2_BUILD_PCRE2_8 AND NOT PCRE2_BUILD_PCRE2_16 AND NOT PCRE2_BUILD_PCRE2_32)
-        MESSAGE(FATAL_ERROR "At least one of PCRE2_BUILD_PCRE2_8, PCRE2_BUILD_PCRE2_16 or PCRE2_BUILD_PCRE2_32 must be enabled")
-ENDIF(NOT PCRE2_BUILD_PCRE2_8 AND NOT PCRE2_BUILD_PCRE2_16 AND NOT PCRE2_BUILD_PCRE2_32)
-
-IF(PCRE2_BUILD_PCRE2_8)
-        SET(SUPPORT_PCRE2_8 1)
-ENDIF(PCRE2_BUILD_PCRE2_8)
-
-IF(PCRE2_BUILD_PCRE2_16)
-        SET(SUPPORT_PCRE2_16 1)
-ENDIF(PCRE2_BUILD_PCRE2_16)
-
-IF(PCRE2_BUILD_PCRE2_32)
-        SET(SUPPORT_PCRE2_32 1)
-ENDIF(PCRE2_BUILD_PCRE2_32)
-
-IF(PCRE2_BUILD_PCRE2GREP AND NOT PCRE2_BUILD_PCRE2_8)
-        MESSAGE(STATUS "** PCRE2_BUILD_PCRE2_8 must be enabled for the pcre2grep program")
-        SET(PCRE2_BUILD_PCRE2GREP OFF)
-ENDIF(PCRE2_BUILD_PCRE2GREP AND NOT PCRE2_BUILD_PCRE2_8)
-
-IF(PCRE2_SUPPORT_LIBREADLINE AND PCRE2_SUPPORT_LIBEDIT)
-        MESSAGE(FATAL_ERROR "Only one of libreadline or libeditline can be specified")
-ENDIF(PCRE2_SUPPORT_LIBREADLINE AND PCRE2_SUPPORT_LIBEDIT)
-
-IF(PCRE2_SUPPORT_BSR_ANYCRLF)
-        SET(BSR_ANYCRLF 1)
-ENDIF(PCRE2_SUPPORT_BSR_ANYCRLF)
-
-IF(PCRE2_NEVER_BACKSLASH_C)
-        SET(NEVER_BACKSLASH_C 1)
-ENDIF(PCRE2_NEVER_BACKSLASH_C)
-
-IF(PCRE2_SUPPORT_UNICODE)
-        SET(SUPPORT_UNICODE 1)
-ENDIF(PCRE2_SUPPORT_UNICODE)
-
-IF(PCRE2_SUPPORT_JIT)
-        SET(SUPPORT_JIT 1)
-ENDIF(PCRE2_SUPPORT_JIT)
-
-IF(PCRE2_SUPPORT_JIT_SEALLOC)
-        SET(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
-	CHECK_SYMBOL_EXISTS(mkostemp stdlib.h REQUIRED)
-        UNSET(CMAKE_REQUIRED_DEFINITIONS)
-        IF(${REQUIRED})
-                IF(${CMAKE_SYSTEM_NAME} MATCHES Linux|NetBSD)
-                        ADD_DEFINITIONS(-D_GNU_SOURCE)
-                        SET(SLJIT_PROT_EXECUTABLE_ALLOCATOR 1)
-                ELSE(${CMAKE_SYSTEM_NAME} MATCHES Linux|NetBSD)
-                        MESSAGE(FATAL_ERROR "Your configuration is not supported")
-                ENDIF(${CMAKE_SYSTEM_NAME} MATCHES Linux|NetBSD)
-        ELSE(${REQUIRED})
-                SET(PCRE2_SUPPORT_JIT_SEALLOC OFF)
-        ENDIF(${REQUIRED})
-ENDIF(PCRE2_SUPPORT_JIT_SEALLOC)
-
-IF(PCRE2GREP_SUPPORT_JIT)
-        SET(SUPPORT_PCRE2GREP_JIT 1)
-ENDIF(PCRE2GREP_SUPPORT_JIT)
-
-IF(PCRE2GREP_SUPPORT_CALLOUT)
-        SET(SUPPORT_PCRE2GREP_CALLOUT 1)
-        IF(PCRE2GREP_SUPPORT_CALLOUT_FORK)
-                SET(SUPPORT_PCRE2GREP_CALLOUT_FORK 1)
-        ENDIF(PCRE2GREP_SUPPORT_CALLOUT_FORK)
-ENDIF(PCRE2GREP_SUPPORT_CALLOUT)
-
-IF(PCRE2_SUPPORT_VALGRIND)
-        SET(SUPPORT_VALGRIND 1)
-ENDIF(PCRE2_SUPPORT_VALGRIND)
-
-IF(PCRE2_DISABLE_PERCENT_ZT)
-        SET(DISABLE_PERCENT_ZT 1)
-ENDIF(PCRE2_DISABLE_PERCENT_ZT)
-
-# This next one used to reference ${READLINE_LIBRARY})
-# but I was advised to add the NCURSES test as well, along with
-# some modifications to cmake/FindReadline.cmake which should
-# make it possible to override the default if necessary. PH
-
-IF(PCRE2_SUPPORT_LIBREADLINE)
-        SET(SUPPORT_LIBREADLINE 1)
-        SET(PCRE2TEST_LIBS ${READLINE_LIBRARY} ${NCURSES_LIBRARY})
-ENDIF(PCRE2_SUPPORT_LIBREADLINE)
-
-# libedit is a plug-compatible alternative to libreadline
-
-IF(PCRE2_SUPPORT_LIBEDIT)
-        SET(SUPPORT_LIBEDIT 1)
-        SET(PCRE2TEST_LIBS ${EDITLINE_LIBRARY} ${NCURSES_LIBRARY})
-ENDIF(PCRE2_SUPPORT_LIBEDIT)
-
-IF(PCRE2_SUPPORT_LIBZ)
-        SET(SUPPORT_LIBZ 1)
-        SET(PCRE2GREP_LIBS ${PCRE2GREP_LIBS} ${ZLIB_LIBRARIES})
-ENDIF(PCRE2_SUPPORT_LIBZ)
-
-IF(PCRE2_SUPPORT_LIBBZ2)
-        SET(SUPPORT_LIBBZ2 1)
-        SET(PCRE2GREP_LIBS ${PCRE2GREP_LIBS} ${BZIP2_LIBRARIES})
-ENDIF(PCRE2_SUPPORT_LIBBZ2)
-
-SET(NEWLINE_DEFAULT "")
-
-IF(PCRE2_NEWLINE STREQUAL "CR")
-        SET(NEWLINE_DEFAULT "1")
-ENDIF(PCRE2_NEWLINE STREQUAL "CR")
-IF(PCRE2_NEWLINE STREQUAL "LF")
-        SET(NEWLINE_DEFAULT "2")
-ENDIF(PCRE2_NEWLINE STREQUAL "LF")
-IF(PCRE2_NEWLINE STREQUAL "CRLF")
-        SET(NEWLINE_DEFAULT "3")
-ENDIF(PCRE2_NEWLINE STREQUAL "CRLF")
-IF(PCRE2_NEWLINE STREQUAL "ANY")
-        SET(NEWLINE_DEFAULT "4")
-ENDIF(PCRE2_NEWLINE STREQUAL "ANY")
-IF(PCRE2_NEWLINE STREQUAL "ANYCRLF")
-        SET(NEWLINE_DEFAULT "5")
-ENDIF(PCRE2_NEWLINE STREQUAL "ANYCRLF")
-IF(PCRE2_NEWLINE STREQUAL "NUL")
-        SET(NEWLINE_DEFAULT "6")
-ENDIF(PCRE2_NEWLINE STREQUAL "NUL")
-
-IF(NEWLINE_DEFAULT STREQUAL "")
-        MESSAGE(FATAL_ERROR "The PCRE2_NEWLINE variable must be set to one of the following values: \"LF\", \"CR\", \"CRLF\", \"ANY\", \"ANYCRLF\".")
-ENDIF(NEWLINE_DEFAULT STREQUAL "")
-
-IF(PCRE2_EBCDIC)
-        SET(EBCDIC 1)
-ENDIF(PCRE2_EBCDIC)
-
-IF(PCRE2_EBCDIC_NL25)
-        SET(EBCDIC 1)
-        SET(EBCDIC_NL25 1)
-ENDIF(PCRE2_EBCDIC_NL25)
-
-# Output files
-
-CONFIGURE_FILE(config-cmake.h.in
-               ${PROJECT_BINARY_DIR}/config.h
-               @ONLY)
-
-# Parse version numbers and date out of configure.ac
-
-file(STRINGS ${PROJECT_SOURCE_DIR}/configure.ac
-  configure_lines
-  LIMIT_COUNT 50 # Read only the first 50 lines of the file
-)
-
-set(SEARCHED_VARIABLES "pcre2_major" "pcre2_minor" "pcre2_prerelease" "pcre2_date"
-  "libpcre2_posix_version" "libpcre2_8_version" "libpcre2_16_version" "libpcre2_32_version")
-foreach(configure_line ${configure_lines})
-    foreach(_substitution_variable ${SEARCHED_VARIABLES})
-        string(TOUPPER ${_substitution_variable} _substitution_variable_upper)
-        if (NOT ${_substitution_variable_upper})
-            string(REGEX MATCH "m4_define\\(${_substitution_variable}, *\\[(.*)\\]" MATCHED_STRING ${configure_line})
-            if (CMAKE_MATCH_1)
-                set(${_substitution_variable_upper} ${CMAKE_MATCH_1})
-            endif()
-        endif()
-    endforeach()
-endforeach()
-
-macro(PARSE_LIB_VERSION VARIABLE_PREFIX)
-  string(REPLACE ":" ";" ${VARIABLE_PREFIX}_VERSION_LIST ${${VARIABLE_PREFIX}_VERSION})
-  list(GET ${VARIABLE_PREFIX}_VERSION_LIST 0 ${VARIABLE_PREFIX}_VERSION_CURRENT)
-  list(GET ${VARIABLE_PREFIX}_VERSION_LIST 1 ${VARIABLE_PREFIX}_VERSION_REVISION)
-  list(GET ${VARIABLE_PREFIX}_VERSION_LIST 2 ${VARIABLE_PREFIX}_VERSION_AGE)
-
-  math(EXPR ${VARIABLE_PREFIX}_SOVERSION "${${VARIABLE_PREFIX}_VERSION_CURRENT} - ${${VARIABLE_PREFIX}_VERSION_AGE}")
-  math(EXPR ${VARIABLE_PREFIX}_MACHO_COMPATIBILITY_VERSION "${${VARIABLE_PREFIX}_VERSION_CURRENT} + 1")
-  math(EXPR ${VARIABLE_PREFIX}_MACHO_CURRENT_VERSION "${${VARIABLE_PREFIX}_VERSION_CURRENT} + 1")
-  set(${VARIABLE_PREFIX}_MACHO_CURRENT_VERSION "${${VARIABLE_PREFIX}_MACHO_CURRENT_VERSION}.${${VARIABLE_PREFIX}_VERSION_REVISION}}")
-  set(${VARIABLE_PREFIX}_VERSION "${${VARIABLE_PREFIX}_SOVERSION}.${${VARIABLE_PREFIX}_VERSION_AGE}.${${VARIABLE_PREFIX}_VERSION_REVISION}")
-endmacro()
-
-PARSE_LIB_VERSION(LIBPCRE2_POSIX)
-PARSE_LIB_VERSION(LIBPCRE2_8)
-PARSE_LIB_VERSION(LIBPCRE2_16)
-PARSE_LIB_VERSION(LIBPCRE2_32)
-
-CONFIGURE_FILE(src/pcre2.h.in
-               ${PROJECT_BINARY_DIR}/pcre2.h
-               @ONLY)
-
-# Make sure to not link debug libs
-# against release libs and vice versa
-IF(WIN32)
-  SET(CMAKE_DEBUG_POSTFIX "d")
-ENDIF(WIN32)
-
-# Generate pkg-config files
-
-SET(PACKAGE_VERSION "${PCRE2_MAJOR}.${PCRE2_MINOR}")
-SET(prefix ${CMAKE_INSTALL_PREFIX})
-
-SET(exec_prefix "\${prefix}")
-SET(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
-SET(includedir "\${prefix}/include")
-IF(WIN32 AND (CMAKE_BUILD_TYPE MATCHES Debug))
-  SET(LIB_POSTFIX ${CMAKE_DEBUG_POSTFIX})
-ENDIF()
-CONFIGURE_FILE(libpcre2-posix.pc.in libpcre2-posix.pc @ONLY)
-SET(pkg_config_files ${pkg_config_files} "${CMAKE_CURRENT_BINARY_DIR}/libpcre2-posix.pc")
-
-IF(PCRE2_BUILD_PCRE2_8)
-  CONFIGURE_FILE(libpcre2-8.pc.in libpcre2-8.pc @ONLY)
-  SET(pkg_config_files ${pkg_config_files} "${CMAKE_CURRENT_BINARY_DIR}/libpcre2-8.pc")
-  SET(enable_pcre2_8 "yes")
-ELSE()
-  SET(enable_pcre2_8 "no")
-ENDIF()
-
-IF(PCRE2_BUILD_PCRE2_16)
-  CONFIGURE_FILE(libpcre2-16.pc.in libpcre2-16.pc @ONLY)
-  SET(pkg_config_files ${pkg_config_files} "${CMAKE_CURRENT_BINARY_DIR}/libpcre2-16.pc")
-  SET(enable_pcre2_16 "yes")
-ELSE()
-  SET(enable_pcre2_16 "no")
-ENDIF()
-
-IF(PCRE2_BUILD_PCRE2_32)
-  CONFIGURE_FILE(libpcre2-32.pc.in libpcre2-32.pc @ONLY)
-  SET(pkg_config_files ${pkg_config_files} "${CMAKE_CURRENT_BINARY_DIR}/libpcre2-32.pc")
-  SET(enable_pcre2_32 "yes")
-ELSE()
-  SET(enable_pcre2_32 "no")
-ENDIF()
-
-CONFIGURE_FILE(pcre2-config.in pcre2-config @ONLY)
-
-# Character table generation
-
-OPTION(PCRE2_REBUILD_CHARTABLES "Rebuild char tables" OFF)
-IF(PCRE2_REBUILD_CHARTABLES)
-  ADD_EXECUTABLE(pcre2_dftables src/pcre2_dftables.c)
-  ADD_CUSTOM_COMMAND(
-    COMMENT "Generating character tables (pcre2_chartables.c) for current locale"
-    DEPENDS pcre2_dftables
-    COMMAND pcre2_dftables
-    ARGS        ${PROJECT_BINARY_DIR}/pcre2_chartables.c
-    OUTPUT      ${PROJECT_BINARY_DIR}/pcre2_chartables.c
-  )
-ELSE(PCRE2_REBUILD_CHARTABLES)
-  CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/src/pcre2_chartables.c.dist
-                    ${PROJECT_BINARY_DIR}/pcre2_chartables.c
-                    COPYONLY)
-ENDIF(PCRE2_REBUILD_CHARTABLES)
-
-# Source code
-
-SET(PCRE2_HEADERS ${PROJECT_BINARY_DIR}/pcre2.h)
-
-SET(PCRE2_SOURCES
-  src/pcre2_auto_possess.c
-  ${PROJECT_BINARY_DIR}/pcre2_chartables.c
-  src/pcre2_compile.c
-  src/pcre2_config.c
-  src/pcre2_context.c
-  src/pcre2_convert.c
-  src/pcre2_dfa_match.c
-  src/pcre2_error.c
-  src/pcre2_extuni.c
-  src/pcre2_find_bracket.c
-  src/pcre2_jit_compile.c
-  src/pcre2_maketables.c
-  src/pcre2_match.c
-  src/pcre2_match_data.c
-  src/pcre2_newline.c
-  src/pcre2_ord2utf.c
-  src/pcre2_pattern_info.c
-  src/pcre2_script_run.c
-  src/pcre2_serialize.c
-  src/pcre2_string_utils.c
-  src/pcre2_study.c
-  src/pcre2_substitute.c
-  src/pcre2_substring.c
-  src/pcre2_tables.c
-  src/pcre2_ucd.c
-  src/pcre2_valid_utf.c
-  src/pcre2_xclass.c
-)
-
-SET(PCRE2POSIX_HEADERS src/pcre2posix.h)
-SET(PCRE2POSIX_SOURCES src/pcre2posix.c)
-
-IF(MINGW AND NOT PCRE2_STATIC)
-IF (EXISTS ${PROJECT_SOURCE_DIR}/pcre2.rc)
-ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/pcre2.o
-PRE-LINK
-COMMAND windres ARGS pcre2.rc pcre2.o
-WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
-COMMENT Using pcre2 coff info in mingw build)
-SET(PCRE2_SOURCES
-  ${PCRE2_SOURCES} ${PROJECT_SOURCE_DIR}/pcre2.o
-)
-ENDIF(EXISTS ${PROJECT_SOURCE_DIR}/pcre2.rc)
-IF (EXISTS ${PROJECT_SOURCE_DIR}/pcre2posix.rc)
-ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/pcre2posix.o
-PRE-LINK
-COMMAND windres ARGS pcre2posix.rc pcre2posix.o
-WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
-COMMENT Using pcre2posix coff info in mingw build)
-SET(PCRE2POSIX_SOURCES
-  ${PCRE2POSIX_SOURCES} ${PROJECT_SOURCE_DIR}/pcre2posix.o
-)
-ENDIF(EXISTS ${PROJECT_SOURCE_DIR}/pcre2posix.rc)
-ENDIF(MINGW AND NOT PCRE2_STATIC)
-
-IF(MSVC AND NOT PCRE2_STATIC)
-IF (EXISTS ${PROJECT_SOURCE_DIR}/pcre2.rc)
-SET(PCRE2_SOURCES
-  ${PCRE2_SOURCES} pcre2.rc)
-ENDIF(EXISTS ${PROJECT_SOURCE_DIR}/pcre2.rc)
-IF (EXISTS ${PROJECT_SOURCE_DIR}/pcre2posix.rc)
-SET(PCRE2POSIX_SOURCES
-  ${PCRE2POSIX_SOURCES} pcre2posix.rc)
-ENDIF (EXISTS ${PROJECT_SOURCE_DIR}/pcre2posix.rc)
-ENDIF(MSVC AND NOT PCRE2_STATIC)
-
-# Fix static compilation with MSVC: https://bugs.exim.org/show_bug.cgi?id=1681
-# This code was taken from the CMake wiki, not from WebM.
-
-IF(MSVC AND PCRE2_STATIC_RUNTIME)
-  MESSAGE(STATUS "** MSVC and PCRE2_STATIC_RUNTIME: modifying compiler flags to use static runtime library")
-  foreach(flag_var
-          CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
-          CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
-    string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
-  endforeach()
-ENDIF(MSVC AND PCRE2_STATIC_RUNTIME)
-
-# Build setup
-
-ADD_DEFINITIONS(-DHAVE_CONFIG_H)
-
-IF(MSVC)
-  ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS)
-ENDIF(MSVC)
-
-SET(CMAKE_INCLUDE_CURRENT_DIR 1)
-
-SET(targets)
-
-# 8-bit library
-
-IF(PCRE2_BUILD_PCRE2_8)
-ADD_LIBRARY(pcre2-8 ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
-SET_TARGET_PROPERTIES(pcre2-8 PROPERTIES
-  COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=8
-  MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_8_MACHO_COMPATIBILITY_VERSION}"
-  MACHO_CURRENT_VERSION "${LIBPCRE2_8_MACHO_CURRENT_VERSION}"
-  VERSION ${LIBPCRE2_8_VERSION}
-  SOVERSION ${LIBPCRE2_8_SOVERSION})
-SET(targets ${targets} pcre2-8)
-ADD_LIBRARY(pcre2-posix ${PCRE2POSIX_HEADERS} ${PCRE2POSIX_SOURCES})
-SET_TARGET_PROPERTIES(pcre2-posix PROPERTIES
-  COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=8
-  MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_POSIX_MACHO_COMPATIBILITY_VERSION}"
-  MACHO_CURRENT_VERSION "${LIBPCRE2_POSIX_MACHO_CURRENT_VERSION}"
-  VERSION ${LIBPCRE2_POSIX_VERSION}
-  SOVERSION ${LIBPCRE2_POSIX_SOVERSION})
-SET(targets ${targets} pcre2-posix)
-TARGET_LINK_LIBRARIES(pcre2-posix pcre2-8)
-
-IF(MINGW AND NOT PCRE2_STATIC)
-  IF(NON_STANDARD_LIB_PREFIX)
-    SET_TARGET_PROPERTIES(pcre2-8 pcre2-posix PROPERTIES PREFIX "")
-  ENDIF(NON_STANDARD_LIB_PREFIX)
-  IF(NON_STANDARD_LIB_SUFFIX)
-    SET_TARGET_PROPERTIES(pcre2-8 pcre2-posix PROPERTIES SUFFIX "-0.dll")
-  ENDIF(NON_STANDARD_LIB_SUFFIX)
-ENDIF(MINGW AND NOT PCRE2_STATIC)
-ENDIF(PCRE2_BUILD_PCRE2_8)
-
-# 16-bit library
-
-IF(PCRE2_BUILD_PCRE2_16)
-ADD_LIBRARY(pcre2-16 ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
-SET_TARGET_PROPERTIES(pcre2-16 PROPERTIES
-  COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=16
-  MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
-  MACHO_CURRENT_VERSION "${LIBPCRE2_32_MACHO_CURRENT_VERSION}"
-  VERSION ${LIBPCRE2_16_VERSION}
-  SOVERSION ${LIBPCRE2_16_SOVERSION})
-SET(targets ${targets} pcre2-16)
-
-IF(MINGW AND NOT PCRE2_STATIC)
-  IF(NON_STANDARD_LIB_PREFIX)
-    SET_TARGET_PROPERTIES(pcre2-16 PROPERTIES PREFIX "")
-  ENDIF(NON_STANDARD_LIB_PREFIX)
-  IF(NON_STANDARD_LIB_SUFFIX)
-    SET_TARGET_PROPERTIES(pcre2-16 PROPERTIES SUFFIX "-0.dll")
-  ENDIF(NON_STANDARD_LIB_SUFFIX)
-ENDIF(MINGW AND NOT PCRE2_STATIC)
-ENDIF(PCRE2_BUILD_PCRE2_16)
-
-# 32-bit library
-
-IF(PCRE2_BUILD_PCRE2_32)
-ADD_LIBRARY(pcre2-32 ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
-SET_TARGET_PROPERTIES(pcre2-32 PROPERTIES
-  COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=32
-  MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
-  MACHO_CURRENT_VERSION "${LIBPCRE2_32_MACHO_CURRENT_VERSION}"
-  VERSION ${LIBPCRE2_32_VERSION}
-  SOVERSION ${LIBPCRE2_32_SOVERSION})
-SET(targets ${targets} pcre2-32)
-
-IF(MINGW AND NOT PCRE2_STATIC)
-  IF(NON_STANDARD_LIB_PREFIX)
-    SET_TARGET_PROPERTIES(pcre2-32 PROPERTIES PREFIX "")
-  ENDIF(NON_STANDARD_LIB_PREFIX)
-  IF(NON_STANDARD_LIB_SUFFIX)
-    SET_TARGET_PROPERTIES(pcre2-32 PROPERTIES SUFFIX "-0.dll")
-  ENDIF(NON_STANDARD_LIB_SUFFIX)
-ENDIF(MINGW AND NOT PCRE2_STATIC)
-ENDIF(PCRE2_BUILD_PCRE2_32)
-
-# Executables
-
-IF(PCRE2_BUILD_PCRE2GREP)
-  ADD_EXECUTABLE(pcre2grep src/pcre2grep.c)
-  SET_PROPERTY(TARGET pcre2grep
-    PROPERTY COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=8)
-  SET(targets ${targets} pcre2grep)
-  TARGET_LINK_LIBRARIES(pcre2grep pcre2-posix ${PCRE2GREP_LIBS})
-ENDIF(PCRE2_BUILD_PCRE2GREP)
-
-# Testing
-
-IF(PCRE2_BUILD_TESTS)
-  ENABLE_TESTING()
-
-  SET(PCRE2TEST_SOURCES src/pcre2test.c)
-
-  IF(MSVC)
-    # This is needed to avoid a stack overflow error in the standard tests. The
-    # flag should be indicated with a forward-slash instead of a hyphen, but
-    # then CMake treats it as a file path.
-    SET(PCRE2TEST_LINKER_FLAGS -STACK:2500000)
-  ENDIF(MSVC)
-
-  ADD_EXECUTABLE(pcre2test ${PCRE2TEST_SOURCES})
-  SET(targets ${targets} pcre2test)
-  IF(PCRE2_BUILD_PCRE2_8)
-    LIST(APPEND PCRE2TEST_LIBS pcre2-posix pcre2-8)
-  ENDIF(PCRE2_BUILD_PCRE2_8)
-  IF(PCRE2_BUILD_PCRE2_16)
-    LIST(APPEND PCRE2TEST_LIBS pcre2-16)
-  ENDIF(PCRE2_BUILD_PCRE2_16)
-  IF(PCRE2_BUILD_PCRE2_32)
-    LIST(APPEND PCRE2TEST_LIBS pcre2-32)
-  ENDIF(PCRE2_BUILD_PCRE2_32)
-  TARGET_LINK_LIBRARIES(pcre2test ${PCRE2TEST_LIBS} ${PCRE2TEST_LINKER_FLAGS})
-
-  IF(PCRE2_SUPPORT_JIT)
-    ADD_EXECUTABLE(pcre2_jit_test src/pcre2_jit_test.c)
-    SET(targets ${targets} pcre2_jit_test)
-    SET(PCRE2_JIT_TEST_LIBS )
-    IF(PCRE2_BUILD_PCRE2_8)
-      LIST(APPEND PCRE2_JIT_TEST_LIBS pcre2-8)
-    ENDIF(PCRE2_BUILD_PCRE2_8)
-    IF(PCRE2_BUILD_PCRE2_16)
-      LIST(APPEND PCRE2_JIT_TEST_LIBS pcre2-16)
-    ENDIF(PCRE2_BUILD_PCRE2_16)
-    IF(PCRE2_BUILD_PCRE2_32)
-      LIST(APPEND PCRE2_JIT_TEST_LIBS pcre2-32)
-    ENDIF(PCRE2_BUILD_PCRE2_32)
-    TARGET_LINK_LIBRARIES(pcre2_jit_test ${PCRE2_JIT_TEST_LIBS})
-  ENDIF(PCRE2_SUPPORT_JIT)
-
-  # exes in Debug location tested by the RunTest and RunGrepTest shell scripts
-  # via "make test"
-
-  # The commented out code below provokes a warning about future removal
-  # of the facility, and requires policy CMP0026 to be set to "OLD". I have
-  # got fed-up with the warnings, but my plea for help on the mailing list
-  # produced no response. So, I've hacked. The new code below seems to work on
-  # Linux.
-
-#  IF(PCRE2_BUILD_PCRE2GREP)
-#    GET_TARGET_PROPERTY(PCRE2GREP_EXE pcre2grep DEBUG_LOCATION)
-#  ENDIF(PCRE2_BUILD_PCRE2GREP)
-#
-#  GET_TARGET_PROPERTY(PCRE2TEST_EXE pcre2test DEBUG_LOCATION)
-
-  IF(PCRE2_BUILD_PCRE2GREP)
-    SET(PCRE2GREP_EXE $<TARGET_FILE:pcre2grep>)
-  ENDIF(PCRE2_BUILD_PCRE2GREP)
-
-  SET(PCRE2TEST_EXE $<TARGET_FILE:pcre2test>)
-
-
-# =================================================
-  # Write out a CTest configuration file
-  #
-  FILE(WRITE ${PROJECT_BINARY_DIR}/CTestCustom.ctest
-  "# This is a generated file.
-MESSAGE(\"When testing is complete, review test output in the
-\\\"${PROJECT_BINARY_DIR}/Testing/Temporary\\\" folder.\")
-MESSAGE(\" \")
-")
-
-  FILE(WRITE ${PROJECT_BINARY_DIR}/pcre2_test.sh
-  "#! /bin/sh
-# This is a generated file.
-. ${PROJECT_SOURCE_DIR}/RunTest
-if test \"$?\" != \"0\"; then exit 1; fi
-# End
-")
-
-  IF(UNIX)
-    ADD_TEST(pcre2_test sh ${PROJECT_BINARY_DIR}/pcre2_test.sh)
-  ENDIF(UNIX)
-
-  IF(PCRE2_BUILD_PCRE2GREP)
-    FILE(WRITE ${PROJECT_BINARY_DIR}/pcre2_grep_test.sh
-    "#! /bin/sh
-# This is a generated file.
-. ${PROJECT_SOURCE_DIR}/RunGrepTest
-if test \"$?\" != \"0\"; then exit 1; fi
-# End
-")
-
-    IF(UNIX)
-      ADD_TEST(pcre2_grep_test sh ${PROJECT_BINARY_DIR}/pcre2_grep_test.sh)
-    ENDIF(UNIX)
-  ENDIF(PCRE2_BUILD_PCRE2GREP)
-
-  IF(WIN32)
-    # Provide environment for executing the bat file version of RunTest
-    FILE(TO_NATIVE_PATH ${PROJECT_SOURCE_DIR} winsrc)
-    FILE(TO_NATIVE_PATH ${PROJECT_BINARY_DIR} winbin)
-    FILE(TO_NATIVE_PATH ${PCRE2TEST_EXE} winexe)
-
-    FILE(WRITE ${PROJECT_BINARY_DIR}/pcre2_test.bat
-    "\@REM This is a generated file.
-\@echo off
-setlocal
-SET srcdir=\"${winsrc}\"
-# The next line was replaced by the following one after a user comment.
-# SET pcre2test=\"${winexe}\"
-SET pcre2test=\"${winbin}\\pcre2test.exe\"
-if not [%CMAKE_CONFIG_TYPE%]==[] SET pcre2test=\"${winbin}\\%CMAKE_CONFIG_TYPE%\\pcre2test.exe\"
-call %srcdir%\\RunTest.Bat
-if errorlevel 1 exit /b 1
-echo RunTest.bat tests successfully completed
-")
-
-  ADD_TEST(NAME pcre2_test_bat
-  COMMAND pcre2_test.bat)
-  SET_TESTS_PROPERTIES(pcre2_test_bat PROPERTIES
-  PASS_REGULAR_EXPRESSION "RunTest\\.bat tests successfully completed")
-
-    IF("$ENV{OSTYPE}" STREQUAL "msys")
-      # Both the sh and bat file versions of RunTest are run if make test is used
-      # in msys
-      ADD_TEST(pcre2_test_sh    sh.exe ${PROJECT_BINARY_DIR}/pcre2_test.sh)
-      IF(PCRE2_BUILD_PCRE2GREP)
-        ADD_TEST(pcre2_grep_test  sh.exe ${PROJECT_BINARY_DIR}/pcre2_grep_test.sh)
-      ENDIF(PCRE2_BUILD_PCRE2GREP)
-    ENDIF("$ENV{OSTYPE}" STREQUAL "msys")
-  ENDIF(WIN32)
-
-  # Changed to accommodate testing whichever location was just built
-
-  IF(PCRE2_SUPPORT_JIT)
-    ADD_TEST(pcre2_jit_test pcre2_jit_test)
-  ENDIF(PCRE2_SUPPORT_JIT)
-
-ENDIF(PCRE2_BUILD_TESTS)
-
-# Installation
-
-SET(CMAKE_INSTALL_ALWAYS 1)
-
-INSTALL(TARGETS ${targets}
-        RUNTIME DESTINATION bin
-        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-INSTALL(FILES ${pkg_config_files} DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
-INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/pcre2-config"
-  DESTINATION bin
-  # Set 0755 permissions
-  PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
-
-INSTALL(FILES ${PCRE2_HEADERS} ${PCRE2POSIX_HEADERS} DESTINATION include)
-
-FILE(GLOB html ${PROJECT_SOURCE_DIR}/doc/html/*.html)
-FILE(GLOB man1 ${PROJECT_SOURCE_DIR}/doc/*.1)
-FILE(GLOB man3 ${PROJECT_SOURCE_DIR}/doc/*.3)
-
-FOREACH(man ${man3})
-        GET_FILENAME_COMPONENT(man_tmp ${man} NAME)
-        SET(man3_new ${man3} ${man})
-ENDFOREACH(man ${man3})
-SET(man3 ${man3_new})
-
-INSTALL(FILES ${man1} DESTINATION man/man1)
-INSTALL(FILES ${man3} DESTINATION man/man3)
-INSTALL(FILES ${html} DESTINATION share/doc/pcre2/html)
-
-IF(MSVC AND INSTALL_MSVC_PDB)
-    INSTALL(FILES ${PROJECT_BINARY_DIR}/pcre2.pdb
-                  ${PROJECT_BINARY_DIR}/pcre2posix.pdb
-            DESTINATION bin
-            CONFIGURATIONS RelWithDebInfo)
-    INSTALL(FILES ${PROJECT_BINARY_DIR}/pcre2d.pdb
-                  ${PROJECT_BINARY_DIR}/pcre2posixd.pdb
-            DESTINATION bin
-            CONFIGURATIONS Debug)
-ENDIF(MSVC AND INSTALL_MSVC_PDB)
-
-# Help, only for nice output
-IF(BUILD_SHARED_LIBS)
-  SET(BUILD_STATIC_LIBS OFF)
-ELSE(BUILD_SHARED_LIBS)
-  SET(BUILD_STATIC_LIBS ON)
-ENDIF(BUILD_SHARED_LIBS)
-
-IF(PCRE2_HEAP_MATCH_RECURSE)
-  MESSAGE(WARNING "HEAP_MATCH_RECURSE is obsolete and does nothing.")
-ENDIF(PCRE2_HEAP_MATCH_RECURSE)
-
-IF(PCRE2_SHOW_REPORT)
-  STRING(TOUPPER "${CMAKE_BUILD_TYPE}" buildtype)
-  IF (CMAKE_C_FLAGS)
-    SET(cfsp " ")
-  ENDIF(CMAKE_C_FLAGS)
-  MESSAGE(STATUS "")
-  MESSAGE(STATUS "")
-  MESSAGE(STATUS "PCRE2-${PCRE2_MAJOR}.${PCRE2_MINOR} configuration summary:")
-  MESSAGE(STATUS "")
-  MESSAGE(STATUS "  Install prefix .................. : ${CMAKE_INSTALL_PREFIX}")
-  MESSAGE(STATUS "  C compiler ...................... : ${CMAKE_C_COMPILER}")
-  MESSAGE(STATUS "  C compiler flags ................ : ${CMAKE_C_FLAGS}${cfsp}${CMAKE_C_FLAGS_${buildtype}}")
-  MESSAGE(STATUS "")
-  MESSAGE(STATUS "  Build 8 bit PCRE2 library ....... : ${PCRE2_BUILD_PCRE2_8}")
-  MESSAGE(STATUS "  Build 16 bit PCRE2 library ...... : ${PCRE2_BUILD_PCRE2_16}")
-  MESSAGE(STATUS "  Build 32 bit PCRE2 library ...... : ${PCRE2_BUILD_PCRE2_32}")
-  MESSAGE(STATUS "  Enable JIT compiling support .... : ${PCRE2_SUPPORT_JIT}")
-  MESSAGE(STATUS "  Use SELinux allocator in JIT .... : ${PCRE2_SUPPORT_JIT_SEALLOC}")
-  MESSAGE(STATUS "  Enable Unicode support .......... : ${PCRE2_SUPPORT_UNICODE}")
-  MESSAGE(STATUS "  Newline char/sequence ........... : ${PCRE2_NEWLINE}")
-  MESSAGE(STATUS "  \\R matches only ANYCRLF ......... : ${PCRE2_SUPPORT_BSR_ANYCRLF}")
-  MESSAGE(STATUS "  \\C is disabled .................. : ${PCRE2_NEVER_BACKSLASH_C}")
-  MESSAGE(STATUS "  EBCDIC coding ................... : ${PCRE2_EBCDIC}")
-  MESSAGE(STATUS "  EBCDIC coding with NL=0x25 ...... : ${PCRE2_EBCDIC_NL25}")
-  MESSAGE(STATUS "  Rebuild char tables ............. : ${PCRE2_REBUILD_CHARTABLES}")
-  MESSAGE(STATUS "  Internal link size .............. : ${PCRE2_LINK_SIZE}")
-  MESSAGE(STATUS "  Parentheses nest limit .......... : ${PCRE2_PARENS_NEST_LIMIT}")
-  MESSAGE(STATUS "  Heap limit ...................... : ${PCRE2_HEAP_LIMIT}")
-  MESSAGE(STATUS "  Match limit ..................... : ${PCRE2_MATCH_LIMIT}")
-  MESSAGE(STATUS "  Match depth limit ............... : ${PCRE2_MATCH_LIMIT_DEPTH}")
-  MESSAGE(STATUS "  Build shared libs ............... : ${BUILD_SHARED_LIBS}")
-  MESSAGE(STATUS "  Build static libs ............... : ${BUILD_STATIC_LIBS}")
-  MESSAGE(STATUS "  Build pcre2grep ................. : ${PCRE2_BUILD_PCRE2GREP}")
-  MESSAGE(STATUS "  Enable JIT in pcre2grep ......... : ${PCRE2GREP_SUPPORT_JIT}")
-  MESSAGE(STATUS "  Enable callouts in pcre2grep .... : ${PCRE2GREP_SUPPORT_CALLOUT}")
-  MESSAGE(STATUS "  Enable callout fork in pcre2grep. : ${PCRE2GREP_SUPPORT_CALLOUT_FORK}")
-  MESSAGE(STATUS "  Buffer size for pcre2grep ....... : ${PCRE2GREP_BUFSIZE}")
-  MESSAGE(STATUS "  Build tests (implies pcre2test .. : ${PCRE2_BUILD_TESTS}")
-  MESSAGE(STATUS "               and pcre2grep)")
-  IF(ZLIB_FOUND)
-    MESSAGE(STATUS "  Link pcre2grep with libz ........ : ${PCRE2_SUPPORT_LIBZ}")
-  ELSE(ZLIB_FOUND)
-    MESSAGE(STATUS "  Link pcre2grep with libz ........ : Library not found" )
-  ENDIF(ZLIB_FOUND)
-  IF(BZIP2_FOUND)
-    MESSAGE(STATUS "  Link pcre2grep with libbz2 ...... : ${PCRE2_SUPPORT_LIBBZ2}")
-  ELSE(BZIP2_FOUND)
-    MESSAGE(STATUS "  Link pcre2grep with libbz2 ...... : Library not found" )
-  ENDIF(BZIP2_FOUND)
-  IF(EDITLINE_FOUND)
-    MESSAGE(STATUS "  Link pcre2test with libeditline . : ${PCRE2_SUPPORT_LIBEDIT}")
-  ELSE(EDITLINE_FOUND)
-    MESSAGE(STATUS "  Link pcre2test with libeditline . : Library not found" )
-  ENDIF(EDITLINE_FOUND)
-  IF(READLINE_FOUND)
-    MESSAGE(STATUS "  Link pcre2test with libreadline . : ${PCRE2_SUPPORT_LIBREADLINE}")
-  ELSE(READLINE_FOUND)
-    MESSAGE(STATUS "  Link pcre2test with libreadline . : Library not found" )
-  ENDIF(READLINE_FOUND)
-  MESSAGE(STATUS "  Support Valgrind .................: ${PCRE2_SUPPORT_VALGRIND}")
-  IF(PCRE2_DISABLE_PERCENT_ZT)
-    MESSAGE(STATUS "  Use %zu and %td ..................: OFF" )
-  ELSE(PCRE2_DISABLE_PERCENT_ZT)
-    MESSAGE(STATUS "  Use %zu and %td ..................: AUTO" )
-  ENDIF(PCRE2_DISABLE_PERCENT_ZT)
-
-  IF(MINGW AND NOT PCRE2_STATIC)
-    MESSAGE(STATUS "  Non-standard dll names (prefix) . : ${NON_STANDARD_LIB_PREFIX}")
-    MESSAGE(STATUS "  Non-standard dll names (suffix) . : ${NON_STANDARD_LIB_SUFFIX}")
-  ENDIF(MINGW AND NOT PCRE2_STATIC)
-
-  IF(MSVC)
-    MESSAGE(STATUS "  Install MSVC .pdb files ..........: ${INSTALL_MSVC_PDB}")
-  ENDIF(MSVC)
-
-  MESSAGE(STATUS "")
-ENDIF(PCRE2_SHOW_REPORT)
-
-# end CMakeLists.txt

+ 0 - 5
src/deps/regex/pcre2/COPYING

@@ -1,5 +0,0 @@
-PCRE2 LICENCE
-
-Please see the file LICENCE in the PCRE2 distribution for licensing details.
-
-End

+ 0 - 2487
src/deps/regex/pcre2/ChangeLog

@@ -1,2487 +0,0 @@
-Change Log for PCRE2
---------------------
-
-
-Version 10.37 26-May-2021
--------------------------
-
-1. Change RunGrepTest to use tr instead of sed when testing with binary
-zero bytes, because sed varies a lot from system to system and has problems
-with binary zeros. This is from Bugzilla #2681. Patch from Jeremie
-Courreges-Anglas via Nam Nguyen. This fixes RunGrepTest for OpenBSD. Later:
-it broke it for at least one version of Solaris, where tr can't handle binary
-zeros. However, that system had /usr/xpg4/bin/tr installed, which works OK, so
-RunGrepTest now checks for that command and uses it if found.
-
-2. Compiling with gcc 10.2's -fanalyzer option showed up a hypothetical problem
-with a NULL dereference. I don't think this case could ever occur in practice,
-but I have put in a check in order to get rid of the compiler error.
-
-3. An alternative patch for CMakeLists.txt because 10.36 #4 breaks CMake on
-Windows. Patch from email@cs-ware.de fixes bugzilla #2688.
-
-4. Two bugs related to over-large numbers have been fixed so the behaviour is
-now the same as Perl.
-
-  (a) A pattern such as /\214748364/ gave an overflow error instead of being
-  treated as the octal number \214 followed by literal digits.
-
-  (b) A sequence such as {65536 that has no terminating } so is not a
-  quantifier was nevertheless complaining that a quantifier number was too big.
-
-5. A run of autoconf suggested that configure.ac was out-of-date with respect
-to the lastest autoconf. Running autoupdate made some valid changes, some valid
-suggestions, and also some invalid changes, which were fixed by hand. Autoconf
-now runs clean and the resulting "configure" seems to work, so I hope nothing
-is broken. Later: the requirement for autoconf 2.70 broke some automatic test
-robots. It doesn't seem to be necessary: trying a reduction to 2.60.
-
-6. The pattern /a\K.(?0)*/ when matched against "abac" by the interpreter gave
-the answer "bac", whereas Perl and JIT both yield "c". This was because the
-effect of \K was not propagating back from the full pattern recursion. Other
-recursions such as /(a\K.(?1)*)/ did not have this problem.
-
-7. Restore single character repetition optimization in JIT. Currently fewer
-character repetitions are optimized than in 10.34.
-
-8. When the names of the functions in the POSIX wrapper were changed to
-pcre2_regcomp() etc. (see change 10.33 #4 below), functions with the original
-names were left in the library so that pre-compiled programs would still work.
-However, this has proved troublesome when programs link with several libraries,
-some of which use PCRE2 via the POSIX interface while others use a native POSIX
-library. For this reason, the POSIX function names are removed in this release.
-The macros in pcre2posix.h should ensure that re-compiling fixes any programs
-that haven't been compiled since before 10.33.
-
-
-Version 10.36 04-December-2020
-------------------------------
-
-1. Add CET_CFLAGS so that when Intel CET is enabled, pass -mshstk to
-compiler. This fixes https://bugs.exim.org/show_bug.cgi?id=2578. Patch for
-Makefile.am and configure.ac by H.J. Lu. Equivalent patch for CMakeLists.txt
-invented by PH.
-
-2. Fix inifinite loop when a single byte newline is searched in JIT when
-invalid utf8 mode is enabled.
-
-3. Updated CMakeLists.txt with patch from Wolfgang Stöggl (Bugzilla #2584):
-
-  - Include GNUInstallDirs and use ${CMAKE_INSTALL_LIBDIR} instead of hardcoded
-    lib. This allows differentiation between lib and lib64.
-    CMAKE_INSTALL_LIBDIR is used for installation of libraries and also for
-    pkgconfig file generation.
-
-  - Add the version of PCRE2 to the configuration summary like ./configure
-    does.
-
-  - Fix typo: MACTHED_STRING->MATCHED_STRING
-
-4. Updated CMakeLists.txt with another patch from Wolfgang Stöggl (Bugzilla
-#2588):
-
-  - Add escaped double quotes around include directory in CMakeLists.txt to
-    allow spaces in directory names.
-
-  - This fixes a cmake error, if the path of the pcre2 source contains a space.
-
-5. Updated CMakeLists.txt with a patch from B. Scott Michel: CMake's
-documentation suggests using CHECK_SYMBOL_EXISTS over CHECK_FUNCTION_EXIST.
-Moreover, these functions come from specific header files, which need to be
-specified (and, thankfully, are the same on both the Linux and WinXX
-platforms.)
-
-6. Added a (uint32_t) cast to prevent a compiler warning in pcre2_compile.c.
-
-7. Applied a patch from Wolfgang Stöggl (Bugzilla #2600) to fix postfix for
-debug Windows builds using CMake. This also updated configure so that it
-generates *.pc files and pcre2-config with the same content, as in the past.
-
-8. If a pattern ended with (?(VERSION=n.d where n is any number but d is just a
-single digit, the code unit beyond d was being read (i.e. there was a read
-buffer overflow). Fixes ClusterFuzz 23779.
-
-9. After the rework in r1235, certain character ranges were incorrectly
-handled by an optimization in JIT. Furthermore a wrong offset was used to
-read a value from a buffer which could lead to memory overread.
-
-10. Unnoticed for many years was the fact that delimiters other than / in the
-testinput1 and testinput4 files could cause incorrect behaviour when these
-files were processed by perltest.sh. There were several tests that used quotes
-as delimiters, and it was just luck that they didn't go wrong with perltest.sh.
-All the patterns in testinput1 and testinput4 now use / as their delimiter.
-This fixes Bugzilla #2641.
-
-11. Perl has started to give an error for \K within lookarounds (though there
-are cases where it doesn't). PCRE2 still allows this, so the tests that include
-this case have been moved from test 1 to test 2.
-
-12. Further to 10 above, pcre2test has been updated to detect and grumble if a
-delimiter other than / is used after #perltest.
-
-13. Fixed a bug with PCRE2_MATCH_INVALID_UTF in 8-bit mode when PCRE2_CASELESS
-was set and PCRE2_NO_START_OPTIMIZE was not set. The optimization for finding
-the start of a match was not resetting correctly after a failed match on the
-first valid fragment of the subject, possibly causing incorrect "no match"
-returns on subsequent fragments. For example, the pattern /A/ failed to match
-the subject \xe5A. Fixes Bugzilla #2642.
-
-14. Fixed a bug in character set matching when JIT is enabled and both unicode
-scripts and unicode classes are present at the same time.
-
-15. Added GNU grep's -m (aka --max-count) option to pcre2grep.
-
-16. Refactored substitution processing in pcre2grep strings, both for the -O
-option and when dealing with callouts. There is now a single function that
-handles $ expansion in all cases (instead of multiple copies of almost
-identical code). This means that the same escape sequences are available
-everywhere, which was not previously the case. At the same time, the escape
-sequences $x{...} and $o{...} have been introduced, to allow for characters
-whose code points are greater than 255 in Unicode mode.
-
-17. Applied the patch from Bugzilla #2628 to RunGrepTest. This does an explicit
-test for a version of sed that can handle binary zero, instead of assuming that
-any Linux version will work. Later: replaced $(...) by `...` because not all
-shells recognize the former.
-
-18. Fixed a word boundary check bug in JIT when partial matching is enabled.
-
-19. Fix ARM64 compilation warning in JIT. Patch by Carlo.
-
-20. A bug in the RunTest script meant that if the first part of test 2 failed,
-the failure was not reported.
-
-21. Test 2 was failing when run from a directory other than the source
-directory. This failure was previously missed in RunTest because of 20 above.
-Fixes added to both RunTest and RunTest.bat.
-
-22. Patch to CMakeLists.txt from Daniel to fix problem with testing under
-Windows.
-
-
-Version 10.35 09-May-2020
----------------------------
-
-1. Use PCRE2_MATCH_EMPTY flag to detect empty matches in JIT.
-
-2. Fix ARMv5 JIT improper handling of labels right after a constant pool.
-
-3. A JIT bug is fixed which allowed to read the fields of the compiled
-pattern before its existence is checked.
-
-4. Back in the PCRE1 day, capturing groups that contained recursive back
-references to themselves were made atomic (version 8.01, change 18) because
-after the end a repeated group, the captured substrings had their values from
-the final repetition, not from an earlier repetition that might be the
-destination of a backtrack. This feature was documented, and was carried over
-into PCRE2. However, it has now been realized that the major refactoring that
-was done for 10.30 has made this atomicizing unnecessary, and it is confusing
-when users are unaware of it, making some patterns appear not to be working as
-expected. Capture values of recursive back references in repeated groups are
-now correctly backtracked, so this unnecessary restriction has been removed.
-
-5. Added PCRE2_SUBSTITUTE_LITERAL.
-
-6. Avoid some VS compiler warnings.
-
-7. Added PCRE2_SUBSTITUTE_MATCHED.
-
-8. Added (?* and (?<* as synonms for (*napla: and (*naplb: to match another
-regex engine. The Perl regex folks are aware of this usage and have made a note
-about it.
-
-9. When an assertion is repeated, PCRE2 used to limit the maximum repetition to
-1, believing that repeating an assertion is pointless. However, if a positive
-assertion contains capturing groups, repetition can be useful. In any case, an
-assertion could always be wrapped in a repeated group. The only restriction
-that is now imposed is that an unlimited maximum is changed to one more than
-the minimum.
-
-10. Fix *THEN verbs in lookahead assertions in JIT.
-
-11. Added PCRE2_SUBSTITUTE_REPLACEMENT_ONLY.
-
-12. The JIT stack should be freed when the low-level stack allocation fails.
-
-13. In pcre2grep, if the final line in a scanned file is output but does not
-end with a newline sequence, add a newline according to the --newline setting.
-
-14. (?(DEFINE)...) groups were not being handled correctly when checking for
-the fixed length of a lookbehind assertion. Such a group within a lookbehind
-should be skipped, as it does not contribute to the length of the group.
-Instead, the (DEFINE) group was being processed, and if at the end of the
-lookbehind, that end was not correctly recognized. Errors such as "lookbehind
-assertion is not fixed length" and also "internal error: bad code value in
-parsed_skip()" could result.
-
-15. Put a limit of 1000 on recursive calls in pcre2_study() when searching
-nested groups for starting code units, in order to avoid stack overflow issues.
-If the limit is reached, it just gives up trying for this optimization.
-
-16. The control verb chain list must always be restored when exiting from a
-recurse function in JIT.
-
-17. Fix a crash which occurs when the character type of an invalid UTF
-character is decoded in JIT.
-
-18. Changes in many areas of the code so that when Unicode is supported and
-PCRE2_UCP is set without PCRE2_UTF, Unicode character properties are used for
-upper/lower case computations on characters whose code points are greater than
-127.
-
-19. The function for checking UTF-16 validity was returning an incorrect offset
-for the start of the error when a high surrogate was not followed by a valid
-low surrogate. This caused incorrect behaviour, for example when
-PCRE2_MATCH_INVALID_UTF was set and a match started immediately following the
-invalid high surrogate, such as /aa/ matching "\x{d800}aa".
-
-20. If a DEFINE group immediately preceded a lookbehind assertion, the pattern
-could be mis-compiled and therefore not match correctly. This is the example
-that found this: /(?(DEFINE)(?<foo>bar))(?<![-a-z0-9])word/ which failed to
-match "word" because the "move back" value was set to zero.
-
-21. Following a request from a user, some extensions and tidies to the
-character tables handling have been done:
-
-  (a) The dftables auxiliary program is renamed pcre2_dftables, but it is still
-  not installed for public use.
-
-  (b) There is now a -b option for pcre2_dftables, which causes the tables to
-  be written in binary. There is also a -help option.
-
-  (c) PCRE2_CONFIG_TABLES_LENGTH is added to pcre2_config() so that an
-  application that wants to save tables in binary knows how long they are.
-
-22. Changed setting of CMAKE_MODULE_PATH in CMakeLists.txt from SET to
-LIST(APPEND...) to allow a setting from the command line to be included.
-
-23. Updated to Unicode 13.0.0.
-
-24. CMake build now checks for secure_getenv() and strerror(). Patch by Carlo.
-
-25. Avoid using [-1] as a suffix in pcre2test because it can provoke a compiler
-warning.
-
-26. Added tests for __attribute__((uninitialized)) to both the configure and
-CMake build files, and then applied this attribute to the variable called
-stack_frames_vector[] in pcre2_match(). When implemented, this disables
-automatic initialization (a facility in clang), which can take time on big
-variables.
-
-27. Updated CMakeLists.txt (patches by Uwe Korn) to add support for
-pcre2-config, the libpcre*.pc files, SOVERSION, VERSION and the
-MACHO_*_VERSIONS settings for CMake builds.
-
-28. Another patch to CMakeLists.txt to check for mkostemp (configure already
-does). Patch by Carlo Marcelo Arenas Belon.
-
-29. Check for the existence of memfd_create in both CMake and configure
-configurations. Patch by Carlo Marcelo Arenas Belon.
-
-30. Restrict the configuration setting for the SELinux compatible execmem
-allocator (change 10.30/44) to Linux and NetBSD.
-
-
-Version 10.34 21-November-2019
-------------------------------
-
-1. The maximum number of capturing subpatterns is 65535 (documented), but no
-check on this was ever implemented. This omission has been rectified; it fixes
-ClusterFuzz 14376.
-
-2. Improved the invalid utf32 support of the JIT compiler. Now it correctly
-detects invalid characters in the 0xd800-0xdfff range.
-
-3. Fix minor typo bug in JIT compile when \X is used in a non-UTF string.
-
-4. Add support for matching in invalid UTF strings to the pcre2_match()
-interpreter, and integrate with the existing JIT support via the new
-PCRE2_MATCH_INVALID_UTF compile-time option.
-
-5. Give more error detail for invalid UTF-8 when detected in pcre2grep.
-
-6. Add support for invalid UTF-8 to pcre2grep.
-
-7. Adjust the limit for "must have" code unit searching, in particular,
-increase it substantially for non-anchored patterns.
-
-8. Allow (*ACCEPT) to be quantified, because an ungreedy quantifier with a zero
-minimum is potentially useful.
-
-9. Some changes to the way the minimum subject length is handled:
-
-   * When PCRE2_NO_START_OPTIMIZE is set, no minimum length is computed;
-     pcre2test now omits this item instead of showing a value of zero.
-
-   * An incorrect minimum length could be calculated for a pattern that
-     contained (*ACCEPT) inside a qualified group whose minimum repetition was
-     zero, for example /A(?:(*ACCEPT))?B/, which incorrectly computed a minimum
-     of 2. The minimum length scan no longer happens for a pattern that
-     contains (*ACCEPT).
-
-   * When no minimum length is set by the normal scan, but a first and/or last
-     code unit is recorded, set the minimum to 1 or 2 as appropriate.
-
-   * When a pattern contains multiple groups with the same number, a back
-     reference cannot know which one to scan for a minimum length. This used to
-     cause the minimum length finder to give up with no result. Now it treats
-     such references as not adding to the minimum length (which it should have
-     done all along).
-
-   * Furthermore, the above action now happens only if the back reference is to
-     a group that exists more than once in a pattern instead of any back
-     reference in a pattern with duplicate numbers.
-
-10. A (*MARK) value inside a successful condition was not being returned by the
-interpretive matcher (it was returned by JIT). This bug has been mended.
-
-11. A bug in pcre2grep meant that -o without an argument (or -o0) didn't work
-if the pattern had more than 32 capturing parentheses. This is fixed. In
-addition (a) the default limit for groups requested by -o<n> has been raised to
-50, (b) the new --om-capture option changes the limit, (c) an error is raised
-if -o asks for a group that is above the limit.
-
-12. The quantifier {1} was always being ignored, but this is incorrect when it
-is made possessive and applied to an item in parentheses, because a
-parenthesized item may contain multiple branches or other backtracking points,
-for example /(a|ab){1}+c/ or /(a+){1}+a/.
-
-13. For partial matches, pcre2test was always showing the maximum lookbehind
-characters, flagged with "<", which is misleading when the lookbehind didn't
-actually look behind the start (because it was later in the pattern). Showing
-all consulted preceding characters for partial matches is now controlled by the
-existing "allusedtext" modifier and, as for complete matches, this facility is
-available only for non-JIT matching, because JIT does not maintain the first
-and last consulted characters.
-
-14. DFA matching (using pcre2_dfa_match()) was not recognising a partial match
-if the end of the subject was encountered in a lookahead (conditional or
-otherwise), an atomic group, or a recursion.
-
-15. Give error if pcre2test -t, -T, -tm or -TM is given an argument of zero.
-
-16. Check for integer overflow when computing lookbehind lengths. Fixes
-Clusterfuzz issue 15636.
-
-17. Implemented non-atomic positive lookaround assertions.
-
-18. If a lookbehind contained a lookahead that contained another lookbehind
-within it, the nested lookbehind was not correctly processed. For example, if
-/(?<=(?=(?<=a)))b/ was matched to "ab" it gave no match instead of matching
-"b".
-
-19. Implemented pcre2_get_match_data_size().
-
-20. Two alterations to partial matching:
-
-    (a) The definition of a partial match is slightly changed: if a pattern
-    contains any lookbehinds, an empty partial match may be given, because this
-    is another situation where adding characters to the current subject can
-    lead to a full match. Example: /c*+(?<=[bc])/ with subject "ab".
-
-    (b) Similarly, if a pattern could match an empty string, an empty partial
-    match may be given. Example: /(?![ab]).*/ with subject "ab". This case
-    applies only to PCRE2_PARTIAL_HARD.
-
-    (c) An empty string partial hard match can be returned for \z and \Z as it
-    is documented that they shouldn't match.
-
-21. A branch that started with (*ACCEPT) was not being recognized as one that
-could match an empty string.
-
-22. Corrected pcre2_set_character_tables() tables data type: was const unsigned
-char * instead of const uint8_t *, as generated by pcre2_maketables().
-
-23. Upgraded to Unicode 12.1.0.
-
-24. Add -jitfast command line option to pcre2test (to make all the jit options
-available directly).
-
-25. Make pcre2test -C show if libreadline or libedit is supported.
-
-26. If the length of one branch of a group exceeded 65535 (the maximum value
-that is remembered as a minimum length), the whole group's length was
-incorrectly recorded as 65535, leading to incorrect "no match" when start-up
-optimizations were in force.
-
-27. The "rightmost consulted character" value was not always correct; in
-particular, if a pattern ended with a negative lookahead, characters that were
-inspected in that lookahead were not included.
-
-28. Add the pcre2_maketables_free() function.
-
-29. The start-up optimization that looks for a unique initial matching
-code unit in the interpretive engines uses memchr() in 8-bit mode. When the
-search is caseless, it was doing so inefficiently, which ended up slowing down
-the match drastically when the subject was very long. The revised code (a)
-remembers if one case is not found, so it never repeats the search for that
-case after a bumpalong and (b) when one case has been found, it searches only
-up to that position for an earlier occurrence of the other case. This fix
-applies to both interpretive pcre2_match() and to pcre2_dfa_match().
-
-30. While scanning to find the minimum length of a group, if any branch has
-minimum length zero, there is no need to scan any subsequent branches (a small
-compile-time performance improvement).
-
-31. Installed a .gitignore file on a user's suggestion. When using the svn
-repository with git (through git svn) this helps keep it tidy.
-
-32. Add underflow check in JIT which may occur when the value of subject
-string pointer is close to 0.
-
-33. Arrange for classes such as [Aa] which contain just the two cases of the
-same character, to be treated as a single caseless character. This causes the
-first and required code unit optimizations to kick in where relevant.
-
-34. Improve the bitmap of starting bytes for positive classes that include wide
-characters, but no property types, in UTF-8 mode. Previously, on encountering
-such a class, the bits for all bytes greater than \xc4 were set, thus
-specifying any character with codepoint >= 0x100. Now the only bits that are
-set are for the relevant bytes that start the wide characters. This can give a
-noticeable performance improvement.
-
-35. If the bitmap of starting code units contains only 1 or 2 bits, replace it
-with a single starting code unit (1 bit) or a caseless single starting code
-unit if the two relevant characters are case-partners. This is particularly
-relevant to the 8-bit library, though it applies to all. It can give a
-performance boost for patterns such as [Ww]ord and (word|WORD). However, this
-optimization doesn't happen if there is a "required" code unit of the same
-value (because the search for a "required" code unit starts at the match start
-for non-unique first code unit patterns, but after a unique first code unit,
-and patterns such as a*a need the former action).
-
-36. Small patch to pcre2posix.c to set the erroroffset field to -1 immediately
-after a successful compile, instead of at the start of matching to avoid a
-sanitizer complaint (regexec is supposed to be thread safe).
-
-37. Add NEON vectorization to JIT to speed up matching of first character and
-pairs of characters on ARM64 CPUs.
-
-38. If a non-ASCII character was the first in a starting assertion in a
-caseless match, the "first code unit" optimization did not get the casing
-right, and the assertion failed to match a character in the other case if it
-did not start with the same code unit.
-
-39. Fixed the incorrect computation of jump sizes on x86 CPUs in JIT. A masking
-operation was incorrectly removed in r1136. Reported by Ralf Junker.
-
-
-Version 10.33 16-April-2019
----------------------------
-
-1. Added "allvector" to pcre2test to make it easy to check the part of the
-ovector that shouldn't be changed, in particular after substitute and failed or
-partial matches.
-
-2. Fix subject buffer overread in JIT when UTF is disabled and \X or \R has
-a greater than 1 fixed quantifier. This issue was found by Yunho Kim.
-
-3. Added support for callouts from pcre2_substitute(). After 10.33-RC1, but
-prior to release, fixed a bug that caused a crash if pcre2_substitute() was
-called with a NULL match context.
-
-4. The POSIX functions are now all called pcre2_regcomp() etc., with wrapper
-functions that use the standard POSIX names. However, in pcre2posix.h the POSIX
-names are defined as macros. This should help avoid linking with the wrong
-library in some environments while still exporting the POSIX names for
-pre-existing programs that use them. (The Debian alternative names are also
-defined as macros, but not documented.)
-
-5. Fix an xclass matching issue in JIT.
-
-6. Implement PCRE2_EXTRA_ESCAPED_CR_IS_LF (see Bugzilla 2315).
-
-7. Implement the Perl 5.28 experimental alphabetic names for atomic groups and
-lookaround assertions, for example, (*pla:...) and (*atomic:...). These are
-characterized by a lower case letter following (* and to simplify coding for
-this, the character tables created by pcre2_maketables() were updated to add a
-new "is lower case letter" bit. At the same time, the now unused "is
-hexadecimal digit" bit was removed. The default tables in
-src/pcre2_chartables.c.dist are updated.
-
-8. Implement the new Perl "script run" features (*script_run:...) and
-(*atomic_script_run:...) aka (*sr:...) and (*asr:...).
-
-9. Fixed two typos in change 22 for 10.21, which added special handling for
-ranges such as a-z in EBCDIC environments. The original code probably never
-worked, though there were no bug reports.
-
-10. Implement PCRE2_COPY_MATCHED_SUBJECT for pcre2_match() (including JIT via
-pcre2_match()) and pcre2_dfa_match(), but *not* the pcre2_jit_match() fast
-path. Also, when a match fails, set the subject field in the match data to NULL
-for tidiness - none of the substring extractors should reference this after
-match failure.
-
-11. If a pattern started with a subroutine call that had a quantifier with a
-minimum of zero, an incorrect "match must start with this character" could be
-recorded. Example: /(?&xxx)*ABC(?<xxx>XYZ)/ would (incorrectly) expect 'A' to
-be the first character of a match.
-
-12. The heap limit checking code in pcre2_dfa_match() could suffer from
-overflow if the heap limit was set very large. This could cause incorrect "heap
-limit exceeded" errors.
-
-13. Add "kibibytes" to the heap limit output from pcre2test -C to make the
-units clear.
-
-14. Add a call to pcre2_jit_free_unused_memory() in pcre2grep, for tidiness.
-
-15. Updated the VMS-specific code in pcre2test on the advice of a VMS user.
-
-16. Removed the unnecessary inclusion of stdint.h (or inttypes.h) from
-pcre2_internal.h as it is now included by pcre2.h. Also, change 17 for 10.32
-below was unnecessarily complicated, as inttypes.h is a Standard C header,
-which is defined to be a superset of stdint.h. Instead of conditionally
-including stdint.h or inttypes.h, pcre2.h now unconditionally includes
-inttypes.h. This supports environments that do not have stdint.h but do have
-inttypes.h, which are known to exist. A note in the autotools documentation
-says (November 2018) that there are none known that are the other way round.
-
-17. Added --disable-percent-zt to "configure" (and equivalent to CMake) to
-forcibly disable the use of %zu and %td in formatting strings because there is
-at least one version of VMS that claims to be C99 but does not support these
-modifiers.
-
-18. Added --disable-pcre2grep-callout-fork, which restricts the callout support
-in pcre2grep to the inbuilt echo facility. This may be useful in environments
-that do not support fork().
-
-19. Fix two instances of <= 0 being applied to unsigned integers (the VMS
-compiler complains).
-
-20. Added "fork" support for VMS to pcre2grep, for running an external program
-via a string callout.
-
-21. Improve MAP_JIT flag usage on MacOS. Patch by Rich Siegel.
-
-22. If a pattern started with (*MARK), (*COMMIT), (*PRUNE), (*SKIP), or (*THEN)
-followed by ^ it was not recognized as anchored.
-
-23. The RunGrepTest script used to cut out the test of NUL characters for
-Solaris and MacOS as printf and sed can't handle them. It seems that the *BSD
-systems can't either. I've inverted the test so that only those OS that are
-known to work (currently only Linux) try to run this test.
-
-24. Some tests in RunGrepTest appended to testtrygrep from two different file
-descriptors instead of redirecting stderr to stdout. This worked on Linux, but
-it was reported not to on other systems, causing the tests to fail.
-
-25. In the RunTest script, make the test for stack setting use the same value
-for the stack as it needs for -bigstack.
-
-26. Insert a cast in pcre2_dfa_match.c to suppress a compiler warning.
-
-26. With PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL set, escape sequences such as \s
-which are valid in character classes, but not as the end of ranges, were being
-treated as literals. An example is [_-\s] (but not [\s-_] because that gave an
-error at the *start* of a range). Now an "invalid range" error is given
-independently of PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL.
-
-27. Related to 26 above, PCRE2_BAD_ESCAPE_IS_LITERAL was affecting known escape
-sequences such as \eX when they appeared invalidly in a character class. Now
-the option applies only to unrecognized or malformed escape sequences.
-
-28. Fix word boundary in JIT compiler. Patch by Mike Munday.
-
-29. The pcre2_dfa_match() function was incorrectly handling conditional version
-tests such as (?(VERSION>=0)...) when the version test was true. Incorrect
-processing or a crash could result.
-
-30. When PCRE2_UTF is set, allow non-ASCII letters and decimal digits in group
-names, as Perl does. There was a small bug in this new code, found by
-ClusterFuzz 12950, fixed before release.
-
-31. Implemented PCRE2_EXTRA_ALT_BSUX to support ECMAScript 6's \u{hhh}
-construct.
-
-32. Compile \p{Any} to be the same as . in DOTALL mode, so that it benefits
-from auto-anchoring if \p{Any}* starts a pattern.
-
-33. Compile invalid UTF check in JIT test when only pcre32 is enabled.
-
-34. For some time now, CMake has been warning about the setting of policy
-CMP0026 to "OLD" in CmakeLists.txt, and hinting that the feature might be
-removed in a future version. A request for CMake expertise on the list produced
-no result, so I have now hacked CMakeLists.txt along the lines of some changes
-I found on the Internet. The new code no longer needs the policy setting, and
-it appears to work fine on Linux.
-
-35. Setting --enable-jit=auto for an out-of-tree build failed because the
-source directory wasn't in the search path for AC_TRY_COMPILE always. Patch
-from Ross Burton.
-
-36. Disable SSE2 JIT optimizations in x86 CPUs when SSE2 is not available.
-Patch by Guillem Jover.
-
-37. Changed expressions such as 1<<10 to 1u<<10 in many places because compiler
-warnings were reported.
-
-38. Using the clang compiler with sanitizing options causes runtime complaints
-about truncation for statments such as x = ~x when x is an 8-bit value; it
-seems to compute ~x as a 32-bit value. Changing such statements to x = 255 ^ x
-gets rid of the warnings. There were also two missing casts in pcre2test.
-
-
-Version 10.32 10-September-2018
--------------------------------
-
-1. When matching using the the REG_STARTEND feature of the POSIX API with a
-non-zero starting offset, unset capturing groups with lower numbers than a
-group that did capture something were not being correctly returned as "unset"
-(that is, with offset values of -1).
-
-2. When matching using the POSIX API, pcre2test used to omit listing unset
-groups altogether. Now it shows those that come before any actual captures as
-"<unset>", as happens for non-POSIX matching.
-
-3. Running "pcre2test -C" always stated "\R matches CR, LF, or CRLF only",
-whatever the build configuration was. It now correctly says "\R matches all
-Unicode newlines" in the default case when --enable-bsr-anycrlf has not been
-specified. Similarly, running "pcre2test -C bsr" never produced the result
-ANY.
-
-4. Matching the pattern /(*UTF)\C[^\v]+\x80/ against an 8-bit string containing
-multi-code-unit characters caused bad behaviour and possibly a crash. This
-issue was fixed for other kinds of repeat in release 10.20 by change 19, but
-repeating character classes were overlooked.
-
-5. pcre2grep now supports the inclusion of binary zeros in patterns that are
-read from files via the -f option.
-
-6. A small fix to pcre2grep to avoid compiler warnings for -Wformat-overflow=2.
-
-7. Added --enable-jit=auto support to configure.ac.
-
-8. Added some dummy variables to the heapframe structure in 16-bit and 32-bit
-modes for the benefit of m68k, where pointers can be 16-bit aligned. The
-dummies force 32-bit alignment and this ensures that the structure is a
-multiple of PCRE2_SIZE, a requirement that is tested at compile time. In other
-architectures, alignment requirements take care of this automatically.
-
-9. When returning an error from pcre2_pattern_convert(), ensure the error
-offset is set zero for early errors.
-
-10. A number of patches for Windows support from Daniel Richard G:
-
-  (a) List of error numbers in Runtest.bat corrected (it was not the same as in
-      Runtest).
-
-  (b) pcre2grep snprintf() workaround as used elsewhere in the tree.
-
-  (c) Support for non-C99 snprintf() that returns -1 in the overflow case.
-
-11. Minor tidy of pcre2_dfa_match() code.
-
-12. Refactored pcre2_dfa_match() so that the internal recursive calls no longer
-use the stack for local workspace and local ovectors. Instead, an initial block
-of stack is reserved, but if this is insufficient, heap memory is used. The
-heap limit parameter now applies to pcre2_dfa_match().
-
-13. If a "find limits" test of DFA matching in pcre2test resulted in too many
-matches for the ovector, no matches were displayed.
-
-14. Removed an occurrence of ctrl/Z from test 6 because Windows treats it as
-EOF. The test looks to have come from a fuzzer.
-
-15. If PCRE2 was built with a default match limit a lot greater than the
-default default of 10 000 000, some JIT tests of the match limit no longer
-failed. All such tests now set 10 000 000 as the upper limit.
-
-16. Another Windows related patch for pcregrep to ensure that WIN32 is
-undefined under Cygwin.
-
-17. Test for the presence of stdint.h and inttypes.h in configure and CMake and
-include whichever exists (stdint preferred) instead of unconditionally
-including stdint. This makes life easier for old and non-standard systems.
-
-18. Further changes to improve portability, especially to old and or non-
-standard systems:
-
-  (a) Put all printf arguments in RunGrepTest into single, not double, quotes,
-      and use \0 not \x00 for binary zero.
-
-  (b) Avoid the use of C++ (i.e. BCPL) // comments.
-
-  (c) Parameterize the use of %zu in pcre2test to make it like %td. For both of
-      these now, if using MSVC or a standard C before C99, %lu is used with a
-      cast if necessary.
-
-19. Applied a contributed patch to CMakeLists.txt to increase the stack size
-when linking pcre2test with MSVC. This gets rid of a stack overflow error in
-the standard set of tests.
-
-20. Output a warning in pcre2test when ignoring the "altglobal" modifier when
-it is given with the "replace" modifier.
-
-21. In both pcre2test and pcre2_substitute(), with global matching, a pattern
-that matched an empty string, but never at the starting match offset, was not
-handled in a Perl-compatible way. The pattern /(<?=\G.)/ is an example of such
-a pattern. Because \G is in a lookbehind assertion, there has to be a
-"bumpalong" before there can be a match. The automatic "advance by one
-character after an empty string match" rule is therefore inappropriate. A more
-complicated algorithm has now been implemented.
-
-22. When checking to see if a lookbehind is of fixed length, lookaheads were
-correctly ignored, but qualifiers on lookaheads were not being ignored, leading
-to an incorrect "lookbehind assertion is not fixed length" error.
-
-23. The VERSION condition test was reading fractional PCRE2 version numbers
-such as the 04 in 10.04 incorrectly and hence giving wrong results.
-
-24. Updated to Unicode version 11.0.0. As well as the usual addition of new
-scripts and characters, this involved re-jigging the grapheme break property
-algorithm because Unicode has changed the way emojis are handled.
-
-25. Fixed an obscure bug that struck when there were two atomic groups not
-separated by something with a backtracking point. There could be an incorrect
-backtrack into the first of the atomic groups. A complicated example is
-/(?>a(*:1))(?>b)(*SKIP:1)x|.*/ matched against "abc", where the *SKIP
-shouldn't find a MARK (because is in an atomic group), but it did.
-
-26. Upgraded the perltest.sh script: (1) #pattern lines can now be used to set
-a list of modifiers for all subsequent patterns - only those that the script
-recognizes are meaningful; (2) #subject lines can be used to set or unset a
-default "mark" modifier; (3) Unsupported #command lines give a warning when
-they are ignored; (4) Mark data is output only if the "mark" modifier is
-present.
-
-27. (*ACCEPT:ARG), (*FAIL:ARG), and (*COMMIT:ARG) are now supported.
-
-28. A (*MARK) name was not being passed back for positive assertions that were
-terminated by (*ACCEPT).
-
-29. Add support for \N{U+dddd}, but only in Unicode mode.
-
-30. Add support for (?^) for unsetting all imnsx options.
-
-31. The PCRE2_EXTENDED (/x) option only ever discarded space characters whose
-code point was less than 256 and that were recognized by the lookup table
-generated by pcre2_maketables(), which uses isspace() to identify white space.
-Now, when Unicode support is compiled, PCRE2_EXTENDED also discards U+0085,
-U+200E, U+200F, U+2028, and U+2029, which are additional characters defined by
-Unicode as "Pattern White Space". This makes PCRE2 compatible with Perl.
-
-32. In certain circumstances, option settings within patterns were not being
-correctly processed. For example, the pattern /((?i)A)(?m)B/ incorrectly
-matched "ab". (The (?m) setting lost the fact that (?i) should be reset at the
-end of its group during the parse process, but without another setting such as
-(?m) the compile phase got it right.) This bug was introduced by the
-refactoring in release 10.23.
-
-33. PCRE2 uses bcopy() if available when memmove() is not, and it used just to
-define memmove() as function call to bcopy(). This hasn't been tested for a
-long time because in pcre2test the result of memmove() was being used, whereas
-bcopy() doesn't return a result. This feature is now refactored always to call
-an emulation function when there is no memmove(). The emulation makes use of
-bcopy() when available.
-
-34. When serializing a pattern, set the memctl, executable_jit, and tables
-fields (that is, all the fields that contain pointers) to zeros so that the
-result of serializing is always the same. These fields are re-set when the
-pattern is deserialized.
-
-35. In a pattern such as /[^\x{100}-\x{ffff}]*[\x80-\xff]/ which has a repeated
-negative class with no characters less than 0x100 followed by a positive class
-with only characters less than 0x100, the first class was incorrectly being
-auto-possessified, causing incorrect match failures.
-
-36. Removed the character type bit ctype_meta, which dates from PCRE1 and is
-not used in PCRE2.
-
-37. Tidied up unnecessarily complicated macros used in the escapes table.
-
-38. Since 10.21, the new testoutput8-16-4 file has accidentally been omitted
-from distribution tarballs, owing to a typo in Makefile.am which had
-testoutput8-16-3 twice. Now fixed.
-
-39. If the only branch in a conditional subpattern was anchored, the whole
-subpattern was treated as anchored, when it should not have been, since the
-assumed empty second branch cannot be anchored. Demonstrated by test patterns
-such as /(?(1)^())b/ or /(?(?=^))b/.
-
-40. A repeated conditional subpattern that could match an empty string was
-always assumed to be unanchored. Now it it checked just like any other
-repeated conditional subpattern, and can be found to be anchored if the minimum
-quantifier is one or more. I can't see much use for a repeated anchored
-pattern, but the behaviour is now consistent.
-
-41. Minor addition to pcre2_jit_compile.c to avoid static analyzer complaint
-(for an event that could never occur but you had to have external information
-to know that).
-
-42. If before the first match in a file that was being searched by pcre2grep
-there was a line that was sufficiently long to cause the input buffer to be
-expanded, the variable holding the location of the end of the previous match
-was being adjusted incorrectly, and could cause an overflow warning from a code
-sanitizer. However, as the value is used only to print pending "after" lines
-when the next match is reached (and there are no such lines in this case) this
-bug could do no damage.
-
-
-Version 10.31 12-February-2018
-------------------------------
-
-1. Fix typo (missing ]) in VMS code in pcre2test.c.
-
-2. Replace the replicated code for matching extended Unicode grapheme sequences
-(which got a lot more complicated by change 10.30/49) by a single subroutine
-that is called by both pcre2_match() and pcre2_dfa_match().
-
-3. Add idempotent guard to pcre2_internal.h.
-
-4. Add new pcre2_config() options: PCRE2_CONFIG_NEVER_BACKSLASH_C and
-PCRE2_CONFIG_COMPILED_WIDTHS.
-
-5. Cut out \C tests in the JIT regression tests when NEVER_BACKSLASH_C is
-defined (e.g. by --enable-never-backslash-C).
-
-6. Defined public names for all the pcre2_compile() error numbers, and used
-the public names in pcre2_convert.c.
-
-7. Fixed a small memory leak in pcre2test (convert contexts).
-
-8. Added two casts to compile.c and one to match.c to avoid compiler warnings.
-
-9. Added code to pcre2grep when compiled under VMS to set the symbol
-PCRE2GREP_RC to the exit status, because VMS does not distinguish between
-exit(0) and exit(1).
-
-10. Added the -LM (list modifiers) option to pcre2test. Also made -C complain
-about a bad option only if the following argument item does not start with a
-hyphen.
-
-11. pcre2grep was truncating components of file names to 128 characters when
-processing files with the -r option, and also (some very odd code) truncating
-path names to 512 characters. There is now a check on the absolute length of
-full path file names, which may be up to 2047 characters long.
-
-12. When an assertion contained (*ACCEPT) it caused all open capturing groups
-to be closed (as for a non-assertion ACCEPT), which was wrong and could lead to
-misbehaviour for subsequent references to groups that started outside the
-assertion. ACCEPT in an assertion now closes only those groups that were
-started within that assertion. Fixes oss-fuzz issues 3852 and 3891.
-
-13. Multiline matching in pcre2grep was misbehaving if the pattern matched
-within a line, and then matched again at the end of the line and over into
-subsequent lines. Behaviour was different with and without colouring, and
-sometimes context lines were incorrectly printed and/or line endings were lost.
-All these issues should now be fixed.
-
-14. If --line-buffered was specified for pcre2grep when input was from a
-compressed file (.gz or .bz2) a segfault occurred. (Line buffering should be
-ignored for compressed files.)
-
-15. Although pcre2_jit_match checks whether the pattern is compiled
-in a given mode, it was also expected that at least one mode is available.
-This is fixed and pcre2_jit_match returns with PCRE2_ERROR_JIT_BADOPTION
-when the pattern is not optimized by JIT at all.
-
-16. The line number and related variables such as match counts in pcre2grep
-were all int variables, causing overflow when files with more than 2147483647
-lines were processed (assuming 32-bit ints). They have all been changed to
-unsigned long ints.
-
-17. If a backreference with a minimum repeat count of zero was first in a
-pattern, apart from assertions, an incorrect first matching character could be
-recorded. For example, for the pattern /(?=(a))\1?b/, "b" was incorrectly set
-as the first character of a match.
-
-18. Characters in a leading positive assertion are considered for recording a
-first character of a match when the rest of the pattern does not provide one.
-However, a character in a non-assertive group within a leading assertion such
-as in the pattern /(?=(a))\1?b/ caused this process to fail. This was an
-infelicity rather than an outright bug, because it did not affect the result of
-a match, just its speed. (In fact, in this case, the starting 'a' was
-subsequently picked up in the study.)
-
-19. A minor tidy in pcre2_match(): making all PCRE2_ERROR_ returns use "return"
-instead of "RRETURN" saves unwinding the backtracks in these cases (only one
-didn't).
-
-20. Allocate a single callout block on the stack at the start of pcre2_match()
-and set its never-changing fields once only. Do the same for pcre2_dfa_match().
-
-21. Save the extra compile options (set in the compile context) with the
-compiled pattern (they were not previously saved), add PCRE2_INFO_EXTRAOPTIONS
-to retrieve them, and update pcre2test to show them.
-
-22. Added PCRE2_CALLOUT_STARTMATCH and PCRE2_CALLOUT_BACKTRACK bits to a new
-field callout_flags in callout blocks. The bits are set by pcre2_match(), but
-not by JIT or pcre2_dfa_match(). Their settings are shown in pcre2test callouts
-if the callout_extra subject modifier is set. These bits are provided to help
-with tracking how a backtracking match is proceeding.
-
-23. Updated the pcre2demo.c demonstration program, which was missing the extra
-code for -g that handles the case when \K in an assertion causes the match to
-end at the original start point. Also arranged for it to detect when \K causes
-the end of a match to be before its start.
-
-24. Similar to 23 above, strange things (including loops) could happen in
-pcre2grep when \K was used in an assertion when --colour was used or in
-multiline mode. The "end at original start point" bug is fixed, and if the end
-point is found to be before the start point, they are swapped.
-
-25. When PCRE2_FIRSTLINE without PCRE2_NO_START_OPTIMIZE was used in non-JIT
-matching (both pcre2_match() and pcre2_dfa_match()) and the matched string
-started with the first code unit of a newline sequence, matching failed because
-it was not tried at the newline.
-
-26. Code for giving up a non-partial match after failing to find a starting
-code unit anywhere in the subject was missing when searching for one of a
-number of code units (the bitmap case) in both pcre2_match() and
-pcre2_dfa_match(). This was a missing optimization rather than a bug.
-
-27. Tidied up the ACROSSCHAR macro to be like FORWARDCHAR and BACKCHAR, using a
-pointer argument rather than a code unit value. This should not have affected
-the generated code.
-
-28. The JIT compiler has been updated.
-
-29. Avoid pointer overflow for unset captures in pcre2_substring_list_get().
-This could not actually cause a crash because it was always used in a memcpy()
-call with zero length.
-
-30. Some internal structures have a variable-length ovector[] as their last
-element. Their actual memory is obtained dynamically, giving an ovector of
-appropriate length. However, they are defined in the structure as
-ovector[NUMBER], where NUMBER is large so that array bound checkers don't
-grumble. The value of NUMBER was 10000, but a fuzzer exceeded 5000 capturing
-groups, making the ovector larger than this. The number has been increased to
-131072, which allows for the maximum number of captures (65535) plus the
-overall match. This fixes oss-fuzz issue 5415.
-
-31. Auto-possessification at the end of a capturing group was dependent on what
-follows the group (e.g. /(a+)b/ would auto-possessify the a+) but this caused
-incorrect behaviour when the group was called recursively from elsewhere in the
-pattern where something different might follow. This bug is an unforseen
-consequence of change #1 for 10.30 - the implementation of backtracking into
-recursions. Iterators at the ends of capturing groups are no longer considered
-for auto-possessification if the pattern contains any recursions. Fixes
-Bugzilla #2232.
-
-
-Version 10.30 14-August-2017
-----------------------------
-
-1. The main interpreter, pcre2_match(), has been refactored into a new version
-that does not use recursive function calls (and therefore the stack) for
-remembering backtracking positions. This makes --disable-stack-for-recursion a
-NOOP. The new implementation allows backtracking into recursive group calls in
-patterns, making it more compatible with Perl, and also fixes some other
-hard-to-do issues such as #1887 in Bugzilla. The code is also cleaner because
-the old code had a number of fudges to try to reduce stack usage. It seems to
-run no slower than the old code.
-
-A number of bugs in the refactored code were subsequently fixed during testing
-before release, but after the code was made available in the repository. These
-bugs were never in fully released code, but are noted here for the record.
-
-  (a) If a pattern had fewer capturing parentheses than the ovector supplied in
-      the match data block, a memory error (detectable by ASAN) occurred after
-      a match, because the external block was being set from non-existent
-      internal ovector fields. Fixes oss-fuzz issue 781.
-
-  (b) A pattern with very many capturing parentheses (when the internal frame
-      size was greater than the initial frame vector on the stack) caused a
-      crash. A vector on the heap is now set up at the start of matching if the
-      vector on the stack is not big enough to handle at least 10 frames.
-      Fixes oss-fuzz issue 783.
-
-  (c) Handling of (*VERB)s in recursions was wrong in some cases.
-
-  (d) Captures in negative assertions that were used as conditions were not
-      happening if the assertion matched via (*ACCEPT).
-
-  (e) Mark values were not being passed out of recursions.
-
-  (f) Refactor some code in do_callout() to avoid picky compiler warnings about
-      negative indices. Fixes oss-fuzz issue 1454.
-
-  (g) Similarly refactor the way the variable length ovector is addressed for
-      similar reasons. Fixes oss-fuzz issue 1465.
-
-2. Now that pcre2_match() no longer uses recursive function calls (see above),
-the "match limit recursion" value seems misnamed. It still exists, and limits
-the depth of tree that is searched. To avoid future confusion, it has been
-renamed as "depth limit" in all relevant places (--with-depth-limit,
-(*LIMIT_DEPTH), pcre2_set_depth_limit(), etc) but the old names are still
-available for backwards compatibility.
-
-3. Hardened pcre2test so as to reduce the number of bugs reported by fuzzers:
-
-  (a) Check for malloc failures when getting memory for the ovector (POSIX) or
-      the match data block (non-POSIX).
-
-4. In the 32-bit library in non-UTF mode, an attempt to find a Unicode property
-for a character with a code point greater than 0x10ffff (the Unicode maximum)
-caused a crash.
-
-5. If a lookbehind assertion that contained a back reference to a group
-appearing later in the pattern was compiled with the PCRE2_ANCHORED option,
-undefined actions (often a segmentation fault) could occur, depending on what
-other options were set. An example assertion is (?<!\1(abc)) where the
-reference \1 precedes the group (abc). This fixes oss-fuzz issue 865.
-
-6. Added the PCRE2_INFO_FRAMESIZE item to pcre2_pattern_info() and arranged for
-pcre2test to use it to output the frame size when the "framesize" modifier is
-given.
-
-7. Reworked the recursive pattern matching in the JIT compiler to follow the
-interpreter changes.
-
-8. When the zero_terminate modifier was specified on a pcre2test subject line
-for global matching, unpredictable things could happen. For example, in UTF-8
-mode, the pattern //g,zero_terminate read random memory when matched against an
-empty string with zero_terminate. This was a bug in pcre2test, not the library.
-
-9. Moved some Windows-specific code in pcre2grep (introduced in 10.23/13) out
-of the section that is compiled when Unix-style directory scanning is
-available, and into a new section that is always compiled for Windows.
-
-10. In pcre2test, explicitly close the file after an error during serialization
-or deserialization (the "load" or "save" commands).
-
-11. Fix memory leak in pcre2_serialize_decode() when the input is invalid.
-
-12. Fix potential NULL dereference in pcre2_callout_enumerate() if called with
-a NULL pattern pointer when Unicode support is available.
-
-13. When the 32-bit library was being tested by pcre2test, error messages that
-were longer than 64 code units could cause a buffer overflow. This was a bug in
-pcre2test.
-
-14. The alternative matching function, pcre2_dfa_match() misbehaved if it
-encountered a character class with a possessive repeat, for example [a-f]{3}+.
-
-15. The depth (formerly recursion) limit now applies to DFA matching (as
-of 10.23/36); pcre2test has been upgraded so that \=find_limits works with DFA
-matching to find the minimum value for this limit.
-
-16. Since 10.21, if pcre2_match() was called with a null context, default
-memory allocation functions were used instead of whatever was used when the
-pattern was compiled.
-
-17. Changes to the pcre2test "memory" modifier on a subject line. These apply
-only to pcre2_match():
-
-  (a) Warn if null_context is set on both pattern and subject, because the
-      memory details cannot then be shown.
-
-  (b) Remember (up to a certain number of) memory allocations and their
-      lengths, and list only the lengths, so as to be system-independent.
-      (In practice, the new interpreter never has more than 2 blocks allocated
-      simultaneously.)
-
-18. Make pcre2test detect an error return from pcre2_get_error_message(), give
-a message, and abandon the run (this would have detected #13 above).
-
-19. Implemented PCRE2_ENDANCHORED.
-
-20. Applied Jason Hood's patches (slightly modified) to pcre2grep, to implement
-the --output=text (-O) option and the inbuilt callout echo.
-
-21. Extend auto-anchoring etc. to ignore groups with a zero qualifier and
-single-branch conditions with a false condition (e.g. DEFINE) at the start of a
-branch. For example, /(?(DEFINE)...)^A/ and /(...){0}^B/ are now flagged as
-anchored.
-
-22. Added an explicit limit on the amount of heap used by pcre2_match(), set by
-pcre2_set_heap_limit() or (*LIMIT_HEAP=xxx). Upgraded pcre2test to show the
-heap limit along with other pattern information, and to find the minimum when
-the find_limits modifier is set.
-
-23. Write to the last 8 bytes of the pcre2_real_code structure when a compiled
-pattern is set up so as to initialize any padding the compiler might have
-included. This avoids valgrind warnings when a compiled pattern is copied, in
-particular when it is serialized.
-
-24. Remove a redundant line of code left in accidentally a long time ago.
-
-25. Remove a duplication typo in pcre2_tables.c
-
-26. Correct an incorrect cast in pcre2_valid_utf.c
-
-27. Update pcre2test, remove some unused code in pcre2_match(), and upgrade the
-tests to improve coverage.
-
-28. Some fixes/tidies as a result of looking at Coverity Scan output:
-
-    (a) Typo: ">" should be ">=" in opcode check in pcre2_auto_possess.c.
-    (b) Added some casts to avoid "suspicious implicit sign extension".
-    (c) Resource leaks in pcre2test in rare error cases.
-    (d) Avoid warning for never-use case OP_TABLE_LENGTH which is just a fudge
-        for checking at compile time that tables are the right size.
-    (e) Add missing "fall through" comment.
-
-29. Implemented PCRE2_EXTENDED_MORE and related /xx and (?xx) features.
-
-30. Implement (?n: for PCRE2_NO_AUTO_CAPTURE, because Perl now has this.
-
-31. If more than one of "push", "pushcopy", or "pushtablescopy" were set in
-pcre2test, a crash could occur.
-
-32. Make -bigstack in RunTest allocate a 64MiB stack (instead of 16MiB) so
-that all the tests can run with clang's sanitizing options.
-
-33. Implement extra compile options in the compile context and add the first
-one: PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES.
-
-34. Implement newline type PCRE2_NEWLINE_NUL.
-
-35. A lookbehind assertion that had a zero-length branch caused undefined
-behaviour when processed by pcre2_dfa_match(). This is oss-fuzz issue 1859.
-
-36. The match limit value now also applies to pcre2_dfa_match() as there are
-patterns that can use up a lot of resources without necessarily recursing very
-deeply. (Compare item 10.23/36.) This should fix oss-fuzz #1761.
-
-37. Implement PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL.
-
-38. Fix returned offsets from regexec() when REG_STARTEND is used with a
-starting offset greater than zero.
-
-39. Implement REG_PEND (GNU extension) for the POSIX wrapper.
-
-40. Implement the subject_literal modifier in pcre2test, and allow jitstack on
-pattern lines.
-
-41. Implement PCRE2_LITERAL and use it to support REG_NOSPEC.
-
-42. Implement PCRE2_EXTRA_MATCH_LINE and PCRE2_EXTRA_MATCH_WORD for the benefit
-of pcre2grep.
-
-43. Re-implement pcre2grep's -F, -w, and -x options using PCRE2_LITERAL,
-PCRE2_EXTRA_MATCH_WORD, and PCRE2_EXTRA_MATCH_LINE. This fixes two bugs:
-
-    (a) The -F option did not work for fixed strings containing \E.
-    (b) The -w option did not work for patterns with multiple branches.
-
-44. Added configuration options for the SELinux compatible execmem allocator in
-JIT.
-
-45. Increased the limit for searching for a "must be present" code unit in
-subjects from 1000 to 2000 for 8-bit searches, since they use memchr() and are
-much faster.
-
-46. Arrange for anchored patterns to record and use "first code unit" data,
-because this can give a fast "no match" without searching for a "required code
-unit". Previously only non-anchored patterns did this.
-
-47. Upgraded the Unicode tables from Unicode 8.0.0 to Unicode 10.0.0.
-
-48. Add the callout_no_where modifier to pcre2test.
-
-49. Update extended grapheme breaking rules to the latest set that are in
-Unicode Standard Annex #29.
-
-50. Added experimental foreign pattern conversion facilities
-(pcre2_pattern_convert() and friends).
-
-51. Change the macro FWRITE, used in pcre2grep, to FWRITE_IGNORE because FWRITE
-is defined in a system header in cygwin. Also modified some of the #ifdefs in
-pcre2grep related to Windows and Cygwin support.
-
-52. Change 3(g) for 10.23 was a bit too zealous. If a hyphen that follows a
-character class is the last character in the class, Perl does not give a
-warning. PCRE2 now also treats this as a literal.
-
-53. Related to 52, though PCRE2 was throwing an error for [[:digit:]-X] it was
-not doing so for [\d-X] (and similar escapes), as is documented.
-
-54. Fixed a MIPS issue in the JIT compiler reported by Joshua Kinard.
-
-55. Fixed a "maybe uninitialized" warning for class_uchardata in \p handling in
-pcre2_compile() which could never actually trigger (code should have been cut
-out when Unicode support is disabled).
-
-
-Version 10.23 14-February-2017
-------------------------------
-
-1. Extended pcre2test with the utf8_input modifier so that it is able to
-generate all possible 16-bit and 32-bit code unit values in non-UTF modes.
-
-2. In any wide-character mode (8-bit UTF or any 16-bit or 32-bit mode), without
-PCRE2_UCP set, a negative character type such as \D in a positive class should
-cause all characters greater than 255 to match, whatever else is in the class.
-There was a bug that caused this not to happen if a Unicode property item was
-added to such a class, for example [\D\P{Nd}] or [\W\pL].
-
-3. There has been a major re-factoring of the pcre2_compile.c file. Most syntax
-checking is now done in the pre-pass that identifies capturing groups. This has
-reduced the amount of duplication and made the code tidier. While doing this,
-some minor bugs and Perl incompatibilities were fixed, including:
-
-  (a) \Q\E in the middle of a quantifier such as A+\Q\E+ is now ignored instead
-      of giving an invalid quantifier error.
-
-  (b) {0} can now be used after a group in a lookbehind assertion; previously
-      this caused an "assertion is not fixed length" error.
-
-  (c) Perl always treats (?(DEFINE) as a "define" group, even if a group with
-      the name "DEFINE" exists. PCRE2 now does likewise.
-
-  (d) A recursion condition test such as (?(R2)...) must now refer to an
-      existing subpattern.
-
-  (e) A conditional recursion test such as (?(R)...) misbehaved if there was a
-      group whose name began with "R".
-
-  (f) When testing zero-terminated patterns under valgrind, the terminating
-      zero is now marked "no access". This catches bugs that would otherwise
-      show up only with non-zero-terminated patterns.
-
-  (g) A hyphen appearing immediately after a POSIX character class (for example
-      /[[:ascii:]-z]/) now generates an error. Perl does accept this as a
-      literal, but gives a warning, so it seems best to fail it in PCRE.
-
-  (h) An empty \Q\E sequence may appear after a callout that precedes an
-      assertion condition (it is, of course, ignored).
-
-One effect of the refactoring is that some error numbers and messages have
-changed, and the pattern offset given for compiling errors is not always the
-right-most character that has been read. In particular, for a variable-length
-lookbehind assertion it now points to the start of the assertion. Another
-change is that when a callout appears before a group, the "length of next
-pattern item" that is passed now just gives the length of the opening
-parenthesis item, not the length of the whole group. A length of zero is now
-given only for a callout at the end of the pattern. Automatic callouts are no
-longer inserted before and after explicit callouts in the pattern.
-
-A number of bugs in the refactored code were subsequently fixed during testing
-before release, but after the code was made available in the repository. Many
-of the bugs were discovered by fuzzing testing. Several of them were related to
-the change from assuming a zero-terminated pattern (which previously had
-required non-zero terminated strings to be copied). These bugs were never in
-fully released code, but are noted here for the record.
-
-  (a) An overall recursion such as (?0) inside a lookbehind assertion was not
-      being diagnosed as an error.
-
-  (b) In utf mode, the length of a *MARK (or other verb) name was being checked
-      in characters instead of code units, which could lead to bad code being
-      compiled, leading to unpredictable behaviour.
-
-  (c) In extended /x mode, characters whose code was greater than 255 caused
-      a lookup outside one of the global tables. A similar bug existed for wide
-      characters in *VERB names.
-
-  (d) The amount of memory needed for a compiled pattern was miscalculated if a
-      lookbehind contained more than one toplevel branch and the first branch
-      was of length zero.
-
-  (e) In UTF-8 or UTF-16 modes with PCRE2_EXTENDED (/x) set and a non-zero-
-      terminated pattern, if a # comment ran on to the end of the pattern, one
-      or more code units past the end were being read.
-
-  (f) An unterminated repeat at the end of a non-zero-terminated pattern (e.g.
-      "{2,2") could cause reading beyond the pattern.
-
-  (g) When reading a callout string, if the end delimiter was at the end of the
-      pattern one further code unit was read.
-
-  (h) An unterminated number after \g' could cause reading beyond the pattern.
-
-  (i) An insufficient memory size was being computed for compiling with
-      PCRE2_AUTO_CALLOUT.
-
-  (j) A conditional group with an assertion condition used more memory than was
-      allowed for it during parsing, so too many of them could therefore
-      overrun a buffer.
-
-  (k) If parsing a pattern exactly filled the buffer, the internal test for
-      overrun did not check when the final META_END item was added.
-
-  (l) If a lookbehind contained a subroutine call, and the called group
-      contained an option setting such as (?s), and the PCRE2_ANCHORED option
-      was set, unpredictable behaviour could occur. The underlying bug was
-      incorrect code and insufficient checking while searching for the end of
-      the called subroutine in the parsed pattern.
-
-  (m) Quantifiers following (*VERB)s were not being diagnosed as errors.
-
-  (n) The use of \Q...\E in a (*VERB) name when PCRE2_ALT_VERBNAMES and
-      PCRE2_AUTO_CALLOUT were both specified caused undetermined behaviour.
-
-  (o) If \Q was preceded by a quantified item, and the following \E was
-      followed by '?' or '+', and there was at least one literal character
-      between them, an internal error "unexpected repeat" occurred (example:
-      /.+\QX\E+/).
-
-  (p) A buffer overflow could occur while sorting the names in the group name
-      list (depending on the order in which the names were seen).
-
-  (q) A conditional group that started with a callout was not doing the right
-      check for a following assertion, leading to compiling bad code. Example:
-      /(?(C'XX))?!XX/
-
-  (r) If a character whose code point was greater than 0xffff appeared within
-      a lookbehind that was within another lookbehind, the calculation of the
-      lookbehind length went wrong and could provoke an internal error.
-
-  (t) The sequence \E- or \Q\E- after a POSIX class in a character class caused
-      an internal error. Now the hyphen is treated as a literal.
-
-4. Back references are now permitted in lookbehind assertions when there are
-no duplicated group numbers (that is, (?| has not been used), and, if the
-reference is by name, there is only one group of that name. The referenced
-group must, of course be of fixed length.
-
-5. pcre2test has been upgraded so that, when run under valgrind with valgrind
-support enabled, reading past the end of the pattern is detected, both when
-compiling and during callout processing.
-
-6. \g{+<number>} (e.g. \g{+2} ) is now supported. It is a "forward back
-reference" and can be useful in repetitions (compare \g{-<number>} ). Perl does
-not recognize this syntax.
-
-7. Automatic callouts are no longer generated before and after callouts in the
-pattern.
-
-8. When pcre2test was outputing information from a callout, the caret indicator
-for the current position in the subject line was incorrect if it was after an
-escape sequence for a character whose code point was greater than \x{ff}.
-
-9. Change 19 for 10.22 had a typo (PCRE_STATIC_RUNTIME should be
-PCRE2_STATIC_RUNTIME). Fix from David Gaussmann.
-
-10. Added --max-buffer-size to pcre2grep, to allow for automatic buffer
-expansion when long lines are encountered. Original patch by Dmitry
-Cherniachenko.
-
-11. If pcre2grep was compiled with JIT support, but the library was compiled
-without it (something that neither ./configure nor CMake allow, but it can be
-done by editing config.h), pcre2grep was giving a JIT error. Now it detects
-this situation and does not try to use JIT.
-
-12. Added some "const" qualifiers to variables in pcre2grep.
-
-13. Added Dmitry Cherniachenko's patch for colouring output in Windows
-(untested by me). Also, look for GREP_COLOUR or GREP_COLOR if the environment
-variables PCRE2GREP_COLOUR and PCRE2GREP_COLOR are not found.
-
-14. Add the -t (grand total) option to pcre2grep.
-
-15. A number of bugs have been mended relating to match start-up optimizations
-when the first thing in a pattern is a positive lookahead. These all applied
-only when PCRE2_NO_START_OPTIMIZE was *not* set:
-
-    (a) A pattern such as (?=.*X)X$ was incorrectly optimized as if it needed
-        both an initial 'X' and a following 'X'.
-    (b) Some patterns starting with an assertion that started with .* were
-        incorrectly optimized as having to match at the start of the subject or
-        after a newline. There are cases where this is not true, for example,
-        (?=.*[A-Z])(?=.{8,16})(?!.*[\s]) matches after the start in lines that
-        start with spaces. Starting .* in an assertion is no longer taken as an
-        indication of matching at the start (or after a newline).
-
-16. The "offset" modifier in pcre2test was not being ignored (as documented)
-when the POSIX API was in use.
-
-17. Added --enable-fuzz-support to "configure", causing an non-installed
-library containing a test function that can be called by fuzzers to be
-compiled. A non-installed  binary to run the test function locally, called
-pcre2fuzzcheck is also compiled.
-
-18. A pattern with PCRE2_DOTALL (/s) set but not PCRE2_NO_DOTSTAR_ANCHOR, and
-which started with .* inside a positive lookahead was incorrectly being
-compiled as implicitly anchored.
-
-19. Removed all instances of "register" declarations, as they are considered
-obsolete these days and in any case had become very haphazard.
-
-20. Add strerror() to pcre2test for failed file opening.
-
-21. Make pcre2test -C list valgrind support when it is enabled.
-
-22. Add the use_length modifier to pcre2test.
-
-23. Fix an off-by-one bug in pcre2test for the list of names for 'get' and
-'copy' modifiers.
-
-24. Add PCRE2_CALL_CONVENTION into the prototype declarations in pcre2.h as it
-is apparently needed there as well as in the function definitions. (Why did
-nobody ask for this in PCRE1?)
-
-25. Change the _PCRE2_H and _PCRE2_UCP_H guard macros in the header files to
-PCRE2_H_IDEMPOTENT_GUARD and PCRE2_UCP_H_IDEMPOTENT_GUARD to be more standard
-compliant and unique.
-
-26. pcre2-config --libs-posix was listing -lpcre2posix instead of
--lpcre2-posix. Also, the CMake build process was building the library with the
-wrong name.
-
-27. In pcre2test, give some offset information for errors in hex patterns.
-This uses the C99 formatting sequence %td, except for MSVC which doesn't
-support it - %lu is used instead.
-
-28. Implemented pcre2_code_copy_with_tables(), and added pushtablescopy to
-pcre2test for testing it.
-
-29. Fix small memory leak in pcre2test.
-
-30. Fix out-of-bounds read for partial matching of /./ against an empty string
-when the newline type is CRLF.
-
-31. Fix a bug in pcre2test that caused a crash when a locale was set either in
-the current pattern or a previous one and a wide character was matched.
-
-32. The appearance of \p, \P, or \X in a substitution string when
-PCRE2_SUBSTITUTE_EXTENDED was set caused a segmentation fault (NULL
-dereference).
-
-33. If the starting offset was specified as greater than the subject length in
-a call to pcre2_substitute() an out-of-bounds memory reference could occur.
-
-34. When PCRE2 was compiled to use the heap instead of the stack for recursive
-calls to match(), a repeated minimizing caseless back reference, or a
-maximizing one where the two cases had different numbers of code units,
-followed by a caseful back reference, could lose the caselessness of the first
-repeated back reference (example: /(Z)(a)\2{1,2}?(?-i)\1X/i should match ZaAAZX
-but didn't).
-
-35. When a pattern is too complicated, PCRE2 gives up trying to find a minimum
-matching length and just records zero. Typically this happens when there are
-too many nested or recursive back references. If the limit was reached in
-certain recursive cases it failed to be triggered and an internal error could
-be the result.
-
-36. The pcre2_dfa_match() function now takes note of the recursion limit for
-the internal recursive calls that are used for lookrounds and recursions within
-the pattern.
-
-37. More refactoring has got rid of the internal could_be_empty_branch()
-function (around 400 lines of code, including comments) by keeping track of
-could-be-emptiness as the pattern is compiled instead of scanning compiled
-groups. (This would have been much harder before the refactoring of #3 above.)
-This lifts a restriction on the number of branches in a group (more than about
-1100 would give "pattern is too complicated").
-
-38. Add the "-ac" command line option to pcre2test as a synonym for "-pattern
-auto_callout".
-
-39. In a library with Unicode support, incorrect data was compiled for a
-pattern with PCRE2_UCP set without PCRE2_UTF if a class required all wide
-characters to match (for example, /[\s[:^ascii:]]/).
-
-40. The callout_error modifier has been added to pcre2test to make it possible
-to return PCRE2_ERROR_CALLOUT from a callout.
-
-41. A minor change to pcre2grep: colour reset is now "<esc>[0m" instead of
-"<esc>[00m".
-
-42. The limit in the auto-possessification code that was intended to catch
-overly-complicated patterns and not spend too much time auto-possessifying was
-being reset too often, resulting in very long compile times for some patterns.
-Now such patterns are no longer completely auto-possessified.
-
-43. Applied Jason Hood's revised patch for RunTest.bat.
-
-44. Added a new Windows script RunGrepTest.bat, courtesy of Jason Hood.
-
-45. Minor cosmetic fix to pcre2test: move a variable that is not used under
-Windows into the "not Windows" code.
-
-46. Applied Jason Hood's patches to upgrade pcre2grep under Windows and tidy
-some of the code:
-
-  * normalised the Windows condition by ensuring WIN32 is defined;
-  * enables the callout feature under Windows;
-  * adds globbing (Microsoft's implementation expands quoted args),
-    using a tweaked opendirectory;
-  * implements the is_*_tty functions for Windows;
-  * --color=always will write the ANSI sequences to file;
-  * add sequences 4 (underline works on Win10) and 5 (blink as bright
-    background, relatively standard on DOS/Win);
-  * remove the (char *) casts for the now-const strings;
-  * remove GREP_COLOUR (grep's command line allowed the 'u', but not
-    the environment), parsing GREP_COLORS instead;
-  * uses the current colour if not set, rather than black;
-  * add print_match for the undefined case;
-  * fixes a typo.
-
-In addition, colour settings containing anything other than digits and
-semicolon are ignored, and the colour controls are no longer output for empty
-strings.
-
-47. Detecting patterns that are too large inside the length-measuring loop
-saves processing ridiculously long patterns to their end.
-
-48. Ignore PCRE2_CASELESS when processing \h, \H, \v, and \V in classes as it
-just wastes time. In the UTF case it can also produce redundant entries in
-XCLASS lists caused by characters with multiple other cases and pairs of
-characters in the same "not-x" sublists.
-
-49. A pattern such as /(?=(a\K))/ can report the end of the match being before
-its start; pcre2test was not handling this correctly when using the POSIX
-interface (it was OK with the native interface).
-
-50. In pcre2grep, ignore all JIT compile errors. This means that pcre2grep will
-continue to work, falling back to interpretation if anything goes wrong with
-JIT.
-
-51. Applied patches from Christian Persch to configure.ac to make use of the
-AC_USE_SYSTEM_EXTENSIONS macro and to test for functions used by the JIT
-modules.
-
-52. Minor fixes to pcre2grep from Jason Hood:
-    * fixed some spacing;
-    * Windows doesn't usually use single quotes, so I've added a define
-      to use appropriate quotes [in an example];
-    * LC_ALL was displayed as "LCC_ALL";
-    * numbers 11, 12 & 13 should end in "th";
-    * use double quotes in usage message.
-
-53. When autopossessifying, skip empty branches without recursion, to reduce
-stack usage for the benefit of clang with -fsanitize-address, which uses huge
-stack frames. Example pattern: /X?(R||){3335}/. Fixes oss-fuzz issue 553.
-
-54. A pattern with very many explicit back references to a group that is a long
-way from the start of the pattern could take a long time to compile because
-searching for the referenced group in order to find the minimum length was
-being done repeatedly. Now up to 128 group minimum lengths are cached and the
-attempt to find a minimum length is abandoned if there is a back reference to a
-group whose number is greater than 128. (In that case, the pattern is so
-complicated that this optimization probably isn't worth it.) This fixes
-oss-fuzz issue 557.
-
-55. Issue 32 for 10.22 below was not correctly fixed. If pcre2grep in multiline
-mode with --only-matching matched several lines, it restarted scanning at the
-next line instead of moving on to the end of the matched string, which can be
-several lines after the start.
-
-56. Applied Jason Hood's new patch for RunGrepTest.bat that updates it in line
-with updates to the non-Windows version.
-
-
-
-Version 10.22 29-July-2016
---------------------------
-
-1. Applied Jason Hood's patches to RunTest.bat and testdata/wintestoutput3
-to fix problems with running the tests under Windows.
-
-2. Implemented a facility for quoting literal characters within hexadecimal
-patterns in pcre2test, to make it easier to create patterns with just a few
-non-printing characters.
-
-3. Binary zeros are not supported in pcre2test input files. It now detects them
-and gives an error.
-
-4. Updated the valgrind parameters in RunTest: (a) changed smc-check=all to
-smc-check=all-non-file; (b) changed obj:* in the suppression file to obj:??? so
-that it matches only unknown objects.
-
-5. Updated the maintenance script maint/ManyConfigTests to make it easier to
-select individual groups of tests.
-
-6. When the POSIX wrapper function regcomp() is called, the REG_NOSUB option
-used to set PCRE2_NO_AUTO_CAPTURE when calling pcre2_compile(). However, this
-disables the use of back references (and subroutine calls), which are supported
-by other implementations of regcomp() with RE_NOSUB. Therefore, REG_NOSUB no
-longer causes PCRE2_NO_AUTO_CAPTURE to be set, though it still ignores nmatch
-and pmatch when regexec() is called.
-
-7. Because of 6 above, pcre2test has been modified with a new modifier called
-posix_nosub, to call regcomp() with REG_NOSUB. Previously the no_auto_capture
-modifier had this effect. That option is now ignored when the POSIX API is in
-use.
-
-8. Minor tidies to the pcre2demo.c sample program, including more comments
-about its 8-bit-ness.
-
-9. Detect unmatched closing parentheses and give the error in the pre-scan
-instead of later. Previously the pre-scan carried on and could give a
-misleading incorrect error message. For example, /(?J)(?'a'))(?'a')/ gave a
-message about invalid duplicate group names.
-
-10. It has happened that pcre2test was accidentally linked with another POSIX
-regex library instead of libpcre2-posix. In this situation, a call to regcomp()
-(in the other library) may succeed, returning zero, but of course putting its
-own data into the regex_t block. In one example the re_pcre2_code field was
-left as NULL, which made pcre2test think it had not got a compiled POSIX regex,
-so it treated the next line as another pattern line, resulting in a confusing
-error message. A check has been added to pcre2test to see if the data returned
-from a successful call of regcomp() are valid for PCRE2's regcomp(). If they
-are not, an error message is output and the pcre2test run is abandoned. The
-message points out the possibility of a mis-linking. Hopefully this will avoid
-some head-scratching the next time this happens.
-
-11. A pattern such as /(?<=((?C)0))/, which has a callout inside a lookbehind
-assertion, caused pcre2test to output a very large number of spaces when the
-callout was taken, making the program appearing to loop.
-
-12. A pattern that included (*ACCEPT) in the middle of a sufficiently deeply
-nested set of parentheses of sufficient size caused an overflow of the
-compiling workspace (which was diagnosed, but of course is not desirable).
-
-13. Detect missing closing parentheses during the pre-pass for group
-identification.
-
-14. Changed some integer variable types and put in a number of casts, following
-a report of compiler warnings from Visual Studio 2013 and a few tests with
-gcc's -Wconversion (which still throws up a lot).
-
-15. Implemented pcre2_code_copy(), and added pushcopy and #popcopy to pcre2test
-for testing it.
-
-16. Change 66 for 10.21 introduced the use of snprintf() in PCRE2's version of
-regerror(). When the error buffer is too small, my version of snprintf() puts a
-binary zero in the final byte. Bug #1801 seems to show that other versions do
-not do this, leading to bad output from pcre2test when it was checking for
-buffer overflow. It no longer assumes a binary zero at the end of a too-small
-regerror() buffer.
-
-17. Fixed typo ("&&" for "&") in pcre2_study(). Fortunately, this could not
-actually affect anything, by sheer luck.
-
-18. Two minor fixes for MSVC compilation: (a) removal of apparently incorrect
-"const" qualifiers in pcre2test and (b) defining snprintf as _snprintf for
-older MSVC compilers. This has been done both in src/pcre2_internal.h for most
-of the library, and also in src/pcre2posix.c, which no longer includes
-pcre2_internal.h (see 24 below).
-
-19. Applied Chris Wilson's patch (Bugzilla #1681) to CMakeLists.txt for MSVC
-static compilation. Subsequently applied Chris Wilson's second patch, putting
-the first patch under a new option instead of being unconditional when
-PCRE_STATIC is set.
-
-20. Updated pcre2grep to set stdout as binary when run under Windows, so as not
-to convert \r\n at the ends of reflected lines into \r\r\n. This required
-ensuring that other output that is written to stdout (e.g. file names) uses the
-appropriate line terminator: \r\n for Windows, \n otherwise.
-
-21. When a line is too long for pcre2grep's internal buffer, show the maximum
-length in the error message.
-
-22. Added support for string callouts to pcre2grep (Zoltan's patch with PH
-additions).
-
-23. RunTest.bat was missing a "set type" line for test 22.
-
-24. The pcre2posix.c file was including pcre2_internal.h, and using some
-"private" knowledge of the data structures. This is unnecessary; the code has
-been re-factored and no longer includes pcre2_internal.h.
-
-25. A racing condition is fixed in JIT reported by Mozilla.
-
-26. Minor code refactor to avoid "array subscript is below array bounds"
-compiler warning.
-
-27. Minor code refactor to avoid "left shift of negative number" warning.
-
-28. Add a bit more sanity checking to pcre2_serialize_decode() and document
-that it expects trusted data.
-
-29. Fix typo in pcre2_jit_test.c
-
-30. Due to an oversight, pcre2grep was not making use of JIT when available.
-This is now fixed.
-
-31. The RunGrepTest script is updated to use the valgrind suppressions file
-when testing with JIT under valgrind (compare 10.21/51 below). The suppressions
-file is updated so that is now the same as for PCRE1: it suppresses the
-Memcheck warnings Addr16 and Cond in unknown objects (that is, JIT-compiled
-code). Also changed smc-check=all to smc-check=all-non-file as was done for
-RunTest (see 4 above).
-
-32. Implemented the PCRE2_NO_JIT option for pcre2_match().
-
-33. Fix typo that gave a compiler error when JIT not supported.
-
-34. Fix comment describing the returns from find_fixedlength().
-
-35. Fix potential negative index in pcre2test.
-
-36. Calls to pcre2_get_error_message() with error numbers that are never
-returned by PCRE2 functions were returning empty strings. Now the error code
-PCRE2_ERROR_BADDATA is returned. A facility has been added to pcre2test to
-show the texts for given error numbers (i.e. to call pcre2_get_error_message()
-and display what it returns) and a few representative error codes are now
-checked in RunTest.
-
-37. Added "&& !defined(__INTEL_COMPILER)" to the test for __GNUC__ in
-pcre2_match.c, in anticipation that this is needed for the same reason it was
-recently added to pcrecpp.cc in PCRE1.
-
-38. Using -o with -M in pcre2grep could cause unnecessary repeated output when
-the match extended over a line boundary, as it tried to find more matches "on
-the same line" - but it was already over the end.
-
-39. Allow \C in lookbehinds and DFA matching in UTF-32 mode (by converting it
-to the same code as '.' when PCRE2_DOTALL is set).
-
-40. Fix two clang compiler warnings in pcre2test when only one code unit width
-is supported.
-
-41. Upgrade RunTest to automatically re-run test 2 with a large (64MiB) stack
-if it fails when running the interpreter with a 16MiB stack (and if changing
-the stack size via pcre2test is possible). This avoids having to manually set a
-large stack size when testing with clang.
-
-42. Fix register overwite in JIT when SSE2 acceleration is enabled.
-
-43. Detect integer overflow in pcre2test pattern and data repetition counts.
-
-44. In pcre2test, ignore "allcaptures" after DFA matching.
-
-45. Fix unaligned accesses on x86. Patch by Marc Mutz.
-
-46. Fix some more clang compiler warnings.
-
-
-Version 10.21 12-January-2016
------------------------------
-
-1. Improve matching speed of patterns starting with + or * in JIT.
-
-2. Use memchr() to find the first character in an unanchored match in 8-bit
-mode in the interpreter. This gives a significant speed improvement.
-
-3. Removed a redundant copy of the opcode_possessify table in the
-pcre2_auto_possessify.c source.
-
-4. Fix typos in dftables.c for z/OS.
-
-5. Change 36 for 10.20 broke the handling of [[:>:]] and [[:<:]] in that
-processing them could involve a buffer overflow if the following character was
-an opening parenthesis.
-
-6. Change 36 for 10.20 also introduced a bug in processing this pattern:
-/((?x)(*:0))#(?'/. Specifically: if a setting of (?x) was followed by a (*MARK)
-setting (which (*:0) is), then (?x) did not get unset at the end of its group
-during the scan for named groups, and hence the external # was incorrectly
-treated as a comment and the invalid (?' at the end of the pattern was not
-diagnosed. This caused a buffer overflow during the real compile. This bug was
-discovered by Karl Skomski with the LLVM fuzzer.
-
-7. Moved the pcre2_find_bracket() function from src/pcre2_compile.c into its
-own source module to avoid a circular dependency between src/pcre2_compile.c
-and src/pcre2_study.c
-
-8. A callout with a string argument containing an opening square bracket, for
-example /(?C$[$)(?<]/, was incorrectly processed and could provoke a buffer
-overflow. This bug was discovered by Karl Skomski with the LLVM fuzzer.
-
-9. The handling of callouts during the pre-pass for named group identification
-has been tightened up.
-
-10. The quantifier {1} can be ignored, whether greedy, non-greedy, or
-possessive. This is a very minor optimization.
-
-11. A possessively repeated conditional group that could match an empty string,
-for example, /(?(R))*+/, was incorrectly compiled.
-
-12. The Unicode tables have been updated to Unicode 8.0.0 (thanks to Christian
-Persch).
-
-13. An empty comment (?#) in a pattern was incorrectly processed and could
-provoke a buffer overflow. This bug was discovered by Karl Skomski with the
-LLVM fuzzer.
-
-14. Fix infinite recursion in the JIT compiler when certain patterns such as
-/(?:|a|){100}x/ are analysed.
-
-15. Some patterns with character classes involving [: and \\ were incorrectly
-compiled and could cause reading from uninitialized memory or an incorrect
-error diagnosis. Examples are: /[[:\\](?<[::]/ and /[[:\\](?'abc')[a:]. The
-first of these bugs was discovered by Karl Skomski with the LLVM fuzzer.
-
-16. Pathological patterns containing many nested occurrences of [: caused
-pcre2_compile() to run for a very long time. This bug was found by the LLVM
-fuzzer.
-
-17. A missing closing parenthesis for a callout with a string argument was not
-being diagnosed, possibly leading to a buffer overflow. This bug was found by
-the LLVM fuzzer.
-
-18. A conditional group with only one branch has an implicit empty alternative
-branch and must therefore be treated as potentially matching an empty string.
-
-19. If (?R was followed by - or + incorrect behaviour happened instead of a
-diagnostic. This bug was discovered by Karl Skomski with the LLVM fuzzer.
-
-20. Another bug that was introduced by change 36 for 10.20: conditional groups
-whose condition was an assertion preceded by an explicit callout with a string
-argument might be incorrectly processed, especially if the string contained \Q.
-This bug was discovered by Karl Skomski with the LLVM fuzzer.
-
-21. Compiling PCRE2 with the sanitize options of clang showed up a number of
-very pedantic coding infelicities and a buffer overflow while checking a UTF-8
-string if the final multi-byte UTF-8 character was truncated.
-
-22. For Perl compatibility in EBCDIC environments, ranges such as a-z in a
-class, where both values are literal letters in the same case, omit the
-non-letter EBCDIC code points within the range.
-
-23. Finding the minimum matching length of complex patterns with back
-references and/or recursions can take a long time. There is now a cut-off that
-gives up trying to find a minimum length when things get too complex.
-
-24. An optimization has been added that speeds up finding the minimum matching
-length for patterns containing repeated capturing groups or recursions.
-
-25. If a pattern contained a back reference to a group whose number was
-duplicated as a result of appearing in a (?|...) group, the computation of the
-minimum matching length gave a wrong result, which could cause incorrect "no
-match" errors. For such patterns, a minimum matching length cannot at present
-be computed.
-
-26. Added a check for integer overflow in conditions (?(<digits>) and
-(?(R<digits>). This omission was discovered by Karl Skomski with the LLVM
-fuzzer.
-
-27. Fixed an issue when \p{Any} inside an xclass did not read the current
-character.
-
-28. If pcre2grep was given the -q option with -c or -l, or when handling a
-binary file, it incorrectly wrote output to stdout.
-
-29. The JIT compiler did not restore the control verb head in case of *THEN
-control verbs. This issue was found by Karl Skomski with a custom LLVM fuzzer.
-
-30. The way recursive references such as (?3) are compiled has been re-written
-because the old way was the cause of many issues. Now, conversion of the group
-number into a pattern offset does not happen until the pattern has been
-completely compiled. This does mean that detection of all infinitely looping
-recursions is postponed till match time. In the past, some easy ones were
-detected at compile time. This re-writing was done in response to yet another
-bug found by the LLVM fuzzer.
-
-31. A test for a back reference to a non-existent group was missing for items
-such as \987. This caused incorrect code to be compiled. This issue was found
-by Karl Skomski with a custom LLVM fuzzer.
-
-32. Error messages for syntax errors following \g and \k were giving inaccurate
-offsets in the pattern.
-
-33. Improve the performance of starting single character repetitions in JIT.
-
-34. (*LIMIT_MATCH=) now gives an error instead of setting the value to 0.
-
-35. Error messages for syntax errors in *LIMIT_MATCH and *LIMIT_RECURSION now
-give the right offset instead of zero.
-
-36. The JIT compiler should not check repeats after a {0,1} repeat byte code.
-This issue was found by Karl Skomski with a custom LLVM fuzzer.
-
-37. The JIT compiler should restore the control chain for empty possessive
-repeats. This issue was found by Karl Skomski with a custom LLVM fuzzer.
-
-38. A bug which was introduced by the single character repetition optimization
-was fixed.
-
-39. Match limit check added to recursion. This issue was found by Karl Skomski
-with a custom LLVM fuzzer.
-
-40. Arrange for the UTF check in pcre2_match() and pcre2_dfa_match() to look
-only at the part of the subject that is relevant when the starting offset is
-non-zero.
-
-41. Improve first character match in JIT with SSE2 on x86.
-
-42. Fix two assertion fails in JIT. These issues were found by Karl Skomski
-with a custom LLVM fuzzer.
-
-43. Correct the setting of CMAKE_C_FLAGS in CMakeLists.txt (patch from Roy Ivy
-III).
-
-44. Fix bug in RunTest.bat for new test 14, and adjust the script for the added
-test (there are now 20 in total).
-
-45. Fixed a corner case of range optimization in JIT.
-
-46. Add the ${*MARK} facility to pcre2_substitute().
-
-47. Modifier lists in pcre2test were splitting at spaces without the required
-commas.
-
-48. Implemented PCRE2_ALT_VERBNAMES.
-
-49. Fixed two issues in JIT. These were found by Karl Skomski with a custom
-LLVM fuzzer.
-
-50. The pcre2test program has been extended by adding the #newline_default
-command. This has made it possible to run the standard tests when PCRE2 is
-compiled with either CR or CRLF as the default newline convention. As part of
-this work, the new command was added to several test files and the testing
-scripts were modified. The pcre2grep tests can now also be run when there is no
-LF in the default newline convention.
-
-51. The RunTest script has been modified so that, when JIT is used and valgrind
-is specified, a valgrind suppressions file is set up to ignore "Invalid read of
-size 16" errors because these are false positives when the hardware supports
-the SSE2 instruction set.
-
-52. It is now possible to have comment lines amid the subject strings in
-pcre2test (and perltest.sh) input.
-
-53. Implemented PCRE2_USE_OFFSET_LIMIT and pcre2_set_offset_limit().
-
-54. Add the null_context modifier to pcre2test so that calling pcre2_compile()
-and the matching functions with NULL contexts can be tested.
-
-55. Implemented PCRE2_SUBSTITUTE_EXTENDED.
-
-56. In a character class such as [\W\p{Any}] where both a negative-type escape
-("not a word character") and a property escape were present, the property
-escape was being ignored.
-
-57. Fixed integer overflow for patterns whose minimum matching length is very,
-very large.
-
-58. Implemented --never-backslash-C.
-
-59. Change 55 above introduced a bug by which certain patterns provoked the
-erroneous error "\ at end of pattern".
-
-60. The special sequences [[:<:]] and [[:>:]] gave rise to incorrect compiling
-errors or other strange effects if compiled in UCP mode. Found with libFuzzer
-and AddressSanitizer.
-
-61. Whitespace at the end of a pcre2test pattern line caused a spurious error
-message if there were only single-character modifiers. It should be ignored.
-
-62. The use of PCRE2_NO_AUTO_CAPTURE could cause incorrect compilation results
-or segmentation errors for some patterns. Found with libFuzzer and
-AddressSanitizer.
-
-63. Very long names in (*MARK) or (*THEN) etc. items could provoke a buffer
-overflow.
-
-64. Improve error message for overly-complicated patterns.
-
-65. Implemented an optional replication feature for patterns in pcre2test, to
-make it easier to test long repetitive patterns. The tests for 63 above are
-converted to use the new feature.
-
-66. In the POSIX wrapper, if regerror() was given too small a buffer, it could
-misbehave.
-
-67. In pcre2_substitute() in UTF mode, the UTF validity check on the
-replacement string was happening before the length setting when the replacement
-string was zero-terminated.
-
-68. In pcre2_substitute() in UTF mode, PCRE2_NO_UTF_CHECK can be set for the
-second and subsequent calls to pcre2_match().
-
-69. There was no check for integer overflow for a replacement group number in
-pcre2_substitute(). An added check for a number greater than the largest group
-number in the pattern means this is not now needed.
-
-70. The PCRE2-specific VERSION condition didn't work correctly if only one
-digit was given after the decimal point, or if more than two digits were given.
-It now works with one or two digits, and gives a compile time error if more are
-given.
-
-71. In pcre2_substitute() there was the possibility of reading one code unit
-beyond the end of the replacement string.
-
-72. The code for checking a subject's UTF-32 validity for a pattern with a
-lookbehind involved an out-of-bounds pointer, which could potentially cause
-trouble in some environments.
-
-73. The maximum lookbehind length was incorrectly calculated for patterns such
-as /(?<=(a)(?-1))x/ which have a recursion within a backreference.
-
-74. Give an error if a lookbehind assertion is longer than 65535 code units.
-
-75. Give an error in pcre2_substitute() if a match ends before it starts (as a
-result of the use of \K).
-
-76. Check the length of subpattern names and the names in (*MARK:xx) etc.
-dynamically to avoid the possibility of integer overflow.
-
-77. Implement pcre2_set_max_pattern_length() so that programs can restrict the
-size of patterns that they are prepared to handle.
-
-78. (*NO_AUTO_POSSESS) was not working.
-
-79. Adding group information caching improves the speed of compiling when
-checking whether a group has a fixed length and/or could match an empty string,
-especially when recursion or subroutine calls are involved. However, this
-cannot be used when (?| is present in the pattern because the same number may
-be used for groups of different sizes. To catch runaway patterns in this
-situation, counts have been introduced to the functions that scan for empty
-branches or compute fixed lengths.
-
-80. Allow for the possibility of the size of the nest_save structure not being
-a factor of the size of the compiling workspace (it currently is).
-
-81. Check for integer overflow in minimum length calculation and cap it at
-65535.
-
-82. Small optimizations in code for finding the minimum matching length.
-
-83. Lock out configuring for EBCDIC with non-8-bit libraries.
-
-84. Test for error code <= 0 in regerror().
-
-85. Check for too many replacements (more than INT_MAX) in pcre2_substitute().
-
-86. Avoid the possibility of computing with an out-of-bounds pointer (though
-not dereferencing it) while handling lookbehind assertions.
-
-87. Failure to get memory for the match data in regcomp() is now given as a
-regcomp() error instead of waiting for regexec() to pick it up.
-
-88. In pcre2_substitute(), ensure that CRLF is not split when it is a valid
-newline sequence.
-
-89. Paranoid check in regcomp() for bad error code from pcre2_compile().
-
-90. Run test 8 (internal offsets and code sizes) for link sizes 3 and 4 as well
-as for link size 2.
-
-91. Document that JIT has a limit on pattern size, and give more information
-about JIT compile failures in pcre2test.
-
-92. Implement PCRE2_INFO_HASBACKSLASHC.
-
-93. Re-arrange valgrind support code in pcre2test to avoid spurious reports
-with JIT (possibly caused by SSE2?).
-
-94. Support offset_limit in JIT.
-
-95. A sequence such as [[:punct:]b] that is, a POSIX character class followed
-by a single ASCII character in a class item, was incorrectly compiled in UCP
-mode. The POSIX class got lost, but only if the single character followed it.
-
-96. [:punct:] in UCP mode was matching some characters in the range 128-255
-that should not have been matched.
-
-97. If [:^ascii:] or [:^xdigit:] are present in a non-negated class, all
-characters with code points greater than 255 are in the class. When a Unicode
-property was also in the class (if PCRE2_UCP is set, escapes such as \w are
-turned into Unicode properties), wide characters were not correctly handled,
-and could fail to match.
-
-98. In pcre2test, make the "startoffset" modifier a synonym of "offset",
-because it sets the "startoffset" parameter for pcre2_match().
-
-99. If PCRE2_AUTO_CALLOUT was set on a pattern that had a (?# comment between
-an item and its qualifier (for example, A(?#comment)?B) pcre2_compile()
-misbehaved. This bug was found by the LLVM fuzzer.
-
-100. The error for an invalid UTF pattern string always gave the code unit
-offset as zero instead of where the invalidity was found.
-
-101. Further to 97 above, negated classes such as [^[:^ascii:]\d] were also not
-working correctly in UCP mode.
-
-102. Similar to 99 above, if an isolated \E was present between an item and its
-qualifier when PCRE2_AUTO_CALLOUT was set, pcre2_compile() misbehaved. This bug
-was found by the LLVM fuzzer.
-
-103. The POSIX wrapper function regexec() crashed if the option REG_STARTEND
-was set when the pmatch argument was NULL. It now returns REG_INVARG.
-
-104. Allow for up to 32-bit numbers in the ordin() function in pcre2grep.
-
-105. An empty \Q\E sequence between an item and its qualifier caused
-pcre2_compile() to misbehave when auto callouts were enabled. This bug
-was found by the LLVM fuzzer.
-
-106. If both PCRE2_ALT_VERBNAMES and PCRE2_EXTENDED were set, and a (*MARK) or
-other verb "name" ended with whitespace immediately before the closing
-parenthesis, pcre2_compile() misbehaved. Example: /(*:abc )/, but only when
-both those options were set.
-
-107. In a number of places pcre2_compile() was not handling NULL characters
-correctly, and pcre2test with the "bincode" modifier was not always correctly
-displaying fields containing NULLS:
-
-   (a) Within /x extended #-comments
-   (b) Within the "name" part of (*MARK) and other *verbs
-   (c) Within the text argument of a callout
-
-108. If a pattern that was compiled with PCRE2_EXTENDED started with white
-space or a #-type comment that was followed by (?-x), which turns off
-PCRE2_EXTENDED, and there was no subsequent (?x) to turn it on again,
-pcre2_compile() assumed that (?-x) applied to the whole pattern and
-consequently mis-compiled it. This bug was found by the LLVM fuzzer. The fix
-for this bug means that a setting of any of the (?imsxJU) options at the start
-of a pattern is no longer transferred to the options that are returned by
-PCRE2_INFO_ALLOPTIONS. In fact, this was an anachronism that should have
-changed when the effects of those options were all moved to compile time.
-
-109. An escaped closing parenthesis in the "name" part of a (*verb) when
-PCRE2_ALT_VERBNAMES was set caused pcre2_compile() to malfunction. This bug
-was found by the LLVM fuzzer.
-
-110. Implemented PCRE2_SUBSTITUTE_UNSET_EMPTY, and updated pcre2test to make it
-possible to test it.
-
-111. "Harden" pcre2test against ridiculously large values in modifiers and
-command line arguments.
-
-112. Implemented PCRE2_SUBSTITUTE_UNKNOWN_UNSET and PCRE2_SUBSTITUTE_OVERFLOW_
-LENGTH.
-
-113. Fix printing of *MARK names that contain binary zeroes in pcre2test.
-
-
-Version 10.20 30-June-2015
---------------------------
-
-1. Callouts with string arguments have been added.
-
-2. Assertion code generator in JIT has been optimized.
-
-3. The invalid pattern (?(?C) has a missing assertion condition at the end. The
-pcre2_compile() function read past the end of the input before diagnosing an
-error. This bug was discovered by the LLVM fuzzer.
-
-4. Implemented pcre2_callout_enumerate().
-
-5. Fix JIT compilation of conditional blocks whose assertion is converted to
-(*FAIL). E.g: /(?(?!))/.
-
-6. The pattern /(?(?!)^)/ caused references to random memory. This bug was
-discovered by the LLVM fuzzer.
-
-7. The assertion (?!) is optimized to (*FAIL). This was not handled correctly
-when this assertion was used as a condition, for example (?(?!)a|b). In
-pcre2_match() it worked by luck; in pcre2_dfa_match() it gave an incorrect
-error about an unsupported item.
-
-8. For some types of pattern, for example /Z*(|d*){216}/, the auto-
-possessification code could take exponential time to complete. A recursion
-depth limit of 1000 has been imposed to limit the resources used by this
-optimization. This infelicity was discovered by the LLVM fuzzer.
-
-9. A pattern such as /(*UTF)[\S\V\H]/, which contains a negated special class
-such as \S in non-UCP mode, explicit wide characters (> 255) can be ignored
-because \S ensures they are all in the class. The code for doing this was
-interacting badly with the code for computing the amount of space needed to
-compile the pattern, leading to a buffer overflow. This bug was discovered by
-the LLVM fuzzer.
-
-10. A pattern such as /((?2)+)((?1))/ which has mutual recursion nested inside
-other kinds of group caused stack overflow at compile time. This bug was
-discovered by the LLVM fuzzer.
-
-11. A pattern such as /(?1)(?#?'){8}(a)/ which had a parenthesized comment
-between a subroutine call and its quantifier was incorrectly compiled, leading
-to buffer overflow or other errors. This bug was discovered by the LLVM fuzzer.
-
-12. The illegal pattern /(?(?<E>.*!.*)?)/ was not being diagnosed as missing an
-assertion after (?(. The code was failing to check the character after (?(?<
-for the ! or = that would indicate a lookbehind assertion. This bug was
-discovered by the LLVM fuzzer.
-
-13. A pattern such as /X((?2)()*+){2}+/ which has a possessive quantifier with
-a fixed maximum following a group that contains a subroutine reference was
-incorrectly compiled and could trigger buffer overflow. This bug was discovered
-by the LLVM fuzzer.
-
-14. Negative relative recursive references such as (?-7) to non-existent
-subpatterns were not being diagnosed and could lead to unpredictable behaviour.
-This bug was discovered by the LLVM fuzzer.
-
-15. The bug fixed in 14 was due to an integer variable that was unsigned when
-it should have been signed. Some other "int" variables, having been checked,
-have either been changed to uint32_t or commented as "must be signed".
-
-16. A mutual recursion within a lookbehind assertion such as (?<=((?2))((?1)))
-caused a stack overflow instead of the diagnosis of a non-fixed length
-lookbehind assertion. This bug was discovered by the LLVM fuzzer.
-
-17. The use of \K in a positive lookbehind assertion in a non-anchored pattern
-(e.g. /(?<=\Ka)/) could make pcre2grep loop.
-
-18. There was a similar problem to 17 in pcre2test for global matches, though
-the code there did catch the loop.
-
-19. If a greedy quantified \X was preceded by \C in UTF mode (e.g. \C\X*),
-and a subsequent item in the pattern caused a non-match, backtracking over the
-repeated \X did not stop, but carried on past the start of the subject, causing
-reference to random memory and/or a segfault. There were also some other cases
-where backtracking after \C could crash. This set of bugs was discovered by the
-LLVM fuzzer.
-
-20. The function for finding the minimum length of a matching string could take
-a very long time if mutual recursion was present many times in a pattern, for
-example, /((?2){73}(?2))((?1))/. A better mutual recursion detection method has
-been implemented. This infelicity was discovered by the LLVM fuzzer.
-
-21. Implemented PCRE2_NEVER_BACKSLASH_C.
-
-22. The feature for string replication in pcre2test could read from freed
-memory if the replication required a buffer to be extended, and it was not
-working properly in 16-bit and 32-bit modes. This issue was discovered by a
-fuzzer: see http://lcamtuf.coredump.cx/afl/.
-
-23. Added the PCRE2_ALT_CIRCUMFLEX option.
-
-24. Adjust the treatment of \8 and \9 to be the same as the current Perl
-behaviour.
-
-25. Static linking against the PCRE2 library using the pkg-config module was
-failing on missing pthread symbols.
-
-26. If a group that contained a recursive back reference also contained a
-forward reference subroutine call followed by a non-forward-reference
-subroutine call, for example /.((?2)(?R)\1)()/, pcre2_compile() failed to
-compile correct code, leading to undefined behaviour or an internally detected
-error. This bug was discovered by the LLVM fuzzer.
-
-27. Quantification of certain items (e.g. atomic back references) could cause
-incorrect code to be compiled when recursive forward references were involved.
-For example, in this pattern: /(?1)()((((((\1++))\x85)+)|))/. This bug was
-discovered by the LLVM fuzzer.
-
-28. A repeated conditional group whose condition was a reference by name caused
-a buffer overflow if there was more than one group with the given name. This
-bug was discovered by the LLVM fuzzer.
-
-29. A recursive back reference by name within a group that had the same name as
-another group caused a buffer overflow. For example: /(?J)(?'d'(?'d'\g{d}))/.
-This bug was discovered by the LLVM fuzzer.
-
-30. A forward reference by name to a group whose number is the same as the
-current group, for example in this pattern: /(?|(\k'Pm')|(?'Pm'))/, caused a
-buffer overflow at compile time. This bug was discovered by the LLVM fuzzer.
-
-31. Fix -fsanitize=undefined warnings for left shifts of 1 by 31 (it treats 1
-as an int; fixed by writing it as 1u).
-
-32. Fix pcre2grep compile when -std=c99 is used with gcc, though it still gives
-a warning for "fileno" unless -std=gnu99 us used.
-
-33. A lookbehind assertion within a set of mutually recursive subpatterns could
-provoke a buffer overflow. This bug was discovered by the LLVM fuzzer.
-
-34. Give an error for an empty subpattern name such as (?'').
-
-35. Make pcre2test give an error if a pattern that follows #forbud_utf contains
-\P, \p, or \X.
-
-36. The way named subpatterns are handled has been refactored. There is now a
-pre-pass over the regex which does nothing other than identify named
-subpatterns and count the total captures. This means that information about
-named patterns is known before the rest of the compile. In particular, it means
-that forward references can be checked as they are encountered. Previously, the
-code for handling forward references was contorted and led to several errors in
-computing the memory requirements for some patterns, leading to buffer
-overflows.
-
-37. There was no check for integer overflow in subroutine calls such as (?123).
-
-38. The table entry for \l in EBCDIC environments was incorrect, leading to its
-being treated as a literal 'l' instead of causing an error.
-
-39. If a non-capturing group containing a conditional group that could match
-an empty string was repeated, it was not identified as matching an empty string
-itself. For example: /^(?:(?(1)x|)+)+$()/.
-
-40. In an EBCDIC environment, pcretest was mishandling the escape sequences
-\a and \e in test subject lines.
-
-41. In an EBCDIC environment, \a in a pattern was converted to the ASCII
-instead of the EBCDIC value.
-
-42. The handling of \c in an EBCDIC environment has been revised so that it is
-now compatible with the specification in Perl's perlebcdic page.
-
-43. Single character repetition in JIT has been improved. 20-30% speedup
-was achieved on certain patterns.
-
-44. The EBCDIC character 0x41 is a non-breaking space, equivalent to 0xa0 in
-ASCII/Unicode. This has now been added to the list of characters that are
-recognized as white space in EBCDIC.
-
-45. When PCRE2 was compiled without Unicode support, the use of \p and \P gave
-an error (correctly) when used outside a class, but did not give an error
-within a class.
-
-46. \h within a class was incorrectly compiled in EBCDIC environments.
-
-47. JIT should return with error when the compiled pattern requires
-more stack space than the maximum.
-
-48. Fixed a memory leak in pcre2grep when a locale is set.
-
-
-Version 10.10 06-March-2015
----------------------------
-
-1. When a pattern is compiled, it remembers the highest back reference so that
-when matching, if the ovector is too small, extra memory can be obtained to
-use instead. A conditional subpattern whose condition is a check on a capture
-having happened, such as, for example in the pattern /^(?:(a)|b)(?(1)A|B)/, is
-another kind of back reference, but it was not setting the highest
-backreference number. This mattered only if pcre2_match() was called with an
-ovector that was too small to hold the capture, and there was no other kind of
-back reference (a situation which is probably quite rare). The effect of the
-bug was that the condition was always treated as FALSE when the capture could
-not be consulted, leading to a incorrect behaviour by pcre2_match(). This bug
-has been fixed.
-
-2. Functions for serialization and deserialization of sets of compiled patterns
-have been added.
-
-3. The value that is returned by PCRE2_INFO_SIZE has been corrected to remove
-excess code units at the end of the data block that may occasionally occur if
-the code for calculating the size over-estimates. This change stops the
-serialization code copying uninitialized data, to which valgrind objects. The
-documentation of PCRE2_INFO_SIZE was incorrect in stating that the size did not
-include the general overhead. This has been corrected.
-
-4. All code units in every slot in the table of group names are now set, again
-in order to avoid accessing uninitialized data when serializing.
-
-5. The (*NO_JIT) feature is implemented.
-
-6. If a bug that caused pcre2_compile() to use more memory than allocated was
-triggered when using valgrind, the code in (3) above passed a stupidly large
-value to valgrind. This caused a crash instead of an "internal error" return.
-
-7. A reference to a duplicated named group (either a back reference or a test
-for being set in a conditional) that occurred in a part of the pattern where
-PCRE2_DUPNAMES was not set caused the amount of memory needed for the pattern
-to be incorrectly calculated, leading to overwriting.
-
-8. A mutually recursive set of back references such as (\2)(\1) caused a
-segfault at compile time (while trying to find the minimum matching length).
-The infinite loop is now broken (with the minimum length unset, that is, zero).
-
-9. If an assertion that was used as a condition was quantified with a minimum
-of zero, matching went wrong. In particular, if the whole group had unlimited
-repetition and could match an empty string, a segfault was likely. The pattern
-(?(?=0)?)+ is an example that caused this. Perl allows assertions to be
-quantified, but not if they are being used as conditions, so the above pattern
-is faulted by Perl. PCRE2 has now been changed so that it also rejects such
-patterns.
-
-10. The error message for an invalid quantifier has been changed from "nothing
-to repeat" to "quantifier does not follow a repeatable item".
-
-11. If a bad UTF string is compiled with NO_UTF_CHECK, it may succeed, but
-scanning the compiled pattern in subsequent auto-possessification can get out
-of step and lead to an unknown opcode. Previously this could have caused an
-infinite loop. Now it generates an "internal error" error. This is a tidyup,
-not a bug fix; passing bad UTF with NO_UTF_CHECK is documented as having an
-undefined outcome.
-
-12. A UTF pattern containing a "not" match of a non-ASCII character and a
-subroutine reference could loop at compile time. Example: /[^\xff]((?1))/.
-
-13. The locale test (RunTest 3) has been upgraded. It now checks that a locale
-that is found in the output of "locale -a" can actually be set by pcre2test
-before it is accepted. Previously, in an environment where a locale was listed
-but would not set (an example does exist), the test would "pass" without
-actually doing anything. Also the fr_CA locale has been added to the list of
-locales that can be used.
-
-14. Fixed a bug in pcre2_substitute(). If a replacement string ended in a
-capturing group number without parentheses, the last character was incorrectly
-literally included at the end of the replacement string.
-
-15. A possessive capturing group such as (a)*+ with a minimum repeat of zero
-failed to allow the zero-repeat case if pcre2_match() was called with an
-ovector too small to capture the group.
-
-16. Improved error message in pcre2test when setting the stack size (-S) fails.
-
-17. Fixed two bugs in CMakeLists.txt: (1) Some lines had got lost in the
-transfer from PCRE1, meaning that CMake configuration failed if "build tests"
-was selected. (2) The file src/pcre2_serialize.c had not been added to the list
-of PCRE2 sources, which caused a failure to build pcre2test.
-
-18. Fixed typo in pcre2_serialize.c (DECL instead of DEFN) that causes problems
-only on Windows.
-
-19. Use binary input when reading back saved serialized patterns in pcre2test.
-
-20. Added RunTest.bat for running the tests under Windows.
-
-21. "make distclean" was not removing config.h, a file that may be created for
-use with CMake.
-
-22. A pattern such as "((?2){0,1999}())?", which has a group containing a
-forward reference repeated a large (but limited) number of times within a
-repeated outer group that has a zero minimum quantifier, caused incorrect code
-to be compiled, leading to the error "internal error: previously-checked
-referenced subpattern not found" when an incorrect memory address was read.
-This bug was reported as "heap overflow", discovered by Kai Lu of Fortinet's
-FortiGuard Labs. (Added 24-March-2015: CVE-2015-2325 was given to this.)
-
-23. A pattern such as "((?+1)(\1))/" containing a forward reference subroutine
-call within a group that also contained a recursive back reference caused
-incorrect code to be compiled. This bug was reported as "heap overflow",
-discovered by Kai Lu of Fortinet's FortiGuard Labs. (Added 24-March-2015:
-CVE-2015-2326 was given to this.)
-
-24. Computing the size of the JIT read-only data in advance has been a source
-of various issues, and new ones are still appear unfortunately. To fix
-existing and future issues, size computation is eliminated from the code,
-and replaced by on-demand memory allocation.
-
-25. A pattern such as /(?i)[A-`]/, where characters in the other case are
-adjacent to the end of the range, and the range contained characters with more
-than one other case, caused incorrect behaviour when compiled in UTF mode. In
-that example, the range a-j was left out of the class.
-
-
-Version 10.00 05-January-2015
------------------------------
-
-Version 10.00 is the first release of PCRE2, a revised API for the PCRE
-library. Changes prior to 10.00 are logged in the ChangeLog file for the old
-API, up to item 20 for release 8.36.
-
-The code of the library was heavily revised as part of the new API
-implementation. Details of each and every modification were not individually
-logged. In addition to the API changes, the following changes were made. They
-are either new functionality, or bug fixes and other noticeable changes of
-behaviour that were implemented after the code had been forked.
-
-1. Including Unicode support at build time is now enabled by default, but it
-can optionally be disabled. It is not enabled by default at run time (no
-change).
-
-2. The test program, now called pcre2test, was re-specified and almost
-completely re-written. Its input is not compatible with input for pcretest.
-
-3. Patterns may start with (*NOTEMPTY) or (*NOTEMPTY_ATSTART) to set the
-PCRE2_NOTEMPTY or PCRE2_NOTEMPTY_ATSTART options for every subject line that is
-matched by that pattern.
-
-4. For the benefit of those who use PCRE2 via some other application, that is,
-not writing the function calls themselves, it is possible to check the PCRE2
-version by matching a pattern such as /(?(VERSION>=10)yes|no)/ against a
-string such as "yesno".
-
-5. There are case-equivalent Unicode characters whose encodings use different
-numbers of code units in UTF-8. U+023A and U+2C65 are one example. (It is
-theoretically possible for this to happen in UTF-16 too.) If a backreference to
-a group containing one of these characters was greedily repeated, and during
-the match a backtrack occurred, the subject might be backtracked by the wrong
-number of code units. For example, if /^(\x{23a})\1*(.)/ is matched caselessly
-(and in UTF-8 mode) against "\x{23a}\x{2c65}\x{2c65}\x{2c65}", group 2 should
-capture the final character, which is the three bytes E2, B1, and A5 in UTF-8.
-Incorrect backtracking meant that group 2 captured only the last two bytes.
-This bug has been fixed; the new code is slower, but it is used only when the
-strings matched by the repetition are not all the same length.
-
-6. A pattern such as /()a/ was not setting the "first character must be 'a'"
-information. This applied to any pattern with a group that matched no
-characters, for example: /(?:(?=.)|(?<!x))a/.
-
-7. When an (*ACCEPT) is triggered inside capturing parentheses, it arranges for
-those parentheses to be closed with whatever has been captured so far. However,
-it was failing to mark any other groups between the highest capture so far and
-the currrent group as "unset". Thus, the ovector for those groups contained
-whatever was previously there. An example is the pattern /(x)|((*ACCEPT))/ when
-matched against "abcd".
-
-8. The pcre2_substitute() function has been implemented.
-
-9. If an assertion used as a condition was quantified with a minimum of zero
-(an odd thing to do, but it happened), SIGSEGV or other misbehaviour could
-occur.
-
-10. The PCRE2_NO_DOTSTAR_ANCHOR option has been implemented.
-
-****

+ 0 - 78
src/deps/regex/pcre2/CheckMan

@@ -1,78 +0,0 @@
-#! /usr/bin/perl
-
-# A script to scan PCRE2's man pages to check for typos in the control
-# sequences. I use only a small set of the available repertoire, so it is 
-# straightforward to check that nothing else has slipped in by mistake. This
-# script should be called in the doc directory.
-
-$yield = 0;
-
-while (scalar(@ARGV) > 0)
-  {
-  $line = 0; 
-  $file = shift @ARGV;
-    
-  open (IN, $file) || die "Failed to open $file\n";
-  
-  while (<IN>)
-    {  
-    $count = 0;
-    $line++; 
-    if (/^\s*$/)
-      {
-      printf "Empty line $line of $file\n";
-      $yield = 1;  
-      }   
-    elsif (/^\./)
-      {
-      if (!/^\.\s*$|
-            ^\.B\s+\S| 
-            ^\.TH\s\S|
-            ^\.SH\s\S|
-            ^\.SS\s\S|
-            ^\.TP(?:\s?\d+)?\s*$|
-            ^\.SM\s*$|
-            ^\.br\s*$| 
-            ^\.rs\s*$| 
-            ^\.sp\s*$| 
-            ^\.nf\s*$| 
-            ^\.fi\s*$| 
-            ^\.P\s*$| 
-            ^\.PP\s*$| 
-            ^\.\\"(?:\ HREF)?\s*$|
-            ^\.\\"\sHTML\s<a\shref="[^"]+?">\s*$|
-            ^\.\\"\sHTML\s<a\sname="[^"]+?"><\/a>\s*$|
-            ^\.\\"\s<\/a>\s*$|
-            ^\.\\"\sJOINSH\s*$|
-            ^\.\\"\sJOIN\s*$/x  
-         )
-        {
-        printf "Bad control line $line of $file\n";
-        $yield = 1;
-        }
-      }
-    elsif (/\\[^ef]|\\f[^IBP]/)
-      {
-      printf "Bad backslash in line $line of $file\n";
-      $yield = 1;
-      }
-    while (/\\f[BI]/g)
-      {
-      $count++;
-      }
-    while (/\\fP/g)
-      {
-      $count--;
-      }
-    if ($count != 0)
-      {
-      printf "Mismatching formatting in line $line of $file\n";
-      $yield = 1;
-      }
-    }
-     
-  close(IN);   
-  }
-  
-exit $yield;
-# End  

+ 0 - 113
src/deps/regex/pcre2/CleanTxt

@@ -1,113 +0,0 @@
-#! /usr/bin/perl -w
-
-# Script to take the output of nroff -man and remove all the backspacing and
-# the page footers and the screen commands etc so that it is more usefully
-# readable online. In fact, in the latest nroff, intermediate footers don't
-# seem to be generated any more.
-
-$blankcount = 0;
-$lastwascut = 0;
-$firstheader = 1;
-
-# Input on STDIN; output to STDOUT.
-
-while (<STDIN>)
-  {
-  s/\x1b\[\d+m//g;   # Remove screen controls "ESC [ number m"
-  s/.\x8//g;         # Remove "char, backspace"
-
-  # Handle header lines. Retain only the first one we encounter, but remove
-  # the blank line that follows. Any others (e.g. at end of document) and the
-  # following blank line are dropped.
-
-  if (/^PCRE(\w*)\(([13])\)\s+PCRE\1\(\2\)$/)
-    {
-    if ($firstheader)
-      {
-      $firstheader = 0;
-      print;
-      $lastprinted = $_;
-      $lastwascut = 0;
-      }
-    $_=<STDIN>;       # Remove a blank that follows
-    next;
-    }
-
-  # Count runs of empty lines
-
-  if (/^\s*$/)
-    {
-    $blankcount++;
-    $lastwascut = 0;
-    next;
-    }
-
-  # If a chunk of lines has been cut out (page footer) and the next line
-  # has a different indentation, put back one blank line.
-
-  if ($lastwascut && $blankcount < 1 && defined($lastprinted))
-    {
-    ($a) = $lastprinted =~ /^(\s*)/;
-    ($b) = $_ =~ /^(\s*)/;
-    $blankcount++ if ($a ne $b);
-    }
-
-  # We get here only when we have a non-blank line in hand. If it was preceded
-  # by 3 or more blank lines, read the next 3 lines and see if they are blank.
-  # If so, remove all 7 lines, and remember that we have just done a cut.
-
-  if ($blankcount >= 3)
-    {
-    for ($i = 0; $i < 3; $i++)
-      {
-      $next[$i] = <STDIN>;
-      $next[$i] = "" if !defined $next[$i];
-      $next[$i] =~ s/\x1b\[\d+m//g;   # Remove screen controls "ESC [ number m"
-      $next[$i] =~ s/.\x8//g;         # Remove "char, backspace"
-      }
-
-    # Cut out chunks of the form <3 blanks><non-blank><3 blanks>
-
-    if ($next[0] =~ /^\s*$/ &&
-        $next[1] =~ /^\s*$/ &&
-        $next[2] =~ /^\s*$/)
-      {
-      $blankcount -= 3;
-      $lastwascut = 1;
-      }
-
-    # Otherwise output the saved blanks, the current, and the next three
-    # lines. Remember the last printed line.
-
-    else
-      {
-      for ($i = 0; $i < $blankcount; $i++) { print "\n"; }
-      print;
-      for ($i = 0; $i < 3; $i++)
-        {
-        $next[$i] =~ s/.\x8//g;
-        print $next[$i];
-        $lastprinted = $_;
-        }
-      $lastwascut = 0;
-      $blankcount = 0;
-      }
-    }
-
-  # This non-blank line is not preceded by 3 or more blank lines. Output
-  # any blanks there are, and the line. Remember it. Force two blank lines
-  # before headings.
-
-  else
-    {
-    $blankcount = 2 if /^\S/ && !/^Last updated/ && !/^Copyright/ &&
-      defined($lastprinted);
-    for ($i = 0; $i < $blankcount; $i++) { print "\n"; }
-    print;
-    $lastprinted = $_;
-    $lastwascut = 0;
-    $blankcount = 0;
-    }
-  }
-
-# End

+ 0 - 35
src/deps/regex/pcre2/Detrail

@@ -1,35 +0,0 @@
-#!/usr/bin/perl
-
-# This is a script for removing trailing whitespace from lines in files that
-# are listed on the command line.
-
-# This subroutine does the work for one file.
-
-sub detrail {
-my($file) = $_[0];
-my($changed) = 0;
-open(IN, "$file") || die "Can't open $file for input";
-@lines = <IN>;
-close(IN);
-foreach (@lines)
-  {
-  if (/\s+\n$/)
-    {
-    s/\s+\n$/\n/;
-    $changed = 1;
-    }
-  }
-if ($changed)
-  {
-  open(OUT, ">$file") || die "Can't open $file for output";
-  print OUT @lines;
-  close(OUT);
-  }
-}
-
-# This is the main program
-
-$, = "";   # Output field separator
-for ($i = 0; $i < @ARGV; $i++) { &detrail($ARGV[$i]); }
-
-# End

+ 0 - 830
src/deps/regex/pcre2/HACKING

@@ -1,830 +0,0 @@
-Technical Notes about PCRE2
----------------------------
-
-These are very rough technical notes that record potentially useful information
-about PCRE2 internals. PCRE2 is a library based on the original PCRE library,
-but with a revised (and incompatible) API. To avoid confusion, the original
-library is referred to as PCRE1 below. For information about testing PCRE2, see
-the pcre2test documentation and the comment at the head of the RunTest file.
-
-PCRE1 releases were up to 8.3x when PCRE2 was developed, and later bug fix
-releases remain in the 8.xx series. PCRE2 releases started at 10.00 to avoid
-confusion with PCRE1.
-
-
-Historical note 1
------------------
-
-Many years ago I implemented some regular expression functions to an algorithm
-suggested by Martin Richards. The rather simple patterns were not Unix-like in
-form, and were quite restricted in what they could do by comparison with Perl.
-The interesting part about the algorithm was that the amount of space required
-to hold the compiled form of an expression was known in advance. The code to
-apply an expression did not operate by backtracking, as the original Henry
-Spencer code and current PCRE2 and Perl code does, but instead checked all
-possibilities simultaneously by keeping a list of current states and checking
-all of them as it advanced through the subject string. In the terminology of
-Jeffrey Friedl's book, it was a "DFA algorithm", though it was not a
-traditional Finite State Machine (FSM). When the pattern was all used up, all
-remaining states were possible matches, and the one matching the longest subset
-of the subject string was chosen. This did not necessarily maximize the
-individual wild portions of the pattern, as is expected in Unix and Perl-style
-regular expressions.
-
-
-Historical note 2
------------------
-
-By contrast, the code originally written by Henry Spencer (which was
-subsequently heavily modified for Perl) compiles the expression twice: once in
-a dummy mode in order to find out how much store will be needed, and then for
-real. (The Perl version probably doesn't do this any more; I'm talking about
-the original library.) The execution function operates by backtracking and
-maximizing (or, optionally, minimizing, in Perl) the amount of the subject that
-matches individual wild portions of the pattern. This is an "NFA algorithm" in
-Friedl's terminology.
-
-
-OK, here's the real stuff
--------------------------
-
-For the set of functions that formed the original PCRE1 library in 1997 (which
-are unrelated to those mentioned above), I tried at first to invent an
-algorithm that used an amount of store bounded by a multiple of the number of
-characters in the pattern, to save on compiling time. However, because of the
-greater complexity in Perl regular expressions, I couldn't do this, even though
-the then current Perl 5.004 patterns were much simpler than those supported
-nowadays. In any case, a first pass through the pattern is helpful for other
-reasons.
-
-
-Support for 16-bit and 32-bit data strings
--------------------------------------------
-
-The PCRE2 library can be compiled in any combination of 8-bit, 16-bit or 32-bit
-modes, creating up to three different libraries. In the description that
-follows, the word "short" is used for a 16-bit data quantity, and the phrase
-"code unit" is used for a quantity that is a byte in 8-bit mode, a short in
-16-bit mode and a 32-bit word in 32-bit mode. The names of PCRE2 functions are
-given in generic form, without the _8, _16, or _32 suffix.
-
-
-Computing the memory requirement: how it was
---------------------------------------------
-
-Up to and including release 6.7, PCRE1 worked by running a very degenerate
-first pass to calculate a maximum memory requirement, and then a second pass to
-do the real compile - which might use a bit less than the predicted amount of
-memory. The idea was that this would turn out faster than the Henry Spencer
-code because the first pass is degenerate and the second pass can just store
-stuff straight into memory, which it knows is big enough.
-
-
-Computing the memory requirement: how it is
--------------------------------------------
-
-By the time I was working on a potential 6.8 release, the degenerate first pass
-had become very complicated and hard to maintain. Indeed one of the early
-things I did for 6.8 was to fix Yet Another Bug in the memory computation. Then
-I had a flash of inspiration as to how I could run the real compile function in
-a "fake" mode that enables it to compute how much memory it would need, while
-in most cases only ever using a small amount of working memory, and without too
-many tests of the mode that might slow it down. So I refactored the compiling
-functions to work this way. This got rid of about 600 lines of source and made
-further maintenance and development easier. As this was such a major change, I
-never released 6.8, instead upping the number to 7.0 (other quite major changes
-were also present in the 7.0 release).
-
-A side effect of this work was that the previous limit of 200 on the nesting
-depth of parentheses was removed. However, there was a downside: compiling ran
-more slowly than before (30% or more, depending on the pattern) because it now
-did a full analysis of the pattern. My hope was that this would not be a big
-issue, and in the event, nobody has commented on it.
-
-At release 8.34, a limit on the nesting depth of parentheses was re-introduced
-(default 250, settable at build time) so as to put a limit on the amount of
-system stack used by the compile function, which uses recursive function calls
-for nested parenthesized groups. This is a safety feature for environments with
-small stacks where the patterns are provided by users.
-
-
-Yet another pattern scan
-------------------------
-
-History repeated itself for PCRE2 release 10.20. A number of bugs relating to
-named subpatterns had been discovered by fuzzers. Most of these were related to
-the handling of forward references when it was not known if the named group was
-unique. (References to non-unique names use a different opcode and more
-memory.) The use of duplicate group numbers (the (?| facility) also caused
-issues.
-
-To get around these problems I adopted a new approach by adding a third pass
-over the pattern (really a "pre-pass"), which did nothing other than identify
-all the named subpatterns and their corresponding group numbers. This means
-that the actual compile (both the memory-computing dummy run and the real
-compile) has full knowledge of group names and numbers throughout. Several
-dozen lines of messy code were eliminated, though the new pre-pass was not
-short. In particular, parsing and skipping over [] classes is complicated.
-
-While working on 10.22 I realized that I could simplify yet again by moving
-more of the parsing into the pre-pass, thus avoiding doing it in two places, so
-after 10.22 was released, the code underwent yet another big refactoring. This
-is how it is from 10.23 onwards:
-
-The function called parse_regex() scans the pattern characters, parsing them
-into literal data and meta characters. It converts escapes such as \x{123}
-into literals, handles \Q...\E, and skips over comments and non-significant
-white space. The result of the scanning is put into a vector of 32-bit unsigned
-integers. Values less than 0x80000000 are literal data. Higher values represent
-meta-characters. The top 16-bits of such values identify the meta-character,
-and these are given names such as META_CAPTURE. The lower 16-bits are available
-for data, for example, the capturing group number. The only situation in which
-literal data values greater than 0x7fffffff can appear is when the 32-bit
-library is running in non-UTF mode. This is handled by having a special
-meta-character that is followed by the 32-bit data value.
-
-The size of the parsed pattern vector, when auto-callouts are not enabled, is
-bounded by the length of the pattern (with one exception). The code is written
-so that each item in the pattern uses no more vector elements than the number
-of code units in the item itself. The exception is the aforementioned large
-32-bit number handling. For this reason, 32-bit non-UTF patterns are scanned in
-advance to check for such values. When auto-callouts are enabled, the generous
-assumption is made that there will be a callout for each pattern code unit
-(which of course is only actually true if all code units are literals) plus one
-at the end. There is a default parsed pattern vector on the system stack, but
-if this is not big enough, heap memory is used.
-
-As before, the actual compiling function is run twice, the first time to
-determine the amount of memory needed for the final compiled pattern. It
-now processes the parsed pattern vector, not the pattern itself, although some
-of the parsed items refer to strings in the pattern - for example, group
-names. As escapes and comments have already been processed, the code is a bit
-simpler than before.
-
-Most errors can be diagnosed during the parsing scan. For those that cannot
-(for example, "lookbehind assertion is not fixed length"), the parsed code
-contains offsets into the pattern so that the actual compiling code can
-report where errors are.
-
-
-The elements of the parsed pattern vector
------------------------------------------
-
-The word "offset" below means a code unit offset into the pattern. When
-PCRE2_SIZE (which is usually size_t) is no bigger than uint32_t, an offset is
-stored in a single parsed pattern element. Otherwise (typically on 64-bit
-systems) it occupies two elements. The following meta items occupy just one
-element, with no data:
-
-META_ACCEPT           (*ACCEPT)
-META_ASTERISK         *
-META_ASTERISK_PLUS    *+
-META_ASTERISK_QUERY   *?
-META_ATOMIC           (?> start of atomic group
-META_CIRCUMFLEX       ^ metacharacter
-META_CLASS            [ start of non-empty class
-META_CLASS_EMPTY      [] empty class - only with PCRE2_ALLOW_EMPTY_CLASS
-META_CLASS_EMPTY_NOT  [^] negative empty class - ditto
-META_CLASS_END        ] end of non-empty class
-META_CLASS_NOT        [^ start non-empty negative class
-META_COMMIT           (*COMMIT)
-META_COND_ASSERT      (?(?assertion)
-META_DOLLAR           $ metacharacter
-META_DOT              . metacharacter
-META_END              End of pattern (this value is 0x80000000)
-META_FAIL             (*FAIL)
-META_KET              ) closing parenthesis
-META_LOOKAHEAD        (?= start of lookahead
-META_LOOKAHEAD_NA     (*napla: start of non-atomic lookahead
-META_LOOKAHEADNOT     (?! start of negative lookahead
-META_NOCAPTURE        (?: no capture parens
-META_PLUS             +
-META_PLUS_PLUS        ++
-META_PLUS_QUERY       +?
-META_PRUNE            (*PRUNE) - no argument
-META_QUERY            ?
-META_QUERY_PLUS       ?+
-META_QUERY_QUERY      ??
-META_RANGE_ESCAPED    hyphen in class range with at least one escape
-META_RANGE_LITERAL    hyphen in class range defined literally
-META_SKIP             (*SKIP) - no argument
-META_THEN             (*THEN) - no argument
-
-The two RANGE values occur only in character classes. They are positioned
-between two literals that define the start and end of the range. In an EBCDIC
-evironment it is necessary to know whether either of the range values was
-specified as an escape. In an ASCII/Unicode environment the distinction is not
-relevant.
-
-The following have data in the lower 16 bits, and may be followed by other data
-elements:
-
-META_ALT              | alternation
-META_BACKREF          back reference
-META_CAPTURE          start of capturing group
-META_ESCAPE           non-literal escape sequence
-META_RECURSE          recursion call
-
-If the data for META_ALT is non-zero, it is inside a lookbehind, and the data
-is the length of its branch, for which OP_REVERSE must be generated.
-
-META_BACKREF, META_CAPTURE, and META_RECURSE have the capture group number as
-their data in the lower 16 bits of the element.
-
-META_BACKREF is followed by an offset if the back reference group number is 10
-or more. The offsets of the first ocurrences of references to groups whose
-numbers are less than 10 are put in cb->small_ref_offset[] (only the first
-occurrence is useful). On 64-bit systems this avoids using more than two parsed
-pattern elements for items such as \3. The offset is used when an error occurs
-because the reference is to a non-existent group.
-
-META_RECURSE is always followed by an offset, for use in error messages.
-
-META_ESCAPE has an ESC_xxx value as its data. For ESC_P and ESC_p, the next
-element contains the 16-bit type and data property values, packed together.
-ESC_g and ESC_k are used only for named references - numerical ones are turned
-into META_RECURSE or META_BACKREF as appropriate. ESC_g and ESC_k are followed
-by a length and an offset into the pattern to specify the name.
-
-The following have one data item that follows in the next vector element:
-
-META_BIGVALUE         Next is a literal >= META_END
-META_OPTIONS          (?i) and friends (data is new option bits)
-META_POSIX            POSIX class item (data identifies the class)
-META_POSIX_NEG        negative POSIX class item (ditto)
-
-The following are followed by a length element, then a number of character code
-values (which should match with the length):
-
-META_MARK             (*MARK:xxxx)
-META_COMMIT_ARG       )*COMMIT:xxxx)
-META_PRUNE_ARG        (*PRUNE:xxx)
-META_SKIP_ARG         (*SKIP:xxxx)
-META_THEN_ARG         (*THEN:xxxx)
-
-The following are followed by a length element, then an offset in the pattern
-that identifies the name:
-
-META_COND_NAME        (?(<name>) or (?('name') or (?(name)
-META_COND_RNAME       (?(R&name)
-META_COND_RNUMBER     (?(Rdigits)
-META_RECURSE_BYNAME   (?&name)
-META_BACKREF_BYNAME   \k'name'
-
-META_COND_RNUMBER is used for names that start with R and continue with digits,
-because this is an ambiguous case. It could be a back reference to a group with
-that name, or it could be a recursion test on a numbered group.
-
-This one is followed by an offset, for use in error messages, then a number:
-
-META_COND_NUMBER       (?([+-]digits)
-
-The following is followed just by an offset, for use in error messages:
-
-META_COND_DEFINE      (?(DEFINE)
-
-The following are also followed just by an offset, but also the lower 16 bits
-of the main word contain the length of the first branch of the lookbehind
-group; this is used when generating OP_REVERSE for that branch.
-
-META_LOOKBEHIND       (?<=      start of lookbehind
-META_LOOKBEHIND_NA    (*naplb:  start of non-atomic lookbehind
-META_LOOKBEHINDNOT    (?<!      start of negative lookbehind
-
-The following are followed by two elements, the minimum and maximum. Repeat
-values are limited to 65535 (MAX_REPEAT). A maximum value of "unlimited" is
-represented by UNLIMITED_REPEAT, which is bigger than MAX_REPEAT:
-
-META_MINMAX           {n,m}  repeat
-META_MINMAX_PLUS      {n,m}+ repeat
-META_MINMAX_QUERY     {n,m}? repeat
-
-This one is followed by three elements. The first is 0 for '>' and 1 for '>=';
-the next two are the major and minor numbers:
-
-META_COND_VERSION     (?(VERSION<op>x.y)
-
-Callouts are converted into one of two items:
-
-META_CALLOUT_NUMBER   (?C with numerical argument
-META_CALLOUT_STRING   (?C with string argument
-
-In both cases, the next two elements contain the offset and length of the next
-item in the pattern. Then there is either one callout number, or a length and
-an offset for the string argument. The length includes both delimiters.
-
-
-Traditional matching function
------------------------------
-
-The "traditional", and original, matching function is called pcre2_match(), and
-it implements an NFA algorithm, similar to the original Henry Spencer algorithm
-and the way that Perl works. This is not surprising, since it is intended to be
-as compatible with Perl as possible. This is the function most users of PCRE2
-will use most of the time. If PCRE2 is compiled with just-in-time (JIT)
-support, and studying a compiled pattern with JIT is successful, the JIT code
-is run instead of the normal pcre2_match() code, but the result is the same.
-
-
-Supplementary matching function
--------------------------------
-
-There is also a supplementary matching function called pcre2_dfa_match(). This
-implements a DFA matching algorithm that searches simultaneously for all
-possible matches that start at one point in the subject string. (Going back to
-my roots: see Historical Note 1 above.) This function intreprets the same
-compiled pattern data as pcre2_match(); however, not all the facilities are
-available, and those that are do not always work in quite the same way. See the
-user documentation for details.
-
-The algorithm that is used for pcre2_dfa_match() is not a traditional FSM,
-because it may have a number of states active at one time. More work would be
-needed at compile time to produce a traditional FSM where only one state is
-ever active at once. I believe some other regex matchers work this way. JIT
-support is not available for this kind of matching.
-
-
-Changeable options
-------------------
-
-The /i, /m, or /s options (PCRE2_CASELESS, PCRE2_MULTILINE, PCRE2_DOTALL, and
-others) may be changed in the middle of patterns by items such as (?i). Their
-processing is handled entirely at compile time by generating different opcodes
-for the different settings. The runtime functions do not need to keep track of
-an option's state.
-
-PCRE2_DUPNAMES, PCRE2_EXTENDED, PCRE2_EXTENDED_MORE, and PCRE2_NO_AUTO_CAPTURE
-are tracked and processed during the parsing pre-pass. The others are handled
-from META_OPTIONS items during the main compile phase.
-
-
-Format of compiled patterns
----------------------------
-
-The compiled form of a pattern is a vector of unsigned code units (bytes in
-8-bit mode, shorts in 16-bit mode, 32-bit words in 32-bit mode), containing
-items of variable length. The first code unit in an item contains an opcode,
-and the length of the item is either implicit in the opcode or contained in the
-data that follows it.
-
-In many cases listed below, LINK_SIZE data values are specified for offsets
-within the compiled pattern. LINK_SIZE always specifies a number of bytes. The
-default value for LINK_SIZE is 2, except for the 32-bit library, where it can
-only be 4. The 8-bit library can be compiled to used 3-byte or 4-byte values,
-and the 16-bit library can be compiled to use 4-byte values, though this
-impairs performance. Specifing a LINK_SIZE larger than 2 for these libraries is
-necessary only when patterns whose compiled length is greater than 65535 code
-units are going to be processed. When a LINK_SIZE value uses more than one code
-unit, the most significant unit is first.
-
-In this description, we assume the "normal" compilation options. Data values
-that are counts (e.g. quantifiers) are always two bytes long in 8-bit mode
-(most significant byte first), and one code unit in 16-bit and 32-bit modes.
-
-
-Opcodes with no following data
-------------------------------
-
-These items are all just one unit long:
-
-  OP_END                 end of pattern
-  OP_ANY                 match any one character other than newline
-  OP_ALLANY              match any one character, including newline
-  OP_ANYBYTE             match any single code unit, even in UTF-8/16 mode
-  OP_SOD                 match start of data: \A
-  OP_SOM,                start of match (subject + offset): \G
-  OP_SET_SOM,            set start of match (\K)
-  OP_CIRC                ^ (start of data)
-  OP_CIRCM               ^ multiline mode (start of data or after newline)
-  OP_NOT_WORD_BOUNDARY   \W
-  OP_WORD_BOUNDARY       \w
-  OP_NOT_DIGIT           \D
-  OP_DIGIT               \d
-  OP_NOT_HSPACE          \H
-  OP_HSPACE              \h
-  OP_NOT_WHITESPACE      \S
-  OP_WHITESPACE          \s
-  OP_NOT_VSPACE          \V
-  OP_VSPACE              \v
-  OP_NOT_WORDCHAR        \W
-  OP_WORDCHAR            \w
-  OP_EODN                match end of data or newline at end: \Z
-  OP_EOD                 match end of data: \z
-  OP_DOLL                $ (end of data, or before final newline)
-  OP_DOLLM               $ multiline mode (end of data or before newline)
-  OP_EXTUNI              match an extended Unicode grapheme cluster
-  OP_ANYNL               match any Unicode newline sequence
-
-  OP_ASSERT_ACCEPT       )
-  OP_ACCEPT              ) These are Perl 5.10's "backtracking control
-  OP_COMMIT              ) verbs". If OP_ACCEPT is inside capturing
-  OP_FAIL                ) parentheses, it may be preceded by one or more
-  OP_PRUNE               ) OP_CLOSE, each followed by a number that
-  OP_SKIP                ) indicates which parentheses must be closed.
-  OP_THEN                )
-
-OP_ASSERT_ACCEPT is used when (*ACCEPT) is encountered within an assertion.
-This ends the assertion, not the entire pattern match. The assertion (?!) is
-always optimized to OP_FAIL.
-
-OP_ALLANY is used for '.' when PCRE2_DOTALL is set. It is also used for \C in
-non-UTF modes and in UTF-32 mode (since one code unit still equals one
-character). Another use is for [^] when empty classes are permitted
-(PCRE2_ALLOW_EMPTY_CLASS is set).
-
-
-Backtracking control verbs
---------------------------
-
-Verbs with no arguments generate opcodes with no following data (as listed
-in the section above). 
-
-(*MARK:NAME) generates OP_MARK followed by the mark name, preceded by a
-length in one code unit, and followed by a binary zero. The name length is
-limited by the size of the code unit.
-
-(*ACCEPT:NAME) and (*FAIL:NAME) are compiled as (*MARK:NAME)(*ACCEPT) and
-(*MARK:NAME)(*FAIL) respectively.
-
-For (*COMMIT:NAME), (*PRUNE:NAME), (*SKIP:NAME), and (*THEN:NAME), the opcodes
-OP_COMMIT_ARG, OP_PRUNE_ARG, OP_SKIP_ARG, and OP_THEN_ARG are used, with the
-name following in the same format as for OP_MARK.
-
-
-Matching literal characters
----------------------------
-
-The OP_CHAR opcode is followed by a single character that is to be matched
-casefully. For caseless matching of characters that have at most two
-case-equivalent code points, OP_CHARI is used. In UTF-8 or UTF-16 modes, the
-character may be more than one code unit long. In UTF-32 mode, characters are
-always exactly one code unit long.
-
-If there is only one character in a character class, OP_CHAR or OP_CHARI is
-used for a positive class, and OP_NOT or OP_NOTI for a negative one (that is,
-for something like [^a]).
-
-Caseless matching (positive or negative) of characters that have more than two
-case-equivalent code points (which is possible only in UTF mode) is handled by
-compiling a Unicode property item (see below), with the pseudo-property
-PT_CLIST. The value of this property is an offset in a vector called
-"ucd_caseless_sets" which identifies the start of a short list of equivalent
-characters, terminated by the value NOTACHAR (0xffffffff).
-
-
-Repeating single characters
----------------------------
-
-The common repeats (*, +, ?), when applied to a single character, use the
-following opcodes, which come in caseful and caseless versions:
-
-  Caseful         Caseless
-  OP_STAR         OP_STARI
-  OP_MINSTAR      OP_MINSTARI
-  OP_POSSTAR      OP_POSSTARI
-  OP_PLUS         OP_PLUSI
-  OP_MINPLUS      OP_MINPLUSI
-  OP_POSPLUS      OP_POSPLUSI
-  OP_QUERY        OP_QUERYI
-  OP_MINQUERY     OP_MINQUERYI
-  OP_POSQUERY     OP_POSQUERYI
-
-Each opcode is followed by the character that is to be repeated. In ASCII or
-UTF-32 modes, these are two-code-unit items; in UTF-8 or UTF-16 modes, the
-length is variable. Those with "MIN" in their names are the minimizing
-versions. Those with "POS" in their names are possessive versions. Other kinds
-of repeat make use of these opcodes:
-
-  Caseful         Caseless
-  OP_UPTO         OP_UPTOI
-  OP_MINUPTO      OP_MINUPTOI
-  OP_POSUPTO      OP_POSUPTOI
-  OP_EXACT        OP_EXACTI
-
-Each of these is followed by a count and then the repeated character. The count
-is two bytes long in 8-bit mode (most significant byte first), or one code unit
-in 16-bit and 32-bit modes.
-
-OP_UPTO matches from 0 to the given number. A repeat with a non-zero minimum
-and a fixed maximum is coded as an OP_EXACT followed by an OP_UPTO (or
-OP_MINUPTO or OPT_POSUPTO).
-
-Another set of matching repeating opcodes (called OP_NOTSTAR, OP_NOTSTARI,
-etc.) are used for repeated, negated, single-character classes such as [^a]*.
-The normal single-character opcodes (OP_STAR, etc.) are used for repeated
-positive single-character classes.
-
-
-Repeating character types
--------------------------
-
-Repeats of things like \d are done exactly as for single characters, except
-that instead of a character, the opcode for the type (e.g. OP_DIGIT) is stored
-in the next code unit. The opcodes are:
-
-  OP_TYPESTAR
-  OP_TYPEMINSTAR
-  OP_TYPEPOSSTAR
-  OP_TYPEPLUS
-  OP_TYPEMINPLUS
-  OP_TYPEPOSPLUS
-  OP_TYPEQUERY
-  OP_TYPEMINQUERY
-  OP_TYPEPOSQUERY
-  OP_TYPEUPTO
-  OP_TYPEMINUPTO
-  OP_TYPEPOSUPTO
-  OP_TYPEEXACT
-
-
-Match by Unicode property
--------------------------
-
-OP_PROP and OP_NOTPROP are used for positive and negative matches of a
-character by testing its Unicode property (the \p and \P escape sequences).
-Each is followed by two code units that encode the desired property as a type
-and a value. The types are a set of #defines of the form PT_xxx, and the values
-are enumerations of the form ucp_xx, defined in the pcre2_ucp.h source file.
-The value is relevant only for PT_GC (General Category), PT_PC (Particular
-Category), PT_SC (Script), and the pseudo-property PT_CLIST, which is used to
-identify a list of case-equivalent characters when there are three or more.
-
-Repeats of these items use the OP_TYPESTAR etc. set of opcodes, followed by
-three code units: OP_PROP or OP_NOTPROP, and then the desired property type and
-value.
-
-
-Character classes
------------------
-
-If there is only one character in a class, OP_CHAR or OP_CHARI is used for a
-positive class, and OP_NOT or OP_NOTI for a negative one (that is, for
-something like [^a]), except when caselessly matching a character that has more
-than two case-equivalent code points (which can happen only in UTF mode). In
-this case a Unicode property item is used, as described above in "Matching
-literal characters".
-
-A set of repeating opcodes (called OP_NOTSTAR etc.) are used for repeated,
-negated, single-character classes. The normal single-character opcodes
-(OP_STAR, etc.) are used for repeated positive single-character classes.
-
-When there is more than one character in a class, and all the code points are
-less than 256, OP_CLASS is used for a positive class, and OP_NCLASS for a
-negative one. In either case, the opcode is followed by a 32-byte (16-short,
-8-word) bit map containing a 1 bit for every character that is acceptable. The
-bits are counted from the least significant end of each unit. In caseless mode,
-bits for both cases are set.
-
-The reason for having both OP_CLASS and OP_NCLASS is so that, in UTF-8 and
-16-bit and 32-bit modes, subject characters with values greater than 255 can be
-handled correctly. For OP_CLASS they do not match, whereas for OP_NCLASS they
-do.
-
-For classes containing characters with values greater than 255 or that contain
-\p or \P, OP_XCLASS is used. It optionally uses a bit map if any acceptable
-code points are less than 256, followed by a list of pairs (for a range) and/or
-single characters and/or properties. In caseless mode, all equivalent
-characters are explicitly listed.
-
-OP_XCLASS is followed by a LINK_SIZE value containing the total length of the
-opcode and its data. This is followed by a code unit containing flag bits:
-XCL_NOT indicates that this is a negative class, and XCL_MAP indicates that a
-bit map is present. There follows the bit map, if XCL_MAP is set, and then a
-sequence of items coded as follows:
-
-  XCL_END      marks the end of the list
-  XCL_SINGLE   one character follows
-  XCL_RANGE    two characters follow
-  XCL_PROP     a Unicode property (type, value) follows
-  XCL_NOTPROP  a Unicode property (type, value) follows
-
-If a range starts with a code point less than 256 and ends with one greater
-than 255, it is split into two ranges, with characters less than 256 being
-indicated in the bit map, and the rest with XCL_RANGE.
-
-When XCL_NOT is set, the bit map, if present, contains bits for characters that
-are allowed (exactly as for OP_NCLASS), but the list of items that follow it
-specifies characters and properties that are not allowed.
-
-
-Back references
----------------
-
-OP_REF (caseful) or OP_REFI (caseless) is followed by a count containing the
-reference number when the reference is to a unique capturing group (either by
-number or by name). When named groups are used, there may be more than one
-group with the same name. In this case, a reference to such a group by name
-generates OP_DNREF or OP_DNREFI. These are followed by two counts: the index
-(not the byte offset) in the group name table of the first entry for the
-required name, followed by the number of groups with the same name. The
-matching code can then search for the first one that is set.
-
-
-Repeating character classes and back references
------------------------------------------------
-
-Single-character classes are handled specially (see above). This section
-applies to other classes and also to back references. In both cases, the repeat
-information follows the base item. The matching code looks at the following
-opcode to see if it is one of these:
-
-  OP_CRSTAR
-  OP_CRMINSTAR
-  OP_CRPOSSTAR
-  OP_CRPLUS
-  OP_CRMINPLUS
-  OP_CRPOSPLUS
-  OP_CRQUERY
-  OP_CRMINQUERY
-  OP_CRPOSQUERY
-  OP_CRRANGE
-  OP_CRMINRANGE
-  OP_CRPOSRANGE
-
-All but the last three are single-code-unit items, with no data. The range
-opcodes are followed by the minimum and maximum repeat counts.
-
-
-Brackets and alternation
-------------------------
-
-A pair of non-capturing round brackets is wrapped round each expression at
-compile time, so alternation always happens in the context of brackets.
-
-[Note for North Americans: "bracket" to some English speakers, including
-myself, can be round, square, curly, or pointy. Hence this usage rather than
-"parentheses".]
-
-Non-capturing brackets use the opcode OP_BRA, capturing brackets use OP_CBRA. A
-bracket opcode is followed by a LINK_SIZE value which gives the offset to the
-next alternative OP_ALT or, if there aren't any branches, to the terminating
-opcode. Each OP_ALT is followed by a LINK_SIZE value giving the offset to the
-next one, or to the final opcode. For capturing brackets, the bracket number is
-a count that immediately follows the offset.
-
-There are several opcodes that mark the end of a subpattern group. OP_KET is
-used for subpatterns that do not repeat indefinitely, OP_KETRMIN and
-OP_KETRMAX are used for indefinite repetitions, minimally or maximally
-respectively, and OP_KETRPOS for possessive repetitions (see below for more 
-details). All four are followed by a LINK_SIZE value giving (as a positive
-number) the offset back to the matching bracket opcode.
-
-If a subpattern is quantified such that it is permitted to match zero times, it
-is preceded by one of OP_BRAZERO, OP_BRAMINZERO, or OP_SKIPZERO. These are
-single-unit opcodes that tell the matcher that skipping the following
-subpattern entirely is a valid match. In the case of the first two, not
-skipping the pattern is also valid (greedy and non-greedy). The third is used
-when a pattern has the quantifier {0,0}. It cannot be entirely discarded,
-because it may be called as a subroutine from elsewhere in the pattern.
-
-A subpattern with an indefinite maximum repetition is replicated in the
-compiled data its minimum number of times (or once with OP_BRAZERO if the
-minimum is zero), with the final copy terminating with OP_KETRMIN or OP_KETRMAX
-as appropriate.
-
-A subpattern with a bounded maximum repetition is replicated in a nested
-fashion up to the maximum number of times, with OP_BRAZERO or OP_BRAMINZERO
-before each replication after the minimum, so that, for example, (abc){2,5} is
-compiled as (abc)(abc)((abc)((abc)(abc)?)?)?, except that each bracketed group
-has the same number.
-
-When a repeated subpattern has an unbounded upper limit, it is checked to see
-whether it could match an empty string. If this is the case, the opcode in the
-final replication is changed to OP_SBRA or OP_SCBRA. This tells the matcher
-that it needs to check for matching an empty string when it hits OP_KETRMIN or
-OP_KETRMAX, and if so, to break the loop.
-
-
-Possessive brackets
--------------------
-
-When a repeated group (capturing or non-capturing) is marked as possessive by
-the "+" notation, e.g. (abc)++, different opcodes are used. Their names all
-have POS on the end, e.g. OP_BRAPOS instead of OP_BRA and OP_SCBRAPOS instead
-of OP_SCBRA. The end of such a group is marked by OP_KETRPOS. If the minimum
-repetition is zero, the group is preceded by OP_BRAPOSZERO.
-
-
-Once-only (atomic) groups
--------------------------
-
-These are just like other subpatterns, but they start with the opcode OP_ONCE.
-The check for matching an empty string in an unbounded repeat is handled
-entirely at runtime, so there is just this one opcode for atomic groups.
-
-
-Assertions
-----------
-
-Forward assertions are also just like other subpatterns, but starting with one
-of the opcodes OP_ASSERT, OP_ASSERT_NA (non-atomic assertion), or
-OP_ASSERT_NOT. Backward assertions use the opcodes OP_ASSERTBACK, 
-OP_ASSERTBACK_NA, and OP_ASSERTBACK_NOT, and the first opcode inside the
-assertion is OP_REVERSE, followed by a count of the number of characters to
-move back the pointer in the subject string. In ASCII or UTF-32 mode, the count
-is also the number of code units, but in UTF-8/16 mode each character may
-occupy more than one code unit. A separate count is present in each alternative
-of a lookbehind assertion, allowing each branch to have a different (but fixed)
-length.
-
-
-Conditional subpatterns
------------------------
-
-These are like other subpatterns, but they start with the opcode OP_COND, or
-OP_SCOND for one that might match an empty string in an unbounded repeat.
-
-If the condition is a back reference, this is stored at the start of the
-subpattern using the opcode OP_CREF followed by a count containing the
-reference number, provided that the reference is to a unique capturing group.
-If the reference was by name and there is more than one group with that name,
-OP_DNCREF is used instead. It is followed by two counts: the index in the group
-names table, and the number of groups with the same name. The allows the
-matcher to check if any group with the given name is set.
-
-If the condition is "in recursion" (coded as "(?(R)"), or "in recursion of
-group x" (coded as "(?(Rx)"), the group number is stored at the start of the
-subpattern using the opcode OP_RREF (with a value of RREF_ANY (0xffff) for "the
-whole pattern") or OP_DNRREF (with data as for OP_DNCREF).
-
-For a DEFINE condition, OP_FALSE is used (with no associated data). During
-compilation, however, a DEFINE condition is coded as OP_DEFINE so that, when
-the conditional group is complete, there can be a check to ensure that it
-contains only one top-level branch. Once this has happened, the opcode is
-changed to OP_FALSE, so the matcher never sees OP_DEFINE.
-
-There is a special PCRE2-specific condition of the form (VERSION[>]=x.y), which
-tests the PCRE2 version number. This compiles into one of the opcodes OP_TRUE
-or OP_FALSE.
-
-If a condition is not a back reference, recursion test, DEFINE, or VERSION, it
-must start with a parenthesized atomic assertion, whose opcode normally
-immediately follows OP_COND or OP_SCOND. However, if automatic callouts are
-enabled, a callout is inserted immediately before the assertion. It is also
-possible to insert a manual callout at this point. Only assertion conditions
-may have callouts preceding the condition.
-
-A condition that is the negative assertion (?!) is optimized to OP_FAIL in all
-parts of the pattern, so this is another opcode that may appear as a condition.
-It is treated the same as OP_FALSE.
-
-
-Recursion
----------
-
-Recursion either matches the current pattern, or some subexpression. The opcode
-OP_RECURSE is followed by a LINK_SIZE value that is the offset to the starting
-bracket from the start of the whole pattern. OP_RECURSE is also used for
-"subroutine" calls, even though they are not strictly a recursion. Up till
-release 10.30 recursions were treated as atomic groups, making them
-incompatible with Perl (but PCRE had them well before Perl did). From 10.30,
-backtracking into recursions is supported.
-
-Repeated recursions used to be wrapped inside OP_ONCE brackets, which not only
-forced no backtracking, but also allowed repetition to be handled as for other
-bracketed groups. From 10.30 onwards, repeated recursions are duplicated for
-their minimum repetitions, and then wrapped in non-capturing brackets for the
-remainder. For example, (?1){3} is treated as (?1)(?1)(?1), and (?1){2,4} is
-treated as (?1)(?1)(?:(?1)){0,2}.
-
-
-Callouts
---------
-
-A callout may have either a numerical argument or a string argument. These use
-OP_CALLOUT or OP_CALLOUT_STR, respectively. In each case these are followed by
-two LINK_SIZE values giving the offset in the pattern string to the start of
-the following item, and another count giving the length of this item. These
-values make it possible for pcre2test to output useful tracing information
-using callouts.
-
-In the case of a numeric callout, after these two values there is a single code
-unit containing the callout number, in the range 0-255, with 255 being used for
-callouts that are automatically inserted as a result of the PCRE2_AUTO_CALLOUT
-option. Thus, this opcode item is of fixed length:
-
-  [OP_CALLOUT] [PATTERN_OFFSET] [PATTERN_LENGTH] [NUMBER]
-
-For callouts with string arguments, OP_CALLOUT_STR has three more data items:
-a LINK_SIZE value giving the complete length of the entire opcode item, a
-LINK_SIZE item containing the offset within the pattern string to the start of
-the string argument, and the string itself, preceded by its starting delimiter
-and followed by a binary zero. When a callout function is called, a pointer to
-the actual string is passed, but the delimiter can be accessed as string[-1] if
-the application needs it. In the 8-bit library, the callout in /X(?C'abc')Y/ is
-compiled as the following bytes (decimal numbers represent binary values):
-
-  [OP_CALLOUT_STR]  [0] [10]  [0] [1]  [0] [14]  [0] [5] ['] [a] [b] [c] [0]
-                    --------  -------  --------  -------
-                       |         |        |         |
-                       ------- LINK_SIZE items ------
-
-Opcode table checking
----------------------
-
-The last opcode that is defined in pcre2_internal.h is OP_TABLE_LENGTH. This is
-not a real opcode, but is used to check at compile time that tables indexed by
-opcode are the correct length, in order to catch updating errors.
-
-Philip Hazel
-12 July 2019

+ 0 - 94
src/deps/regex/pcre2/LICENCE

@@ -1,94 +0,0 @@
-PCRE2 LICENCE
--------------
-
-PCRE2 is a library of functions to support regular expressions whose syntax
-and semantics are as close as possible to those of the Perl 5 language.
-
-Releases 10.00 and above of PCRE2 are distributed under the terms of the "BSD"
-licence, as specified below, with one exemption for certain binary
-redistributions. The documentation for PCRE2, supplied in the "doc" directory,
-is distributed under the same terms as the software itself. The data in the
-testdata directory is not copyrighted and is in the public domain.
-
-The basic library functions are written in C and are freestanding. Also
-included in the distribution is a just-in-time compiler that can be used to
-optimize pattern matching. This is an optional feature that can be omitted when
-the library is built.
-
-
-THE BASIC LIBRARY FUNCTIONS
----------------------------
-
-Written by:       Philip Hazel
-Email local part: Philip.Hazel
-Email domain:     gmail.com
-
-University of Cambridge Computing Service,
-Cambridge, England.
-
-Copyright (c) 1997-2021 University of Cambridge
-All rights reserved.
-
-
-PCRE2 JUST-IN-TIME COMPILATION SUPPORT
---------------------------------------
-
-Written by:       Zoltan Herczeg
-Email local part: hzmester
-Email domain:     freemail.hu
-
-Copyright(c) 2010-2021 Zoltan Herczeg
-All rights reserved.
-
-
-STACK-LESS JUST-IN-TIME COMPILER
---------------------------------
-
-Written by:       Zoltan Herczeg
-Email local part: hzmester
-Email domain:     freemail.hu
-
-Copyright(c) 2009-2021 Zoltan Herczeg
-All rights reserved.
-
-
-THE "BSD" LICENCE
------------------
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notices,
-      this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright
-      notices, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-    * Neither the name of the University of Cambridge nor the names of any
-      contributors may be used to endorse or promote products derived from this
-      software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-
-EXEMPTION FOR BINARY LIBRARY-LIKE PACKAGES
-------------------------------------------
-
-The second condition in the BSD licence (covering binary redistributions) does
-not apply all the way down a chain of software. If binary package A includes
-PCRE2, it must respect the condition, but if package B is software that
-includes package A, the condition is not imposed on package B unless it uses
-PCRE2 independently.
-
-End

+ 0 - 868
src/deps/regex/pcre2/Makefile.am

@@ -1,868 +0,0 @@
-## Process this file with automake to produce Makefile.in.
-
-AUTOMAKE_OPTIONS = subdir-objects
-ACLOCAL_AMFLAGS = -I m4
-
-## This seems to have become necessary for building in non-source directory.
-
-AM_CPPFLAGS="-I$(srcdir)/src"
-
-## Specify the documentation files that are distributed.
-
-dist_doc_DATA = \
-  AUTHORS \
-  COPYING \
-  ChangeLog \
-  LICENCE \
-  NEWS \
-  README \
-  doc/pcre2.txt \
-  doc/pcre2-config.txt \
-  doc/pcre2grep.txt \
-  doc/pcre2test.txt
-
-dist_html_DATA = \
-  doc/html/NON-AUTOTOOLS-BUILD.txt \
-  doc/html/README.txt \
-  doc/html/index.html \
-  doc/html/pcre2-config.html \
-  doc/html/pcre2.html \
-  doc/html/pcre2_callout_enumerate.html \
-  doc/html/pcre2_code_copy.html \
-  doc/html/pcre2_code_copy_with_tables.html \
-  doc/html/pcre2_code_free.html \
-  doc/html/pcre2_compile.html \
-  doc/html/pcre2_compile_context_copy.html \
-  doc/html/pcre2_compile_context_create.html \
-  doc/html/pcre2_compile_context_free.html \
-  doc/html/pcre2_config.html \
-  doc/html/pcre2_convert_context_copy.html \
-  doc/html/pcre2_convert_context_create.html \
-  doc/html/pcre2_convert_context_free.html \
-  doc/html/pcre2_converted_pattern_free.html \
-  doc/html/pcre2_dfa_match.html \
-  doc/html/pcre2_general_context_copy.html \
-  doc/html/pcre2_general_context_create.html \
-  doc/html/pcre2_general_context_free.html \
-  doc/html/pcre2_get_error_message.html \
-  doc/html/pcre2_get_mark.html \
-  doc/html/pcre2_get_match_data_size.html \
-  doc/html/pcre2_get_ovector_count.html \
-  doc/html/pcre2_get_ovector_pointer.html \
-  doc/html/pcre2_get_startchar.html \
-  doc/html/pcre2_jit_compile.html \
-  doc/html/pcre2_jit_free_unused_memory.html \
-  doc/html/pcre2_jit_match.html \
-  doc/html/pcre2_jit_stack_assign.html \
-  doc/html/pcre2_jit_stack_create.html \
-  doc/html/pcre2_jit_stack_free.html \
-  doc/html/pcre2_maketables.html \
-  doc/html/pcre2_maketables_free.html \
-  doc/html/pcre2_match.html \
-  doc/html/pcre2_match_context_copy.html \
-  doc/html/pcre2_match_context_create.html \
-  doc/html/pcre2_match_context_free.html \
-  doc/html/pcre2_match_data_create.html \
-  doc/html/pcre2_match_data_create_from_pattern.html \
-  doc/html/pcre2_match_data_free.html \
-  doc/html/pcre2_pattern_convert.html \
-  doc/html/pcre2_pattern_info.html \
-  doc/html/pcre2_serialize_decode.html \
-  doc/html/pcre2_serialize_encode.html \
-  doc/html/pcre2_serialize_free.html \
-  doc/html/pcre2_serialize_get_number_of_codes.html \
-  doc/html/pcre2_set_bsr.html \
-  doc/html/pcre2_set_callout.html \
-  doc/html/pcre2_set_character_tables.html \
-  doc/html/pcre2_set_compile_extra_options.html \
-  doc/html/pcre2_set_compile_recursion_guard.html \
-  doc/html/pcre2_set_depth_limit.html \
-  doc/html/pcre2_set_glob_escape.html \
-  doc/html/pcre2_set_glob_separator.html \
-  doc/html/pcre2_set_heap_limit.html \
-  doc/html/pcre2_set_match_limit.html \
-  doc/html/pcre2_set_max_pattern_length.html \
-  doc/html/pcre2_set_offset_limit.html \
-  doc/html/pcre2_set_newline.html \
-  doc/html/pcre2_set_parens_nest_limit.html \
-  doc/html/pcre2_set_recursion_limit.html \
-  doc/html/pcre2_set_recursion_memory_management.html \
-  doc/html/pcre2_set_substitute_callout.html \
-  doc/html/pcre2_substitute.html \
-  doc/html/pcre2_substring_copy_byname.html \
-  doc/html/pcre2_substring_copy_bynumber.html \
-  doc/html/pcre2_substring_free.html \
-  doc/html/pcre2_substring_get_byname.html \
-  doc/html/pcre2_substring_get_bynumber.html \
-  doc/html/pcre2_substring_length_byname.html \
-  doc/html/pcre2_substring_length_bynumber.html \
-  doc/html/pcre2_substring_list_free.html \
-  doc/html/pcre2_substring_list_get.html \
-  doc/html/pcre2_substring_nametable_scan.html \
-  doc/html/pcre2_substring_number_from_name.html \
-  doc/html/pcre2api.html \
-  doc/html/pcre2build.html \
-  doc/html/pcre2callout.html \
-  doc/html/pcre2compat.html \
-  doc/html/pcre2convert.html \
-  doc/html/pcre2demo.html \
-  doc/html/pcre2grep.html \
-  doc/html/pcre2jit.html \
-  doc/html/pcre2limits.html \
-  doc/html/pcre2matching.html \
-  doc/html/pcre2partial.html \
-  doc/html/pcre2pattern.html \
-  doc/html/pcre2perform.html \
-  doc/html/pcre2posix.html \
-  doc/html/pcre2sample.html \
-  doc/html/pcre2serialize.html \
-  doc/html/pcre2syntax.html \
-  doc/html/pcre2test.html \
-  doc/html/pcre2unicode.html
-
-dist_man_MANS = \
-  doc/pcre2-config.1 \
-  doc/pcre2.3 \
-  doc/pcre2_callout_enumerate.3 \
-  doc/pcre2_code_copy.3 \
-  doc/pcre2_code_copy_with_tables.3 \
-  doc/pcre2_code_free.3 \
-  doc/pcre2_compile.3 \
-  doc/pcre2_compile_context_copy.3 \
-  doc/pcre2_compile_context_create.3 \
-  doc/pcre2_compile_context_free.3 \
-  doc/pcre2_config.3 \
-  doc/pcre2_convert_context_copy.3 \
-  doc/pcre2_convert_context_create.3 \
-  doc/pcre2_convert_context_free.3 \
-  doc/pcre2_converted_pattern_free.3 \
-  doc/pcre2_dfa_match.3 \
-  doc/pcre2_general_context_copy.3 \
-  doc/pcre2_general_context_create.3 \
-  doc/pcre2_general_context_free.3 \
-  doc/pcre2_get_error_message.3 \
-  doc/pcre2_get_mark.3 \
-  doc/pcre2_get_match_data_size.3 \
-  doc/pcre2_get_ovector_count.3 \
-  doc/pcre2_get_ovector_pointer.3 \
-  doc/pcre2_get_startchar.3 \
-  doc/pcre2_jit_compile.3 \
-  doc/pcre2_jit_free_unused_memory.3 \
-  doc/pcre2_jit_match.3 \
-  doc/pcre2_jit_stack_assign.3 \
-  doc/pcre2_jit_stack_create.3 \
-  doc/pcre2_jit_stack_free.3 \
-  doc/pcre2_maketables.3 \
-  doc/pcre2_maketables_free.3 \
-  doc/pcre2_match.3 \
-  doc/pcre2_match_context_copy.3 \
-  doc/pcre2_match_context_create.3 \
-  doc/pcre2_match_context_free.3 \
-  doc/pcre2_match_data_create.3 \
-  doc/pcre2_match_data_create_from_pattern.3 \
-  doc/pcre2_match_data_free.3 \
-  doc/pcre2_pattern_convert.3 \
-  doc/pcre2_pattern_info.3 \
-  doc/pcre2_serialize_decode.3 \
-  doc/pcre2_serialize_encode.3 \
-  doc/pcre2_serialize_free.3 \
-  doc/pcre2_serialize_get_number_of_codes.3 \
-  doc/pcre2_set_bsr.3 \
-  doc/pcre2_set_callout.3 \
-  doc/pcre2_set_character_tables.3 \
-  doc/pcre2_set_compile_extra_options.3 \
-  doc/pcre2_set_compile_recursion_guard.3 \
-  doc/pcre2_set_depth_limit.3 \
-  doc/pcre2_set_glob_escape.3 \
-  doc/pcre2_set_glob_separator.3 \
-  doc/pcre2_set_heap_limit.3 \
-  doc/pcre2_set_match_limit.3 \
-  doc/pcre2_set_max_pattern_length.3 \
-  doc/pcre2_set_offset_limit.3 \
-  doc/pcre2_set_newline.3 \
-  doc/pcre2_set_parens_nest_limit.3 \
-  doc/pcre2_set_recursion_limit.3 \
-  doc/pcre2_set_recursion_memory_management.3 \
-  doc/pcre2_set_substitute_callout.3 \
-  doc/pcre2_substitute.3 \
-  doc/pcre2_substring_copy_byname.3 \
-  doc/pcre2_substring_copy_bynumber.3 \
-  doc/pcre2_substring_free.3 \
-  doc/pcre2_substring_get_byname.3 \
-  doc/pcre2_substring_get_bynumber.3 \
-  doc/pcre2_substring_length_byname.3 \
-  doc/pcre2_substring_length_bynumber.3 \
-  doc/pcre2_substring_list_free.3 \
-  doc/pcre2_substring_list_get.3 \
-  doc/pcre2_substring_nametable_scan.3 \
-  doc/pcre2_substring_number_from_name.3 \
-  doc/pcre2api.3 \
-  doc/pcre2build.3 \
-  doc/pcre2callout.3 \
-  doc/pcre2compat.3 \
-  doc/pcre2convert.3 \
-  doc/pcre2demo.3 \
-  doc/pcre2grep.1 \
-  doc/pcre2jit.3 \
-  doc/pcre2limits.3 \
-  doc/pcre2matching.3 \
-  doc/pcre2partial.3 \
-  doc/pcre2pattern.3 \
-  doc/pcre2perform.3 \
-  doc/pcre2posix.3 \
-  doc/pcre2sample.3 \
-  doc/pcre2serialize.3 \
-  doc/pcre2syntax.3 \
-  doc/pcre2test.1 \
-  doc/pcre2unicode.3
-
-# The Libtool libraries to install.  We'll add to this later.
-
-lib_LTLIBRARIES =
-
-# Unit tests you want to run when people type 'make check'.
-# TESTS is for binary unit tests, check_SCRIPTS for script-based tests
-
-TESTS =
-check_SCRIPTS =
-dist_noinst_SCRIPTS =
-
-# Some of the binaries we make are to be installed, and others are
-# (non-user-visible) helper programs needed to build the libraries.
-
-bin_PROGRAMS =
-noinst_PROGRAMS =
-
-# Additional files to delete on 'make clean', 'make distclean',
-# and 'make maintainer-clean'.
-
-CLEANFILES =
-DISTCLEANFILES = src/config.h.in~
-MAINTAINERCLEANFILES =
-
-# Additional files to bundle with the distribution, over and above what
-# the Autotools include by default.
-
-EXTRA_DIST =
-
-# These files contain additional m4 macros that are used by autoconf.
-
-EXTRA_DIST += \
-  m4/ax_pthread.m4 m4/pcre2_visibility.m4
-
-# These files contain maintenance information
-
-EXTRA_DIST += \
-  NON-AUTOTOOLS-BUILD \
-  HACKING
-
-# These files are used in the preparation of a release
-
-EXTRA_DIST += \
-  PrepareRelease \
-  CheckMan \
-  CleanTxt \
-  Detrail \
-  132html \
-  doc/index.html.src
-
-# These files are usable versions of pcre2.h and config.h that are distributed
-# for the benefit of people who are building PCRE2 manually, without the
-# Autotools support.
-
-EXTRA_DIST += \
-  src/pcre2.h.generic \
-  src/config.h.generic
-
-# The only difference between pcre2.h.in and pcre2.h is the setting of the PCRE
-# version number. Therefore, we can create the generic version just by copying.
-
-src/pcre2.h.generic: src/pcre2.h.in configure.ac
-	rm -f $@
-	cp -p src/pcre2.h $@
-
-# It is more complicated for config.h.generic. We need the version that results
-# from a default configuration so as to get all the default values for PCRE
-# configuration macros such as MATCH_LIMIT and NEWLINE. We can get this by
-# doing a configure in a temporary directory. However, some trickery is needed,
-# because the source directory may already be configured. If you just try
-# running configure in a new directory, it complains. For this reason, we move
-# config.status out of the way while doing the default configuration. The
-# resulting config.h is munged by perl to put #ifdefs round any #defines for
-# macros with values, and to #undef all boolean macros such as HAVE_xxx and
-# SUPPORT_xxx. We also get rid of any gcc-specific visibility settings. Make
-# sure that PCRE2_EXP_DEFN is unset (in case it has visibility settings).
-
-src/config.h.generic: configure.ac
-	rm -rf $@ _generic
-	mkdir _generic
-	cs=$(srcdir)/config.status; test ! -f $$cs || mv -f $$cs $$cs.aside
-	cd _generic && $(abs_top_srcdir)/configure || :
-	cs=$(srcdir)/config.status; test ! -f $$cs.aside || mv -f $$cs.aside $$cs
-	test -f _generic/src/config.h
-	perl -n \
-	  -e 'BEGIN{$$blank=0;}' \
-	  -e 'if(/PCRE2_EXP_DEFN/){print"/* #undef PCRE2_EXP_DEFN */\n";$$blank=0;next;}' \
-	  -e 'if(/to make a symbol visible/){next;}' \
-	  -e 'if(/__attribute__ \(\(visibility/){next;}' \
-	  -e 'if(/LT_OBJDIR/){print"/* This is ignored unless you are using libtool. */\n";}' \
-	  -e 'if(/^#define\s((?:HAVE|SUPPORT|STDC)_\w+)/){print"/* #undef $$1 */\n";$$blank=0;next;}' \
-	  -e 'if(/^#define\s(?!PACKAGE|VERSION)(\w+)/){print"#ifndef $$1\n$$_#endif\n";$$blank=0;next;}' \
-	  -e 'if(/^\s*$$/){print unless $$blank; $$blank=1;} else{print;$$blank=0;}' \
-	  _generic/src/config.h >$@
-	rm -rf _generic
-
-MAINTAINERCLEANFILES += src/pcre2.h.generic src/config.h.generic
-
-# These are the header files we'll install. We do not distribute pcre2.h
-# because it is generated from pcre2.h.in.
-
-nodist_include_HEADERS = src/pcre2.h
-include_HEADERS = src/pcre2posix.h
-
-# This is the "config" script.
-
-bin_SCRIPTS = pcre2-config
-
-## ---------------------------------------------------------------
-## The pcre2_dftables program is used to rebuild character tables before
-## compiling PCRE2, if --enable-rebuild-chartables is specified. It is not an
-## installed program. The default (when --enable-rebuild-chartables is not
-## specified) is to copy a distributed set of tables that are defined for ASCII
-## code. In this case, pcre2_dftables is not needed.
-
-if WITH_REBUILD_CHARTABLES
-noinst_PROGRAMS += pcre2_dftables
-pcre2_dftables_SOURCES = src/pcre2_dftables.c
-src/pcre2_chartables.c: pcre2_dftables$(EXEEXT)
-	rm -f $@
-	./pcre2_dftables$(EXEEXT) $@
-else
-src/pcre2_chartables.c: $(srcdir)/src/pcre2_chartables.c.dist
-	rm -f $@
-	$(LN_S) $(abs_srcdir)/src/pcre2_chartables.c.dist $(abs_builddir)/src/pcre2_chartables.c
-endif # WITH_REBUILD_CHARTABLES
-
-BUILT_SOURCES = src/pcre2_chartables.c
-NODIST_SOURCES = src/pcre2_chartables.c
-
-## Define the list of common sources, then arrange to build whichever of the
-## 8-, 16-, or 32-bit libraries are configured.
-
-COMMON_SOURCES = \
-  src/pcre2_auto_possess.c \
-  src/pcre2_compile.c \
-  src/pcre2_config.c \
-  src/pcre2_context.c \
-  src/pcre2_convert.c \
-  src/pcre2_dfa_match.c \
-  src/pcre2_error.c \
-  src/pcre2_extuni.c \
-  src/pcre2_find_bracket.c \
-  src/pcre2_internal.h \
-  src/pcre2_intmodedep.h \
-  src/pcre2_jit_compile.c \
-  src/pcre2_jit_neon_inc.h \
-  src/pcre2_jit_simd_inc.h \
-  src/pcre2_maketables.c \
-  src/pcre2_match.c \
-  src/pcre2_match_data.c \
-  src/pcre2_newline.c \
-  src/pcre2_ord2utf.c \
-  src/pcre2_pattern_info.c \
-  src/pcre2_script_run.c \
-  src/pcre2_serialize.c \
-  src/pcre2_string_utils.c \
-  src/pcre2_study.c \
-  src/pcre2_substitute.c \
-  src/pcre2_substring.c \
-  src/pcre2_tables.c \
-  src/pcre2_ucd.c \
-  src/pcre2_ucp.h \
-  src/pcre2_valid_utf.c \
-  src/pcre2_xclass.c
-
-if WITH_PCRE2_8
-lib_LTLIBRARIES += libpcre2-8.la
-libpcre2_8_la_SOURCES = \
-  $(COMMON_SOURCES)
-nodist_libpcre2_8_la_SOURCES = \
-  $(NODIST_SOURCES)
-libpcre2_8_la_CFLAGS = \
-  -DPCRE2_CODE_UNIT_WIDTH=8 \
-  $(VISIBILITY_CFLAGS) \
-  $(CET_CFLAGS) \
-  $(AM_CFLAGS)
-libpcre2_8_la_LIBADD =
-endif # WITH_PCRE2_8
-
-if WITH_PCRE2_16
-lib_LTLIBRARIES += libpcre2-16.la
-libpcre2_16_la_SOURCES = \
-  $(COMMON_SOURCES)
-nodist_libpcre2_16_la_SOURCES = \
-  $(NODIST_SOURCES)
-libpcre2_16_la_CFLAGS = \
-  -DPCRE2_CODE_UNIT_WIDTH=16 \
-  $(VISIBILITY_CFLAGS) \
-  $(CET_CFLAGS) \
-  $(AM_CFLAGS)
-libpcre2_16_la_LIBADD =
-endif # WITH_PCRE2_16
-
-if WITH_PCRE2_32
-lib_LTLIBRARIES += libpcre2-32.la
-libpcre2_32_la_SOURCES = \
-  $(COMMON_SOURCES)
-nodist_libpcre2_32_la_SOURCES = \
-  $(NODIST_SOURCES)
-libpcre2_32_la_CFLAGS = \
-  -DPCRE2_CODE_UNIT_WIDTH=32 \
-  $(VISIBILITY_CFLAGS) \
-  $(CET_CFLAGS) \
-  $(AM_CFLAGS)
-libpcre2_32_la_LIBADD =
-endif # WITH_PCRE2_32
-
-# The pcre2_chartables.c.dist file is the default version of
-# pcre2_chartables.c, used unless --enable-rebuild-chartables is specified.
-
-EXTRA_DIST += src/pcre2_chartables.c.dist
-CLEANFILES += src/pcre2_chartables.c
-
-# The JIT compiler lives in a separate directory, but its files are #included
-# when pcre2_jit_compile.c is processed, so they must be distributed.
-
-EXTRA_DIST += \
-  src/sljit/sljitConfig.h \
-  src/sljit/sljitConfigInternal.h \
-  src/sljit/sljitExecAllocator.c \
-  src/sljit/sljitLir.c \
-  src/sljit/sljitLir.h \
-  src/sljit/sljitNativeARM_32.c \
-  src/sljit/sljitNativeARM_64.c \
-  src/sljit/sljitNativeARM_T2_32.c \
-  src/sljit/sljitNativeMIPS_32.c \
-  src/sljit/sljitNativeMIPS_64.c \
-  src/sljit/sljitNativeMIPS_common.c \
-  src/sljit/sljitNativePPC_32.c \
-  src/sljit/sljitNativePPC_64.c \
-  src/sljit/sljitNativePPC_common.c \
-  src/sljit/sljitNativeS390X.c \
-  src/sljit/sljitNativeSPARC_32.c \
-  src/sljit/sljitNativeSPARC_common.c \
-  src/sljit/sljitNativeX86_32.c \
-  src/sljit/sljitNativeX86_64.c \
-  src/sljit/sljitNativeX86_common.c \
-  src/sljit/sljitProtExecAllocator.c \
-  src/sljit/sljitUtils.c \
-  src/sljit/sljitWXExecAllocator.c
-
-# Some of the JIT sources are also in separate files that are #included.
-
-EXTRA_DIST += \
-  src/pcre2_jit_match.c \
-  src/pcre2_jit_misc.c
-
-if WITH_PCRE2_8
-libpcre2_8_la_LDFLAGS = $(EXTRA_LIBPCRE2_8_LDFLAGS)
-endif # WITH_PCRE2_8
-if WITH_PCRE2_16
-libpcre2_16_la_LDFLAGS = $(EXTRA_LIBPCRE2_16_LDFLAGS)
-endif # WITH_PCRE2_16
-if WITH_PCRE2_32
-libpcre2_32_la_LDFLAGS = $(EXTRA_LIBPCRE2_32_LDFLAGS)
-endif # WITH_PCRE2_32
-
-if WITH_VALGRIND
-if WITH_PCRE2_8
-libpcre2_8_la_CFLAGS += $(VALGRIND_CFLAGS)
-endif # WITH_PCRE2_8
-if WITH_PCRE2_16
-libpcre2_16_la_CFLAGS += $(VALGRIND_CFLAGS)
-endif # WITH_PCRE2_16
-if WITH_PCRE2_32
-libpcre2_32_la_CFLAGS += $(VALGRIND_CFLAGS)
-endif # WITH_PCRE2_32
-endif # WITH_VALGRIND
-
-if WITH_GCOV
-if WITH_PCRE2_8
-libpcre2_8_la_CFLAGS += $(GCOV_CFLAGS)
-endif # WITH_PCRE2_8
-if WITH_PCRE2_16
-libpcre2_16_la_CFLAGS += $(GCOV_CFLAGS)
-endif # WITH_PCRE2_16
-if WITH_PCRE2_32
-libpcre2_32_la_CFLAGS += $(GCOV_CFLAGS)
-endif # WITH_PCRE2_32
-endif # WITH_GCOV
-
-## A version of the 8-bit library that has a POSIX API.
-
-if WITH_PCRE2_8
-lib_LTLIBRARIES += libpcre2-posix.la
-libpcre2_posix_la_SOURCES = src/pcre2posix.c
-libpcre2_posix_la_CFLAGS = \
-  -DPCRE2_CODE_UNIT_WIDTH=8 \
-  $(VISIBILITY_CFLAGS) $(AM_CFLAGS)
-libpcre2_posix_la_LDFLAGS = $(EXTRA_LIBPCRE2_POSIX_LDFLAGS)
-libpcre2_posix_la_LIBADD = libpcre2-8.la
-if WITH_GCOV
-libpcre2_posix_la_CFLAGS += $(GCOV_CFLAGS)
-endif # WITH_GCOV
-endif # WITH_PCRE2_8
-
-## Build pcre2grep and optional fuzzer stuff if the 8-bit library is enabled
-
-if WITH_PCRE2_8
-bin_PROGRAMS += pcre2grep
-pcre2grep_SOURCES = src/pcre2grep.c
-pcre2grep_CFLAGS = $(AM_CFLAGS)
-pcre2grep_LDADD = $(LIBZ) $(LIBBZ2)
-pcre2grep_LDADD += libpcre2-8.la
-if WITH_GCOV
-pcre2grep_CFLAGS += $(GCOV_CFLAGS)
-pcre2grep_LDADD += $(GCOV_LIBS)
-endif # WITH_GCOV
-
-## If fuzzer support is enabled, build a non-distributed library containing the
-## fuzzing function. Also build the standalone checking binary from the same
-## source but using -DSTANDALONE.
-
-if WITH_FUZZ_SUPPORT
-noinst_LIBRARIES = .libs/libpcre2-fuzzsupport.a
-_libs_libpcre2_fuzzsupport_a_SOURCES = src/pcre2_fuzzsupport.c
-_libs_libpcre2_fuzzsupport_a_CFLAGS = $(AM_CFLAGS)
-_libs_libpcre2_fuzzsupport_a_LIBADD =
-
-noinst_PROGRAMS += pcre2fuzzcheck
-pcre2fuzzcheck_SOURCES = src/pcre2_fuzzsupport.c
-pcre2fuzzcheck_CFLAGS = -DSTANDALONE $(AM_CFLAGS)
-pcre2fuzzcheck_LDADD = libpcre2-8.la
-if WITH_GCOV
-pcre2fuzzcheck_CFLAGS += $(GCOV_CFLAGS)
-pcre2fuzzcheck_LDADD += $(GCOV_LIBS)
-endif # WITH_GCOV
-endif # WITH FUZZ_SUPPORT
-endif # WITH_PCRE2_8
-
-## -------- Testing ----------
-
-## If JIT support is enabled, arrange for the JIT test program to run.
-
-if WITH_JIT
-TESTS += pcre2_jit_test
-noinst_PROGRAMS += pcre2_jit_test
-pcre2_jit_test_SOURCES = src/pcre2_jit_test.c
-pcre2_jit_test_CFLAGS = $(AM_CFLAGS)
-pcre2_jit_test_LDADD =
-if WITH_PCRE2_8
-pcre2_jit_test_LDADD += libpcre2-8.la
-endif # WITH_PCRE2_8
-if WITH_PCRE2_16
-pcre2_jit_test_LDADD += libpcre2-16.la
-endif # WITH_PCRE2_16
-if WITH_PCRE2_32
-pcre2_jit_test_LDADD += libpcre2-32.la
-endif # WITH_PCRE2_32
-if WITH_GCOV
-pcre2_jit_test_CFLAGS += $(GCOV_CFLAGS)
-pcre2_jit_test_LDADD += $(GCOV_LIBS)
-endif # WITH_GCOV
-endif # WITH_JIT
-
-# Build the general pcre2test program. The file src/pcre2_printint.c is
-# #included by pcre2test as many times as needed, at different code unit
-# widths.
-
-bin_PROGRAMS += pcre2test
-EXTRA_DIST += src/pcre2_printint.c
-pcre2test_SOURCES = src/pcre2test.c
-pcre2test_CFLAGS = $(AM_CFLAGS)
-pcre2test_LDADD = $(LIBREADLINE)
-
-if WITH_PCRE2_8
-pcre2test_LDADD += libpcre2-8.la libpcre2-posix.la
-endif # WITH_PCRE2_8
-
-if WITH_PCRE2_16
-pcre2test_LDADD += libpcre2-16.la
-endif # WITH_PCRE2_16
-
-if WITH_PCRE2_32
-pcre2test_LDADD += libpcre2-32.la
-endif # WITH_PCRE2_32
-
-if WITH_VALGRIND
-pcre2test_CFLAGS += $(VALGRIND_CFLAGS)
-endif # WITH_VALGRIND
-
-if WITH_GCOV
-pcre2test_CFLAGS += $(GCOV_CFLAGS)
-pcre2test_LDADD += $(GCOV_LIBS)
-endif # WITH_GCOV
-
-## The main library tests. Each test is a binary plus a script that runs that
-## binary in various ways. We install these test binaries in case folks find it
-## helpful. The two .bat files are for running the tests under Windows.
-
-TESTS += RunTest
-EXTRA_DIST += RunTest.bat
-dist_noinst_SCRIPTS += RunTest
-
-## When the 8-bit library is configured, pcre2grep will have been built.
-
-if WITH_PCRE2_8
-TESTS += RunGrepTest
-EXTRA_DIST += RunGrepTest.bat
-dist_noinst_SCRIPTS += RunGrepTest
-endif # WITH_PCRE2_8
-
-## Distribute all the test data files
-
-EXTRA_DIST += \
-  testdata/grepbinary \
-  testdata/grepfilelist \
-  testdata/grepinput \
-  testdata/grepinput3 \
-  testdata/grepinput8 \
-  testdata/grepinputM \
-  testdata/grepinputv \
-  testdata/grepinputx \
-  testdata/greplist \
-  testdata/grepoutput \
-  testdata/grepoutput8 \
-  testdata/grepoutputC \
-  testdata/grepoutputCN \
-  testdata/grepoutputN \
-  testdata/greppatN4 \
-  testdata/testbtables \
-  testdata/testinput1 \
-  testdata/testinput2 \
-  testdata/testinput3 \
-  testdata/testinput4 \
-  testdata/testinput5 \
-  testdata/testinput6 \
-  testdata/testinput7 \
-  testdata/testinput8 \
-  testdata/testinput9 \
-  testdata/testinput10 \
-  testdata/testinput11 \
-  testdata/testinput12 \
-  testdata/testinput13 \
-  testdata/testinput14 \
-  testdata/testinput15 \
-  testdata/testinput16 \
-  testdata/testinput17 \
-  testdata/testinput18 \
-  testdata/testinput19 \
-  testdata/testinput20 \
-  testdata/testinput21 \
-  testdata/testinput22 \
-  testdata/testinput23 \
-  testdata/testinput24 \
-  testdata/testinput25 \
-  testdata/testinputEBC \
-  testdata/testoutput1 \
-  testdata/testoutput2 \
-  testdata/testoutput3 \
-  testdata/testoutput3A \
-  testdata/testoutput3B \
-  testdata/testoutput4 \
-  testdata/testoutput5 \
-  testdata/testoutput6 \
-  testdata/testoutput7 \
-  testdata/testoutput8-16-2 \
-  testdata/testoutput8-16-3 \
-  testdata/testoutput8-16-4 \
-  testdata/testoutput8-32-2 \
-  testdata/testoutput8-32-3 \
-  testdata/testoutput8-32-4 \
-  testdata/testoutput8-8-2 \
-  testdata/testoutput8-8-3 \
-  testdata/testoutput8-8-4 \
-  testdata/testoutput9 \
-  testdata/testoutput10 \
-  testdata/testoutput11-16 \
-  testdata/testoutput11-32 \
-  testdata/testoutput12-16 \
-  testdata/testoutput12-32 \
-  testdata/testoutput13 \
-  testdata/testoutput14-16 \
-  testdata/testoutput14-32 \
-  testdata/testoutput14-8 \
-  testdata/testoutput15 \
-  testdata/testoutput16 \
-  testdata/testoutput17 \
-  testdata/testoutput18 \
-  testdata/testoutput19 \
-  testdata/testoutput20 \
-  testdata/testoutput21 \
-  testdata/testoutput22-16 \
-  testdata/testoutput22-32 \
-  testdata/testoutput22-8 \
-  testdata/testoutput23 \
-  testdata/testoutput24 \
-  testdata/testoutput25 \
-  testdata/testoutputEBC \
-  testdata/valgrind-jit.supp \
-  testdata/wintestinput3 \
-  testdata/wintestoutput3 \
-  perltest.sh
-
-# RunTest and RunGrepTest should clean up after themselves, but just in case
-# they don't, add their working files to CLEANFILES.
-
-CLEANFILES += \
-        testSinput \
-        test3input \
-        test3output \
-        test3outputA \
-        test3outputB \
-        testtry \
-        teststdout \
-	teststderr \
-        teststderrgrep \
-        testtemp1grep \
-        testtemp2grep \
-        testtrygrep \
-        testNinputgrep
-
-## ------------ End of testing -------------
-
-
-# PCRE2 demonstration program. Not built automatcally. The point is that the
-# users should build it themselves. So just distribute the source.
-
-EXTRA_DIST += src/pcre2demo.c
-
-
-# We have .pc files for pkg-config users.
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA =
-
-if WITH_PCRE2_8
-pkgconfig_DATA += libpcre2-8.pc libpcre2-posix.pc
-endif
-
-if WITH_PCRE2_16
-pkgconfig_DATA += libpcre2-16.pc
-endif
-
-if WITH_PCRE2_32
-pkgconfig_DATA += libpcre2-32.pc
-endif
-
-
-# gcov/lcov code coverage reporting
-#
-# Coverage reporting targets:
-#
-# coverage: Create a coverage report from 'make check'
-# coverage-baseline: Capture baseline coverage information
-# coverage-reset: This zeros the coverage counters only
-# coverage-report: This creates the coverage report only
-# coverage-clean-report: This removes the generated coverage report
-#   without cleaning the coverage data itself
-# coverage-clean-data: This removes the captured coverage data without
-#   removing the coverage files created at compile time (*.gcno)
-# coverage-clean: This cleans all coverage data including the generated
-#   coverage report.
-
-if WITH_GCOV
-COVERAGE_TEST_NAME = $(PACKAGE)
-COVERAGE_NAME = $(PACKAGE)-$(VERSION)
-COVERAGE_OUTPUT_FILE = $(COVERAGE_NAME)-coverage.info
-COVERAGE_OUTPUT_DIR = $(COVERAGE_NAME)-coverage
-COVERAGE_LCOV_EXTRA_FLAGS =
-COVERAGE_GENHTML_EXTRA_FLAGS =
-
-coverage_quiet = $(coverage_quiet_$(V))
-coverage_quiet_ = $(coverage_quiet_$(AM_DEFAULT_VERBOSITY))
-coverage_quiet_0 = --quiet
-
-coverage-check: all
-	-$(MAKE) $(AM_MAKEFLAGS) -k check
-
-coverage-baseline:
-	$(LCOV) $(coverage_quiet) \
-		--directory $(top_builddir) \
-		--output-file "$(COVERAGE_OUTPUT_FILE)" \
-		--capture \
-		--initial
-
-coverage-report:
-	$(LCOV) $(coverage_quiet) \
-		--directory $(top_builddir) \
-		--capture \
-		--output-file "$(COVERAGE_OUTPUT_FILE).tmp" \
-		--test-name "$(COVERAGE_TEST_NAME)" \
-		--no-checksum \
-		--compat-libtool \
-		$(COVERAGE_LCOV_EXTRA_FLAGS)
-	$(LCOV) $(coverage_quiet) \
-		--directory $(top_builddir) \
-		--output-file "$(COVERAGE_OUTPUT_FILE)" \
-		--remove "$(COVERAGE_OUTPUT_FILE).tmp" \
-		"/tmp/*" \
-		"/usr/include/*" \
-		"$(includedir)/*"
-	-@rm -f "$(COVERAGE_OUTPUT_FILE).tmp"
-	LANG=C $(GENHTML) $(coverage_quiet) \
-		--prefix $(top_builddir) \
-		--output-directory "$(COVERAGE_OUTPUT_DIR)" \
-		--title "$(PACKAGE) $(VERSION) Code Coverage Report" \
-		--show-details "$(COVERAGE_OUTPUT_FILE)" \
-		--legend \
-		$(COVERAGE_GENHTML_EXTRA_FLAGS)
-	@echo "Code coverage report written to file://$(abs_builddir)/$(COVERAGE_OUTPUT_DIR)/index.html"
-
-coverage-reset:
-	-$(LCOV) $(coverage_quiet) --zerocounters --directory $(top_builddir)
-
-coverage-clean-report:
-	-rm -f "$(COVERAGE_OUTPUT_FILE)" "$(COVERAGE_OUTPUT_FILE).tmp"
-	-rm -rf "$(COVERAGE_OUTPUT_DIR)"
-
-coverage-clean-data:
-	-find $(top_builddir) -name "*.gcda" -delete
-
-coverage-clean: coverage-reset coverage-clean-report coverage-clean-data
-	-find $(top_builddir) -name "*.gcno" -delete
-
-coverage-distclean: coverage-clean
-
-coverage: coverage-reset coverage-baseline coverage-check coverage-report
-clean-local: coverage-clean
-distclean-local: coverage-distclean
-
-.PHONY: coverage coverage-baseline coverage-check coverage-report coverage-reset coverage-clean-report coverage-clean-data coverage-clean coverage-distclean
-
-# Without coverage support, still arrange for 'make distclean' to get rid of
-# any coverage files that may have been left from a different configuration.
-
-else
-
-coverage:
-	@echo "Configuring with --enable-coverage is required to generate code coverage report."
-
-DISTCLEANFILES += src/*.gcda src/*.gcno
-
-distclean-local:
-	rm -rf $(PACKAGE)-$(VERSION)-coverage*
-
-endif # WITH_GCOV
-
-## CMake support
-
-EXTRA_DIST += \
-  cmake/COPYING-CMAKE-SCRIPTS \
-  cmake/FindPackageHandleStandardArgs.cmake \
-  cmake/FindReadline.cmake \
-  cmake/FindEditline.cmake \
-  CMakeLists.txt \
-  config-cmake.h.in
-
-## end Makefile.am

+ 0 - 355
src/deps/regex/pcre2/NEWS

@@ -1,355 +0,0 @@
-News about PCRE2 releases
--------------------------
-
-
-Version 10.37 26-May-2021
--------------------------
-
-A few more bug fixes and tidies. The only change of real note is the removal of
-the actual POSIX names regcomp etc. from the POSIX wrapper library because
-these have caused issues for some applications (see 10.33 #2 below).
-
-
-Version 10.36 04-December-2020
-------------------------------
-
-Again, mainly bug fixes and tidies. The only enhancements are the addition of
-GNU grep's -m (aka --max-count) option to pcre2grep, and also unifying the
-handling of substitution strings for both -O and callouts in pcre2grep, with
-the addition of $x{...} and $o{...} to allow for characters whose code points
-are greater than 255 in Unicode mode.
-
-NOTE: there is an outstanding issue with JIT support for MacOS on arm64
-hardware. For details, please see Bugzilla issue #2618.
-
-
-Version 10.35 15-April-2020
----------------------------
-
-Bugfixes, tidies, and a few new enhancements.
-
-1. Capturing groups that contain recursive backreferences to themselves are no
-longer automatically atomic, because the restriction is no longer necessary
-as a result of the 10.30 restructuring.
-
-2. Several new options for pcre2_substitute().
-
-3. When Unicode is supported and PCRE2_UCP is set without PCRE2_UTF, Unicode
-character properties are used for upper/lower case computations on characters
-whose code points are greater than 127.
-
-4. The character tables (for low-valued characters) can now more easily be
-saved and restored in binary.
-
-5. Updated to Unicode 13.0.0.
-
-
-Version 10.34 21-November-2019
-------------------------------
-
-Another release with a few enhancements as well as bugfixes and tidies. The
-main new features are:
-
-1. There is now some support for matching in invalid UTF strings.
-
-2. Non-atomic positive lookarounds are implemented in the pcre2_match()
-interpreter, but not in JIT.
-
-3. Added two new functions: pcre2_get_match_data_size() and
-pcre2_maketables_free().
-
-4. Upgraded to Unicode 12.1.0.
-
-
-Version 10.33 16-April-2019
----------------------------
-
-Yet more bugfixes, tidies, and a few enhancements, summarized here (see
-ChangeLog for the full list):
-
-1. Callouts from pcre2_substitute() are now available.
-
-2. The POSIX functions are now all called pcre2_regcomp() etc., with wrapper
-functions that use the standard POSIX names. However, in pcre2posix.h the POSIX
-names are defined as macros. This should help avoid linking with the wrong
-library in some environments, while still exporting the POSIX names for
-pre-existing programs that use them.
-
-3. Some new options:
-
-   (a) PCRE2_EXTRA_ESCAPED_CR_IS_LF makes \r behave as \n.
-
-   (b) PCRE2_EXTRA_ALT_BSUX enables support for ECMAScript 6's \u{hh...}
-       construct.
-
-   (c) PCRE2_COPY_MATCHED_SUBJECT causes a copy of a matched subject to be
-       made, instead of just remembering a pointer.
-
-4. Some new Perl features:
-
-   (a) Perl 5.28's experimental alphabetic names for atomic groups and
-       lookaround assertions, for example, (*pla:...) and (*atomic:...).
-
-   (b) The new Perl "script run" features (*script_run:...) and
-       (*atomic_script_run:...) aka (*sr:...) and (*asr:...).
-
-   (c) When PCRE2_UTF is set, allow non-ASCII letters and decimal digits in
-       capture group names.
-
-5. --disable-percent-zt disables the use of %zu and %td in formatting strings
-in pcre2test. They were already automatically disabled for VC and older C
-compilers.
-
-6. Some changes related to callouts in pcre2grep:
-
-   (a) Support for running an external program under VMS has been added, in
-       addition to Windows and fork() support.
-
-   (b) --disable-pcre2grep-callout-fork restricts the callout support in
-       to the inbuilt echo facility.
-
-
-Version 10.32 10-September-2018
--------------------------------
-
-This is another mainly bugfix and tidying release with a few minor
-enhancements. These are the main ones:
-
-1. pcre2grep now supports the inclusion of binary zeros in patterns that are
-read from files via the -f option.
-
-2. ./configure now supports --enable-jit=auto, which automatically enables JIT
-if the hardware supports it.
-
-3. In pcre2_dfa_match(), internal recursive calls no longer use the stack for
-local workspace and local ovectors. Instead, an initial block of stack is
-reserved, but if this is insufficient, heap memory is used. The heap limit
-parameter now applies to pcre2_dfa_match().
-
-4. Updated to Unicode version 11.0.0.
-
-5. (*ACCEPT:ARG), (*FAIL:ARG), and (*COMMIT:ARG) are now supported.
-
-6. Added support for \N{U+dddd}, but only in Unicode mode.
-
-7. Added support for (?^) to unset all imnsx options.
-
-
-Version 10.31 12-February-2018
-------------------------------
-
-This is mainly a bugfix and tidying release (see ChangeLog for full details).
-However, there are some minor enhancements.
-
-1. New pcre2_config() options: PCRE2_CONFIG_NEVER_BACKSLASH_C and
-PCRE2_CONFIG_COMPILED_WIDTHS.
-
-2. New pcre2_pattern_info() option PCRE2_INFO_EXTRAOPTIONS to retrieve the
-extra compile time options.
-
-3. There are now public names for all the pcre2_compile() error numbers.
-
-4. Added PCRE2_CALLOUT_STARTMATCH and PCRE2_CALLOUT_BACKTRACK bits to a new
-field callout_flags in callout blocks.
-
-
-Version 10.30 14-August-2017
-----------------------------
-
-The full list of changes that includes bugfixes and tidies is, as always, in
-ChangeLog. These are the most important new features:
-
-1. The main interpreter, pcre2_match(), has been refactored into a new version
-that does not use recursive function calls (and therefore the system stack) for
-remembering backtracking positions. This makes --disable-stack-for-recursion a
-NOOP. The new implementation allows backtracking into recursive group calls in
-patterns, making it more compatible with Perl, and also fixes some other
-previously hard-to-do issues. For patterns that have a lot of backtracking, the
-heap is now used, and there is an explicit limit on the amount, settable by
-pcre2_set_heap_limit() or (*LIMIT_HEAP=xxx). The "recursion limit" is retained,
-but is renamed as "depth limit" (though the old names remain for
-compatibility).
-
-There is also a change in the way callouts from pcre2_match() are handled. The
-offset_vector field in the callout block is no longer a pointer to the
-actual ovector that was passed to the matching function in the match data
-block. Instead it points to an internal ovector of a size large enough to hold
-all possible captured substrings in the pattern.
-
-2. The new option PCRE2_ENDANCHORED insists that a pattern match must end at
-the end of the subject.
-
-3. The new option PCRE2_EXTENDED_MORE implements Perl's /xx feature, and
-pcre2test is upgraded to support it. Setting within the pattern by (?xx) is
-also supported.
-
-4. (?n) can be used to set PCRE2_NO_AUTO_CAPTURE, because Perl now has this.
-
-5. Additional compile options in the compile context are now available, and the
-first two are: PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES and
-PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL.
-
-6. The newline type PCRE2_NEWLINE_NUL is now available.
-
-7. The match limit value now also applies to pcre2_dfa_match() as there are
-patterns that can use up a lot of resources without necessarily recursing very
-deeply.
-
-8. The option REG_PEND (a GNU extension) is now available for the POSIX
-wrapper. Also there is a new option PCRE2_LITERAL which is used to support
-REG_NOSPEC.
-
-9. PCRE2_EXTRA_MATCH_LINE and PCRE2_EXTRA_MATCH_WORD are implemented for the
-benefit of pcre2grep, and pcre2grep's -F, -w, and -x options are re-implemented
-using PCRE2_LITERAL, PCRE2_EXTRA_MATCH_WORD, and PCRE2_EXTRA_MATCH_LINE. This
-is tidier and also fixes some bugs.
-
-10. The Unicode tables are upgraded from Unicode 8.0.0 to Unicode 10.0.0.
-
-11. There are some experimental functions for converting foreign patterns
-(globs and POSIX patterns) into PCRE2 patterns.
-
-
-Version 10.23 14-February-2017
-------------------------------
-
-1. ChangeLog has the details of a lot of bug fixes and tidies.
-
-2. There has been a major re-factoring of the pcre2_compile.c file. Most syntax
-checking is now done in the pre-pass that identifies capturing groups. This has
-reduced the amount of duplication and made the code tidier. While doing this,
-some minor bugs and Perl incompatibilities were fixed (see ChangeLog for
-details.)
-
-3. Back references are now permitted in lookbehind assertions when there are
-no duplicated group numbers (that is, (?| has not been used), and, if the
-reference is by name, there is only one group of that name. The referenced
-group must, of course be of fixed length.
-
-4. \g{+<number>} (e.g. \g{+2} ) is now supported. It is a "forward back
-reference" and can be useful in repetitions (compare \g{-<number>} ). Perl does
-not recognize this syntax.
-
-5. pcre2grep now automatically expands its buffer up to a maximum set by
---max-buffer-size.
-
-6. The -t option (grand total) has been added to pcre2grep.
-
-7. A new function called pcre2_code_copy_with_tables() exists to copy a
-compiled pattern along with a private copy of the character tables that is
-uses.
-
-8. A user supplied a number of patches to upgrade pcre2grep under Windows and
-tidy the code.
-
-9. Several updates have been made to pcre2test and test scripts (see
-ChangeLog).
-
-
-Version 10.22 29-July-2016
---------------------------
-
-1. ChangeLog has the details of a number of bug fixes.
-
-2. The POSIX wrapper function regcomp() did not used to support back references
-and subroutine calls if called with the REG_NOSUB option. It now does.
-
-3. A new function, pcre2_code_copy(), is added, to make a copy of a compiled
-pattern.
-
-4. Support for string callouts is added to pcre2grep.
-
-5. Added the PCRE2_NO_JIT option to pcre2_match().
-
-6. The pcre2_get_error_message() function now returns with a negative error
-code if the error number it is given is unknown.
-
-7. Several updates have been made to pcre2test and test scripts (see
-ChangeLog).
-
-
-Version 10.21 12-January-2016
------------------------------
-
-1. Many bugs have been fixed. A large number of them were provoked only by very
-strange pattern input, and were discovered by fuzzers. Some others were
-discovered by code auditing. See ChangeLog for details.
-
-2. The Unicode tables have been updated to Unicode version 8.0.0.
-
-3. For Perl compatibility in EBCDIC environments, ranges such as a-z in a
-class, where both values are literal letters in the same case, omit the
-non-letter EBCDIC code points within the range.
-
-4. There have been a number of enhancements to the pcre2_substitute() function,
-giving more flexibility to replacement facilities. It is now also possible to
-cause the function to return the needed buffer size if the one given is too
-small.
-
-5. The PCRE2_ALT_VERBNAMES option causes the "name" parts of special verbs such
-as (*THEN:name) to be processed for backslashes and to take note of
-PCRE2_EXTENDED.
-
-6. PCRE2_INFO_HASBACKSLASHC makes it possible for a client to find out if a
-pattern uses \C, and --never-backslash-C makes it possible to compile a version
-PCRE2 in which the use of \C is always forbidden.
-
-7. A limit to the length of pattern that can be handled can now be set by
-calling pcre2_set_max_pattern_length().
-
-8. When matching an unanchored pattern, a match can be required to begin within
-a given number of code units after the start of the subject by calling
-pcre2_set_offset_limit().
-
-9. The pcre2test program has been extended to test new facilities, and it can
-now run the tests when LF on its own is not a valid newline sequence.
-
-10. The RunTest script has also been updated to enable more tests to be run.
-
-11. There have been some minor performance enhancements.
-
-
-Version 10.20 30-June-2015
---------------------------
-
-1. Callouts with string arguments and the pcre2_callout_enumerate() function
-have been implemented.
-
-2. The PCRE2_NEVER_BACKSLASH_C option, which locks out the use of \C, is added.
-
-3. The PCRE2_ALT_CIRCUMFLEX option lets ^ match after a newline at the end of a
-subject in multiline mode.
-
-4. The way named subpatterns are handled has been refactored. The previous
-approach had several bugs.
-
-5. The handling of \c in EBCDIC environments has been changed to conform to the
-perlebcdic document. This is an incompatible change.
-
-6. Bugs have been mended, many of them discovered by fuzzers.
-
-
-Version 10.10 06-March-2015
----------------------------
-
-1. Serialization and de-serialization functions have been added to the API,
-making it possible to save and restore sets of compiled patterns, though
-restoration must be done in the same environment that was used for compilation.
-
-2. The (*NO_JIT) feature has been added; this makes it possible for a pattern
-creator to specify that JIT is not to be used.
-
-3. A number of bugs have been fixed. In particular, bugs that caused building
-on Windows using CMake to fail have been mended.
-
-
-Version 10.00 05-January-2015
------------------------------
-
-Version 10.00 is the first release of PCRE2, a revised API for the PCRE
-library. Changes prior to 10.00 are logged in the ChangeLog file for the old
-API, up to item 20 for release 8.36. New programs are recommended to use the
-new library. Programs that use the original (PCRE1) API will need changing
-before linking with the new library.
-
-****

+ 0 - 410
src/deps/regex/pcre2/NON-AUTOTOOLS-BUILD

@@ -1,410 +0,0 @@
-Building PCRE2 without using autotools
---------------------------------------
-
-This document contains the following sections:
-
-  General
-  Generic instructions for the PCRE2 C library
-  Stack size in Windows environments
-  Linking programs in Windows environments
-  Calling conventions in Windows environments
-  Comments about Win32 builds
-  Building PCRE2 on Windows with CMake
-  Building PCRE2 on Windows with Visual Studio
-  Testing with RunTest.bat
-  Building PCRE2 on native z/OS and z/VM
-
-
-GENERAL
-
-The basic PCRE2 library consists entirely of code written in Standard C, and so
-should compile successfully on any system that has a Standard C compiler and
-library.
-
-The PCRE2 distribution includes a "configure" file for use by the
-configure/make (autotools) build system, as found in many Unix-like
-environments. The README file contains information about the options for
-"configure".
-
-There is also support for CMake, which some users prefer, especially in Windows
-environments, though it can also be run in Unix-like environments. See the
-section entitled "Building PCRE2 on Windows with CMake" below.
-
-Versions of src/config.h and src/pcre2.h are distributed in the PCRE2 tarballs
-under the names src/config.h.generic and src/pcre2.h.generic. These are
-provided for those who build PCRE2 without using "configure" or CMake. If you
-use "configure" or CMake, the .generic versions are not used.
-
-
-GENERIC INSTRUCTIONS FOR THE PCRE2 C LIBRARY
-
-The following are generic instructions for building the PCRE2 C library "by
-hand". If you are going to use CMake, this section does not apply to you; you
-can skip ahead to the CMake section. Note that the settings concerned with
-8-bit, 16-bit, and 32-bit code units relate to the type of data string that
-PCRE2 processes. They are NOT referring to the underlying operating system bit
-width. You do not have to do anything special to compile in a 64-bit
-environment, for example.
-
- (1) Copy or rename the file src/config.h.generic as src/config.h, and edit the
-     macro settings that it contains to whatever is appropriate for your
-     environment. In particular, you can alter the definition of the NEWLINE
-     macro to specify what character(s) you want to be interpreted as line
-     terminators by default.
-
-     When you subsequently compile any of the PCRE2 modules, you must specify
-     -DHAVE_CONFIG_H to your compiler so that src/config.h is included in the
-     sources.
-
-     An alternative approach is not to edit src/config.h, but to use -D on the
-     compiler command line to make any changes that you need to the
-     configuration options. In this case -DHAVE_CONFIG_H must not be set.
-
-     NOTE: There have been occasions when the way in which certain parameters
-     in src/config.h are used has changed between releases. (In the
-     configure/make world, this is handled automatically.) When upgrading to a
-     new release, you are strongly advised to review src/config.h.generic
-     before re-using what you had previously.
-
-     Note also that the src/config.h.generic file is created from a config.h
-     that was generated by Autotools, which automatically includes settings of
-     a number of macros that are not actually used by PCRE2 (for example,
-     HAVE_MEMORY_H).
-
- (2) Copy or rename the file src/pcre2.h.generic as src/pcre2.h.
-
- (3) EITHER:
-       Copy or rename file src/pcre2_chartables.c.dist as
-       src/pcre2_chartables.c.
-
-     OR:
-       Compile src/pcre2_dftables.c as a stand-alone program (using
-       -DHAVE_CONFIG_H if you have set up src/config.h), and then run it with
-       the single argument "src/pcre2_chartables.c". This generates a set of
-       standard character tables and writes them to that file. The tables are
-       generated using the default C locale for your system. If you want to use
-       a locale that is specified by LC_xxx environment variables, add the -L
-       option to the pcre2_dftables command. You must use this method if you
-       are building on a system that uses EBCDIC code.
-
-     The tables in src/pcre2_chartables.c are defaults. The caller of PCRE2 can
-     specify alternative tables at run time.
-
- (4) For a library that supports 8-bit code units in the character strings that
-     it processes, compile the following source files from the src directory,
-     setting -DPCRE2_CODE_UNIT_WIDTH=8 as a compiler option. Also set
-     -DHAVE_CONFIG_H if you have set up src/config.h with your configuration,
-     or else use other -D settings to change the configuration as required.
-
-       pcre2_auto_possess.c
-       pcre2_chartables.c
-       pcre2_compile.c
-       pcre2_config.c
-       pcre2_context.c
-       pcre2_convert.c
-       pcre2_dfa_match.c
-       pcre2_error.c
-       pcre2_extuni.c
-       pcre2_find_bracket.c
-       pcre2_jit_compile.c
-       pcre2_maketables.c
-       pcre2_match.c
-       pcre2_match_data.c
-       pcre2_newline.c
-       pcre2_ord2utf.c
-       pcre2_pattern_info.c
-       pcre2_script_run.c
-       pcre2_serialize.c
-       pcre2_string_utils.c
-       pcre2_study.c
-       pcre2_substitute.c
-       pcre2_substring.c
-       pcre2_tables.c
-       pcre2_ucd.c
-       pcre2_valid_utf.c
-       pcre2_xclass.c
-
-     Make sure that you include -I. in the compiler command (or equivalent for
-     an unusual compiler) so that all included PCRE2 header files are first
-     sought in the src directory under the current directory. Otherwise you run
-     the risk of picking up a previously-installed file from somewhere else.
-
-     Note that you must compile pcre2_jit_compile.c, even if you have not
-     defined SUPPORT_JIT in src/config.h, because when JIT support is not
-     configured, dummy functions are compiled. When JIT support IS configured,
-     pcre2_jit_compile.c #includes other files from the sljit subdirectory,
-     all of whose names begin with "sljit". It also #includes
-     src/pcre2_jit_match.c and src/pcre2_jit_misc.c, so you should not compile
-     these yourself.
-
-     Note also that the pcre2_fuzzsupport.c file contains special code that is
-     useful to those who want to run fuzzing tests on the PCRE2 library. Unless
-     you are doing that, you can ignore it.
-
- (5) Now link all the compiled code into an object library in whichever form
-     your system keeps such libraries. This is the basic PCRE2 C 8-bit library.
-     If your system has static and shared libraries, you may have to do this
-     once for each type.
-
- (6) If you want to build a library that supports 16-bit or 32-bit code units,
-     (as well as, or instead of the 8-bit library) just supply 16 or 32 as the
-     value of -DPCRE2_CODE_UNIT_WIDTH when you are compiling.
-
- (7) If you want to build the POSIX wrapper functions (which apply only to the
-     8-bit library), ensure that you have the src/pcre2posix.h file and then
-     compile src/pcre2posix.c. Link the result (on its own) as the pcre2posix
-     library.
-
- (8) The pcre2test program can be linked with any combination of the 8-bit,
-     16-bit and 32-bit libraries (depending on what you selected in
-     src/config.h). Compile src/pcre2test.c; don't forget -DHAVE_CONFIG_H if
-     necessary, but do NOT define PCRE2_CODE_UNIT_WIDTH. Then link with the
-     appropriate library/ies. If you compiled an 8-bit library, pcre2test also
-     needs the pcre2posix wrapper library.
-
- (9) Run pcre2test on the testinput files in the testdata directory, and check
-     that the output matches the corresponding testoutput files. There are
-     comments about what each test does in the section entitled "Testing PCRE2"
-     in the README file. If you compiled more than one of the 8-bit, 16-bit and
-     32-bit libraries, you need to run pcre2test with the -16 option to do
-     16-bit tests and with the -32 option to do 32-bit tests.
-
-     Some tests are relevant only when certain build-time options are selected.
-     For example, test 4 is for Unicode support, and will not run if you have
-     built PCRE2 without it. See the comments at the start of each testinput
-     file. If you have a suitable Unix-like shell, the RunTest script will run
-     the appropriate tests for you. The command "RunTest list" will output a
-     list of all the tests.
-
-     Note that the supplied files are in Unix format, with just LF characters
-     as line terminators. You may need to edit them to change this if your
-     system uses a different convention.
-
-(10) If you have built PCRE2 with SUPPORT_JIT, the JIT features can be tested
-     by running pcre2test with the -jit option. This is done automatically by
-     the RunTest script. You might also like to build and run the freestanding
-     JIT test program, src/pcre2_jit_test.c.
-
-(11) If you want to use the pcre2grep command, compile and link
-     src/pcre2grep.c; it uses only the basic 8-bit PCRE2 library (it does not
-     need the pcre2posix library). If you have built the PCRE2 library with JIT
-     support by defining SUPPORT_JIT in src/config.h, you can also define
-     SUPPORT_PCRE2GREP_JIT, which causes pcre2grep to make use of JIT (unless
-     it is run with --no-jit). If you define SUPPORT_PCRE2GREP_JIT without
-     defining SUPPORT_JIT, pcre2grep does not try to make use of JIT.
-
-
-STACK SIZE IN WINDOWS ENVIRONMENTS
-
-Prior to release 10.30 the default system stack size of 1MiB in some Windows
-environments caused issues with some tests. This should no longer be the case
-for 10.30 and later releases.
-
-
-LINKING PROGRAMS IN WINDOWS ENVIRONMENTS
-
-If you want to statically link a program against a PCRE2 library in the form of
-a non-dll .a file, you must define PCRE2_STATIC before including src/pcre2.h.
-
-
-CALLING CONVENTIONS IN WINDOWS ENVIRONMENTS
-
-It is possible to compile programs to use different calling conventions using
-MSVC. Search the web for "calling conventions" for more information. To make it
-easier to change the calling convention for the exported functions in the
-PCRE2 library, the macro PCRE2_CALL_CONVENTION is present in all the external
-definitions. It can be set externally when compiling (e.g. in CFLAGS). If it is
-not set, it defaults to empty; the default calling convention is then used
-(which is what is wanted most of the time).
-
-
-COMMENTS ABOUT WIN32 BUILDS (see also "BUILDING PCRE2 ON WINDOWS WITH CMAKE")
-
-There are two ways of building PCRE2 using the "configure, make, make install"
-paradigm on Windows systems: using MinGW or using Cygwin. These are not at all
-the same thing; they are completely different from each other. There is also
-support for building using CMake, which some users find a more straightforward
-way of building PCRE2 under Windows.
-
-The MinGW home page (http://www.mingw.org/) says this:
-
-  MinGW: A collection of freely available and freely distributable Windows
-  specific header files and import libraries combined with GNU toolsets that
-  allow one to produce native Windows programs that do not rely on any
-  3rd-party C runtime DLLs.
-
-The Cygwin home page (http://www.cygwin.com/) says this:
-
-  Cygwin is a Linux-like environment for Windows. It consists of two parts:
-
-  . A DLL (cygwin1.dll) which acts as a Linux API emulation layer providing
-    substantial Linux API functionality
-
-  . A collection of tools which provide Linux look and feel.
-
-On both MinGW and Cygwin, PCRE2 should build correctly using:
-
-  ./configure && make && make install
-
-This should create two libraries called libpcre2-8 and libpcre2-posix. These
-are independent libraries: when you link with libpcre2-posix you must also link
-with libpcre2-8, which contains the basic functions.
-
-Using Cygwin's compiler generates libraries and executables that depend on
-cygwin1.dll. If a library that is generated this way is distributed,
-cygwin1.dll has to be distributed as well. Since cygwin1.dll is under the GPL
-licence, this forces not only PCRE2 to be under the GPL, but also the entire
-application. A distributor who wants to keep their own code proprietary must
-purchase an appropriate Cygwin licence.
-
-MinGW has no such restrictions. The MinGW compiler generates a library or
-executable that can run standalone on Windows without any third party dll or
-licensing issues.
-
-But there is more complication:
-
-If a Cygwin user uses the -mno-cygwin Cygwin gcc flag, what that really does is
-to tell Cygwin's gcc to use the MinGW gcc. Cygwin's gcc is only acting as a
-front end to MinGW's gcc (if you install Cygwin's gcc, you get both Cygwin's
-gcc and MinGW's gcc). So, a user can:
-
-. Build native binaries by using MinGW or by getting Cygwin and using
-  -mno-cygwin.
-
-. Build binaries that depend on cygwin1.dll by using Cygwin with the normal
-  compiler flags.
-
-The test files that are supplied with PCRE2 are in UNIX format, with LF
-characters as line terminators. Unless your PCRE2 library uses a default
-newline option that includes LF as a valid newline, it may be necessary to
-change the line terminators in the test files to get some of the tests to work.
-
-
-BUILDING PCRE2 ON WINDOWS WITH CMAKE
-
-CMake is an alternative configuration facility that can be used instead of
-"configure". CMake creates project files (make files, solution files, etc.)
-tailored to numerous development environments, including Visual Studio,
-Borland, Msys, MinGW, NMake, and Unix. If possible, use short paths with no
-spaces in the names for your CMake installation and your PCRE2 source and build
-directories.
-
-The following instructions were contributed by a PCRE1 user, but they should
-also work for PCRE2. If they are not followed exactly, errors may occur. In the
-event that errors do occur, it is recommended that you delete the CMake cache
-before attempting to repeat the CMake build process. In the CMake GUI, the
-cache can be deleted by selecting "File > Delete Cache".
-
-1.  Install the latest CMake version available from http://www.cmake.org/, and
-    ensure that cmake\bin is on your path.
-
-2.  Unzip (retaining folder structure) the PCRE2 source tree into a source
-    directory such as C:\pcre2. You should ensure your local date and time
-    is not earlier than the file dates in your source dir if the release is
-    very new.
-
-3.  Create a new, empty build directory, preferably a subdirectory of the
-    source dir. For example, C:\pcre2\pcre2-xx\build.
-
-4.  Run cmake-gui from the Shell envirornment of your build tool, for example,
-    Msys for Msys/MinGW or Visual Studio Command Prompt for VC/VC++. Do not try
-    to start Cmake from the Windows Start menu, as this can lead to errors.
-
-5.  Enter C:\pcre2\pcre2-xx and C:\pcre2\pcre2-xx\build for the source and
-    build directories, respectively.
-
-6.  Hit the "Configure" button.
-
-7.  Select the particular IDE / build tool that you are using (Visual
-    Studio, MSYS makefiles, MinGW makefiles, etc.)
-
-8.  The GUI will then list several configuration options. This is where
-    you can disable Unicode support or select other PCRE2 optional features.
-
-9.  Hit "Configure" again. The adjacent "Generate" button should now be
-    active.
-
-10. Hit "Generate".
-
-11. The build directory should now contain a usable build system, be it a
-    solution file for Visual Studio, makefiles for MinGW, etc. Exit from
-    cmake-gui and use the generated build system with your compiler or IDE.
-    E.g., for MinGW you can run "make", or for Visual Studio, open the PCRE2
-    solution, select the desired configuration (Debug, or Release, etc.) and
-    build the ALL_BUILD project.
-
-12. If during configuration with cmake-gui you've elected to build the test
-    programs, you can execute them by building the test project. E.g., for
-    MinGW: "make test"; for Visual Studio build the RUN_TESTS project. The
-    most recent build configuration is targeted by the tests. A summary of
-    test results is presented. Complete test output is subsequently
-    available for review in Testing\Temporary under your build dir.
-
-
-BUILDING PCRE2 ON WINDOWS WITH VISUAL STUDIO
-
-The code currently cannot be compiled without a stdint.h header, which is
-available only in relatively recent versions of Visual Studio. However, this
-portable and permissively-licensed implementation of the header worked without
-issue:
-
-  http://www.azillionmonkeys.com/qed/pstdint.h
-
-Just rename it and drop it into the top level of the build tree.
-
-
-TESTING WITH RUNTEST.BAT
-
-If configured with CMake, building the test project ("make test" or building
-ALL_TESTS in Visual Studio) creates (and runs) pcre2_test.bat (and depending
-on your configuration options, possibly other test programs) in the build
-directory. The pcre2_test.bat script runs RunTest.bat with correct source and
-exe paths.
-
-For manual testing with RunTest.bat, provided the build dir is a subdirectory
-of the source directory: Open command shell window. Chdir to the location
-of your pcre2test.exe and pcre2grep.exe programs. Call RunTest.bat with
-"..\RunTest.Bat" or "..\..\RunTest.bat" as appropriate.
-
-To run only a particular test with RunTest.Bat provide a test number argument.
-
-Otherwise:
-
-1. Copy RunTest.bat into the directory where pcre2test.exe and pcre2grep.exe
-   have been created.
-
-2. Edit RunTest.bat to indentify the full or relative location of
-   the pcre2 source (wherein which the testdata folder resides), e.g.:
-
-   set srcdir=C:\pcre2\pcre2-10.00
-
-3. In a Windows command environment, chdir to the location of your bat and
-   exe programs.
-
-4. Run RunTest.bat. Test outputs will automatically be compared to expected
-   results, and discrepancies will be identified in the console output.
-
-To independently test the just-in-time compiler, run pcre2_jit_test.exe.
-
-
-BUILDING PCRE2 ON NATIVE Z/OS AND Z/VM
-
-z/OS and z/VM are operating systems for mainframe computers, produced by IBM.
-The character code used is EBCDIC, not ASCII or Unicode. In z/OS, UNIX APIs and
-applications can be supported through UNIX System Services, and in such an
-environment it should be possible to build PCRE2 in the same way as in other
-systems, with the EBCDIC related configuration settings, but it is not known if
-anybody has tried this.
-
-In native z/OS (without UNIX System Services) and in z/VM, special ports are
-required. For details, please see file 939 on this web site:
-
-  http://www.cbttape.org
-
-Everything in that location, source and executable, is in EBCDIC and native
-z/OS file formats. The port provides an API for LE languages such as COBOL and
-for the z/OS and z/VM versions of the Rexx languages.
-
-===========================
-Last Updated: 28 April 2021
-===========================

+ 0 - 236
src/deps/regex/pcre2/PrepareRelease

@@ -1,236 +0,0 @@
-#/bin/sh
-
-# Script to prepare the files for building a PCRE2 release. It does some
-# processing of the documentation, detrails files, and creates pcre2.h.generic
-# and config.h.generic (for use by builders who can't run ./configure).
-
-# You must run this script before runnning "make dist". If its first argument
-# is "doc", it stops after preparing the documentation. There are no other
-# arguments. The script makes use of the following files:
-
-# 132html     A Perl script that converts a .1 or .3 man page into HTML. It
-#             "knows" the relevant troff constructs that are used in the PCRE2
-#             man pages.
-
-# CheckMan    A Perl script that checks man pages for typos in the mark up.
-
-# CleanTxt    A Perl script that cleans up the output of "nroff -man" by
-#             removing backspaces and other redundant text so as to produce
-#             a readable .txt file.
-
-# Detrail     A Perl script that removes trailing spaces from files.
-
-# doc/index.html.src
-#             A file that is copied as index.html into the doc/html directory
-#             when the HTML documentation is built. It works like this so that
-#             doc/html can be deleted and re-created from scratch.
-
-# README & NON-AUTOTOOLS-BUILD
-#             These files are copied into the doc/html directory, with .txt
-#             extensions so that they can by hyperlinked from the HTML
-#             documentation, because some people just go to the HTML without
-#             looking for text files.
-
-
-# First, sort out the documentation. Remove pcre2demo.3 first because it won't
-# pass the markup check (it is created below, using markup that none of the
-# other pages use).
-
-cd doc
-echo Processing documentation
-
-/bin/rm -f pcre2demo.3
-
-# Check the remaining man pages
-
-perl ../CheckMan *.1 *.3
-if [ $? != 0 ] ; then exit 1; fi
-
-# Make Text form of the documentation. It needs some mangling to make it
-# tidy for online reading. Concatenate all the .3 stuff, but omit the
-# individual function pages.
-
-cat <<End >pcre2.txt
------------------------------------------------------------------------------
-This file contains a concatenation of the PCRE2 man pages, converted to plain
-text format for ease of searching with a text editor, or for use on systems
-that do not have a man page processor. The small individual files that give
-synopses of each function in the library have not been included. Neither has
-the pcre2demo program. There are separate text files for the pcre2grep and
-pcre2test commands.
------------------------------------------------------------------------------
-
-
-End
-
-echo "Making pcre2.txt"
-for file in pcre2 pcre2api pcre2build pcre2callout pcre2compat pcre2jit \
-            pcre2limits pcre2matching pcre2partial pcre2pattern pcre2perform \
-            pcre2posix pcre2sample pcre2serialize pcre2syntax \
-            pcre2unicode ; do
-  echo "  Processing $file.3"
-  nroff -c -man $file.3 >$file.rawtxt
-  perl ../CleanTxt <$file.rawtxt >>pcre2.txt
-  /bin/rm $file.rawtxt
-  echo "------------------------------------------------------------------------------" >>pcre2.txt
-  if [ "$file" != "pcre2sample" ] ; then
-    echo " " >>pcre2.txt
-    echo " " >>pcre2.txt
-  fi
-done
-
-# The three commands
-for file in pcre2test pcre2grep pcre2-config ; do
-  echo Making $file.txt
-  nroff -c -man $file.1 >$file.rawtxt
-  perl ../CleanTxt <$file.rawtxt >$file.txt
-  /bin/rm $file.rawtxt
-done
-
-
-# Make pcre2demo.3 from the pcre2demo.c source file
-
-echo "Making pcre2demo.3"
-perl <<"END" >pcre2demo.3
-  open(IN, "../src/pcre2demo.c") || die "Failed to open src/pcre2demo.c\n";
-  open(OUT, ">pcre2demo.3") || die "Failed to open pcre2demo.3\n";
-  print OUT ".\\\" Start example.\n" .
-            ".de EX\n" .
-            ".  nr mE \\\\n(.f\n" .
-            ".  nf\n" .
-            ".  nh\n" .
-            ".  ft CW\n" .
-            "..\n" .
-            ".\n" .
-            ".\n" .
-            ".\\\" End example.\n" .
-            ".de EE\n" .
-            ".  ft \\\\n(mE\n" .
-            ".  fi\n" .
-            ".  hy \\\\n(HY\n" .
-            "..\n" .
-            ".\n" .
-            ".EX\n" ;
-  while (<IN>)
-    {
-    s/\\/\\e/g;
-    print OUT;
-    }
-  print OUT ".EE\n";
-  close(IN);
-  close(OUT);
-END
-if [ $? != 0 ] ; then exit 1; fi
-
-
-# Make HTML form of the documentation.
-
-echo "Making HTML documentation"
-/bin/rm html/*
-cp index.html.src html/index.html
-cp ../README html/README.txt
-cp ../NON-AUTOTOOLS-BUILD html/NON-AUTOTOOLS-BUILD.txt
-
-for file in *.1 ; do
-  base=`basename $file .1`
-  echo "  Making $base.html"
-  perl ../132html -toc $base <$file >html/$base.html
-done
-
-# Exclude table of contents for function summaries. It seems that expr
-# forces an anchored regex. Also exclude them for small pages that have
-# only one section.
-
-for file in *.3 ; do
-  base=`basename $file .3`
-  toc=-toc
-  if [ `expr $base : '.*_'` -ne 0 ] ; then toc="" ; fi
-  if [ "$base" = "pcre2sample" ]  || \
-     [ "$base" = "pcre2compat" ]  || \
-     [ "$base" = "pcre2limits" ]  || \
-     [ "$base" = "pcre2unicode" ] ; then
-    toc=""
-  fi
-  echo "  Making $base.html"
-  perl ../132html $toc $base <$file >html/$base.html
-  if [ $? != 0 ] ; then exit 1; fi
-done
-
-# End of documentation processing; stop if only documentation required.
-
-cd ..
-echo Documentation done
-if [ "$1" = "doc" ] ; then exit; fi
-
-# These files are detrailed; do not detrail the test data because there may be
-# significant trailing spaces. Do not detrail RunTest.bat, because it has CRLF
-# line endings and the detrail script removes all trailing white space. The
-# configure files are also omitted from the detrailing.
-
-files="\
-  Makefile.am \
-  configure.ac \
-  README \
-  LICENCE \
-  COPYING \
-  AUTHORS \
-  NEWS \
-  NON-AUTOTOOLS-BUILD \
-  INSTALL \
-  132html \
-  CleanTxt \
-  Detrail \
-  ChangeLog \
-  CMakeLists.txt \
-  RunGrepTest \
-  RunTest \
-  pcre2-config.in \
-  perltest.sh \
-  libpcre2-8.pc.in \
-  libpcre2-16.pc.in \
-  libpcre2-32.pc.in \
-  libpcre2-posix.pc.in \
-  src/pcre2_dftables.c \
-  src/pcre2.h.in \
-  src/pcre2_auto_possess.c \
-  src/pcre2_compile.c \
-  src/pcre2_config.c \
-  src/pcre2_context.c \
-  src/pcre2_convert.c \
-  src/pcre2_dfa_match.c \
-  src/pcre2_error.c \
-  src/pcre2_extuni.c \
-  src/pcre2_find_bracket.c \
-  src/pcre2_internal.h \
-  src/pcre2_intmodedep.h \
-  src/pcre2_jit_compile.c \
-  src/pcre2_jit_match.c \
-  src/pcre2_jit_misc.c \
-  src/pcre2_jit_test.c \
-  src/pcre2_maketables.c \
-  src/pcre2_match.c \
-  src/pcre2_match_data.c \
-  src/pcre2_newline.c \
-  src/pcre2_ord2utf.c \
-  src/pcre2_pattern_info.c \
-  src/pcre2_printint.c \
-  src/pcre2_string_utils.c \
-  src/pcre2_study.c \
-  src/pcre2_substring.c \
-  src/pcre2_tables.c \
-  src/pcre2_ucd.c \
-  src/pcre2_ucp.h \
-  src/pcre2_valid_utf.c \
-  src/pcre2_xclass.c \
-  src/pcre2demo.c \
-  src/pcre2grep.c \
-  src/pcre2posix.c \
-  src/pcre2posix.h \
-  src/pcre2test.c"
-
-echo Detrailing
-perl ./Detrail $files doc/p* doc/html/*
-
-echo Done
-
-#End

+ 0 - 907
src/deps/regex/pcre2/README

@@ -1,907 +0,0 @@
-README file for PCRE2 (Perl-compatible regular expression library)
-------------------------------------------------------------------
-
-PCRE2 is a re-working of the original PCRE1 library to provide an entirely new
-API. Since its initial release in 2015, there has been further development of
-the code and it now differs from PCRE1 in more than just the API. There are new
-features, and the internals have been improved. The original PCRE1 library is
-now obsolete and should not be used in new projects. The latest release of
-PCRE2 is available in three alternative formats from:
-
-https://ftp.pcre.org/pub/pcre/pcre2-10.xx.tar.gz
-https://ftp.pcre.org/pub/pcre/pcre2-10.xx.tar.bz2
-https://ftp.pcre.org/pub/pcre/pcre2-10.xx.tar.zip
-
-There is a mailing list for discussion about the development of PCRE at
-pcre-dev@exim.org. You can access the archives and subscribe or manage your
-subscription here:
-
-   https://lists.exim.org/mailman/listinfo/pcre-dev
-
-Please read the NEWS file if you are upgrading from a previous release. The
-contents of this README file are:
-
-  The PCRE2 APIs
-  Documentation for PCRE2
-  Contributions by users of PCRE2
-  Building PCRE2 on non-Unix-like systems
-  Building PCRE2 without using autotools
-  Building PCRE2 using autotools
-  Retrieving configuration information
-  Shared libraries
-  Cross-compiling using autotools
-  Making new tarballs
-  Testing PCRE2
-  Character tables
-  File manifest
-
-
-The PCRE2 APIs
---------------
-
-PCRE2 is written in C, and it has its own API. There are three sets of
-functions, one for the 8-bit library, which processes strings of bytes, one for
-the 16-bit library, which processes strings of 16-bit values, and one for the
-32-bit library, which processes strings of 32-bit values. Unlike PCRE1, there
-are no C++ wrappers.
-
-The distribution does contain a set of C wrapper functions for the 8-bit
-library that are based on the POSIX regular expression API (see the pcre2posix
-man page). These are built into a library called libpcre2-posix. Note that this
-just provides a POSIX calling interface to PCRE2; the regular expressions
-themselves still follow Perl syntax and semantics. The POSIX API is restricted,
-and does not give full access to all of PCRE2's facilities.
-
-The header file for the POSIX-style functions is called pcre2posix.h. The
-official POSIX name is regex.h, but I did not want to risk possible problems
-with existing files of that name by distributing it that way. To use PCRE2 with
-an existing program that uses the POSIX API, pcre2posix.h will have to be
-renamed or pointed at by a link (or the program modified, of course). See the
-pcre2posix documentation for more details.
-
-
-Documentation for PCRE2
------------------------
-
-If you install PCRE2 in the normal way on a Unix-like system, you will end up
-with a set of man pages whose names all start with "pcre2". The one that is
-just called "pcre2" lists all the others. In addition to these man pages, the
-PCRE2 documentation is supplied in two other forms:
-
-  1. There are files called doc/pcre2.txt, doc/pcre2grep.txt, and
-     doc/pcre2test.txt in the source distribution. The first of these is a
-     concatenation of the text forms of all the section 3 man pages except the
-     listing of pcre2demo.c and those that summarize individual functions. The
-     other two are the text forms of the section 1 man pages for the pcre2grep
-     and pcre2test commands. These text forms are provided for ease of scanning
-     with text editors or similar tools. They are installed in
-     <prefix>/share/doc/pcre2, where <prefix> is the installation prefix
-     (defaulting to /usr/local).
-
-  2. A set of files containing all the documentation in HTML form, hyperlinked
-     in various ways, and rooted in a file called index.html, is distributed in
-     doc/html and installed in <prefix>/share/doc/pcre2/html.
-
-
-Building PCRE2 on non-Unix-like systems
----------------------------------------
-
-For a non-Unix-like system, please read the file NON-AUTOTOOLS-BUILD, though if
-your system supports the use of "configure" and "make" you may be able to build
-PCRE2 using autotools in the same way as for many Unix-like systems.
-
-PCRE2 can also be configured using CMake, which can be run in various ways
-(command line, GUI, etc). This creates Makefiles, solution files, etc. The file
-NON-AUTOTOOLS-BUILD has information about CMake.
-
-PCRE2 has been compiled on many different operating systems. It should be
-straightforward to build PCRE2 on any system that has a Standard C compiler and
-library, because it uses only Standard C functions.
-
-
-Building PCRE2 without using autotools
---------------------------------------
-
-The use of autotools (in particular, libtool) is problematic in some
-environments, even some that are Unix or Unix-like. See the NON-AUTOTOOLS-BUILD
-file for ways of building PCRE2 without using autotools.
-
-
-Building PCRE2 using autotools
-------------------------------
-
-The following instructions assume the use of the widely used "configure; make;
-make install" (autotools) process.
-
-To build PCRE2 on system that supports autotools, first run the "configure"
-command from the PCRE2 distribution directory, with your current directory set
-to the directory where you want the files to be created. This command is a
-standard GNU "autoconf" configuration script, for which generic instructions
-are supplied in the file INSTALL.
-
-Most commonly, people build PCRE2 within its own distribution directory, and in
-this case, on many systems, just running "./configure" is sufficient. However,
-the usual methods of changing standard defaults are available. For example:
-
-CFLAGS='-O2 -Wall' ./configure --prefix=/opt/local
-
-This command specifies that the C compiler should be run with the flags '-O2
--Wall' instead of the default, and that "make install" should install PCRE2
-under /opt/local instead of the default /usr/local.
-
-If you want to build in a different directory, just run "configure" with that
-directory as current. For example, suppose you have unpacked the PCRE2 source
-into /source/pcre2/pcre2-xxx, but you want to build it in
-/build/pcre2/pcre2-xxx:
-
-cd /build/pcre2/pcre2-xxx
-/source/pcre2/pcre2-xxx/configure
-
-PCRE2 is written in C and is normally compiled as a C library. However, it is
-possible to build it as a C++ library, though the provided building apparatus
-does not have any features to support this.
-
-There are some optional features that can be included or omitted from the PCRE2
-library. They are also documented in the pcre2build man page.
-
-. By default, both shared and static libraries are built. You can change this
-  by adding one of these options to the "configure" command:
-
-  --disable-shared
-  --disable-static
-
-  (See also "Shared libraries on Unix-like systems" below.)
-
-. By default, only the 8-bit library is built. If you add --enable-pcre2-16 to
-  the "configure" command, the 16-bit library is also built. If you add
-  --enable-pcre2-32 to the "configure" command, the 32-bit library is also
-  built. If you want only the 16-bit or 32-bit library, use --disable-pcre2-8
-  to disable building the 8-bit library.
-
-. If you want to include support for just-in-time (JIT) compiling, which can
-  give large performance improvements on certain platforms, add --enable-jit to
-  the "configure" command. This support is available only for certain hardware
-  architectures. If you try to enable it on an unsupported architecture, there
-  will be a compile time error. If in doubt, use --enable-jit=auto, which
-  enables JIT only if the current hardware is supported.
-
-. If you are enabling JIT under SELinux environment you may also want to add
-  --enable-jit-sealloc, which enables the use of an executable memory allocator
-  that is compatible with SELinux. Warning: this allocator is experimental!
-  It does not support fork() operation and may crash when no disk space is
-  available. This option has no effect if JIT is disabled.
-
-. If you do not want to make use of the default support for UTF-8 Unicode
-  character strings in the 8-bit library, UTF-16 Unicode character strings in
-  the 16-bit library, or UTF-32 Unicode character strings in the 32-bit
-  library, you can add --disable-unicode to the "configure" command. This
-  reduces the size of the libraries. It is not possible to configure one
-  library with Unicode support, and another without, in the same configuration.
-  It is also not possible to use --enable-ebcdic (see below) with Unicode
-  support, so if this option is set, you must also use --disable-unicode.
-
-  When Unicode support is available, the use of a UTF encoding still has to be
-  enabled by setting the PCRE2_UTF option at run time or starting a pattern
-  with (*UTF). When PCRE2 is compiled with Unicode support, its input can only
-  either be ASCII or UTF-8/16/32, even when running on EBCDIC platforms.
-
-  As well as supporting UTF strings, Unicode support includes support for the
-  \P, \p, and \X sequences that recognize Unicode character properties.
-  However, only the basic two-letter properties such as Lu are supported.
-  Escape sequences such as \d and \w in patterns do not by default make use of
-  Unicode properties, but can be made to do so by setting the PCRE2_UCP option
-  or starting a pattern with (*UCP).
-
-. You can build PCRE2 to recognize either CR or LF or the sequence CRLF, or any
-  of the preceding, or any of the Unicode newline sequences, or the NUL (zero)
-  character as indicating the end of a line. Whatever you specify at build time
-  is the default; the caller of PCRE2 can change the selection at run time. The
-  default newline indicator is a single LF character (the Unix standard). You
-  can specify the default newline indicator by adding --enable-newline-is-cr,
-  --enable-newline-is-lf, --enable-newline-is-crlf,
-  --enable-newline-is-anycrlf, --enable-newline-is-any, or
-  --enable-newline-is-nul to the "configure" command, respectively.
-
-. By default, the sequence \R in a pattern matches any Unicode line ending
-  sequence. This is independent of the option specifying what PCRE2 considers
-  to be the end of a line (see above). However, the caller of PCRE2 can
-  restrict \R to match only CR, LF, or CRLF. You can make this the default by
-  adding --enable-bsr-anycrlf to the "configure" command (bsr = "backslash R").
-
-. In a pattern, the escape sequence \C matches a single code unit, even in a
-  UTF mode. This can be dangerous because it breaks up multi-code-unit
-  characters. You can build PCRE2 with the use of \C permanently locked out by
-  adding --enable-never-backslash-C (note the upper case C) to the "configure"
-  command. When \C is allowed by the library, individual applications can lock
-  it out by calling pcre2_compile() with the PCRE2_NEVER_BACKSLASH_C option.
-
-. PCRE2 has a counter that limits the depth of nesting of parentheses in a
-  pattern. This limits the amount of system stack that a pattern uses when it
-  is compiled. The default is 250, but you can change it by setting, for
-  example,
-
-  --with-parens-nest-limit=500
-
-. PCRE2 has a counter that can be set to limit the amount of computing resource
-  it uses when matching a pattern. If the limit is exceeded during a match, the
-  match fails. The default is ten million. You can change the default by
-  setting, for example,
-
-  --with-match-limit=500000
-
-  on the "configure" command. This is just the default; individual calls to
-  pcre2_match() or pcre2_dfa_match() can supply their own value. There is more
-  discussion in the pcre2api man page (search for pcre2_set_match_limit).
-
-. There is a separate counter that limits the depth of nested backtracking
-  (pcre2_match()) or nested function calls (pcre2_dfa_match()) during a
-  matching process, which indirectly limits the amount of heap memory that is
-  used, and in the case of pcre2_dfa_match() the amount of stack as well. This
-  counter also has a default of ten million, which is essentially "unlimited".
-  You can change the default by setting, for example,
-
-  --with-match-limit-depth=5000
-
-  There is more discussion in the pcre2api man page (search for
-  pcre2_set_depth_limit).
-
-. You can also set an explicit limit on the amount of heap memory used by
-  the pcre2_match() and pcre2_dfa_match() interpreters:
-
-  --with-heap-limit=500
-
-  The units are kibibytes (units of 1024 bytes). This limit does not apply when
-  the JIT optimization (which has its own memory control features) is used.
-  There is more discussion on the pcre2api man page (search for
-  pcre2_set_heap_limit).
-
-. In the 8-bit library, the default maximum compiled pattern size is around
-  64 kibibytes. You can increase this by adding --with-link-size=3 to the
-  "configure" command. PCRE2 then uses three bytes instead of two for offsets
-  to different parts of the compiled pattern. In the 16-bit library,
-  --with-link-size=3 is the same as --with-link-size=4, which (in both
-  libraries) uses four-byte offsets. Increasing the internal link size reduces
-  performance in the 8-bit and 16-bit libraries. In the 32-bit library, the
-  link size setting is ignored, as 4-byte offsets are always used.
-
-. For speed, PCRE2 uses four tables for manipulating and identifying characters
-  whose code point values are less than 256. By default, it uses a set of
-  tables for ASCII encoding that is part of the distribution. If you specify
-
-  --enable-rebuild-chartables
-
-  a program called pcre2_dftables is compiled and run in the default C locale
-  when you obey "make". It builds a source file called pcre2_chartables.c. If
-  you do not specify this option, pcre2_chartables.c is created as a copy of
-  pcre2_chartables.c.dist. See "Character tables" below for further
-  information.
-
-. It is possible to compile PCRE2 for use on systems that use EBCDIC as their
-  character code (as opposed to ASCII/Unicode) by specifying
-
-  --enable-ebcdic --disable-unicode
-
-  This automatically implies --enable-rebuild-chartables (see above). However,
-  when PCRE2 is built this way, it always operates in EBCDIC. It cannot support
-  both EBCDIC and UTF-8/16/32. There is a second option, --enable-ebcdic-nl25,
-  which specifies that the code value for the EBCDIC NL character is 0x25
-  instead of the default 0x15.
-
-. If you specify --enable-debug, additional debugging code is included in the
-  build. This option is intended for use by the PCRE2 maintainers.
-
-. In environments where valgrind is installed, if you specify
-
-  --enable-valgrind
-
-  PCRE2 will use valgrind annotations to mark certain memory regions as
-  unaddressable. This allows it to detect invalid memory accesses, and is
-  mostly useful for debugging PCRE2 itself.
-
-. In environments where the gcc compiler is used and lcov is installed, if you
-  specify
-
-  --enable-coverage
-
-  the build process implements a code coverage report for the test suite. The
-  report is generated by running "make coverage". If ccache is installed on
-  your system, it must be disabled when building PCRE2 for coverage reporting.
-  You can do this by setting the environment variable CCACHE_DISABLE=1 before
-  running "make" to build PCRE2. There is more information about coverage
-  reporting in the "pcre2build" documentation.
-
-. When JIT support is enabled, pcre2grep automatically makes use of it, unless
-  you add --disable-pcre2grep-jit to the "configure" command.
-
-. There is support for calling external programs during matching in the
-  pcre2grep command, using PCRE2's callout facility with string arguments. This
-  support can be disabled by adding --disable-pcre2grep-callout to the
-  "configure" command. There are two kinds of callout: one that generates
-  output from inbuilt code, and another that calls an external program. The
-  latter has special support for Windows and VMS; otherwise it assumes the
-  existence of the fork() function. This facility can be disabled by adding
-  --disable-pcre2grep-callout-fork to the "configure" command.
-
-. The pcre2grep program currently supports only 8-bit data files, and so
-  requires the 8-bit PCRE2 library. It is possible to compile pcre2grep to use
-  libz and/or libbz2, in order to read .gz and .bz2 files (respectively), by
-  specifying one or both of
-
-  --enable-pcre2grep-libz
-  --enable-pcre2grep-libbz2
-
-  Of course, the relevant libraries must be installed on your system.
-
-. The default starting size (in bytes) of the internal buffer used by pcre2grep
-  can be set by, for example:
-
-  --with-pcre2grep-bufsize=51200
-
-  The value must be a plain integer. The default is 20480. The amount of memory
-  used by pcre2grep is actually three times this number, to allow for "before"
-  and "after" lines. If very long lines are encountered, the buffer is
-  automatically enlarged, up to a fixed maximum size.
-
-. The default maximum size of pcre2grep's internal buffer can be set by, for
-  example:
-
-  --with-pcre2grep-max-bufsize=2097152
-
-  The default is either 1048576 or the value of --with-pcre2grep-bufsize,
-  whichever is the larger.
-
-. It is possible to compile pcre2test so that it links with the libreadline
-  or libedit libraries, by specifying, respectively,
-
-  --enable-pcre2test-libreadline or --enable-pcre2test-libedit
-
-  If this is done, when pcre2test's input is from a terminal, it reads it using
-  the readline() function. This provides line-editing and history facilities.
-  Note that libreadline is GPL-licenced, so if you distribute a binary of
-  pcre2test linked in this way, there may be licensing issues. These can be
-  avoided by linking with libedit (which has a BSD licence) instead.
-
-  Enabling libreadline causes the -lreadline option to be added to the
-  pcre2test build. In many operating environments with a sytem-installed
-  readline library this is sufficient. However, in some environments (e.g. if
-  an unmodified distribution version of readline is in use), it may be
-  necessary to specify something like LIBS="-lncurses" as well. This is
-  because, to quote the readline INSTALL, "Readline uses the termcap functions,
-  but does not link with the termcap or curses library itself, allowing
-  applications which link with readline the to choose an appropriate library."
-  If you get error messages about missing functions tgetstr, tgetent, tputs,
-  tgetflag, or tgoto, this is the problem, and linking with the ncurses library
-  should fix it.
-
-. The C99 standard defines formatting modifiers z and t for size_t and
-  ptrdiff_t values, respectively. By default, PCRE2 uses these modifiers in
-  environments other than Microsoft Visual Studio when __STDC_VERSION__ is
-  defined and has a value greater than or equal to 199901L (indicating C99).
-  However, there is at least one environment that claims to be C99 but does not
-  support these modifiers. If --disable-percent-zt is specified, no use is made
-  of the z or t modifiers. Instead or %td or %zu, %lu is used, with a cast for
-  size_t values.
-
-. There is a special option called --enable-fuzz-support for use by people who
-  want to run fuzzing tests on PCRE2. At present this applies only to the 8-bit
-  library. If set, it causes an extra library called libpcre2-fuzzsupport.a to
-  be built, but not installed. This contains a single function called
-  LLVMFuzzerTestOneInput() whose arguments are a pointer to a string and the
-  length of the string. When called, this function tries to compile the string
-  as a pattern, and if that succeeds, to match it. This is done both with no
-  options and with some random options bits that are generated from the string.
-  Setting --enable-fuzz-support also causes a binary called pcre2fuzzcheck to
-  be created. This is normally run under valgrind or used when PCRE2 is
-  compiled with address sanitizing enabled. It calls the fuzzing function and
-  outputs information about it is doing. The input strings are specified by
-  arguments: if an argument starts with "=" the rest of it is a literal input
-  string. Otherwise, it is assumed to be a file name, and the contents of the
-  file are the test string.
-
-. Releases before 10.30 could be compiled with --disable-stack-for-recursion,
-  which caused pcre2_match() to use individual blocks on the heap for
-  backtracking instead of recursive function calls (which use the stack). This
-  is now obsolete since pcre2_match() was refactored always to use the heap (in
-  a much more efficient way than before). This option is retained for backwards
-  compatibility, but has no effect other than to output a warning.
-
-The "configure" script builds the following files for the basic C library:
-
-. Makefile             the makefile that builds the library
-. src/config.h         build-time configuration options for the library
-. src/pcre2.h          the public PCRE2 header file
-. pcre2-config          script that shows the building settings such as CFLAGS
-                         that were set for "configure"
-. libpcre2-8.pc        )
-. libpcre2-16.pc       ) data for the pkg-config command
-. libpcre2-32.pc       )
-. libpcre2-posix.pc    )
-. libtool              script that builds shared and/or static libraries
-
-Versions of config.h and pcre2.h are distributed in the src directory of PCRE2
-tarballs under the names config.h.generic and pcre2.h.generic. These are
-provided for those who have to build PCRE2 without using "configure" or CMake.
-If you use "configure" or CMake, the .generic versions are not used.
-
-The "configure" script also creates config.status, which is an executable
-script that can be run to recreate the configuration, and config.log, which
-contains compiler output from tests that "configure" runs.
-
-Once "configure" has run, you can run "make". This builds whichever of the
-libraries libpcre2-8, libpcre2-16 and libpcre2-32 are configured, and a test
-program called pcre2test. If you enabled JIT support with --enable-jit, another
-test program called pcre2_jit_test is built as well. If the 8-bit library is
-built, libpcre2-posix and the pcre2grep command are also built. Running
-"make" with the -j option may speed up compilation on multiprocessor systems.
-
-The command "make check" runs all the appropriate tests. Details of the PCRE2
-tests are given below in a separate section of this document. The -j option of
-"make" can also be used when running the tests.
-
-You can use "make install" to install PCRE2 into live directories on your
-system. The following are installed (file names are all relative to the
-<prefix> that is set when "configure" is run):
-
-  Commands (bin):
-    pcre2test
-    pcre2grep (if 8-bit support is enabled)
-    pcre2-config
-
-  Libraries (lib):
-    libpcre2-8      (if 8-bit support is enabled)
-    libpcre2-16     (if 16-bit support is enabled)
-    libpcre2-32     (if 32-bit support is enabled)
-    libpcre2-posix  (if 8-bit support is enabled)
-
-  Configuration information (lib/pkgconfig):
-    libpcre2-8.pc
-    libpcre2-16.pc
-    libpcre2-32.pc
-    libpcre2-posix.pc
-
-  Header files (include):
-    pcre2.h
-    pcre2posix.h
-
-  Man pages (share/man/man{1,3}):
-    pcre2grep.1
-    pcre2test.1
-    pcre2-config.1
-    pcre2.3
-    pcre2*.3 (lots more pages, all starting "pcre2")
-
-  HTML documentation (share/doc/pcre2/html):
-    index.html
-    *.html (lots more pages, hyperlinked from index.html)
-
-  Text file documentation (share/doc/pcre2):
-    AUTHORS
-    COPYING
-    ChangeLog
-    LICENCE
-    NEWS
-    README
-    pcre2.txt         (a concatenation of the man(3) pages)
-    pcre2test.txt     the pcre2test man page
-    pcre2grep.txt     the pcre2grep man page
-    pcre2-config.txt  the pcre2-config man page
-
-If you want to remove PCRE2 from your system, you can run "make uninstall".
-This removes all the files that "make install" installed. However, it does not
-remove any directories, because these are often shared with other programs.
-
-
-Retrieving configuration information
-------------------------------------
-
-Running "make install" installs the command pcre2-config, which can be used to
-recall information about the PCRE2 configuration and installation. For example:
-
-  pcre2-config --version
-
-prints the version number, and
-
-  pcre2-config --libs8
-
-outputs information about where the 8-bit library is installed. This command
-can be included in makefiles for programs that use PCRE2, saving the programmer
-from having to remember too many details. Run pcre2-config with no arguments to
-obtain a list of possible arguments.
-
-The pkg-config command is another system for saving and retrieving information
-about installed libraries. Instead of separate commands for each library, a
-single command is used. For example:
-
-  pkg-config --libs libpcre2-16
-
-The data is held in *.pc files that are installed in a directory called
-<prefix>/lib/pkgconfig.
-
-
-Shared libraries
-----------------
-
-The default distribution builds PCRE2 as shared libraries and static libraries,
-as long as the operating system supports shared libraries. Shared library
-support relies on the "libtool" script which is built as part of the
-"configure" process.
-
-The libtool script is used to compile and link both shared and static
-libraries. They are placed in a subdirectory called .libs when they are newly
-built. The programs pcre2test and pcre2grep are built to use these uninstalled
-libraries (by means of wrapper scripts in the case of shared libraries). When
-you use "make install" to install shared libraries, pcre2grep and pcre2test are
-automatically re-built to use the newly installed shared libraries before being
-installed themselves. However, the versions left in the build directory still
-use the uninstalled libraries.
-
-To build PCRE2 using static libraries only you must use --disable-shared when
-configuring it. For example:
-
-./configure --prefix=/usr/gnu --disable-shared
-
-Then run "make" in the usual way. Similarly, you can use --disable-static to
-build only shared libraries.
-
-
-Cross-compiling using autotools
--------------------------------
-
-You can specify CC and CFLAGS in the normal way to the "configure" command, in
-order to cross-compile PCRE2 for some other host. However, you should NOT
-specify --enable-rebuild-chartables, because if you do, the pcre2_dftables.c
-source file is compiled and run on the local host, in order to generate the
-inbuilt character tables (the pcre2_chartables.c file). This will probably not
-work, because pcre2_dftables.c needs to be compiled with the local compiler,
-not the cross compiler.
-
-When --enable-rebuild-chartables is not specified, pcre2_chartables.c is
-created by making a copy of pcre2_chartables.c.dist, which is a default set of
-tables that assumes ASCII code. Cross-compiling with the default tables should
-not be a problem.
-
-If you need to modify the character tables when cross-compiling, you should
-move pcre2_chartables.c.dist out of the way, then compile pcre2_dftables.c by
-hand and run it on the local host to make a new version of
-pcre2_chartables.c.dist. See the pcre2build section "Creating character tables
-at build time" for more details.
-
-
-Making new tarballs
--------------------
-
-The command "make dist" creates three PCRE2 tarballs, in tar.gz, tar.bz2, and
-zip formats. The command "make distcheck" does the same, but then does a trial
-build of the new distribution to ensure that it works.
-
-If you have modified any of the man page sources in the doc directory, you
-should first run the PrepareRelease script before making a distribution. This
-script creates the .txt and HTML forms of the documentation from the man pages.
-
-
-Testing PCRE2
--------------
-
-To test the basic PCRE2 library on a Unix-like system, run the RunTest script.
-There is another script called RunGrepTest that tests the pcre2grep command.
-When JIT support is enabled, a third test program called pcre2_jit_test is
-built. Both the scripts and all the program tests are run if you obey "make
-check". For other environments, see the instructions in NON-AUTOTOOLS-BUILD.
-
-The RunTest script runs the pcre2test test program (which is documented in its
-own man page) on each of the relevant testinput files in the testdata
-directory, and compares the output with the contents of the corresponding
-testoutput files. RunTest uses a file called testtry to hold the main output
-from pcre2test. Other files whose names begin with "test" are used as working
-files in some tests.
-
-Some tests are relevant only when certain build-time options were selected. For
-example, the tests for UTF-8/16/32 features are run only when Unicode support
-is available. RunTest outputs a comment when it skips a test.
-
-Many (but not all) of the tests that are not skipped are run twice if JIT
-support is available. On the second run, JIT compilation is forced. This
-testing can be suppressed by putting "nojit" on the RunTest command line.
-
-The entire set of tests is run once for each of the 8-bit, 16-bit and 32-bit
-libraries that are enabled. If you want to run just one set of tests, call
-RunTest with either the -8, -16 or -32 option.
-
-If valgrind is installed, you can run the tests under it by putting "valgrind"
-on the RunTest command line. To run pcre2test on just one or more specific test
-files, give their numbers as arguments to RunTest, for example:
-
-  RunTest 2 7 11
-
-You can also specify ranges of tests such as 3-6 or 3- (meaning 3 to the
-end), or a number preceded by ~ to exclude a test. For example:
-
-  Runtest 3-15 ~10
-
-This runs tests 3 to 15, excluding test 10, and just ~13 runs all the tests
-except test 13. Whatever order the arguments are in, the tests are always run
-in numerical order.
-
-You can also call RunTest with the single argument "list" to cause it to output
-a list of tests.
-
-The test sequence starts with "test 0", which is a special test that has no
-input file, and whose output is not checked. This is because it will be
-different on different hardware and with different configurations. The test
-exists in order to exercise some of pcre2test's code that would not otherwise
-be run.
-
-Tests 1 and 2 can always be run, as they expect only plain text strings (not
-UTF) and make no use of Unicode properties. The first test file can be fed
-directly into the perltest.sh script to check that Perl gives the same results.
-The only difference you should see is in the first few lines, where the Perl
-version is given instead of the PCRE2 version. The second set of tests check
-auxiliary functions, error detection, and run-time flags that are specific to
-PCRE2. It also uses the debugging flags to check some of the internals of
-pcre2_compile().
-
-If you build PCRE2 with a locale setting that is not the standard C locale, the
-character tables may be different (see next paragraph). In some cases, this may
-cause failures in the second set of tests. For example, in a locale where the
-isprint() function yields TRUE for characters in the range 128-255, the use of
-[:isascii:] inside a character class defines a different set of characters, and
-this shows up in this test as a difference in the compiled code, which is being
-listed for checking. For example, where the comparison test output contains
-[\x00-\x7f] the test might contain [\x00-\xff], and similarly in some other
-cases. This is not a bug in PCRE2.
-
-Test 3 checks pcre2_maketables(), the facility for building a set of character
-tables for a specific locale and using them instead of the default tables. The
-script uses the "locale" command to check for the availability of the "fr_FR",
-"french", or "fr" locale, and uses the first one that it finds. If the "locale"
-command fails, or if its output doesn't include "fr_FR", "french", or "fr" in
-the list of available locales, the third test cannot be run, and a comment is
-output to say why. If running this test produces an error like this:
-
-  ** Failed to set locale "fr_FR"
-
-it means that the given locale is not available on your system, despite being
-listed by "locale". This does not mean that PCRE2 is broken. There are three
-alternative output files for the third test, because three different versions
-of the French locale have been encountered. The test passes if its output
-matches any one of them.
-
-Tests 4 and 5 check UTF and Unicode property support, test 4 being compatible
-with the perltest.sh script, and test 5 checking PCRE2-specific things.
-
-Tests 6 and 7 check the pcre2_dfa_match() alternative matching function, in
-non-UTF mode and UTF-mode with Unicode property support, respectively.
-
-Test 8 checks some internal offsets and code size features, but it is run only
-when Unicode support is enabled. The output is different in 8-bit, 16-bit, and
-32-bit modes and for different link sizes, so there are different output files
-for each mode and link size.
-
-Tests 9 and 10 are run only in 8-bit mode, and tests 11 and 12 are run only in
-16-bit and 32-bit modes. These are tests that generate different output in
-8-bit mode. Each pair are for general cases and Unicode support, respectively.
-
-Test 13 checks the handling of non-UTF characters greater than 255 by
-pcre2_dfa_match() in 16-bit and 32-bit modes.
-
-Test 14 contains some special UTF and UCP tests that give different output for
-different code unit widths.
-
-Test 15 contains a number of tests that must not be run with JIT. They check,
-among other non-JIT things, the match-limiting features of the intepretive
-matcher.
-
-Test 16 is run only when JIT support is not available. It checks that an
-attempt to use JIT has the expected behaviour.
-
-Test 17 is run only when JIT support is available. It checks JIT complete and
-partial modes, match-limiting under JIT, and other JIT-specific features.
-
-Tests 18 and 19 are run only in 8-bit mode. They check the POSIX interface to
-the 8-bit library, without and with Unicode support, respectively.
-
-Test 20 checks the serialization functions by writing a set of compiled
-patterns to a file, and then reloading and checking them.
-
-Tests 21 and 22 test \C support when the use of \C is not locked out, without
-and with UTF support, respectively. Test 23 tests \C when it is locked out.
-
-Tests 24 and 25 test the experimental pattern conversion functions, without and
-with UTF support, respectively.
-
-
-Character tables
-----------------
-
-For speed, PCRE2 uses four tables for manipulating and identifying characters
-whose code point values are less than 256. By default, a set of tables that is
-built into the library is used. The pcre2_maketables() function can be called
-by an application to create a new set of tables in the current locale. This are
-passed to PCRE2 by calling pcre2_set_character_tables() to put a pointer into a
-compile context.
-
-The source file called pcre2_chartables.c contains the default set of tables.
-By default, this is created as a copy of pcre2_chartables.c.dist, which
-contains tables for ASCII coding. However, if --enable-rebuild-chartables is
-specified for ./configure, a new version of pcre2_chartables.c is built by the
-program pcre2_dftables (compiled from pcre2_dftables.c), which uses the ANSI C
-character handling functions such as isalnum(), isalpha(), isupper(),
-islower(), etc. to build the table sources. This means that the default C
-locale that is set for your system will control the contents of these default
-tables. You can change the default tables by editing pcre2_chartables.c and
-then re-building PCRE2. If you do this, you should take care to ensure that the
-file does not get automatically re-generated. The best way to do this is to
-move pcre2_chartables.c.dist out of the way and replace it with your customized
-tables.
-
-When the pcre2_dftables program is run as a result of specifying
---enable-rebuild-chartables, it uses the default C locale that is set on your
-system. It does not pay attention to the LC_xxx environment variables. In other
-words, it uses the system's default locale rather than whatever the compiling
-user happens to have set. If you really do want to build a source set of
-character tables in a locale that is specified by the LC_xxx variables, you can
-run the pcre2_dftables program by hand with the -L option. For example:
-
-  ./pcre2_dftables -L pcre2_chartables.c.special
-
-The second argument names the file where the source code for the tables is
-written. The first two 256-byte tables provide lower casing and case flipping
-functions, respectively. The next table consists of a number of 32-byte bit
-maps which identify certain character classes such as digits, "word"
-characters, white space, etc. These are used when building 32-byte bit maps
-that represent character classes for code points less than 256. The final
-256-byte table has bits indicating various character types, as follows:
-
-    1   white space character
-    2   letter
-    4   lower case letter
-    8   decimal digit
-   16   alphanumeric or '_'
-
-You can also specify -b (with or without -L) when running pcre2_dftables. This
-causes the tables to be written in binary instead of as source code. A set of
-binary tables can be loaded into memory by an application and passed to
-pcre2_compile() in the same way as tables created dynamically by calling
-pcre2_maketables(). The tables are just a string of bytes, independent of
-hardware characteristics such as endianness. This means they can be bundled
-with an application that runs in different environments, to ensure consistent
-behaviour.
-
-See also the pcre2build section "Creating character tables at build time".
-
-
-File manifest
--------------
-
-The distribution should contain the files listed below.
-
-(A) Source files for the PCRE2 library functions and their headers are found in
-    the src directory:
-
-  src/pcre2_dftables.c     auxiliary program for building pcre2_chartables.c
-                           when --enable-rebuild-chartables is specified
-
-  src/pcre2_chartables.c.dist  a default set of character tables that assume
-                           ASCII coding; unless --enable-rebuild-chartables is
-                           specified, used by copying to pcre2_chartables.c
-
-  src/pcre2posix.c         )
-  src/pcre2_auto_possess.c )
-  src/pcre2_compile.c      )
-  src/pcre2_config.c       )
-  src/pcre2_context.c      )
-  src/pcre2_convert.c      )
-  src/pcre2_dfa_match.c    )
-  src/pcre2_error.c        )
-  src/pcre2_extuni.c       )
-  src/pcre2_find_bracket.c )
-  src/pcre2_jit_compile.c  )
-  src/pcre2_jit_match.c    ) sources for the functions in the library,
-  src/pcre2_jit_misc.c     )   and some internal functions that they use
-  src/pcre2_maketables.c   )
-  src/pcre2_match.c        )
-  src/pcre2_match_data.c   )
-  src/pcre2_newline.c      )
-  src/pcre2_ord2utf.c      )
-  src/pcre2_pattern_info.c )
-  src/pcre2_script_run.c   )
-  src/pcre2_serialize.c    )
-  src/pcre2_string_utils.c )
-  src/pcre2_study.c        )
-  src/pcre2_substitute.c   )
-  src/pcre2_substring.c    )
-  src/pcre2_tables.c       )
-  src/pcre2_ucd.c          )
-  src/pcre2_valid_utf.c    )
-  src/pcre2_xclass.c       )
-
-  src/pcre2_printint.c     debugging function that is used by pcre2test,
-  src/pcre2_fuzzsupport.c  function for (optional) fuzzing support
-
-  src/config.h.in          template for config.h, when built by "configure"
-  src/pcre2.h.in           template for pcre2.h when built by "configure"
-  src/pcre2posix.h         header for the external POSIX wrapper API
-  src/pcre2_internal.h     header for internal use
-  src/pcre2_intmodedep.h   a mode-specific internal header
-  src/pcre2_ucp.h          header for Unicode property handling
-
-  sljit/*                  source files for the JIT compiler
-
-(B) Source files for programs that use PCRE2:
-
-  src/pcre2demo.c          simple demonstration of coding calls to PCRE2
-  src/pcre2grep.c          source of a grep utility that uses PCRE2
-  src/pcre2test.c          comprehensive test program
-  src/pcre2_jit_test.c     JIT test program
-
-(C) Auxiliary files:
-
-  132html                  script to turn "man" pages into HTML
-  AUTHORS                  information about the author of PCRE2
-  ChangeLog                log of changes to the code
-  CleanTxt                 script to clean nroff output for txt man pages
-  Detrail                  script to remove trailing spaces
-  HACKING                  some notes about the internals of PCRE2
-  INSTALL                  generic installation instructions
-  LICENCE                  conditions for the use of PCRE2
-  COPYING                  the same, using GNU's standard name
-  Makefile.in              ) template for Unix Makefile, which is built by
-                           )   "configure"
-  Makefile.am              ) the automake input that was used to create
-                           )   Makefile.in
-  NEWS                     important changes in this release
-  NON-AUTOTOOLS-BUILD      notes on building PCRE2 without using autotools
-  PrepareRelease           script to make preparations for "make dist"
-  README                   this file
-  RunTest                  a Unix shell script for running tests
-  RunGrepTest              a Unix shell script for pcre2grep tests
-  aclocal.m4               m4 macros (generated by "aclocal")
-  config.guess             ) files used by libtool,
-  config.sub               )   used only when building a shared library
-  configure                a configuring shell script (built by autoconf)
-  configure.ac             ) the autoconf input that was used to build
-                           )   "configure" and config.h
-  depcomp                  ) script to find program dependencies, generated by
-                           )   automake
-  doc/*.3                  man page sources for PCRE2
-  doc/*.1                  man page sources for pcre2grep and pcre2test
-  doc/index.html.src       the base HTML page
-  doc/html/*               HTML documentation
-  doc/pcre2.txt            plain text version of the man pages
-  doc/pcre2test.txt        plain text documentation of test program
-  install-sh               a shell script for installing files
-  libpcre2-8.pc.in         template for libpcre2-8.pc for pkg-config
-  libpcre2-16.pc.in        template for libpcre2-16.pc for pkg-config
-  libpcre2-32.pc.in        template for libpcre2-32.pc for pkg-config
-  libpcre2-posix.pc.in     template for libpcre2-posix.pc for pkg-config
-  ltmain.sh                file used to build a libtool script
-  missing                  ) common stub for a few missing GNU programs while
-                           )   installing, generated by automake
-  mkinstalldirs            script for making install directories
-  perltest.sh              Script for running a Perl test program
-  pcre2-config.in          source of script which retains PCRE2 information
-  testdata/testinput*      test data for main library tests
-  testdata/testoutput*     expected test results
-  testdata/grep*           input and output for pcre2grep tests
-  testdata/*               other supporting test files
-
-(D) Auxiliary files for cmake support
-
-  cmake/COPYING-CMAKE-SCRIPTS
-  cmake/FindPackageHandleStandardArgs.cmake
-  cmake/FindEditline.cmake
-  cmake/FindReadline.cmake
-  CMakeLists.txt
-  config-cmake.h.in
-
-(E) Auxiliary files for building PCRE2 "by hand"
-
-  src/pcre2.h.generic     ) a version of the public PCRE2 header file
-                          )   for use in non-"configure" environments
-  src/config.h.generic    ) a version of config.h for use in non-"configure"
-                          )   environments
-
-Philip Hazel
-Email local part: Philip.Hazel
-Email domain: gmail.com
-Last updated: 28 April 2021

+ 0 - 821
src/deps/regex/pcre2/RunGrepTest

@@ -1,821 +0,0 @@
-#! /bin/sh
-
-# Run pcre2grep tests. The assumption is that the PCRE2 tests check the library
-# itself. What we are checking here is the file handling and options that are
-# supported by pcre2grep. This script must be run in the build directory.
-
-# CODING CONVENTIONS:
-# * Put printf arguments in single, not double quotes to avoid unwanted
-#     escaping.
-# * Use \0 for binary zero in printf, not \x0, for the benefit of older
-#     versions (and use octal for other special values).
-
-# Set the C locale, so that sort(1) behaves predictably.
-
-LC_ALL=C
-export LC_ALL
-
-# Remove any non-default colouring and aliases that the caller may have set.
-
-unset PCRE2GREP_COLOUR PCRE2GREP_COLOR PCREGREP_COLOUR PCREGREP_COLOR
-unset GREP_COLOR GREP_COLORS
-unset cp ls mv rm
-
-# Remember the current (build) directory, set the program to be tested, and
-# valgrind settings when requested.
-
-builddir=`pwd`
-pcre2grep=$builddir/pcre2grep
-pcre2test=$builddir/pcre2test
-
-if [ ! -x $pcre2grep ] ; then
-  echo "** $pcre2grep does not exist or is not executable."
-  exit 1
-fi
-
-if [ ! -x $pcre2test ] ; then
-  echo "** $pcre2test does not exist or is not executable."
-  exit 1
-fi
-
-valgrind=
-while [ $# -gt 0 ] ; do
-  case $1 in
-    valgrind) valgrind="valgrind -q --leak-check=no --smc-check=all-non-file";;
-    *) echo "RunGrepTest: Unknown argument $1"; exit 1;;
-  esac
-  shift
-done
-
-vjs=
-pcre2grep_version=`$pcre2grep -V`
-if [ "$valgrind" = "" ] ; then
-  echo "Testing $pcre2grep_version"
-else
-  echo "Testing $pcre2grep_version using valgrind"
-  $pcre2test -C jit >/dev/null
-  if [ $? -ne 0 ]; then
-    vjs="--suppressions=./testdata/valgrind-jit.supp"
-  fi
-fi
-
-# Set up a suitable "diff" command for comparison. Some systems have a diff
-# that lacks a -u option. Try to deal with this; better do the test for the -b
-# option as well.
-
-cf="diff"
-diff -b  /dev/null /dev/null 2>/dev/null && cf="diff -b"
-diff -u  /dev/null /dev/null 2>/dev/null && cf="diff -u"
-diff -ub /dev/null /dev/null 2>/dev/null && cf="diff -ub"
-
-# If this test is being run from "make check", $srcdir will be set. If not, set
-# it to the current or parent directory, whichever one contains the test data.
-# Subsequently, we run most of the pcre2grep tests in the source directory so
-# that the file names in the output are always the same.
-
-if [ -z "$srcdir" -o ! -d "$srcdir/testdata" ] ; then
-  if [ -d "./testdata" ] ; then
-    srcdir=.
-  elif [ -d "../testdata" ] ; then
-    srcdir=..
-  else
-    echo "Cannot find the testdata directory"
-    exit 1
-  fi
-fi
-
-# Check for the availability of UTF-8 support
-
-$pcre2test -C unicode >/dev/null
-utf8=$?
-
-# Check default newline convention. If it does not include LF, force LF.
-
-nl=`$pcre2test -C newline`
-if [ "$nl" != "LF" -a "$nl" != "ANY" -a "$nl" != "ANYCRLF" ]; then
-  pcre2grep="$pcre2grep -N LF"
-  echo "Default newline setting forced to LF"
-fi
-
-# ------ Function to run and check a special pcre2grep arguments test -------
-
-checkspecial()
-  {
-  $valgrind $pcre2grep $1 >>testtrygrep 2>&1
-  if [ $? -ne $2 ] ; then
-    echo "** pcre2grep $1 failed - check testtrygrep"
-    exit 1
-  fi
-  }
-
-# ------ Normal tests ------
-
-echo "Testing pcre2grep main features"
-
-echo "---------------------------- Test 1 ------------------------------" >testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep PATTERN ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 2 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep '^PATTERN' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 3 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -in PATTERN ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 4 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -ic PATTERN ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 5 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -in PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 6 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -inh PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 7 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -il PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 8 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -l PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 9 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -q PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 10 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -q NEVER-PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 11 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -vn pattern ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 12 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -ix pattern ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 13 -----------------------------" >>testtrygrep
-echo seventeen >testtemp1grep
-(cd $srcdir; $valgrind $vjs $pcre2grep -f./testdata/greplist -f $builddir/testtemp1grep ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 14 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -w pat ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 15 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep 'abc^*' ./testdata/grepinput) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 16 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep abc ./testdata/grepinput ./testdata/nonexistfile) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 17 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -M 'the\noutput' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 18 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -Mn '(the\noutput|dog\.\n--)' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 19 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -Mix 'Pattern' ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 20 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -Mixn 'complete pair\nof lines' ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 21 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -nA3 'four' ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 22 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -nB3 'four' ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 23 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -C3 'four' ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 24 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -A9 'four' ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 25 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -nB9 'four' ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 26 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -A9 -B9 'four' ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 27 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -A10 'four' ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 28 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -nB10 'four' ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 29 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -C12 -B10 'four' ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 30 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -inB3 'pattern' ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 31 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -inA3 'pattern' ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 32 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -L 'fox' ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 33 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep 'fox' ./testdata/grepnonexist) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 34 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -s 'fox' ./testdata/grepnonexist) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 35 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -L -r --include=grepinputx --include grepinput8 --exclude-dir='^\.' 'fox' ./testdata | sort) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 36 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -L -r --include=grepinput --exclude 'grepinput$' --exclude=grepinput8 --exclude=grepinputM --exclude-dir='^\.' 'fox' ./testdata | sort) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 37 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep  '^(a+)*\d' ./testdata/grepinput) >>testtrygrep 2>teststderrgrep
-echo "RC=$?" >>testtrygrep
-echo "======== STDERR ========" >>testtrygrep
-cat teststderrgrep >>testtrygrep
-
-echo "---------------------------- Test 38 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep '>\x00<' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 39 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -A1 'before the binary zero' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 40 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -B1 'after the binary zero' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 41 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -B1 -o '\w+ the binary zero' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 42 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -B1 -onH '\w+ the binary zero' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 43 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -on 'before|zero|after' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 44 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -on -e before -ezero -e after ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 45 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -on -f ./testdata/greplist -e binary ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 46 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -eabc -e '(unclosed' ./testdata/grepinput) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 47 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -Fx "AB.VE
-elephant" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 48 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -F "AB.VE
-elephant" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 49 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -F -e DATA -e "AB.VE
-elephant" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 50 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep "^(abc|def|ghi|jkl)" ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 51 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -Mv "brown\sfox" ./testdata/grepinputv) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 52 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --colour=always jumps ./testdata/grepinputv) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 53 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --file-offsets 'before|zero|after' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 54 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --line-offsets 'before|zero|after' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 55 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -f./testdata/greplist --color=always ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 56 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -c lazy ./testdata/grepinput*) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 57 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -c -l lazy ./testdata/grepinput*) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 58 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --regex=PATTERN ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 59 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --regexp=PATTERN ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 60 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --regex PATTERN ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 61 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --regexp PATTERN ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 62 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $pcre2grep --match-limit=1000 --no-jit -M 'This is a file(.|\R)*file.' ./testdata/grepinput) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 63 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $pcre2grep --recursion-limit=1000 --no-jit -M 'This is a file(.|\R)*file.' ./testdata/grepinput) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 64 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o1 '(?<=PAT)TERN (ap(pear)s)' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 65 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o2 '(?<=PAT)TERN (ap(pear)s)' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 66 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o3 '(?<=PAT)TERN (ap(pear)s)' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 67 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o12 '(?<=PAT)TERN (ap(pear)s)' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 68 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --only-matching=2 '(?<=PAT)TERN (ap(pear)s)' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 69 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -vn --colour=always pattern ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 70 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --color=always -M "triple:\t.*\n\n" ./testdata/grepinput3) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --color=always -M -n "triple:\t.*\n\n" ./testdata/grepinput3) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -M "triple:\t.*\n\n" ./testdata/grepinput3) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -M -n "triple:\t.*\n\n" ./testdata/grepinput3) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 71 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o "^01|^02|^03" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 72 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --color=always "^01|^02|^03" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 73 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o --colour=always "^01|^02|^03" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 74 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o "^01|02|^03" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 75 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --color=always "^01|02|^03" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 76 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o --colour=always "^01|02|^03" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 77 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o "^01|^02|03" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 78 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --color=always "^01|^02|03" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 79 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o --colour=always "^01|^02|03" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 80 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o "\b01|\b02" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 81 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --color=always "\\b01|\\b02" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 82 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o --colour=always "\\b01|\\b02" ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 83 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --buffer-size=10 --max-buffer-size=100 "^a" ./testdata/grepinput3) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 84 -----------------------------" >>testtrygrep
-echo testdata/grepinput3 >testtemp1grep
-(cd $srcdir; $valgrind $vjs $pcre2grep --file-list ./testdata/grepfilelist --file-list $builddir/testtemp1grep "fox|complete|t7") >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 85 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --file-list=./testdata/grepfilelist "dolor" ./testdata/grepinput3) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 86 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep "dog" ./testdata/grepbinary) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 87 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep "cat" ./testdata/grepbinary) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 88 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -v "cat" ./testdata/grepbinary) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 89 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -I "dog" ./testdata/grepbinary) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 90 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --binary-files=without-match "dog" ./testdata/grepbinary) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 91 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -a "dog" ./testdata/grepbinary) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 92 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --binary-files=text "dog" ./testdata/grepbinary) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 93 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --text "dog" ./testdata/grepbinary) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 94 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -L -r --include=grepinputx --include grepinput8 'fox' ./testdata/grepinput* | sort) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 95 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --file-list ./testdata/grepfilelist --exclude grepinputv "fox|complete") >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 96 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -L -r --include-dir=testdata --exclude '^(?!grepinput)' --exclude=grepinputM 'fox' ./test* | sort) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 97 -----------------------------" >>testtrygrep
-echo "grepinput$" >testtemp1grep
-echo "grepinput8" >>testtemp1grep
-(cd $srcdir; $valgrind $vjs $pcre2grep -L -r --include=grepinput --exclude=grepinputM --exclude-from $builddir/testtemp1grep --exclude-dir='^\.' 'fox' ./testdata | sort) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 98 -----------------------------" >>testtrygrep
-echo "grepinput$" >testtemp1grep
-echo "grepinput8" >>testtemp1grep
-(cd $srcdir; $valgrind $vjs $pcre2grep -L -r --exclude=grepinput3 --exclude=grepinputM --include=grepinput --exclude-from $builddir/testtemp1grep --exclude-dir='^\.' 'fox' ./testdata | sort) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 99 -----------------------------" >>testtrygrep
-echo "grepinput$" >testtemp1grep
-echo "grepinput8" >testtemp2grep
-(cd $srcdir; $valgrind $vjs $pcre2grep -L -r --include grepinput --exclude=grepinputM --exclude-from $builddir/testtemp1grep --exclude-from=$builddir/testtemp2grep --exclude-dir='^\.' 'fox' ./testdata | sort) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 100 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -Ho2 --only-matching=1 -o3 '(\w+) binary (\w+)(\.)?' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 101 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o3 -Ho2 -o12 --only-matching=1 -o3 --colour=always --om-separator='|' '(\w+) binary (\w+)(\.)?' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 102 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -n "^$" ./testdata/grepinput3) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 103 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --only-matching "^$" ./testdata/grepinput3) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 104 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -n --only-matching "^$" ./testdata/grepinput3) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 105 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --colour=always "ipsum|" ./testdata/grepinput3) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 106 -----------------------------" >>testtrygrep
-(cd $srcdir; echo "a" | $valgrind $vjs $pcre2grep -M "|a" ) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 107 -----------------------------" >>testtrygrep
-echo "a" >testtemp1grep
-echo "aaaaa" >>testtemp1grep
-(cd $srcdir; $valgrind $vjs $pcre2grep  --line-offsets '(?<=\Ka)' $builddir/testtemp1grep) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 108 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -lq PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 109 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -cq lazy ./testdata/grepinput*) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 110 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --om-separator / -Mo0 -o1 -o2 'match (\d+):\n (.)\n' testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 111 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --line-offsets -M 'match (\d+):\n (.)\n' testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 112 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --file-offsets -M 'match (\d+):\n (.)\n' testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 113 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --total-count 'the' testdata/grepinput*) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 114 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -tc 'the' testdata/grepinput*) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 115 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -tlc 'the' testdata/grepinput*) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 116 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep --exclude=grepinputM -th 'the' testdata/grepinput*) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 117 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -tch 'the' testdata/grepinput*) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 118 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -tL 'the' testdata/grepinput*) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 119 -----------------------------" >>testtrygrep
-printf '123\n456\n789\n---abc\ndef\nxyz\n---\n' >testNinputgrep
-$valgrind $vjs $pcre2grep -Mo '(\n|[^-])*---' testNinputgrep >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 120 ------------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -HO '$0:$2$1$3' '(\w+) binary (\w+)(\.)?' ./testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 121 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -F '\E and (regex)' testdata/grepinputv) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 122 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -w 'cat|dog' testdata/grepinputv) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 123 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -w 'dog|cat' testdata/grepinputv) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 124 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -Mn --colour=always 'start[\s]+end' testdata/grepinputM) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -Mn --colour=always -A2 'start[\s]+end' testdata/grepinputM) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -Mn 'start[\s]+end' testdata/grepinputM) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -Mn -A2 'start[\s]+end' testdata/grepinputM) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 125 -----------------------------" >>testtrygrep
-printf 'abcd\n' >testNinputgrep
-$valgrind $vjs $pcre2grep --colour=always '(?<=\K.)' testNinputgrep >>testtrygrep
-echo "RC=$?" >>testtrygrep
-$valgrind $vjs $pcre2grep --colour=always '(?=.\K)' testNinputgrep >>testtrygrep
-echo "RC=$?" >>testtrygrep
-$valgrind $vjs $pcre2grep --colour=always '(?<=\K[ac])' testNinputgrep >>testtrygrep
-echo "RC=$?" >>testtrygrep
-$valgrind $vjs $pcre2grep --colour=always '(?=[ac]\K)' testNinputgrep >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 126 -----------------------------" >>testtrygrep
-printf 'Next line pattern has binary zero\nABC\0XYZ\n' >testtemp1grep
-printf 'ABC\0XYZ\nABCDEF\nDEFABC\n' >testtemp2grep
-$valgrind $vjs $pcre2grep -a -f testtemp1grep testtemp2grep >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 127 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o --om-capture=0 'pattern()()()()' testdata/grepinput) >>testtrygrep
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 128 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o1 --om-capture=0 'pattern()()()()' testdata/grepinput) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 129 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -m 2 'fox' testdata/grepinput) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 130 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -o -m2 'fox' testdata/grepinput) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 131 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -oc -m2 'fox' testdata/grepinput) >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 132 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -m1 -A3 '^match'; echo '---'; head -1) <$srcdir/testdata/grepinput >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-echo "---------------------------- Test 133 -----------------------------" >>testtrygrep
-(cd $srcdir; $valgrind $vjs $pcre2grep -m1 -O '=$x{41}$x423$o{103}$o1045=' 'fox') <$srcdir/testdata/grepinputv >>testtrygrep 2>&1
-echo "RC=$?" >>testtrygrep
-
-# Now compare the results.
-
-$cf $srcdir/testdata/grepoutput testtrygrep
-if [ $? != 0 ] ; then exit 1; fi
-
-
-# These tests require UTF-8 support
-
-if [ $utf8 -ne 0 ] ; then
-  echo "Testing pcre2grep UTF-8 features"
-
-  echo "---------------------------- Test U1 ------------------------------" >testtrygrep
-  (cd $srcdir; $valgrind $vjs $pcre2grep -n -u --newline=any "^X" ./testdata/grepinput8) >>testtrygrep
-  echo "RC=$?" >>testtrygrep
-
-  echo "---------------------------- Test U2 ------------------------------" >>testtrygrep
-  (cd $srcdir; $valgrind $vjs $pcre2grep -n -u -C 3 --newline=any "Match" ./testdata/grepinput8) >>testtrygrep
-  echo "RC=$?" >>testtrygrep
-
-  echo "---------------------------- Test U3 ------------------------------" >>testtrygrep
-  (cd $srcdir; $valgrind $vjs $pcre2grep --line-offsets -u --newline=any '(?<=\K\x{17f})' ./testdata/grepinput8) >>testtrygrep
-  echo "RC=$?" >>testtrygrep
-
-  echo "---------------------------- Test U4 ------------------------------" >>testtrygrep
-  printf 'A\341\200\200\200CD\342\200\200Z\n' >testtemp1grep
-  (cd $srcdir; $valgrind $vjs $pcre2grep -u -o '....' $builddir/testtemp1grep) >>testtrygrep 2>&1
-  echo "RC=$?" >>testtrygrep
-
-  echo "---------------------------- Test U5 ------------------------------" >>testtrygrep
-  printf 'A\341\200\200\200CD\342\200\200Z\n' >testtemp1grep
-  (cd $srcdir; $valgrind $vjs $pcre2grep -U -o '....' $builddir/testtemp1grep) >>testtrygrep
-  echo "RC=$?" >>testtrygrep
-
-  echo "---------------------------- Test U6 -----------------------------" >>testtrygrep
-  (cd $srcdir; $valgrind $vjs $pcre2grep -u -m1 -O '=$x{1d3}$o{744}=' 'fox') <$srcdir/testdata/grepinputv >>testtrygrep 2>&1
-  echo "RC=$?" >>testtrygrep
-
-  $cf $srcdir/testdata/grepoutput8 testtrygrep
-  if [ $? != 0 ] ; then exit 1; fi
-
-else
-  echo "Skipping pcre2grep UTF-8 tests: no UTF-8 support in PCRE2 library"
-fi
-
-
-# We go to some contortions to try to ensure that the tests for the various
-# newline settings will work in environments where the normal newline sequence
-# is not \n. Do not use exported files, whose line endings might be changed.
-# Instead, create an input file using printf so that its contents are exactly
-# what we want. Note the messy fudge to get printf to write a string that
-# starts with a hyphen. These tests are run in the build directory.
-
-echo "Testing pcre2grep newline settings"
-printf 'abc\rdef\r\nghi\njkl' >testNinputgrep
-
-printf '%c--------------------------- Test N1 ------------------------------\r\n' - >testtrygrep
-$valgrind $vjs $pcre2grep -n -N CR "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
-
-printf '%c--------------------------- Test N2 ------------------------------\r\n' - >>testtrygrep
-$valgrind $vjs $pcre2grep -n --newline=crlf "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
-
-printf '%c--------------------------- Test N3 ------------------------------\r\n' - >>testtrygrep
-pattern=`printf 'def\rjkl'`
-$valgrind $vjs $pcre2grep -n --newline=cr -F "$pattern" testNinputgrep >>testtrygrep
-
-printf '%c--------------------------- Test N4 ------------------------------\r\n' - >>testtrygrep
-$valgrind $vjs $pcre2grep -n --newline=crlf -F -f $srcdir/testdata/greppatN4 testNinputgrep >>testtrygrep
-
-printf '%c--------------------------- Test N5 ------------------------------\r\n' - >>testtrygrep
-$valgrind $vjs $pcre2grep -n --newline=any "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
-
-printf '%c--------------------------- Test N6 ------------------------------\r\n' - >>testtrygrep
-$valgrind $vjs $pcre2grep -n --newline=anycrlf "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
-
-# This next test involves NUL characters. It seems impossible to handle them
-# easily in many operating systems. An earlier version of this script used sed
-# to translate NUL into the string ZERO, but this didn't work on Solaris (aka
-# SunOS), where the version of sed explicitly doesn't like them, and also MacOS
-# (Darwin), OpenBSD, FreeBSD, NetBSD, and some Linux distributions like Alpine,
-# even when using GNU sed. A user suggested using tr instead, which
-# necessitates translating to a single character (@). However, on (some
-# versions of?) Solaris, the normal "tr" cannot handle binary zeros, but if
-# /usr/xpg4/bin/tr is available, it can do so, so test for that.
-
-if [ -x /usr/xpg4/bin/tr ] ; then
-  tr=/usr/xpg4/bin/tr
-else
-  tr=tr
-fi
-
-printf '%c--------------------------- Test N7 ------------------------------\r\n' - >>testtrygrep
-printf 'abc\0def' >testNinputgrep
-$valgrind $vjs $pcre2grep -na --newline=nul "^(abc|def)" testNinputgrep | $tr '\000' '@' >>testtrygrep
-echo "" >>testtrygrep
-
-$cf $srcdir/testdata/grepoutputN testtrygrep
-if [ $? != 0 ] ; then exit 1; fi
-
-# If pcre2grep supports script callouts, run some tests on them. It is possible
-# to restrict these callouts to the non-fork case, either for security, or for
-# environments that do not support fork(). This is handled by comparing to a
-# different output.
-
-if $valgrind $vjs $pcre2grep --help | $valgrind $vjs $pcre2grep -q 'callout scripts in patterns are supported'; then
-  echo "Testing pcre2grep script callouts"
-  $valgrind $vjs $pcre2grep '(T)(..(.))(?C"/bin/echo|Arg1: [$1] [$2] [$3]|Arg2: $|${1}$| ($4) ($14) ($0)")()' $srcdir/testdata/grepinputv >testtrygrep
-  $valgrind $vjs $pcre2grep '(T)(..(.))()()()()()()()(..)(?C"/bin/echo|Arg1: [$11] [${11}]")' $srcdir/testdata/grepinputv >>testtrygrep
-  $valgrind $vjs $pcre2grep '(T)(?C"|$0:$1$n")' $srcdir/testdata/grepinputv >>testtrygrep
-  $valgrind $vjs $pcre2grep '(T)(?C"|$1$n")(*F)' $srcdir/testdata/grepinputv >>testtrygrep
-  $valgrind $vjs $pcre2grep -m1 '(T)(?C"|$0:$1:$x{41}$o{101}$n")' $srcdir/testdata/grepinputv >>testtrygrep
-
-  if $valgrind $vjs $pcre2grep --help | $valgrind $vjs $pcre2grep -q 'Non-fork callout scripts in patterns are supported'; then
-    $cf $srcdir/testdata/grepoutputCN testtrygrep
-  else
-    $cf $srcdir/testdata/grepoutputC testtrygrep
-  fi
-
-  if [ $? != 0 ] ; then exit 1; fi
-else
-  echo "Script callouts are not supported"
-fi
-
-# Finally, some tests to exercise code that is not tested above, just to be
-# sure that it runs OK. Doing this improves the coverage statistics. The output
-# is not checked.
-
-echo "Testing miscellaneous pcre2grep arguments (unchecked)"
-echo '' >testtrygrep
-checkspecial '-xxxxx' 2
-checkspecial '--help' 0
-checkspecial '--line-buffered --colour=auto abc /dev/null' 1
-
-# Clean up local working files
-rm -f testNinputgrep teststderrgrep testtrygrep testtemp1grep testtemp2grep
-
-exit 0
-
-# End

+ 0 - 699
src/deps/regex/pcre2/RunGrepTest.bat

@@ -1,699 +0,0 @@
-@echo off
-
-:: Run pcre2grep tests. The assumption is that the PCRE2 tests check the library
-:: itself. What we are checking here is the file handling and options that are
-:: supported by pcre2grep. This script must be run in the build directory.
-:: (jmh: I've only tested in the main directory, using my own builds.)
-
-setlocal enabledelayedexpansion
-
-:: Remove any non-default colouring that the caller may have set.
-
-set PCRE2GREP_COLOUR=
-set PCRE2GREP_COLOR=
-set PCREGREP_COLOUR=
-set PCREGREP_COLOR=
-set GREP_COLORS=
-set GREP_COLOR=
-
-:: Remember the current (build) directory and set the program to be tested.
-
-set builddir="%CD%"
-set pcre2grep=%builddir%\pcre2grep.exe
-set pcre2test=%builddir%\pcre2test.exe
-
-if NOT exist %pcre2grep% (
-  echo ** %pcre2grep% does not exist.
-  exit /b 1
-)
-
-if NOT exist %pcre2test% (
-  echo ** %pcre2test% does not exist.
-  exit /b 1
-)
-
-for /f "delims=" %%a in ('"%pcre2grep%" -V') do set pcre2grep_version=%%a
-echo Testing %pcre2grep_version%
-
-:: Set up a suitable "diff" command for comparison. Some systems have a diff
-:: that lacks a -u option. Try to deal with this; better do the test for the -b
-:: option as well. Use FC if there's no diff, taking care to ignore equality.
-
-set cf=
-set cfout=
-diff -b  nul nul 2>nul && set cf=diff -b
-diff -u  nul nul 2>nul && set cf=diff -u
-diff -ub nul nul 2>nul && set cf=diff -ub
-if NOT defined cf (
-  set cf=fc /n
-  set "cfout=>testcf || (type testcf & cmd /c exit /b 1)"
-)
-
-:: Set srcdir to the current or parent directory, whichever one contains the
-:: test data. Subsequently, we run most of the pcre2grep tests in the source
-:: directory so that the file names in the output are always the same.
-
-if NOT defined srcdir set srcdir=.
-if NOT exist %srcdir%\testdata\ (
-  if exist testdata\ (
-    set srcdir=.
-  ) else if exist ..\testdata\ (
-    set srcdir=..
-  ) else if exist ..\..\testdata\ (
-    set srcdir=..\..
-  ) else (
-    echo Cannot find the testdata directory
-    exit /b 1
-  )
-)
-
-:: Check for the availability of UTF-8 support
-
-%pcre2test% -C unicode >nul
-set utf8=%ERRORLEVEL%
-
-:: Check default newline convention. If it does not include LF, force LF.
-
-for /f %%a in ('"%pcre2test%" -C newline') do set nl=%%a
-if NOT "%nl%" == "LF" if NOT "%nl%" == "ANY" if NOT "%nl%" == "ANYCRLF" (
-  set pcre2grep=%pcre2grep% -N LF
-  echo Default newline setting forced to LF
-)
-
-:: Create a simple printf via cscript/JScript (an actual printf may translate
-:: LF to CRLF, which this one does not).
-
-echo WScript.StdOut.Write(WScript.Arguments(0).replace(/\\r/g, "\r").replace(/\\n/g, "\n")) >printf.js
-set printf=cscript //nologo printf.js
-
-:: ------ Normal tests ------
-
-echo Testing pcre2grep main features
-
-echo ---------------------------- Test 1 ------------------------------>testtrygrep
-(pushd %srcdir% & %pcre2grep% PATTERN ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 2 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% "^PATTERN" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 3 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -in PATTERN ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 4 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -ic PATTERN ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 5 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -in PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 6 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -inh PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 7 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -il PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 8 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -l PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 9 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -q PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 10 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -q NEVER-PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 11 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -vn pattern ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 12 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -ix pattern ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 13 ----------------------------->>testtrygrep
-echo seventeen >testtemp1grep
-(pushd %srcdir% & %pcre2grep% -f./testdata/greplist -f %builddir%\testtemp1grep ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 14 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -w pat ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 15 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% "abc^*" ./testdata/grepinput & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 16 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% abc ./testdata/grepinput ./testdata/nonexistfile & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 17 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -M "the\noutput" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 18 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -Mn "(the\noutput|dog\.\n--)" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 19 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -Mix "Pattern" ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 20 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -Mixn "complete pair\nof lines" ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 21 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -nA3 "four" ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 22 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -nB3 "four" ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 23 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -C3 "four" ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 24 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -A9 "four" ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 25 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -nB9 "four" ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 26 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -A9 -B9 "four" ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 27 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -A10 "four" ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 28 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -nB10 "four" ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 29 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -C12 -B10 "four" ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 30 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -inB3 "pattern" ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 31 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -inA3 "pattern" ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 32 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -L "fox" ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 33 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% "fox" ./testdata/grepnonexist & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 34 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -s "fox" ./testdata/grepnonexist & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 35 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -L -r --include=grepinputx --include grepinput8 --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 36 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -L -r --include=grepinput --exclude "grepinput$" --exclude=grepinput8 --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 37 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep%  "^(a+)*\d" ./testdata/grepinput & popd) >>testtrygrep 2>teststderrgrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-echo ======== STDERR ========>>testtrygrep
-type teststderrgrep >>testtrygrep
-
-echo ---------------------------- Test 38 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% ">\x00<" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 39 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -A1 "before the binary zero" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 40 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -B1 "after the binary zero" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 41 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -B1 -o "\w+ the binary zero" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 42 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -B1 -onH "\w+ the binary zero" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 43 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -on "before|zero|after" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 44 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -on -e before -ezero -e after ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 45 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -on -f ./testdata/greplist -e binary ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 46 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -eabc -e "(unclosed" ./testdata/grepinput & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 47 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -Fx AB.VE^
-
-elephant ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 48 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -F AB.VE^
-
-elephant ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 49 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -F -e DATA -e AB.VE^
-
-elephant ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 50 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% "^(abc|def|ghi|jkl)" ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 51 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -Mv "brown\sfox" ./testdata/grepinputv & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 52 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% --colour=always jumps ./testdata/grepinputv & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 53 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% --file-offsets "before|zero|after" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 54 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% --line-offsets "before|zero|after" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 55 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -f./testdata/greplist --color=always ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 56 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -c lazy ./testdata/grepinput* & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 57 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -c -l lazy ./testdata/grepinput* & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 58 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --regex=PATTERN ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 59 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --regexp=PATTERN ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 60 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --regex PATTERN ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 61 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --regexp PATTERN ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 62 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --match-limit=1000 --no-jit -M "This is a file(.|\R)*file." ./testdata/grepinput & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 63 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --recursion-limit=1000 --no-jit -M "This is a file(.|\R)*file." ./testdata/grepinput & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 64 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o1 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 65 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o2 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 66 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o3 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 67 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o12 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 68 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% --only-matching=2 "(?<=PAT)TERN (ap(pear)s)" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 69 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -vn --colour=always pattern ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 70 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --color=always -M "triple:\t.*\n\n" ./testdata/grepinput3 & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 71 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o "^01|^02|^03" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 72 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --color=always "^01|^02|^03" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 73 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o --colour=always "^01|^02|^03" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 74 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o "^01|02|^03" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 75 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --color=always "^01|02|^03" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 76 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o --colour=always "^01|02|^03" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 77 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o "^01|^02|03" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 78 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --color=always "^01|^02|03" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 79 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o --colour=always "^01|^02|03" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 80 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o "\b01|\b02" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 81 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --color=always "\b01|\b02" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 82 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o --colour=always "\b01|\b02" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 83 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --buffer-size=10 --max-buffer-size=100 "^a" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 84 ----------------------------->>testtrygrep
-echo testdata/grepinput3 >testtemp1grep
-(pushd %srcdir% & %pcre2grep% --file-list ./testdata/grepfilelist --file-list %builddir%\testtemp1grep "fox|complete|t7" & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 85 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --file-list=./testdata/grepfilelist "dolor" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 86 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 87 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% "cat" ./testdata/grepbinary & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 88 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -v "cat" ./testdata/grepbinary & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 89 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -I "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 90 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --binary-files=without-match "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 91 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -a "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 92 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --binary-files=text "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 93 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --text "dog" ./testdata/grepbinary & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 94 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -L -r --include=grepinputx --include grepinput8 "fox" ./testdata/grepinput* | sort & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 95 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --file-list ./testdata/grepfilelist --exclude grepinputv "fox|complete" & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 96 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -L -r --include-dir=testdata --exclude "^^(?^!grepinput)" "fox" ./test* | sort & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 97 ----------------------------->>testtrygrep
-echo grepinput$>testtemp1grep
-echo grepinput8>>testtemp1grep
-(pushd %srcdir% & %pcre2grep% -L -r --include=grepinput --exclude-from %builddir%\testtemp1grep --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 98 ----------------------------->>testtrygrep
-echo grepinput$>testtemp1grep
-echo grepinput8>>testtemp1grep
-(pushd %srcdir% & %pcre2grep% -L -r --exclude=grepinput3 --include=grepinput --exclude-from %builddir%\testtemp1grep --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 99 ----------------------------->>testtrygrep
-echo grepinput$>testtemp1grep
-echo grepinput8>testtemp2grep
-(pushd %srcdir% & %pcre2grep% -L -r --include grepinput --exclude-from %builddir%\testtemp1grep --exclude-from=%builddir%\testtemp2grep --exclude-dir="^\." "fox" ./testdata | sort & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 100 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -Ho2 --only-matching=1 -o3 "(\w+) binary (\w+)(\.)?" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 101 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -o3 -Ho2 -o12 --only-matching=1 -o3 --colour=always --om-separator="|" "(\w+) binary (\w+)(\.)?" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 102 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -n "^$" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 103 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --only-matching "^$" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 104 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -n --only-matching "^$" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 105 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --colour=always "ipsum|" ./testdata/grepinput3 & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 106 ----------------------------->>testtrygrep
-(pushd %srcdir% & echo a| %pcre2grep% -M "|a" & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 107 ----------------------------->>testtrygrep
-echo a>testtemp1grep
-echo aaaaa>>testtemp1grep
-(pushd %srcdir% & %pcre2grep%  --line-offsets "(?<=\Ka)" %builddir%\testtemp1grep & popd) >>testtrygrep 2>&1
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 108 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -lq PATTERN ./testdata/grepinput ./testdata/grepinputx & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 109 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -cq lazy ./testdata/grepinput* & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 110 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --om-separator / -Mo0 -o1 -o2 "match (\d+):\n (.)\n" testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 111 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --line-offsets -M "match (\d+):\n (.)\n" testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 112 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --file-offsets -M "match (\d+):\n (.)\n" testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 113 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% --total-count "the" testdata/grepinput* & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 114 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -tc "the" testdata/grepinput* & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 115 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -tlc "the" testdata/grepinput* & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 116 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -th "the" testdata/grepinput* & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 117 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -tch "the" testdata/grepinput* & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 118 ----------------------------->>testtrygrep
-(pushd %srcdir% & %pcre2grep% -tL "the" testdata/grepinput* & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 119 ----------------------------->>testtrygrep
-%printf% "123\n456\n789\n---abc\ndef\nxyz\n---\n" >testNinputgrep
-%pcre2grep% -Mo "(\n|[^-])*---" testNinputgrep >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-echo ---------------------------- Test 120 ------------------------------>>testtrygrep
-(pushd %srcdir% & %pcre2grep% -HO "$0:$2$1$3" "(\w+) binary (\w+)(\.)?" ./testdata/grepinput & popd) >>testtrygrep
-echo RC=^%ERRORLEVEL%>>testtrygrep
-
-:: Now compare the results.
-
-%cf% %srcdir%\testdata\grepoutput testtrygrep %cfout%
-if ERRORLEVEL 1 exit /b 1
-
-
-:: These tests require UTF-8 support
-
-if %utf8% neq 0 (
-  echo Testing pcre2grep UTF-8 features
-
-  echo ---------------------------- Test U1 ------------------------------>testtrygrep
-  (pushd %srcdir% & %pcre2grep% -n -u --newline=any "^X" ./testdata/grepinput8 & popd) >>testtrygrep
-  echo RC=^%ERRORLEVEL%>>testtrygrep
-
-  echo ---------------------------- Test U2 ------------------------------>>testtrygrep
-  (pushd %srcdir% & %pcre2grep% -n -u -C 3 --newline=any "Match" ./testdata/grepinput8 & popd) >>testtrygrep
-  echo RC=^%ERRORLEVEL%>>testtrygrep
-
-  echo ---------------------------- Test U3 ------------------------------>>testtrygrep
-  (pushd %srcdir% & %pcre2grep% --line-offsets -u --newline=any "(?<=\K\x{17f})" ./testdata/grepinput8 & popd) >>testtrygrep
-  echo RC=^%ERRORLEVEL%>>testtrygrep
-
-  %cf% %srcdir%\testdata\grepoutput8 testtrygrep %cfout%
-  if ERRORLEVEL 1 exit /b 1
-
-) else (
-  echo Skipping pcre2grep UTF-8 tests: no UTF-8 support in PCRE2 library
-)
-
-
-:: We go to some contortions to try to ensure that the tests for the various
-:: newline settings will work in environments where the normal newline sequence
-:: is not \n. Do not use exported files, whose line endings might be changed.
-:: Instead, create an input file so that its contents are exactly what we want.
-:: These tests are run in the build directory.
-
-echo Testing pcre2grep newline settings
-%printf% "abc\rdef\r\nghi\njkl" >testNinputgrep
-
-echo ---------------------------- Test N1 ------------------------------>testtrygrep
-%pcre2grep% -n -N CR "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
-
-echo ---------------------------- Test N2 ------------------------------>>testtrygrep
-%pcre2grep% -n --newline=crlf "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
-
-echo ---------------------------- Test N3 ------------------------------>>testtrygrep
-for /f %%a in ('%printf% "def\rjkl"') do set pattern=%%a
-%pcre2grep% -n --newline=cr -F "!pattern!" testNinputgrep >>testtrygrep
-
-echo ---------------------------- Test N4 ------------------------------>>testtrygrep
-%pcre2grep% -n --newline=crlf -F -f %srcdir%/testdata/greppatN4 testNinputgrep >>testtrygrep
-
-echo ---------------------------- Test N5 ------------------------------>>testtrygrep
-%pcre2grep% -n --newline=any "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
-
-echo ---------------------------- Test N6 ------------------------------>>testtrygrep
-%pcre2grep% -n --newline=anycrlf "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
-
-%cf% %srcdir%\testdata\grepoutputN testtrygrep %cfout%
-if ERRORLEVEL 1 exit /b 1
-
-:: If pcre2grep supports script callouts, run some tests on them.
-
-%pcre2grep% --help | %pcre2grep% -q "callout scripts in patterns are supported"
-if %ERRORLEVEL% equ 0 (
-  echo Testing pcre2grep script callouts
-  %pcre2grep% "(T)(..(.))(?C'cmd|/c echo|Arg1: [$1] [$2] [$3]|Arg2: ^$|${1}^$| ($4) ($14) ($0)')()" %srcdir%/testdata/grepinputv >testtrygrep
-  %pcre2grep% "(T)(..(.))()()()()()()()(..)(?C'cmd|/c echo|Arg1: [$11] [${11}]')" %srcdir%/testdata/grepinputv >>testtrygrep
-  %pcre2grep% "(T)(?C'|$0:$1$n')" %srcdir%/testdata/grepinputv >>testtrygrep
-  %pcre2grep% "(T)(?C'|$1$n')(*F)" %srcdir%/testdata/grepinputv >>testtrygrep
-  %pcre2grep% --help | %pcre2grep% -q "Non-script callout scripts in patterns are supported"
-  if %ERRORLEVEL% equ 0 (
-    %cf% %srcdir%\testdata\grepoutputCN testtrygrep %cfout%
-  ) else (
-    %cf% %srcdir%\testdata\grepoutputC testtrygrep %cfout%
-  )
-  if ERRORLEVEL 1 exit /b 1
-) else (
-  echo Script callouts are not supported
-)
-
-:: Finally, some tests to exercise code that is not tested above, just to be
-:: sure that it runs OK. Doing this improves the coverage statistics. The output
-:: is not checked.
-
-echo Testing miscellaneous pcre2grep arguments (unchecked)
-%printf% "" >testtrygrep
-call :checkspecial "-xxxxx" 2 || exit /b 1
-call :checkspecial "--help" 0 || exit /b 1
-call :checkspecial "--line-buffered --colour=auto abc nul" 1 || exit /b 1
-
-:: Clean up local working files
-del testcf printf.js testNinputgrep teststderrgrep testtrygrep testtemp1grep testtemp2grep
-
-exit /b 0
-
-:: ------ Function to run and check a special pcre2grep arguments test -------
-
-:checkspecial
-  %pcre2grep% %~1 >>testtrygrep 2>&1
-  if %ERRORLEVEL% neq %2 (
-    echo ** pcre2grep %~1 failed - check testtrygrep
-    exit /b 1
-  )
-  exit /b 0
-
-:: End

+ 0 - 869
src/deps/regex/pcre2/RunTest

@@ -1,869 +0,0 @@
-#! /bin/sh
-
-###############################################################################
-# Run the PCRE2 tests using the pcre2test program. The appropriate tests are
-# selected, depending on which build-time options were used.
-#
-# When JIT support is available, all appropriate tests are run with and without
-# JIT, unless "-nojit" is given on the command line. There are also two tests
-# for JIT-specific features, one to be run when JIT support is available
-# (unless "-nojit" is specified), and one when it is not.
-#
-# Whichever of the 8-, 16- and 32-bit libraries exist are tested. It is also
-# possible to select which to test by giving "-8", "-16" or "-32" on the
-# command line.
-#
-# As well as "-nojit", "-8", "-16", and "-32", arguments for this script are
-# individual test numbers, ranges of tests such as 3-6 or 3- (meaning 3 to the
-# end), or a number preceded by ~ to exclude a test. For example, "3-15 ~10"
-# runs tests 3 to 15, excluding test 10, and just "~10" runs all the tests
-# except test 10. Whatever order the arguments are in, the tests are always run
-# in numerical order.
-#
-# Inappropriate tests are automatically skipped (with a comment to say so). For
-# example, if JIT support is not compiled, test 16 is skipped, whereas if JIT
-# support is compiled, test 15 is skipped.
-#
-# Other arguments can be one of the words "-valgrind", "-valgrind-log", or
-# "-sim" followed by an argument to run cross-compiled executables under a
-# simulator, for example:
-#
-# RunTest 3 -sim "qemu-arm -s 8388608"
-#
-# For backwards compatibility, -nojit, -valgrind, -valgrind-log, and -sim may
-# be given without the leading "-" character.
-#
-# When PCRE2 is compiled by clang with -fsanitize arguments, some tests need
-# very much more stack than normal. In environments where the stack can be
-# set at runtime, -bigstack sets a gigantic stack.
-#
-# There are two special cases where only one argument is allowed:
-#
-# If the first and only argument is "ebcdic", the script runs the special
-# EBCDIC test that can be useful for checking certain EBCDIC features, even
-# when run in an ASCII environment. PCRE2 must be built with EBCDIC support for
-# this test to be run.
-#
-# If the script is obeyed as "RunTest list", a list of available tests is
-# output, but none of them are run.
-###############################################################################
-
-# Define test titles in variables so that they can be output as a list. Some
-# of them are modified (e.g. with -8 or -16) when used in the actual tests.
-
-title0="Test 0: Unchecked pcre2test argument tests (to improve coverage)"
-title1="Test 1: Main non-UTF, non-UCP functionality (compatible with Perl >= 5.10)"
-title2="Test 2: API, errors, internals and non-Perl stuff"
-title3="Test 3: Locale-specific features"
-title4A="Test 4: UTF"
-title4B=" and Unicode property support (compatible with Perl >= 5.10)"
-title5A="Test 5: API, internals, and non-Perl stuff for UTF"
-title5B=" and UCP support"
-title6="Test 6: DFA matching main non-UTF, non-UCP functionality"
-title7A="Test 7: DFA matching with UTF"
-title7B=" and Unicode property support"
-title8="Test 8: Internal offsets and code size tests"
-title9="Test 9: Specials for the basic 8-bit library"
-title10="Test 10: Specials for the 8-bit library with UTF-8 and UCP support"
-title11="Test 11: Specials for the basic 16-bit and 32-bit libraries"
-title12="Test 12: Specials for the 16-bit and 32-bit libraries UTF and UCP support"
-title13="Test 13: DFA specials for the basic 16-bit and 32-bit libraries"
-title14="Test 14: DFA specials for UTF and UCP support"
-title15="Test 15: Non-JIT limits and other non-JIT tests"
-title16="Test 16: JIT-specific features when JIT is not available"
-title17="Test 17: JIT-specific features when JIT is available"
-title18="Test 18: Tests of the POSIX interface, excluding UTF/UCP"
-title19="Test 19: Tests of the POSIX interface with UTF/UCP"
-title20="Test 20: Serialization and code copy tests"
-title21="Test 21: \C tests without UTF (supported for DFA matching)"
-title22="Test 22: \C tests with UTF (not supported for DFA matching)"
-title23="Test 23: \C disabled test"
-title24="Test 24: Non-UTF pattern conversion tests"
-title25="Test 25: UTF pattern conversion tests"
-maxtest=25
-
-if [ $# -eq 1 -a "$1" = "list" ]; then
-  echo $title0
-  echo $title1
-  echo $title2 "(not UTF or UCP)"
-  echo $title3
-  echo $title4A $title4B
-  echo $title5A $title5B
-  echo $title6
-  echo $title7A $title7B
-  echo $title8
-  echo $title9
-  echo $title10
-  echo $title11
-  echo $title12
-  echo $title13
-  echo $title14
-  echo $title15
-  echo $title16
-  echo $title17
-  echo $title18
-  echo $title19
-  echo $title20
-  echo $title21
-  echo $title22
-  echo $title23
-  echo $title24
-  echo $title25
-  exit 0
-fi
-
-# Set up a suitable "diff" command for comparison. Some systems
-# have a diff that lacks a -u option. Try to deal with this.
-
-cf="diff"
-diff -u /dev/null /dev/null 2>/dev/null && cf="diff -u"
-
-# Find the test data
-
-if [ -n "$srcdir" -a -d "$srcdir" ] ; then
-  testdata="$srcdir/testdata"
-elif [ -d "./testdata" ] ; then
-  testdata=./testdata
-elif [ -d "../testdata" ] ; then
-  testdata=../testdata
-else
-  echo "Cannot find the testdata directory"
-  exit 1
-fi
-
-
-# ------ Function to check results of a test -------
-
-# This function is called with three parameters:
-#
-#  $1 the value of $? after a call to pcre2test
-#  $2 the suffix of the output file to compare with
-#  $3 the $opt value (empty, -jit, or -dfa)
-#
-# Note: must define using name(), not "function name", for Solaris.
-
-checkresult()
-  {
-  if [ $1 -ne 0 ] ; then
-    echo "** pcre2test failed - check testtry"
-    exit 1
-  fi
-  case "$3" in
-    -jit) with=" with JIT";;
-    -dfa) with=" with DFA";;
-    *)    with="";;
-  esac
-  $cf $testdata/testoutput$2 testtry
-  if [ $? != 0 ] ; then
-    echo ""
-    echo "** Test $2 failed$with"
-    exit 1
-  fi
-  echo "  OK$with"
-  }
-
-
-# ------ Function to run and check a special pcre2test arguments test -------
-
-checkspecial()
-  {
-  $valgrind  $vjs ./pcre2test $1 >>testtry
-  if [ $? -ne 0 ] ; then
-    echo "** pcre2test $1 failed - check testtry"
-    exit 1
-  fi
-  }
-
-
-# ------ Special EBCDIC Test -------
-
-if [ $# -eq 1 -a "$1" = "ebcdic" ]; then
-  $valgrind ./pcre2test -C ebcdic >/dev/null
-  ebcdic=$?
-  if [ $ebcdic -ne 1 ] ; then
-    echo "Cannot run EBCDIC tests: EBCDIC support not compiled"
-    exit 1
-  fi
-  for opt in "" "-dfa"; do
-    ./pcre2test -q $opt $testdata/testinputEBC >testtry
-    checkresult $? EBC "$opt"
-  done
-exit 0
-fi
-
-
-# ------ Normal Tests ------
-
-# Default values
-
-arg8=
-arg16=
-arg32=
-nojit=
-bigstack=
-sim=
-skip=
-valgrind=
-vjs=
-
-# This is in case the caller has set aliases (as I do - PH)
-unset cp ls mv rm
-
-# Process options and select which tests to run; for those that are explicitly
-# requested, check that the necessary optional facilities are available.
-
-do0=no
-do1=no
-do2=no
-do3=no
-do4=no
-do5=no
-do6=no
-do7=no
-do8=no
-do9=no
-do10=no
-do11=no
-do12=no
-do13=no
-do14=no
-do15=no
-do16=no
-do17=no
-do18=no
-do19=no
-do20=no
-do21=no
-do22=no
-do23=no
-do24=no
-do25=no
-
-while [ $# -gt 0 ] ; do
-  case $1 in
-    0) do0=yes;;
-    1) do1=yes;;
-    2) do2=yes;;
-    3) do3=yes;;
-    4) do4=yes;;
-    5) do5=yes;;
-    6) do6=yes;;
-    7) do7=yes;;
-    8) do8=yes;;
-    9) do9=yes;;
-   10) do10=yes;;
-   11) do11=yes;;
-   12) do12=yes;;
-   13) do13=yes;;
-   14) do14=yes;;
-   15) do15=yes;;
-   16) do16=yes;;
-   17) do17=yes;;
-   18) do18=yes;;
-   19) do19=yes;;
-   20) do20=yes;;
-   21) do21=yes;;
-   22) do22=yes;;
-   23) do23=yes;;
-   24) do24=yes;;
-   25) do25=yes;;
-   -8) arg8=yes;;
-  -16) arg16=yes;;
-  -32) arg32=yes;;
-   bigstack|-bigstack) bigstack=yes;;
-   nojit|-nojit) nojit=yes;;
-   sim|-sim) shift; sim=$1;;
-   valgrind|-valgrind) valgrind="valgrind --tool=memcheck -q --smc-check=all-non-file";;
-   valgrind-log|-valgrind-log) valgrind="valgrind --tool=memcheck --num-callers=30 --leak-check=no --error-limit=no --smc-check=all-non-file --log-file=report.%p ";;
-   ~*)
-     if expr "$1" : '~[0-9][0-9]*$' >/dev/null; then
-       skip="$skip `expr "$1" : '~\([0-9]*\)*$'`"
-     else
-       echo "Unknown option or test selector '$1'"; exit 1
-     fi
-   ;;
-   *-*)
-     if expr "$1" : '[0-9][0-9]*-[0-9]*$' >/dev/null; then
-       tf=`expr "$1" : '\([0-9]*\)'`
-       tt=`expr "$1" : '.*-\([0-9]*\)'`
-       if [ "$tt" = "" ] ; then tt=$maxtest; fi
-       if expr \( "$tt" ">" "$maxtest" \) >/dev/null; then
-         echo "Invalid test range '$1'"; exit 1
-       fi
-       while expr "$tf" "<=" "$tt" >/dev/null; do
-         eval do${tf}=yes
-         tf=`expr $tf + 1`
-       done
-     else
-       echo "Invalid test range '$1'"; exit 1
-     fi
-   ;;
-   *) echo "Unknown option or test selector '$1'"; exit 1;;
-  esac
-  shift
-done
-
-# Find which optional facilities are available.
-
-$sim ./pcre2test -C linksize >/dev/null
-link_size=$?
-if [ $link_size -lt 2 ] ; then
-  echo "RunTest: Failed to find internal link size"
-  exit 1
-fi
-if [ $link_size -gt 4 ] ; then
-  echo "RunTest: Failed to find internal link size"
-  exit 1
-fi
-
-# If it is possible to set the system stack size and -bigstack was given,
-# set up a large stack.
-
-$sim ./pcre2test -S 64 /dev/null /dev/null
-if [ $? -eq 0 -a "$bigstack" != "" ] ; then
-  setstack="-S 64"
-else
-  setstack=""
-fi
-
-# All of 8-bit, 16-bit, and 32-bit character strings may be supported, but only
-# one need be.
-
-$sim ./pcre2test -C pcre2-8 >/dev/null
-support8=$?
-$sim ./pcre2test -C pcre2-16 >/dev/null
-support16=$?
-$sim ./pcre2test -C pcre2-32 >/dev/null
-support32=$?
-
-# \C may be disabled
-
-$sim ./pcre2test -C backslash-C >/dev/null
-supportBSC=$?
-
-# Initialize all bitsizes skipped
-
-test8=skip
-test16=skip
-test32=skip
-
-# If no bitsize arguments, select all that are available
-
-if [ "$arg8$arg16$arg32" = "" ] ; then
-  if [ $support8 -ne 0 ] ; then
-    test8=-8
-  fi
-  if [ $support16 -ne 0 ] ; then
-    test16=-16
-  fi
-  if [ $support32 -ne 0 ] ; then
-    test32=-32
-  fi
-
-# Otherwise, select requested bit sizes
-
-else
-  if [ "$arg8" = yes ] ; then
-    if [ $support8 -eq 0 ] ; then
-      echo "Cannot run 8-bit library tests: 8-bit library not compiled"
-      exit 1
-    fi
-    test8=-8
-  fi
-  if [ "$arg16" = yes ] ; then
-    if [ $support16 -eq 0 ] ; then
-      echo "Cannot run 16-bit library tests: 16-bit library not compiled"
-      exit 1
-    fi
-    test16=-16
-  fi
-  if [ "$arg32" = yes ] ; then
-    if [ $support32 -eq 0 ] ; then
-      echo "Cannot run 32-bit library tests: 32-bit library not compiled"
-      exit 1
-    fi
-    test32=-32
-  fi
-fi
-
-# UTF support is implied by Unicode support, and it always applies to all bit
-# sizes if both are supported; we can't have UTF-8 support without UTF-16 or
-# UTF-32 support.
-
-$sim ./pcre2test -C unicode >/dev/null
-utf=$?
-
-# When JIT is used with valgrind, we need to set up valgrind suppressions as
-# otherwise there are a lot of false positive valgrind reports when the
-# the hardware supports SSE2.
-
-jitopt=
-$sim ./pcre2test -C jit >/dev/null
-jit=$?
-if [ $jit -ne 0 -a "$nojit" != "yes" ] ; then
-  jitopt=-jit
-  if [ "$valgrind" != "" ] ; then
-    vjs="--suppressions=$testdata/valgrind-jit.supp"
-  fi
-fi
-
-# If no specific tests were requested, select all. Those that are not
-# relevant will be automatically skipped.
-
-if [ $do0  = no -a $do1  = no -a $do2  = no -a $do3  = no -a \
-     $do4  = no -a $do5  = no -a $do6  = no -a $do7  = no -a \
-     $do8  = no -a $do9  = no -a $do10 = no -a $do11 = no -a \
-     $do12 = no -a $do13 = no -a $do14 = no -a $do15 = no -a \
-     $do16 = no -a $do17 = no -a $do18 = no -a $do19 = no -a \
-     $do20 = no -a $do21 = no -a $do22 = no -a $do23 = no -a \
-     $do24 = no -a $do25 = no \
-   ]; then
-  do0=yes
-  do1=yes
-  do2=yes
-  do3=yes
-  do4=yes
-  do5=yes
-  do6=yes
-  do7=yes
-  do8=yes
-  do9=yes
-  do10=yes
-  do11=yes
-  do12=yes
-  do13=yes
-  do14=yes
-  do15=yes
-  do16=yes
-  do17=yes
-  do18=yes
-  do19=yes
-  do20=yes
-  do21=yes
-  do22=yes
-  do23=yes
-  do24=yes
-  do25=yes
-fi
-
-# Handle any explicit skips at this stage, so that an argument list may consist
-# only of explicit skips.
-
-for i in $skip; do eval do$i=no; done
-
-# Show which release and which test data
-
-echo ""
-echo PCRE2 C library tests using test data from $testdata
-$sim ./pcre2test /dev/null
-echo ""
-
-for bmode in "$test8" "$test16" "$test32"; do
-  case "$bmode" in
-    skip) continue;;
-    -16)  if [ "$test8$test32" != "skipskip" ] ; then echo ""; fi
-          bits=16; echo "---- Testing 16-bit library ----"; echo "";;
-    -32)  if [ "$test8$test16" != "skipskip" ] ; then echo ""; fi
-          bits=32; echo "---- Testing 32-bit library ----"; echo "";;
-    -8)   bits=8; echo "---- Testing 8-bit library ----"; echo "";;
-  esac
-
-  # Test 0 is a special test. Its output is not checked, because it will
-  # be different on different hardware and with different configurations.
-  # Running this test just exercises the code.
-
-  if [ $do0 = yes ] ; then
-    echo $title0
-    echo '/abc/jit,memory,framesize' >testSinput
-    echo '   abc' >>testSinput
-    echo '' >testtry
-    checkspecial '-C'
-    checkspecial '--help'
-    checkspecial '-S 1 -t 10 testSinput'
-    echo "  OK"
-  fi
-
-  # Primary non-UTF test, compatible with JIT and all versions of Perl >= 5.8
-
-  if [ $do1 = yes ] ; then
-    echo $title1
-    for opt in "" $jitopt; do
-      $sim $valgrind ${opt:+$vjs} ./pcre2test -q $setstack $bmode $opt $testdata/testinput1 testtry
-      checkresult $? 1 "$opt"
-    done
-  fi
-
-  # PCRE2 tests that are not Perl-compatible: API, errors, internals. We copy
-  # the testbtables file to the current directory for use by this test.
-
-  if [ $do2 = yes ] ; then
-    echo $title2 "(excluding UTF-$bits)"
-    cp $testdata/testbtables .
-    for opt in "" $jitopt; do
-      $sim $valgrind ${opt:+$vjs} ./pcre2test -q $setstack $bmode $opt $testdata/testinput2 testtry
-      saverc=$?
-      if [ $saverc = 0 ] ; then
-        $sim $valgrind ${opt:+$vjs} ./pcre2test -q $bmode $opt -error -70,-62,-2,-1,0,100,101,191,200 >>testtry
-        checkresult $? 2 "$opt"
-      else
-        checkresult $saverc 2 "$opt"
-      fi
-    done
-  fi
-
-  # Locale-specific tests, provided that either the "fr_FR", "fr_CA", "french"
-  # or "fr" locale is available. The first two are Unix-like standards; the
-  # last two are for Windows. Unfortunately, different versions of the French
-  # locale give different outputs for some items. This test passes if the
-  # output matches any one of the alternative output files.
-
-  if [ $do3 = yes ] ; then
-    locale=
-
-    # In some environments locales that are listed by the "locale -a"
-    # command do not seem to work with setlocale(). Therefore, we do
-    # a preliminary test to see if pcre2test can set one before going
-    # on to use it.
-
-    for loc in 'fr_FR' 'french' 'fr' 'fr_CA'; do
-      locale -a | grep "^$loc\$" >/dev/null
-      if [ $? -eq 0 ] ; then
-        echo "/a/locale=$loc" | \
-          $sim $valgrind ./pcre2test -q $bmode | \
-            grep "Failed to set locale" >/dev/null
-        if [ $? -ne 0 ] ; then
-          locale=$loc
-          if [ "$locale" = "fr_FR" ] ; then
-            infile=$testdata/testinput3
-            outfile=$testdata/testoutput3
-            outfile2=$testdata/testoutput3A
-            outfile3=$testdata/testoutput3B
-          else
-            infile=test3input
-            outfile=test3output
-            outfile2=test3outputA
-            outfile3=test3outputB
-            sed "s/fr_FR/$loc/" $testdata/testinput3 >test3input
-            sed "s/fr_FR/$loc/" $testdata/testoutput3 >test3output
-            sed "s/fr_FR/$loc/" $testdata/testoutput3A >test3outputA
-            sed "s/fr_FR/$loc/" $testdata/testoutput3B >test3outputB
-          fi
-          break
-        fi
-      fi
-    done
-
-    if [ "$locale" != "" ] ; then
-      echo $title3 "(using '$locale' locale)"
-      for opt in "" $jitopt; do
-        $sim $valgrind ${opt:+$vjs} ./pcre2test -q $setstack $bmode $opt $infile testtry
-        if [ $? = 0 ] ; then
-          case "$opt" in
-            -jit) with=" with JIT";;
-            *)    with="";;
-          esac
-          if $cf $outfile testtry >teststdout || \
-             $cf $outfile2 testtry >teststdout || \
-             $cf $outfile3 testtry >teststdout
-          then
-            echo "  OK$with"
-          else
-            echo "** Locale test did not run successfully$with. The output did not match"
-            echo "   $outfile, $outfile2 or $outfile3."
-            echo "   This may mean that there is a problem with the locale settings rather"
-            echo "   than a bug in PCRE2."
-            exit 1
-          fi
-        else exit 1
-        fi
-      done
-    else
-      echo "Cannot test locale-specific features - none of the 'fr_FR', 'fr_CA',"
-      echo "'fr' or 'french' locales can be set, or the \"locale\" command is"
-      echo "not available to check for them."
-      echo " "
-    fi
-  fi
-
-  # Tests for UTF and Unicode property support
-
-  if [ $do4 = yes ] ; then
-    echo ${title4A}-${bits}${title4B}
-    if [ $utf -eq 0 ] ; then
-      echo "  Skipped because UTF-$bits support is not available"
-    else
-      for opt in "" $jitopt; do
-        $sim $valgrind ${opt:+$vjs} ./pcre2test -q $setstack $bmode $opt $testdata/testinput4 testtry
-        checkresult $? 4 "$opt"
-      done
-    fi
-  fi
-
-  if [ $do5 = yes ] ; then
-    echo ${title5A}-${bits}$title5B
-    if [ $utf -eq 0 ] ; then
-      echo "  Skipped because UTF-$bits support is not available"
-    else
-      for opt in "" $jitopt; do
-        $sim $valgrind ${opt:+$vjs} ./pcre2test -q $setstack $bmode $opt $testdata/testinput5 testtry
-        checkresult $? 5 "$opt"
-      done
-    fi
-  fi
-
-  # Tests for DFA matching support
-
-  if [ $do6 = yes ] ; then
-    echo $title6
-    $sim $valgrind ./pcre2test -q $setstack $bmode $testdata/testinput6 testtry
-    checkresult $? 6 ""
-  fi
-
-  if [ $do7 = yes ] ; then
-    echo ${title7A}-${bits}$title7B
-    if [ $utf -eq 0 ] ; then
-      echo "  Skipped because UTF-$bits support is not available"
-    else
-      $sim $valgrind ./pcre2test -q $setstack $bmode $opt $testdata/testinput7 testtry
-      checkresult $? 7 ""
-    fi
-  fi
-
-  # Test of internal offsets and code sizes. This test is run only when there
-  # is UTF/UCP support. The actual tests are mostly the same as in some of the
-  # above, but in this test we inspect some offsets and sizes. This is a
-  # doublecheck for the maintainer, just in case something changes unexpectely.
-  # The output from this test is different in 8-bit, 16-bit, and 32-bit modes
-  # and for different link sizes, so there are different output files for each
-  # mode and link size.
-
-  if [ $do8 = yes ] ; then
-    echo $title8
-    if [ $utf -eq 0 ] ; then
-      echo "  Skipped because UTF-$bits support is not available"
-    else
-      $sim $valgrind ./pcre2test -q $setstack $bmode $testdata/testinput8 testtry
-      checkresult $? 8-$bits-$link_size ""
-    fi
-  fi
-
-  # Tests for 8-bit-specific features
-
-  if [ "$do9" = yes ] ; then
-    echo $title9
-    if [ "$bits" = "16" -o "$bits" = "32" ] ; then
-      echo "  Skipped when running 16/32-bit tests"
-    else
-      for opt in "" $jitopt; do
-        $sim $valgrind ${opt:+$vjs} ./pcre2test -q $setstack $bmode $opt $testdata/testinput9 testtry
-        checkresult $? 9 "$opt"
-      done
-    fi
-  fi
-
-  # Tests for UTF-8 and UCP 8-bit-specific features
-
-  if [ "$do10" = yes ] ; then
-    echo $title10
-    if [ "$bits" = "16" -o "$bits" = "32" ] ; then
-      echo "  Skipped when running 16/32-bit tests"
-    elif [ $utf -eq 0 ] ; then
-      echo "  Skipped because UTF-$bits support is not available"
-    else
-      for opt in "" $jitopt; do
-        $sim $valgrind ${opt:+$vjs} ./pcre2test -q $setstack $bmode $opt $testdata/testinput10 testtry
-        checkresult $? 10 "$opt"
-      done
-    fi
-  fi
-
-  # Tests for 16-bit and 32-bit features. Output is different for the two widths.
-
-  if [ $do11 = yes ] ; then
-    echo $title11
-    if [ "$bits" = "8" ] ; then
-      echo "  Skipped when running 8-bit tests"
-    else
-      for opt in "" $jitopt; do
-        $sim $valgrind ${opt:+$vjs} ./pcre2test -q $setstack $bmode $opt $testdata/testinput11 testtry
-        checkresult $? 11-$bits "$opt"
-      done
-    fi
-  fi
-
-  # Tests for 16-bit and 32-bit features with UTF-16/32 and UCP support. Output
-  # is different for the two widths.
-
-  if [ $do12 = yes ] ; then
-    echo $title12
-    if [ "$bits" = "8" ] ; then
-      echo "  Skipped when running 8-bit tests"
-    elif [ $utf -eq 0 ] ; then
-      echo "  Skipped because UTF-$bits support is not available"
-    else
-      for opt in "" $jitopt; do
-        $sim $valgrind ${opt:+$vjs} ./pcre2test -q $setstack $bmode $opt $testdata/testinput12 testtry
-        checkresult $? 12-$bits "$opt"
-      done
-    fi
-  fi
-
-  # Tests for 16/32-bit-specific features in DFA non-UTF modes
-
-  if [ $do13 = yes ] ; then
-    echo $title13
-    if [ "$bits" = "8" ] ; then
-      echo "  Skipped when running 8-bit tests"
-    else
-      $sim $valgrind ./pcre2test -q $setstack $bmode $testdata/testinput13 testtry
-      checkresult $? 13 ""
-    fi
-  fi
-
-  # Tests for DFA UTF and UCP features. Output is different for the different widths.
-
-  if [ $do14 = yes ] ; then
-    echo $title14
-    if [ $utf -eq 0 ] ; then
-      echo "  Skipped because UTF-$bits support is not available"
-    else
-      $sim $valgrind ./pcre2test -q $setstack $bmode $opt $testdata/testinput14 testtry
-      checkresult $? 14-$bits ""
-    fi
-  fi
-
-  # Test non-JIT match and recursion limits
-
-  if [ $do15 = yes ] ; then
-    echo $title15
-    $sim $valgrind ./pcre2test -q $setstack $bmode $testdata/testinput15 testtry
-    checkresult $? 15 ""
-  fi
-
-  # Test JIT-specific features when JIT is not available
-
-  if [ $do16 = yes ] ; then
-    echo $title16
-    if [ $jit -ne 0 ] ; then
-      echo "  Skipped because JIT is available"
-    else
-      $sim $valgrind ./pcre2test -q $setstack $bmode $testdata/testinput16 testtry
-      checkresult $? 16 ""
-    fi
-  fi
-
-  # Test JIT-specific features when JIT is available
-
-  if [ $do17 = yes ] ; then
-    echo $title17
-    if [ $jit -eq 0 -o "$nojit" = "yes" ] ; then
-      echo "  Skipped because JIT is not available or nojit was specified"
-    else
-      $sim $valgrind $vjs ./pcre2test -q $setstack $bmode $testdata/testinput17 testtry
-      checkresult $? 17 ""
-    fi
-  fi
-
-  # Tests for the POSIX interface without UTF/UCP (8-bit only)
-
-  if [ $do18 = yes ] ; then
-    echo $title18
-    if [ "$bits" = "16" -o "$bits" = "32" ] ; then
-      echo "  Skipped when running 16/32-bit tests"
-    else
-      $sim $valgrind ./pcre2test -q $setstack $bmode $testdata/testinput18 testtry
-      checkresult $? 18 ""
-    fi
-  fi
-
-  # Tests for the POSIX interface with UTF/UCP (8-bit only)
-
-  if [ $do19 = yes ] ; then
-    echo $title19
-    if [ "$bits" = "16" -o "$bits" = "32" ] ; then
-      echo "  Skipped when running 16/32-bit tests"
-    elif [ $utf -eq 0 ] ; then
-      echo "  Skipped because UTF-$bits support is not available"
-    else
-      $sim $valgrind ./pcre2test -q $setstack $bmode $testdata/testinput19 testtry
-      checkresult $? 19 ""
-    fi
-  fi
-
-  # Serialization tests
-
-  if [ $do20 = yes ] ; then
-    echo $title20
-    $sim $valgrind ./pcre2test -q $setstack $bmode $testdata/testinput20 testtry
-    checkresult $? 20 ""
-  fi
-
-  # \C tests without UTF - DFA matching is supported
-
-  if [ "$do21" = yes ] ; then
-    echo $title21
-    if [ $supportBSC -eq 0 ] ; then
-      echo "  Skipped because \C is disabled"
-    else
-      for opt in "" $jitopt -dfa; do
-        $sim $valgrind ${opt:+$vjs} ./pcre2test -q $setstack $bmode $opt $testdata/testinput21 testtry
-        checkresult $? 21 "$opt"
-      done
-    fi
-  fi
-
-  # \C tests with UTF - DFA matching is not supported for \C in UTF mode
-
-  if [ "$do22" = yes ] ; then
-    echo $title22
-    if [ $supportBSC -eq 0 ] ; then
-      echo "  Skipped because \C is disabled"
-    elif [ $utf -eq 0 ] ; then
-      echo "  Skipped because UTF-$bits support is not available"
-    else
-      for opt in "" $jitopt; do
-        $sim $valgrind ${opt:+$vjs} ./pcre2test -q $setstack $bmode $opt $testdata/testinput22 testtry
-        checkresult $? 22-$bits "$opt"
-      done
-    fi
-  fi
-
-  # Test when \C is disabled
-
-  if [ "$do23" = yes ] ; then
-    echo $title23
-    if [ $supportBSC -ne 0 ] ; then
-      echo "  Skipped because \C is not disabled"
-    else
-      $sim $valgrind ./pcre2test -q $setstack $bmode $testdata/testinput23 testtry
-      checkresult $? 23 ""
-    fi
-  fi
-
-  # Non-UTF pattern conversion tests
-
-  if [ "$do24" = yes ] ; then
-    echo $title24
-    $sim $valgrind ./pcre2test -q $setstack $bmode $testdata/testinput24 testtry
-    checkresult $? 24 ""
-  fi
-
-  # UTF pattern conversion tests
-
-  if [ "$do25" = yes ] ; then
-    echo $title25
-    if [ $utf -eq 0 ] ; then
-      echo "  Skipped because UTF-$bits support is not available"
-    else
-      $sim $valgrind ./pcre2test -q $setstack $bmode $testdata/testinput25 testtry
-      checkresult $? 25 ""
-    fi
-  fi
-
-# End of loop for 8/16/32-bit tests
-done
-
-# Clean up local working files
-rm -f testbtables testSinput test3input testsaved1 testsaved2 test3output test3outputA test3outputB teststdout teststderr testtry
-
-# End

+ 0 - 525
src/deps/regex/pcre2/RunTest.bat

@@ -1,525 +0,0 @@
-@echo off
-@rem
-@rem MS Windows batch file to run pcre2test on testfiles with the correct
-@rem options. This file must use CRLF linebreaks to function properly,
-@rem and requires both pcre2test and pcre2grep.
-@rem
-@rem ------------------------ HISTORY ----------------------------------
-@rem This file was originally contributed to PCRE1 by Ralf Junker, and touched
-@rem up by Daniel Richard G. Tests 10-12 added by Philip H.
-@rem Philip H also changed test 3 to use "wintest" files.
-@rem
-@rem Updated by Tom Fortmann to support explicit test numbers on the command
-@rem line. Added argument validation and added error reporting.
-@rem
-@rem Sheri Pierce added logic to skip feature dependent tests
-@rem tests 4 5 7 10 12 14 19 and 22 require Unicode support
-@rem 8 requires Unicode and link size 2
-@rem 16 requires absence of jit support
-@rem 17 requires presence of jit support
-@rem Sheri P also added override tests for study and jit testing
-@rem Zoltan Herczeg added libpcre16 support
-@rem Zoltan Herczeg added libpcre32 support
-@rem -------------------------------------------------------------------
-@rem
-@rem The file was converted for PCRE2 by PH, February 2015.
-@rem Updated for new test 14 (moving others up a number), August 2015.
-@rem Tidied and updated for new tests 21, 22, 23 by PH, October 2015.
-@rem PH added missing "set type" for test 22, April 2016.
-@rem PH added copy command for new testbtables file, November 2020
-
-
-setlocal enabledelayedexpansion
-if [%srcdir%]==[] (
-if exist testdata\ set srcdir=.)
-if [%srcdir%]==[] (
-if exist ..\testdata\ set srcdir=..)
-if [%srcdir%]==[] (
-if exist ..\..\testdata\ set srcdir=..\..)
-if NOT exist %srcdir%\testdata\ (
-Error: echo distribution testdata folder not found!
-call :conferror
-exit /b 1
-goto :eof
-)
-
-if [%pcre2test%]==[] set pcre2test=.\pcre2test.exe
-
-echo source dir is %srcdir%
-echo pcre2test=%pcre2test%
-
-if NOT exist %pcre2test% (
-echo Error: %pcre2test% not found!
-echo.
-call :conferror
-exit /b 1
-)
-
-%pcre2test% -C linksize >NUL
-set link_size=%ERRORLEVEL%
-%pcre2test% -C pcre2-8 >NUL
-set support8=%ERRORLEVEL%
-%pcre2test% -C pcre2-16 >NUL
-set support16=%ERRORLEVEL%
-%pcre2test% -C pcre2-32 >NUL
-set support32=%ERRORLEVEL%
-%pcre2test% -C unicode >NUL
-set unicode=%ERRORLEVEL%
-%pcre2test% -C jit >NUL
-set jit=%ERRORLEVEL%
-%pcre2test% -C backslash-C >NUL
-set supportBSC=%ERRORLEVEL%
-
-if %support8% EQU 1 (
-if not exist testout8 md testout8
-if not exist testoutjit8 md testoutjit8
-)
-
-if %support16% EQU 1 (
-if not exist testout16 md testout16
-if not exist testoutjit16 md testoutjit16
-)
-
-if %support16% EQU 1 (
-if not exist testout32 md testout32
-if not exist testoutjit32 md testoutjit32
-)
-
-set do1=no
-set do2=no
-set do3=no
-set do4=no
-set do5=no
-set do6=no
-set do7=no
-set do8=no
-set do9=no
-set do10=no
-set do11=no
-set do12=no
-set do13=no
-set do14=no
-set do15=no
-set do16=no
-set do17=no
-set do18=no
-set do19=no
-set do20=no
-set do21=no
-set do22=no
-set do23=no
-set all=yes
-
-for %%a in (%*) do (
-  set valid=no
-  for %%v in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23) do if %%v == %%a set valid=yes
-  if "!valid!" == "yes" (
-    set do%%a=yes
-    set all=no
-) else (
-    echo Invalid test number - %%a!
-        echo Usage %0 [ test_number ] ...
-        echo Where test_number is one or more optional test numbers 1 through 23, default is all tests.
-        exit /b 1
-)
-)
-set failed="no"
-
-if "%all%" == "yes" (
-  set do1=yes
-  set do2=yes
-  set do3=yes
-  set do4=yes
-  set do5=yes
-  set do6=yes
-  set do7=yes
-  set do8=yes
-  set do9=yes
-  set do10=yes
-  set do11=yes
-  set do12=yes
-  set do13=yes
-  set do14=yes
-  set do15=yes
-  set do16=yes
-  set do17=yes
-  set do18=yes
-  set do19=yes
-  set do20=yes
-  set do21=yes
-  set do22=yes
-  set do23=yes
-)
-
-@echo RunTest.bat's pcre2test output is written to newly created subfolders
-@echo named testout{8,16,32} and testoutjit{8,16,32}.
-@echo.
-
-set mode=
-set bits=8
-
-:nextMode
-if "%mode%" == "" (
-  if %support8% EQU 0 goto modeSkip
-  echo.
-  echo ---- Testing 8-bit library ----
-  echo.
-)
-if "%mode%" == "-16" (
-  if %support16% EQU 0 goto modeSkip
-  echo.
-  echo ---- Testing 16-bit library ----
-  echo.
-)
-if "%mode%" == "-32" (
-  if %support32% EQU 0 goto modeSkip
-  echo.
-  echo ---- Testing 32-bit library ----
-  echo.
-)
-if "%do1%" == "yes" call :do1
-if "%do2%" == "yes" call :do2
-if "%do3%" == "yes" call :do3
-if "%do4%" == "yes" call :do4
-if "%do5%" == "yes" call :do5
-if "%do6%" == "yes" call :do6
-if "%do7%" == "yes" call :do7
-if "%do8%" == "yes" call :do8
-if "%do9%" == "yes" call :do9
-if "%do10%" == "yes" call :do10
-if "%do11%" == "yes" call :do11
-if "%do12%" == "yes" call :do12
-if "%do13%" == "yes" call :do13
-if "%do14%" == "yes" call :do14
-if "%do15%" == "yes" call :do15
-if "%do16%" == "yes" call :do16
-if "%do17%" == "yes" call :do17
-if "%do18%" == "yes" call :do18
-if "%do19%" == "yes" call :do19
-if "%do20%" == "yes" call :do20
-if "%do21%" == "yes" call :do21
-if "%do22%" == "yes" call :do22
-if "%do23%" == "yes" call :do23
-:modeSkip
-if "%mode%" == "" (
-  set mode=-16
-  set bits=16
-  goto nextMode
-)
-if "%mode%" == "-16" (
-  set mode=-32
-  set bits=32
-  goto nextMode
-)
-
-@rem If mode is -32, testing is finished
-if %failed% == "yes" (
-echo In above output, one or more of the various tests failed!
-exit /b 1
-)
-echo All OK
-goto :eof
-
-:runsub
-@rem Function to execute pcre2test and compare the output
-@rem Arguments are as follows:
-@rem
-@rem       1 = test number
-@rem       2 = outputdir
-@rem       3 = test name use double quotes
-@rem   4 - 9 = pcre2test options
-
-if [%1] == [] (
-  echo Missing test number argument!
-  exit /b 1
-)
-
-if [%2] == [] (
-  echo Missing outputdir!
-  exit /b 1
-)
-
-if [%3] == [] (
-  echo Missing test name argument!
-  exit /b 1
-)
-
-if %1 == 8 (
-  set outnum=8-%bits%-%link_size%
-) else (
-  set outnum=%1
-)
-set testinput=testinput%1
-set testoutput=testoutput%outnum%
-if exist %srcdir%\testdata\win%testinput% (
-  set testinput=wintestinput%1
-  set testoutput=wintestoutput%outnum%
-)
-
-echo Test %1: %3
-%pcre2test% %mode% %4 %5 %6 %7 %8 %9 %srcdir%\testdata\%testinput% >%2%bits%\%testoutput%
-if errorlevel 1 (
-  echo.          failed executing command-line:
-  echo.            %pcre2test% %mode% %4 %5 %6 %7 %8 %9 %srcdir%\testdata\%testinput% ^>%2%bits%\%testoutput%
-  set failed="yes"
-  goto :eof
-) else if [%1]==[2] (
-  %pcre2test% %mode% %4 %5 %6 %7 %8 %9 -error -70,-62,-2,-1,0,100,101,191,200 >>%2%bits%\%testoutput%
-)
-
-set type=
-if [%1]==[11] (
-  set type=-%bits%
-)
-if [%1]==[12] (
-  set type=-%bits%
-)
-if [%1]==[14] (
-  set type=-%bits%
-)
-if [%1]==[22] (
-  set type=-%bits%
-)
-
-fc /n %srcdir%\testdata\%testoutput%%type% %2%bits%\%testoutput% >NUL
-
-if errorlevel 1 (
-  echo.          failed comparison: fc /n %srcdir%\testdata\%testoutput% %2%bits%\%testoutput%
-  if [%1]==[3] (
-    echo.
-    echo ** Test 3 failure usually means french locale is not
-    echo ** available on the system, rather than a bug or problem with PCRE2.
-    echo.
-    goto :eof
-)
-
-  set failed="yes"
-  goto :eof
-)
-
-echo.          Passed.
-goto :eof
-
-:do1
-call :runsub 1 testout "Main non-UTF, non-UCP functionality (Compatible with Perl >= 5.10)" -q
-if %jit% EQU 1 call :runsub 1 testoutjit "Test with JIT Override" -q -jit
-goto :eof
-
-:do2
-  copy /y %srcdir%\testdata\testbtables testbtables
 
-  call :runsub 2 testout "API, errors, internals, and non-Perl stuff" -q
-  if %jit% EQU 1 call :runsub 2 testoutjit "Test with JIT Override" -q -jit
-goto :eof
-
-:do3
-  call :runsub 3 testout "Locale-specific features" -q
-  if %jit% EQU 1 call :runsub 3 testoutjit "Test with JIT Override" -q -jit
-goto :eof
-
-:do4
-if %unicode% EQU 0 (
-  echo Test 4 Skipped due to absence of Unicode support.
-  goto :eof
-)
-  call :runsub 4 testout "UTF-%bits% and Unicode property support - (Compatible with Perl >= 5.10)" -q
-  if %jit% EQU 1 call :runsub 4 testoutjit "Test with JIT Override" -q -jit
-goto :eof
-
-:do5
-if %unicode% EQU 0 (
-  echo Test 5 Skipped due to absence of Unicode support.
-  goto :eof
-)
-  call :runsub 5 testout "API, internals, and non-Perl stuff for UTF-%bits% and UCP" -q
-  if %jit% EQU 1 call :runsub 5 testoutjit "Test with JIT Override" -q -jit
-goto :eof
-
-:do6
-  call :runsub 6 testout "DFA matching main non-UTF, non-UCP functionality" -q
-goto :eof
-
-:do7
-if %unicode% EQU 0 (
-  echo Test 7 Skipped due to absence of Unicode support.
-  goto :eof
-)
-  call :runsub 7 testout "DFA matching with UTF-%bits% and Unicode property support" -q
-  goto :eof
-
-:do8
-if NOT %link_size% EQU 2 (
-  echo Test 8 Skipped because link size is not 2.
-  goto :eof
-)
-if %unicode% EQU 0 (
-  echo Test 8 Skipped due to absence of Unicode support.
-  goto :eof
-)
-  call :runsub 8 testout "Internal offsets and code size tests" -q
-goto :eof
-
-:do9
-if NOT %bits% EQU 8 (
-  echo Test 9 Skipped when running 16/32-bit tests.
-  goto :eof
-)
-  call :runsub 9 testout "Specials for the basic 8-bit library" -q
-  if %jit% EQU 1 call :runsub 9 testoutjit "Test with JIT Override" -q -jit
-goto :eof
-
-:do10
-if NOT %bits% EQU 8 (
-  echo Test 10 Skipped when running 16/32-bit tests.
-  goto :eof
-)
-if %unicode% EQU 0 (
-  echo Test 10 Skipped due to absence of Unicode support.
-  goto :eof
-)
-  call :runsub 10 testout "Specials for the 8-bit library with Unicode support" -q
-  if %jit% EQU 1 call :runsub 10 testoutjit "Test with JIT Override" -q -jit
-goto :eof
-
-:do11
-if %bits% EQU 8 (
-  echo Test 11 Skipped when running 8-bit tests.
-  goto :eof
-)
-  call :runsub 11 testout "Specials for the basic 16/32-bit library" -q
-  if %jit% EQU 1 call :runsub 11 testoutjit "Test with JIT Override" -q -jit
-goto :eof
-
-:do12
-if %bits% EQU 8 (
-  echo Test 12 Skipped when running 8-bit tests.
-  goto :eof
-)
-if %unicode% EQU 0 (
-  echo Test 12 Skipped due to absence of Unicode support.
-  goto :eof
-)
-  call :runsub 12 testout "Specials for the 16/32-bit library with Unicode support" -q
-  if %jit% EQU 1 call :runsub 12 testoutjit "Test with JIT Override" -q -jit
-goto :eof
-
-:do13
-if %bits% EQU 8 (
-  echo Test 13 Skipped when running 8-bit tests.
-  goto :eof
-)
-  call :runsub 13 testout "DFA specials for the basic 16/32-bit library" -q
-goto :eof
-
-:do14
-if %unicode% EQU 0 (
-  echo Test 14 Skipped due to absence of Unicode support.
-  goto :eof
-)
-  call :runsub 14 testout "DFA specials for UTF and UCP support" -q
-  goto :eof
-
-:do15
-call :runsub 15 testout "Non-JIT limits and other non_JIT tests" -q
-goto :eof
-
-:do16
-if %jit% EQU 1 (
-  echo Test 16 Skipped due to presence of JIT support.
-  goto :eof
-)
-  call :runsub 16 testout "JIT-specific features when JIT is not available" -q
-goto :eof
-
-:do17
-if %jit% EQU 0 (
-  echo Test 17 Skipped due to absence of JIT support.
-  goto :eof
-)
-  call :runsub 17 testout "JIT-specific features when JIT is available" -q
-goto :eof
-
-:do18
-if %bits% EQU 16 (
-  echo Test 18 Skipped when running 16-bit tests.
-  goto :eof
-)
-if %bits% EQU 32 (
-  echo Test 18 Skipped when running 32-bit tests.
-  goto :eof
-)
-  call :runsub 18 testout "POSIX interface, excluding UTF-8 and UCP" -q
-goto :eof
-
-:do19
-if %bits% EQU 16 (
-  echo Test 19 Skipped when running 16-bit tests.
-  goto :eof
-)
-if %bits% EQU 32 (
-  echo Test 19 Skipped when running 32-bit tests.
-  goto :eof
-)
-if %unicode% EQU 0 (
-  echo Test 19 Skipped due to absence of Unicode support.
-  goto :eof
-)
-  call :runsub 19 testout "POSIX interface with UTF-8 and UCP" -q
-goto :eof
-
-:do20
-call :runsub 20 testout "Serialization tests" -q
-goto :eof
-
-:do21
-if %supportBSC% EQU 0 (
-  echo Test 21 Skipped due to absence of backslash-C support.
-  goto :eof
-)
-  call :runsub 21 testout "Backslash-C tests without UTF" -q
-  call :runsub 21 testout "Backslash-C tests without UTF (DFA)" -q -dfa
-  if %jit% EQU 1 call :runsub 21 testoutjit "Test with JIT Override" -q -jit
-goto :eof
-
-:do22
-if %supportBSC% EQU 0 (
-  echo Test 22 Skipped due to absence of backslash-C support.
-  goto :eof
-)
-if %unicode% EQU 0 (
-  echo Test 22 Skipped due to absence of Unicode support.
-  goto :eof
-)
-  call :runsub 22 testout "Backslash-C tests with UTF" -q
-  if %jit% EQU 1 call :runsub 22 testoutjit "Test with JIT Override" -q -jit
-goto :eof
-
-:do23
-if %supportBSC% EQU 1 (
-  echo Test 23 Skipped due to presence of backslash-C support.
-  goto :eof
-)
-  call :runsub 23 testout "Backslash-C disabled test" -q
-goto :eof
-
-:conferror
-@echo.
-@echo Either your build is incomplete or you have a configuration error.
-@echo.
-@echo If configured with cmake and executed via "make test" or the MSVC "RUN_TESTS"
-@echo project, pcre2_test.bat defines variables and automatically calls RunTest.bat.
-@echo For manual testing of all available features, after configuring with cmake
-@echo and building, you can run the built pcre2_test.bat. For best results with
-@echo cmake builds and tests avoid directories with full path names that include
-@echo spaces for source or build.
-@echo.
-@echo Otherwise, if the build dir is in a subdir of the source dir, testdata needed
-@echo for input and verification should be found automatically when (from the
-@echo location of the the built exes) you call RunTest.bat. By default RunTest.bat
-@echo runs all tests compatible with the linked pcre2 library but it can be given
-@echo a test number as an argument.
-@echo.
-@echo If the build dir is not under the source dir you can either copy your exes
-@echo to the source folder or copy RunTest.bat and the testdata folder to the
-@echo location of your built exes and then run RunTest.bat.
-@echo.
-goto :eof

+ 0 - 45
src/deps/regex/pcre2/autogen.sh

@@ -1,45 +0,0 @@
-#!/bin/sh
-
-# Running aclocal here first (as happened for a while) caused the macros that
-# libtoolize puts in the m4 directory to be newer than the aclocal.m4 file that
-# aclocal creates. This meant that the next "make" cause aclocal to be run
-# again. Moving aclocal to after libtoolize does not seem to cause any
-# problems, and it fixes this issue.
-
-# GNU libtool is named differently on some systems.  This code tries several
-# variants like glibtoolize (MacOSX) and libtoolize1x (FreeBSD)
-
-set +ex
-echo "Looking for a version of libtoolize (which can have different names)..."
-libtoolize=""
-for l in glibtoolize libtoolize15 libtoolize14 libtoolize ; do
-    $l --version > /dev/null 2>&1
-    if [ $? = 0 ]; then
-        libtoolize=$l
-        echo "Found $l" 
-        break
-    fi
-    echo "Did not find $l" 
-done
-
-if [ "x$libtoolize" = "x" ]; then
-    echo "Can't find libtoolize on your system"
-    exit 1
-fi
-
-set -ex
-$libtoolize -c -f
-rm -rf autom4te.cache Makefile.in aclocal.m4
-aclocal --force -I m4
-autoconf -f -W all,no-obsolete
-autoheader -f -W all
-
-# Added no-portability to suppress automake 1.12's warning about the use
-# of recursive variables.
-
-automake -a -c -f -W all,no-portability
-
-rm -rf autom4te.cache
-exit 0
-
-# end autogen.sh

+ 0 - 22
src/deps/regex/pcre2/cmake/COPYING-CMAKE-SCRIPTS

@@ -1,22 +0,0 @@
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. The name of the author may not be used to endorse or promote products 
-   derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 0 - 17
src/deps/regex/pcre2/cmake/FindEditline.cmake

@@ -1,17 +0,0 @@
-# Modified from FindReadline.cmake (PH Feb 2012)
-
-if(EDITLINE_INCLUDE_DIR AND EDITLINE_LIBRARY AND NCURSES_LIBRARY)
-  set(EDITLINE_FOUND TRUE)
-else(EDITLINE_INCLUDE_DIR AND EDITLINE_LIBRARY AND NCURSES_LIBRARY)
-  FIND_PATH(EDITLINE_INCLUDE_DIR readline.h
-    /usr/include/editline
-    /usr/include/edit/readline  
-    /usr/include/readline
-  )
-  
-  FIND_LIBRARY(EDITLINE_LIBRARY NAMES edit)
-  include(FindPackageHandleStandardArgs)
-  FIND_PACKAGE_HANDLE_STANDARD_ARGS(Editline DEFAULT_MSG EDITLINE_INCLUDE_DIR EDITLINE_LIBRARY )
-
-  MARK_AS_ADVANCED(EDITLINE_INCLUDE_DIR EDITLINE_LIBRARY)
-endif(EDITLINE_INCLUDE_DIR AND EDITLINE_LIBRARY AND NCURSES_LIBRARY)

+ 0 - 58
src/deps/regex/pcre2/cmake/FindPackageHandleStandardArgs.cmake

@@ -1,58 +0,0 @@
-# FIND_PACKAGE_HANDLE_STANDARD_ARGS(NAME (DEFAULT_MSG|"Custom failure message") VAR1 ... )
-#    This macro is intended to be used in FindXXX.cmake modules files.
-#    It handles the REQUIRED and QUIET argument to FIND_PACKAGE() and
-#    it also sets the <UPPERCASED_NAME>_FOUND variable.
-#    The package is found if all variables listed are TRUE.
-#    Example:
-#
-#    FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXml2 DEFAULT_MSG LIBXML2_LIBRARIES LIBXML2_INCLUDE_DIR)
-#
-#    LibXml2 is considered to be found, if both LIBXML2_LIBRARIES and 
-#    LIBXML2_INCLUDE_DIR are valid. Then also LIBXML2_FOUND is set to TRUE.
-#    If it is not found and REQUIRED was used, it fails with FATAL_ERROR, 
-#    independent whether QUIET was used or not.
-#    If it is found, the location is reported using the VAR1 argument, so 
-#    here a message "Found LibXml2: /usr/lib/libxml2.so" will be printed out.
-#    If the second argument is DEFAULT_MSG, the message in the failure case will 
-#    be "Could NOT find LibXml2", if you don't like this message you can specify
-#    your own custom failure message there.
-
-MACRO(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FAIL_MSG _VAR1 )
-
-  IF("${_FAIL_MSG}" STREQUAL "DEFAULT_MSG")
-    IF (${_NAME}_FIND_REQUIRED)
-      SET(_FAIL_MESSAGE "Could not find REQUIRED package ${_NAME}")
-    ELSE (${_NAME}_FIND_REQUIRED)
-      SET(_FAIL_MESSAGE "Could not find OPTIONAL package ${_NAME}")
-    ENDIF (${_NAME}_FIND_REQUIRED)
-  ELSE("${_FAIL_MSG}" STREQUAL "DEFAULT_MSG")
-    SET(_FAIL_MESSAGE "${_FAIL_MSG}")
-  ENDIF("${_FAIL_MSG}" STREQUAL "DEFAULT_MSG")
-
-  STRING(TOUPPER ${_NAME} _NAME_UPPER)
-
-  SET(${_NAME_UPPER}_FOUND TRUE)
-  IF(NOT ${_VAR1})
-    SET(${_NAME_UPPER}_FOUND FALSE)
-  ENDIF(NOT ${_VAR1})
-
-  FOREACH(_CURRENT_VAR ${ARGN})
-    IF(NOT ${_CURRENT_VAR})
-      SET(${_NAME_UPPER}_FOUND FALSE)
-    ENDIF(NOT ${_CURRENT_VAR})
-  ENDFOREACH(_CURRENT_VAR)
-
-  IF (${_NAME_UPPER}_FOUND)
-    IF (NOT ${_NAME}_FIND_QUIETLY)
-        MESSAGE(STATUS "Found ${_NAME}: ${${_VAR1}}")
-    ENDIF (NOT ${_NAME}_FIND_QUIETLY)
-  ELSE (${_NAME_UPPER}_FOUND)
-    IF (${_NAME}_FIND_REQUIRED)
-        MESSAGE(FATAL_ERROR "${_FAIL_MESSAGE}")
-    ELSE (${_NAME}_FIND_REQUIRED)
-      IF (NOT ${_NAME}_FIND_QUIETLY)
-        MESSAGE(STATUS "${_FAIL_MESSAGE}")
-      ENDIF (NOT ${_NAME}_FIND_QUIETLY)
-    ENDIF (${_NAME}_FIND_REQUIRED)
-  ENDIF (${_NAME_UPPER}_FOUND)
-ENDMACRO(FIND_PACKAGE_HANDLE_STANDARD_ARGS)

+ 0 - 29
src/deps/regex/pcre2/cmake/FindReadline.cmake

@@ -1,29 +0,0 @@
-# from http://websvn.kde.org/trunk/KDE/kdeedu/cmake/modules/FindReadline.cmake
-# http://websvn.kde.org/trunk/KDE/kdeedu/cmake/modules/COPYING-CMAKE-SCRIPTS
-# --> BSD licensed
-#
-# GNU Readline library finder
-if(READLINE_INCLUDE_DIR AND READLINE_LIBRARY AND NCURSES_LIBRARY)
-  set(READLINE_FOUND TRUE)
-else(READLINE_INCLUDE_DIR AND READLINE_LIBRARY AND NCURSES_LIBRARY)
-  FIND_PATH(READLINE_INCLUDE_DIR readline/readline.h
-    /usr/include/readline
-  )
-  
-# 2008-04-22 The next clause used to read like this:
-#
-#  FIND_LIBRARY(READLINE_LIBRARY NAMES readline)
-#        FIND_LIBRARY(NCURSES_LIBRARY NAMES ncurses )
-#        include(FindPackageHandleStandardArgs)
-#        FIND_PACKAGE_HANDLE_STANDARD_ARGS(Readline DEFAULT_MSG NCURSES_LIBRARY READLINE_INCLUDE_DIR READLINE_LIBRARY )
-#
-# I was advised to modify it such that it will find an ncurses library if
-# required, but not if one was explicitly given, that is, it allows the
-# default to be overridden. PH 
-
-  FIND_LIBRARY(READLINE_LIBRARY NAMES readline)
-        include(FindPackageHandleStandardArgs)
-        FIND_PACKAGE_HANDLE_STANDARD_ARGS(Readline DEFAULT_MSG READLINE_INCLUDE_DIR READLINE_LIBRARY )
-
-  MARK_AS_ADVANCED(READLINE_INCLUDE_DIR READLINE_LIBRARY)
-endif(READLINE_INCLUDE_DIR AND READLINE_LIBRARY AND NCURSES_LIBRARY)

+ 0 - 58
src/deps/regex/pcre2/config-cmake.h.in

@@ -1,58 +0,0 @@
-/* config.h for CMake builds */
-
-#cmakedefine HAVE_ATTRIBUTE_UNINITIALIZED 1
-#cmakedefine HAVE_DIRENT_H 1
-#cmakedefine HAVE_INTTYPES_H 1    
-#cmakedefine HAVE_STDINT_H 1                                                   
-#cmakedefine HAVE_STRERROR 1
-#cmakedefine HAVE_SYS_STAT_H 1
-#cmakedefine HAVE_SYS_TYPES_H 1
-#cmakedefine HAVE_UNISTD_H 1
-#cmakedefine HAVE_WINDOWS_H 1
-
-#cmakedefine HAVE_BCOPY 1
-#cmakedefine HAVE_MEMFD_CREATE 1
-#cmakedefine HAVE_MEMMOVE 1
-#cmakedefine HAVE_SECURE_GETENV 1
-#cmakedefine HAVE_STRERROR 1
-
-#cmakedefine PCRE2_STATIC 1
-
-#cmakedefine SUPPORT_PCRE2_8 1
-#cmakedefine SUPPORT_PCRE2_16 1
-#cmakedefine SUPPORT_PCRE2_32 1
-#cmakedefine PCRE2_DEBUG 1
-#cmakedefine DISABLE_PERCENT_ZT 1
-
-#cmakedefine SUPPORT_LIBBZ2 1
-#cmakedefine SUPPORT_LIBEDIT 1
-#cmakedefine SUPPORT_LIBREADLINE 1
-#cmakedefine SUPPORT_LIBZ 1
-
-#cmakedefine SUPPORT_JIT 1
-#cmakedefine SLJIT_PROT_EXECUTABLE_ALLOCATOR 1
-#cmakedefine SUPPORT_PCRE2GREP_JIT 1
-#cmakedefine SUPPORT_PCRE2GREP_CALLOUT 1
-#cmakedefine SUPPORT_PCRE2GREP_CALLOUT_FORK 1
-#cmakedefine SUPPORT_UNICODE 1
-#cmakedefine SUPPORT_VALGRIND 1
-
-#cmakedefine BSR_ANYCRLF 1
-#cmakedefine EBCDIC 1
-#cmakedefine EBCDIC_NL25 1
-#cmakedefine HEAP_MATCH_RECURSE 1
-#cmakedefine NEVER_BACKSLASH_C 1
-
-#define LINK_SIZE		@PCRE2_LINK_SIZE@
-#define HEAP_LIMIT              @PCRE2_HEAP_LIMIT@
-#define MATCH_LIMIT		@PCRE2_MATCH_LIMIT@
-#define MATCH_LIMIT_DEPTH	@PCRE2_MATCH_LIMIT_DEPTH@
-#define NEWLINE_DEFAULT         @NEWLINE_DEFAULT@
-#define PARENS_NEST_LIMIT       @PCRE2_PARENS_NEST_LIMIT@
-#define PCRE2GREP_BUFSIZE       @PCRE2GREP_BUFSIZE@
-#define PCRE2GREP_MAX_BUFSIZE   @PCRE2GREP_MAX_BUFSIZE@
-
-#define MAX_NAME_SIZE	32
-#define MAX_NAME_COUNT	10000
-
-/* end config.h for CMake builds */

+ 0 - 1115
src/deps/regex/pcre2/configure.ac

@@ -1,1115 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-
-dnl NOTE FOR MAINTAINERS: Do not use minor version numbers 08 or 09 because
-dnl the leading zeros may cause them to be treated as invalid octal constants
-dnl if a PCRE2 user writes code that uses PCRE2_MINOR as a number. There is now
-dnl a check further down that throws an error if 08 or 09 are used.
-
-dnl The PCRE2_PRERELEASE feature is for identifying release candidates. It might
-dnl be defined as -RC2, for example. For real releases, it should be empty.
-
-m4_define(pcre2_major, [10])
-m4_define(pcre2_minor, [37])
-m4_define(pcre2_prerelease, [])
-m4_define(pcre2_date, [2021-05-26])
-
-# Libtool shared library interface versions (current:revision:age)
-m4_define(libpcre2_8_version,     [10:2:10])
-m4_define(libpcre2_16_version,    [10:2:10])
-m4_define(libpcre2_32_version,    [10:2:10])
-m4_define(libpcre2_posix_version, [3:0:0])
-
-# NOTE: The CMakeLists.txt file searches for the above variables in the first
-# 50 lines of this file. Please update that if the variables above are moved.
-
-AC_PREREQ([2.60])
-AC_INIT([PCRE2],pcre2_major.pcre2_minor[]pcre2_prerelease,[],[pcre2])
-AC_CONFIG_SRCDIR([src/pcre2.h.in])
-AM_INIT_AUTOMAKE([dist-bzip2 dist-zip])
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-AC_CONFIG_HEADERS(src/config.h)
-
-# This was added at the suggestion of libtoolize (03-Jan-10)
-AC_CONFIG_MACRO_DIR([m4])
-
-# The default CFLAGS in Autoconf are "-g -O2" for gcc and just "-g" for any
-# other compiler. There doesn't seem to be a standard way of getting rid of the
-# -g (which I don't think is needed for a production library). This fudge seems
-# to achieve the necessary. First, we remember the externally set values of
-# CFLAGS. Then call the AC_PROG_CC macro to find the compiler - if CFLAGS is
-# not set, it will be set to Autoconf's defaults. Afterwards, if the original
-# values were not set, remove the -g from the Autoconf defaults.
-
-remember_set_CFLAGS="$CFLAGS"
-
-AC_PROG_CC
-AM_PROG_CC_C_O
-AC_USE_SYSTEM_EXTENSIONS
-
-if test "x$remember_set_CFLAGS" = "x"
-then
-  if test "$CFLAGS" = "-g -O2"
-  then
-    CFLAGS="-O2"
-  elif test "$CFLAGS" = "-g"
-  then
-    CFLAGS=""
-  fi
-fi
-
-# This is a new thing required to stop a warning from automake 1.12
-m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
-
-# Check for a 64-bit integer type
-AC_TYPE_INT64_T
-
-AC_PROG_INSTALL
-LT_INIT([win32-dll])
-AC_PROG_LN_S
-
-# Check for GCC visibility feature
-
-PCRE2_VISIBILITY
-
-# Check for Clang __attribute__((uninitialized)) feature
-
-AC_MSG_CHECKING([for __attribute__((uninitialized))])
-AC_LANG_PUSH([C])
-tmp_CFLAGS=$CFLAGS
-CFLAGS="$CFLAGS -Werror"
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,
-                   [[char buf[128] __attribute__((uninitialized));(void)buf]])],
-                   [pcre2_cc_cv_attribute_uninitialized=yes],
-                   [pcre2_cc_cv_attribute_uninitialized=no])
-AC_MSG_RESULT([$pcre2_cc_cv_attribute_uninitialized])
-if test "$pcre2_cc_cv_attribute_uninitialized" = yes; then
-  AC_DEFINE([HAVE_ATTRIBUTE_UNINITIALIZED], 1, [Define this if your compiler
-             supports __attribute__((uninitialized))])
-fi
-CFLAGS=$tmp_CFLAGS
-AC_LANG_POP([C])
-
-# Versioning
-
-PCRE2_MAJOR="pcre2_major"
-PCRE2_MINOR="pcre2_minor"
-PCRE2_PRERELEASE="pcre2_prerelease"
-PCRE2_DATE="pcre2_date"
-
-if test "$PCRE2_MINOR" = "08" -o "$PCRE2_MINOR" = "09"
-then
-  echo "***"
-  echo "*** Minor version number $PCRE2_MINOR must not be used. ***"
-  echo "*** Use only 00 to 07 or 10 onwards, to avoid octal issues. ***"
-  echo "***"
-  exit 1
-fi
-
-AC_SUBST(PCRE2_MAJOR)
-AC_SUBST(PCRE2_MINOR)
-AC_SUBST(PCRE2_PRERELEASE)
-AC_SUBST(PCRE2_DATE)
-
-# Set a more sensible default value for $(htmldir).
-if test "x$htmldir" = 'x${docdir}'
-then
-  htmldir='${docdir}/html'
-fi
-
-# Force an error for PCRE1 size options
-AC_ARG_ENABLE(pcre8,,,enable_pcre8=no)
-AC_ARG_ENABLE(pcre16,,,enable_pcre16=no)
-AC_ARG_ENABLE(pcre32,,,enable_pcre32=no)
-
-if test "$enable_pcre8$enable_pcre16$enable_pcre32" != "nonono"
-then
-  echo "** ERROR: Use --[[en|dis]]able-pcre2-[[8|16|32]], not --[[en|dis]]able-pcre[[8|16|32]]"
-  exit 1
-fi
-
-# Handle --disable-pcre2-8 (enabled by default)
-AC_ARG_ENABLE(pcre2-8,
-              AS_HELP_STRING([--disable-pcre2-8],
-                             [disable 8 bit character support]),
-              , enable_pcre2_8=unset)
-AC_SUBST(enable_pcre2_8)
-
-# Handle --enable-pcre2-16 (disabled by default)
-AC_ARG_ENABLE(pcre2-16,
-              AS_HELP_STRING([--enable-pcre2-16],
-                             [enable 16 bit character support]),
-              , enable_pcre2_16=unset)
-AC_SUBST(enable_pcre2_16)
-
-# Handle --enable-pcre2-32 (disabled by default)
-AC_ARG_ENABLE(pcre2-32,
-              AS_HELP_STRING([--enable-pcre2-32],
-                             [enable 32 bit character support]),
-              , enable_pcre2_32=unset)
-AC_SUBST(enable_pcre2_32)
-
-# Handle --enable-debug (disabled by default)
-AC_ARG_ENABLE(debug,
-              AS_HELP_STRING([--enable-debug],
-                             [enable debugging code]),
-              , enable_debug=no)
-
-# Handle --enable-jit (disabled by default)
-AC_ARG_ENABLE(jit,
-              AS_HELP_STRING([--enable-jit],
-                             [enable Just-In-Time compiling support]),
-              , enable_jit=no)
-
-# This code enables JIT if the hardware supports it.
-if test "$enable_jit" = "auto"; then
-  AC_LANG(C)
-  SAVE_CPPFLAGS=$CPPFLAGS
-  CPPFLAGS=-I$srcdir
-  AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-  #define SLJIT_CONFIG_AUTO 1
-  #include "src/sljit/sljitConfigInternal.h"
-  #if (defined SLJIT_CONFIG_UNSUPPORTED && SLJIT_CONFIG_UNSUPPORTED)
-  #error unsupported
-  #endif]])], enable_jit=yes, enable_jit=no)
-  CPPFLAGS=$SAVE_CPPFLAGS
-  echo checking for JIT support on this hardware... $enable_jit
-fi
-
-# Handle --enable-jit-sealloc (disabled by default and only experimental)
-case $host_os in
-  linux* | netbsd*)
-    AC_ARG_ENABLE(jit-sealloc,
-      AS_HELP_STRING([--enable-jit-sealloc],
-        [enable SELinux compatible execmem allocator in JIT (experimental)]),
-        ,enable_jit_sealloc=no)
-    ;;
-  *)
-    enable_jit_sealloc=unsupported
-    ;;
-esac
-
-# Handle --disable-pcre2grep-jit (enabled by default)
-AC_ARG_ENABLE(pcre2grep-jit,
-              AS_HELP_STRING([--disable-pcre2grep-jit],
-                             [disable JIT support in pcre2grep]),
-              , enable_pcre2grep_jit=yes)
-
-# Handle --disable-pcre2grep-callout (enabled by default)
-AC_ARG_ENABLE(pcre2grep-callout,
-              AS_HELP_STRING([--disable-pcre2grep-callout],
-                             [disable callout script support in pcre2grep]),
-              , enable_pcre2grep_callout=yes)
-
-# Handle --disable-pcre2grep-callout-fork (enabled by default)
-AC_ARG_ENABLE(pcre2grep-callout-fork,
-              AS_HELP_STRING([--disable-pcre2grep-callout-fork],
-                             [disable callout script fork support in pcre2grep]),
-              , enable_pcre2grep_callout_fork=yes)
-
-# Handle --enable-rebuild-chartables
-AC_ARG_ENABLE(rebuild-chartables,
-              AS_HELP_STRING([--enable-rebuild-chartables],
-                             [rebuild character tables in current locale]),
-              , enable_rebuild_chartables=no)
-
-# Handle --disable-unicode (enabled by default)
-AC_ARG_ENABLE(unicode,
-              AS_HELP_STRING([--disable-unicode],
-                             [disable Unicode support]),
-              , enable_unicode=unset)
-
-# Handle newline options
-ac_pcre2_newline=lf
-AC_ARG_ENABLE(newline-is-cr,
-              AS_HELP_STRING([--enable-newline-is-cr],
-                             [use CR as newline character]),
-              ac_pcre2_newline=cr)
-AC_ARG_ENABLE(newline-is-lf,
-              AS_HELP_STRING([--enable-newline-is-lf],
-                             [use LF as newline character (default)]),
-              ac_pcre2_newline=lf)
-AC_ARG_ENABLE(newline-is-crlf,
-              AS_HELP_STRING([--enable-newline-is-crlf],
-                             [use CRLF as newline sequence]),
-              ac_pcre2_newline=crlf)
-AC_ARG_ENABLE(newline-is-anycrlf,
-              AS_HELP_STRING([--enable-newline-is-anycrlf],
-                             [use CR, LF, or CRLF as newline sequence]),
-              ac_pcre2_newline=anycrlf)
-AC_ARG_ENABLE(newline-is-any,
-              AS_HELP_STRING([--enable-newline-is-any],
-                             [use any valid Unicode newline sequence]),
-              ac_pcre2_newline=any)
-AC_ARG_ENABLE(newline-is-nul,
-              AS_HELP_STRING([--enable-newline-is-nul],
-                             [use NUL (binary zero) as newline character]),
-              ac_pcre2_newline=nul)
-enable_newline="$ac_pcre2_newline"
-
-# Handle --enable-bsr-anycrlf
-AC_ARG_ENABLE(bsr-anycrlf,
-              AS_HELP_STRING([--enable-bsr-anycrlf],
-                             [\R matches only CR, LF, CRLF by default]),
-              , enable_bsr_anycrlf=no)
-
-# Handle --enable-never-backslash-C
-AC_ARG_ENABLE(never-backslash-C,
-              AS_HELP_STRING([--enable-never-backslash-C],
-                             [use of \C causes an error]),
-              , enable_never_backslash_C=no)
-
-# Handle --enable-ebcdic
-AC_ARG_ENABLE(ebcdic,
-              AS_HELP_STRING([--enable-ebcdic],
-                             [assume EBCDIC coding rather than ASCII; incompatible with --enable-utf; use only in (uncommon) EBCDIC environments; it implies --enable-rebuild-chartables]),
-              , enable_ebcdic=no)
-
-# Handle --enable-ebcdic-nl25
-AC_ARG_ENABLE(ebcdic-nl25,
-              AS_HELP_STRING([--enable-ebcdic-nl25],
-                             [set EBCDIC code for NL to 0x25 instead of 0x15; it implies --enable-ebcdic]),
-              , enable_ebcdic_nl25=no)
-
-# Handle --enable-pcre2grep-libz
-AC_ARG_ENABLE(pcre2grep-libz,
-              AS_HELP_STRING([--enable-pcre2grep-libz],
-                             [link pcre2grep with libz to handle .gz files]),
-              , enable_pcre2grep_libz=no)
-
-# Handle --enable-pcre2grep-libbz2
-AC_ARG_ENABLE(pcre2grep-libbz2,
-              AS_HELP_STRING([--enable-pcre2grep-libbz2],
-                             [link pcre2grep with libbz2 to handle .bz2 files]),
-              , enable_pcre2grep_libbz2=no)
-
-# Handle --with-pcre2grep-bufsize=N
-AC_ARG_WITH(pcre2grep-bufsize,
-              AS_HELP_STRING([--with-pcre2grep-bufsize=N],
-                             [pcre2grep initial buffer size (default=20480, minimum=8192)]),
-              , with_pcre2grep_bufsize=20480)
-
-# Handle --with-pcre2grep-max-bufsize=N
-AC_ARG_WITH(pcre2grep-max-bufsize,
-              AS_HELP_STRING([--with-pcre2grep-max-bufsize=N],
-                             [pcre2grep maximum buffer size (default=1048576, minimum=8192)]),
-              , with_pcre2grep_max_bufsize=1048576)
-
-# Handle --enable-pcre2test-libedit
-AC_ARG_ENABLE(pcre2test-libedit,
-              AS_HELP_STRING([--enable-pcre2test-libedit],
-                             [link pcre2test with libedit]),
-              , enable_pcre2test_libedit=no)
-
-# Handle --enable-pcre2test-libreadline
-AC_ARG_ENABLE(pcre2test-libreadline,
-              AS_HELP_STRING([--enable-pcre2test-libreadline],
-                             [link pcre2test with libreadline]),
-              , enable_pcre2test_libreadline=no)
-
-# Handle --with-link-size=N
-AC_ARG_WITH(link-size,
-            AS_HELP_STRING([--with-link-size=N],
-                           [internal link size (2, 3, or 4 allowed; default=2)]),
-            , with_link_size=2)
-
-# Handle --with-parens-nest-limit=N
-AC_ARG_WITH(parens-nest-limit,
-            AS_HELP_STRING([--with-parens-nest-limit=N],
-                           [nested parentheses limit (default=250)]),
-            , with_parens_nest_limit=250)
-
-# Handle --with-heap-limit
-AC_ARG_WITH(heap-limit,
-            AS_HELP_STRING([--with-heap-limit=N],
-                           [default limit on heap memory (kibibytes, default=20000000)]),
-            , with_heap_limit=20000000)
-
-# Handle --with-match-limit=N
-AC_ARG_WITH(match-limit,
-            AS_HELP_STRING([--with-match-limit=N],
-                           [default limit on internal looping (default=10000000)]),
-            , with_match_limit=10000000)
-
-# Handle --with-match-limit-depth=N
-# Recognize old synonym --with-match-limit-recursion
-#
-# Note: In config.h, the default is to define MATCH_LIMIT_DEPTH symbolically as
-# MATCH_LIMIT, which in turn is defined to be some numeric value (e.g.
-# 10000000). MATCH_LIMIT_DEPTH can otherwise be set to some different numeric
-# value (or even the same numeric value as MATCH_LIMIT, though no longer
-# defined in terms of the latter).
-#
-AC_ARG_WITH(match-limit-depth,
-            AS_HELP_STRING([--with-match-limit-depth=N],
-                           [default limit on match tree depth (default=MATCH_LIMIT)]),
-            , with_match_limit_depth=MATCH_LIMIT)
-
-AC_ARG_WITH(match-limit-recursion,,
-            , with_match_limit_recursion=UNSET)
-
-# Handle --enable-valgrind
-AC_ARG_ENABLE(valgrind,
-              AS_HELP_STRING([--enable-valgrind],
-                             [enable valgrind support]),
-              , enable_valgrind=no)
-
-# Enable code coverage reports using gcov
-AC_ARG_ENABLE(coverage,
-              AS_HELP_STRING([--enable-coverage],
-                             [enable code coverage reports using gcov]),
-              , enable_coverage=no)
-
-# Handle --enable-fuzz-support
-AC_ARG_ENABLE(fuzz_support,
-              AS_HELP_STRING([--enable-fuzz-support],
-                             [enable fuzzer support]),
-              , enable_fuzz_support=no)
-
-# Handle --disable-stack-for-recursion
-# This option became obsolete at release 10.30.
-AC_ARG_ENABLE(stack-for-recursion,,
-              , enable_stack_for_recursion=yes)
-
-# Original code
-# AC_ARG_ENABLE(stack-for-recursion,
-#               AS_HELP_STRING([--disable-stack-for-recursion],
-#                              [don't use stack recursion when matching]),
-#               , enable_stack_for_recursion=yes)
-
-# Handle --disable-percent_zt (set as "auto" by default)
-AC_ARG_ENABLE(percent-zt,
-              AS_HELP_STRING([--disable-percent-zt],
-                             [disable the use of z and t formatting modifiers]),
-              , enable_percent_zt=auto)
-
-# Set the default value for pcre2-8
-if test "x$enable_pcre2_8" = "xunset"
-then
-  enable_pcre2_8=yes
-fi
-
-# Set the default value for pcre2-16
-if test "x$enable_pcre2_16" = "xunset"
-then
-  enable_pcre2_16=no
-fi
-
-# Set the default value for pcre2-32
-if test "x$enable_pcre2_32" = "xunset"
-then
-  enable_pcre2_32=no
-fi
-
-# Make sure at least one library is selected
-if test "x$enable_pcre2_8$enable_pcre2_16$enable_pcre2_32" = "xnonono"
-then
-  AC_MSG_ERROR([At least one of the 8, 16 or 32 bit libraries must be enabled])
-fi
-
-# Unicode is enabled by default.
-if test "x$enable_unicode" = "xunset"
-then
-  enable_unicode=yes
-fi
-
-# Convert the newline identifier into the appropriate integer value. These must
-# agree with the PCRE2_NEWLINE_xxx values in pcre2.h.
-
-case "$enable_newline" in
-  cr)      ac_pcre2_newline_value=1 ;;
-  lf)      ac_pcre2_newline_value=2 ;;
-  crlf)    ac_pcre2_newline_value=3 ;;
-  any)     ac_pcre2_newline_value=4 ;;
-  anycrlf) ac_pcre2_newline_value=5 ;;
-  nul)     ac_pcre2_newline_value=6 ;;
-  *)
-  AC_MSG_ERROR([invalid argument "$enable_newline" to --enable-newline option])
-  ;;
-esac
-
-# --enable-ebcdic-nl25 implies --enable-ebcdic
-if test "x$enable_ebcdic_nl25" = "xyes"; then
-  enable_ebcdic=yes
-fi
-
-# Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled.
-# Also check that UTF support is not requested, because PCRE2 cannot handle
-# EBCDIC and UTF in the same build. To do so it would need to use different
-# character constants depending on the mode. Also, EBCDIC cannot be used with
-# 16-bit and 32-bit libraries.
-#
-if test "x$enable_ebcdic" = "xyes"; then
-  enable_rebuild_chartables=yes
-  if test "x$enable_unicode" = "xyes"; then
-    AC_MSG_ERROR([support for EBCDIC and Unicode cannot be enabled at the same time])
-  fi
-  if test "x$enable_pcre2_16" = "xyes" -o "x$enable_pcre2_32" = "xyes"; then
-    AC_MSG_ERROR([EBCDIC support is available only for the 8-bit library])
-  fi
-fi
-
-# Check argument to --with-link-size
-case "$with_link_size" in
-  2|3|4) ;;
-  *)
-  AC_MSG_ERROR([invalid argument "$with_link_size" to --with-link-size option])
-  ;;
-esac
-
-AH_TOP([
-/* PCRE2 is written in Standard C, but there are a few non-standard things it
-can cope with, allowing it to run on SunOS4 and other "close to standard"
-systems.
-
-In environments that support the GNU autotools, config.h.in is converted into
-config.h by the "configure" script. In environments that use CMake,
-config-cmake.in is converted into config.h. If you are going to build PCRE2 "by
-hand" without using "configure" or CMake, you should copy the distributed
-config.h.generic to config.h, and edit the macro definitions to be the way you
-need them. You must then add -DHAVE_CONFIG_H to all of your compile commands,
-so that config.h is included at the start of every source.
-
-Alternatively, you can avoid editing by using -D on the compiler command line
-to set the macro values. In this case, you do not have to set -DHAVE_CONFIG_H,
-but if you do, default values will be taken from config.h for non-boolean
-macros that are not defined on the command line.
-
-Boolean macros such as HAVE_STDLIB_H and SUPPORT_PCRE2_8 should either be
-defined (conventionally to 1) for TRUE, and not defined at all for FALSE. All
-such macros are listed as a commented #undef in config.h.generic. Macros such
-as MATCH_LIMIT, whose actual value is relevant, have defaults defined, but are
-surrounded by #ifndef/#endif lines so that the value can be overridden by -D.
-
-PCRE2 uses memmove() if HAVE_MEMMOVE is defined; otherwise it uses bcopy() if
-HAVE_BCOPY is defined. If your system has neither bcopy() nor memmove(), make
-sure both macros are undefined; an emulation function will then be used. */])
-
-# Checks for header files.
-AC_CHECK_HEADERS(limits.h sys/types.h sys/stat.h dirent.h)
-AC_CHECK_HEADERS([windows.h], [HAVE_WINDOWS_H=1])
-AC_CHECK_HEADERS([sys/wait.h], [HAVE_SYS_WAIT_H=1])
-
-# Conditional compilation
-AM_CONDITIONAL(WITH_PCRE2_8, test "x$enable_pcre2_8" = "xyes")
-AM_CONDITIONAL(WITH_PCRE2_16, test "x$enable_pcre2_16" = "xyes")
-AM_CONDITIONAL(WITH_PCRE2_32, test "x$enable_pcre2_32" = "xyes")
-AM_CONDITIONAL(WITH_DEBUG, test "x$enable_debug" = "xyes")
-AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes")
-AM_CONDITIONAL(WITH_JIT, test "x$enable_jit" = "xyes")
-AM_CONDITIONAL(WITH_UNICODE, test "x$enable_unicode" = "xyes")
-AM_CONDITIONAL(WITH_VALGRIND, test "x$enable_valgrind" = "xyes")
-AM_CONDITIONAL(WITH_FUZZ_SUPPORT, test "x$enable_fuzz_support" = "xyes")
-
-if test "$enable_fuzz_support" = "yes" -a "$enable_pcre2_8" = "no"; then
-  echo "** ERROR: Fuzzer support requires the 8-bit library"
-  exit 1
-fi
-
-# Checks for typedefs, structures, and compiler characteristics.
-
-AC_C_CONST
-AC_TYPE_SIZE_T
-
-# Checks for library functions.
-
-AC_CHECK_FUNCS(bcopy memfd_create memmove mkostemp secure_getenv strerror)
-
-# Check for the availability of libz (aka zlib)
-
-AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1])
-AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1])
-
-# Check for the availability of libbz2. Originally we just used AC_CHECK_LIB,
-# as for libz. However, this had the following problem, diagnosed and fixed by
-# a user:
-#
-#   - libbz2 uses the Pascal calling convention (WINAPI) for the functions
-#     under Win32.
-#   - The standard autoconf AC_CHECK_LIB fails to include "bzlib.h",
-#     therefore missing the function definition.
-#   - The compiler thus generates a "C" signature for the test function.
-#   - The linker fails to find the "C" function.
-#   - PCRE2 fails to configure if asked to do so against libbz2.
-#
-# Solution:
-#
-#   - Replace the AC_CHECK_LIB test with a custom test.
-
-AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1])
-# Original test
-# AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1])
-#
-# Custom test follows
-
-AC_MSG_CHECKING([for libbz2])
-OLD_LIBS="$LIBS"
-LIBS="$LIBS -lbz2"
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[
-#ifdef HAVE_BZLIB_H
-#include <bzlib.h>
-#endif]],
-[[return (int)BZ2_bzopen("conftest", "rb");]])],
-[AC_MSG_RESULT([yes]);HAVE_LIBBZ2=1; break;],
-AC_MSG_RESULT([no]))
-LIBS="$OLD_LIBS"
-
-# Check for the availabiity of libreadline
-
-if test "$enable_pcre2test_libreadline" = "yes"; then
- AC_CHECK_HEADERS([readline/readline.h], [HAVE_READLINE_H=1])
- AC_CHECK_HEADERS([readline/history.h], [HAVE_HISTORY_H=1])
- AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lreadline"],
-   [unset ac_cv_lib_readline_readline;
-    AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-ltinfo"],
-     [unset ac_cv_lib_readline_readline;
-      AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lcurses"],
-       [unset ac_cv_lib_readline_readline;
-        AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lncurses"],
-         [unset ac_cv_lib_readline_readline;
-	  AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lncursesw"],
-           [unset ac_cv_lib_readline_readline;
-	    AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-ltermcap"],
-             [LIBREADLINE=""],
-             [-ltermcap])],
-           [-lncursesw])],
-         [-lncurses])],
-       [-lcurses])],
-     [-ltinfo])])
- AC_SUBST(LIBREADLINE)
- if test -n "$LIBREADLINE"; then
-   if test "$LIBREADLINE" != "-lreadline"; then
-     echo "-lreadline needs $LIBREADLINE"
-     LIBREADLINE="-lreadline $LIBREADLINE"
-   fi
- fi
-fi
-
-
-# Check for the availability of libedit. Different distributions put its
-# headers in different places. Try to cover the most common ones.
-
-if test "$enable_pcre2test_libedit" = "yes"; then
-  AC_CHECK_HEADERS([editline/readline.h], [HAVE_EDITLINE_READLINE_H=1],
-    [AC_CHECK_HEADERS([edit/readline/readline.h], [HAVE_READLINE_READLINE_H=1],
-      [AC_CHECK_HEADERS([readline/readline.h], [HAVE_READLINE_READLINE_H=1])])])
-  AC_CHECK_LIB([edit], [readline], [LIBEDIT="-ledit"])
-fi
-
-PCRE2_STATIC_CFLAG=""
-if test "x$enable_shared" = "xno" ; then
-  AC_DEFINE([PCRE2_STATIC], [1], [
-    Define to any value if linking statically (TODO: make nice with Libtool)])
-  PCRE2_STATIC_CFLAG="-DPCRE2_STATIC"
-fi
-AC_SUBST(PCRE2_STATIC_CFLAG)
-
-# Here is where PCRE2-specific defines are handled
-
-if test "$enable_pcre2_8" = "yes"; then
-  AC_DEFINE([SUPPORT_PCRE2_8], [], [
-    Define to any value to enable the 8 bit PCRE2 library.])
-fi
-
-if test "$enable_pcre2_16" = "yes"; then
-  AC_DEFINE([SUPPORT_PCRE2_16], [], [
-    Define to any value to enable the 16 bit PCRE2 library.])
-fi
-
-if test "$enable_pcre2_32" = "yes"; then
-  AC_DEFINE([SUPPORT_PCRE2_32], [], [
-    Define to any value to enable the 32 bit PCRE2 library.])
-fi
-
-if test "$enable_debug" = "yes"; then
-  AC_DEFINE([PCRE2_DEBUG], [], [
-    Define to any value to include debugging code.])
-fi
-
-if test "$enable_percent_zt" = "no"; then
-  AC_DEFINE([DISABLE_PERCENT_ZT], [], [
-    Define to any value to disable the use of the z and t modifiers in
-    formatting settings such as %zu or %td (this is rarely needed).])
-else
-  enable_percent_zt=auto
-fi
-
-# Unless running under Windows, JIT support requires pthreads.
-
-if test "$enable_jit" = "yes"; then
-  if test "$HAVE_WINDOWS_H" != "1"; then
-    AX_PTHREAD([], [AC_MSG_ERROR([JIT support requires pthreads])])
-    CC="$PTHREAD_CC"
-    CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
-    LIBS="$PTHREAD_LIBS $LIBS"
-  fi
-  AC_DEFINE([SUPPORT_JIT], [], [
-    Define to any value to enable support for Just-In-Time compiling.])
-else
-  enable_pcre2grep_jit="no"
-fi
-
-if test "$enable_jit_sealloc" = "yes"; then
-  AC_DEFINE([SLJIT_PROT_EXECUTABLE_ALLOCATOR], [1], [
-    Define to any non-zero number to enable support for SELinux
-    compatible executable memory allocator in JIT. Note that this
-    will have no effect unless SUPPORT_JIT is also defined.])
-fi
-
-if test "$enable_pcre2grep_jit" = "yes"; then
-  AC_DEFINE([SUPPORT_PCRE2GREP_JIT], [], [
-    Define to any value to enable JIT support in pcre2grep. Note that this will
-    have no effect unless SUPPORT_JIT is also defined.])
-fi
-
-if test "$enable_pcre2grep_callout" = "yes"; then
-  if test "$enable_pcre2grep_callout_fork" = "yes"; then
-    if test "$HAVE_WINDOWS_H" != "1"; then
-      if test "$HAVE_SYS_WAIT_H" != "1"; then
-        AC_MSG_ERROR([Callout script support needs sys/wait.h.])
-      fi
-    fi
-    AC_DEFINE([SUPPORT_PCRE2GREP_CALLOUT_FORK], [], [
-      Define to any value to enable fork support in pcre2grep callout scripts.
-      This will have no effect unless SUPPORT_PCRE2GREP_CALLOUT is also
-      defined.])
-  fi
-  AC_DEFINE([SUPPORT_PCRE2GREP_CALLOUT], [], [
-    Define to any value to enable callout script support in pcre2grep.])
-else
-  enable_pcre2grep_callout_fork="no"
-fi
-
-if test "$enable_unicode" = "yes"; then
-  AC_DEFINE([SUPPORT_UNICODE], [], [
-    Define to any value to enable support for Unicode and UTF encoding.
-    This will work even in an EBCDIC environment, but it is incompatible
-    with the EBCDIC macro. That is, PCRE2 can support *either* EBCDIC
-    code *or* ASCII/Unicode, but not both at once.])
-fi
-
-if test "$enable_pcre2grep_libz" = "yes"; then
-  AC_DEFINE([SUPPORT_LIBZ], [], [
-    Define to any value to allow pcre2grep to be linked with libz, so that it is
-    able to handle .gz files.])
-fi
-
-if test "$enable_pcre2grep_libbz2" = "yes"; then
-  AC_DEFINE([SUPPORT_LIBBZ2], [], [
-    Define to any value to allow pcre2grep to be linked with libbz2, so that it
-    is able to handle .bz2 files.])
-fi
-
-if test $with_pcre2grep_bufsize -lt 8192 ; then
-  AC_MSG_WARN([$with_pcre2grep_bufsize is too small for --with-pcre2grep-bufsize; using 8192])
-  with_pcre2grep_bufsize="8192"
-else
-  if test $? -gt 1 ; then
-  AC_MSG_ERROR([Bad value for --with-pcre2grep-bufsize])
-  fi
-fi
-
-if test $with_pcre2grep_max_bufsize -lt $with_pcre2grep_bufsize ; then
-  with_pcre2grep_max_bufsize="$with_pcre2grep_bufsize"
-else
-  if test $? -gt 1 ; then
-  AC_MSG_ERROR([Bad value for --with-pcre2grep-max-bufsize])
-  fi
-fi
-
-AC_DEFINE_UNQUOTED([PCRE2GREP_BUFSIZE], [$with_pcre2grep_bufsize], [
-  The value of PCRE2GREP_BUFSIZE is the starting size of the buffer used by
-  pcre2grep to hold parts of the file it is searching. The buffer will be
-  expanded up to PCRE2GREP_MAX_BUFSIZE if necessary, for files containing very
-  long lines. The actual amount of memory used by pcre2grep is three times this
-  number, because it allows for the buffering of "before" and "after" lines.])
-
-AC_DEFINE_UNQUOTED([PCRE2GREP_MAX_BUFSIZE], [$with_pcre2grep_max_bufsize], [
-  The value of PCRE2GREP_MAX_BUFSIZE specifies the maximum size of the buffer
-  used by pcre2grep to hold parts of the file it is searching. The actual
-  amount of memory used by pcre2grep is three times this number, because it
-  allows for the buffering of "before" and "after" lines.])
-
-if test "$enable_pcre2test_libedit" = "yes"; then
-  AC_DEFINE([SUPPORT_LIBEDIT], [], [
-    Define to any value to allow pcre2test to be linked with libedit.])
-  LIBREADLINE="$LIBEDIT"
-elif test "$enable_pcre2test_libreadline" = "yes"; then
-  AC_DEFINE([SUPPORT_LIBREADLINE], [], [
-    Define to any value to allow pcre2test to be linked with libreadline.])
-fi
-
-AC_DEFINE_UNQUOTED([NEWLINE_DEFAULT], [$ac_pcre2_newline_value], [
-  The value of NEWLINE_DEFAULT determines the default newline character
-  sequence. PCRE2 client programs can override this by selecting other values
-  at run time. The valid values are 1 (CR), 2 (LF), 3 (CRLF), 4 (ANY),
-  5 (ANYCRLF), and 6 (NUL).])
-
-if test "$enable_bsr_anycrlf" = "yes"; then
-  AC_DEFINE([BSR_ANYCRLF], [], [
-    By default, the \R escape sequence matches any Unicode line ending
-    character or sequence of characters. If BSR_ANYCRLF is defined (to any
-    value), this is changed so that backslash-R matches only CR, LF, or CRLF.
-    The build-time default can be overridden by the user of PCRE2 at runtime.])
-fi
-
-if test "$enable_never_backslash_C" = "yes"; then
-  AC_DEFINE([NEVER_BACKSLASH_C], [], [
-    Defining NEVER_BACKSLASH_C locks out the use of \C in all patterns.])
-fi
-
-AC_DEFINE_UNQUOTED([LINK_SIZE], [$with_link_size], [
-  The value of LINK_SIZE determines the number of bytes used to store
-  links as offsets within the compiled regex. The default is 2, which
-  allows for compiled patterns up to 65535 code units long. This covers the
-  vast majority of cases. However, PCRE2 can also be compiled to use 3 or 4
-  bytes instead. This allows for longer patterns in extreme cases.])
-
-AC_DEFINE_UNQUOTED([PARENS_NEST_LIMIT], [$with_parens_nest_limit], [
-  The value of PARENS_NEST_LIMIT specifies the maximum depth of nested
-  parentheses (of any kind) in a pattern. This limits the amount of system
-  stack that is used while compiling a pattern.])
-
-AC_DEFINE_UNQUOTED([MATCH_LIMIT], [$with_match_limit], [
-  The value of MATCH_LIMIT determines the default number of times the
-  pcre2_match() function can record a backtrack position during a single
-  matching attempt. The value is also used to limit a loop counter in
-  pcre2_dfa_match(). There is a runtime interface for setting a different
-  limit. The limit exists in order to catch runaway regular expressions that
-  take for ever to determine that they do not match. The default is set very
-  large so that it does not accidentally catch legitimate cases.])
-
-# --with-match-limit-recursion is an obsolete synonym for --with-match-limit-depth
-
-if test "$with_match_limit_recursion" != "UNSET"; then
-cat <<EOF
-
-WARNING: --with-match-limit-recursion is an obsolete option. Please use
-  --with-match-limit-depth in future. If both are set, --with-match-limit-depth
-  will be used. See also --with-heap-limit.
-
-EOF
-if test "$with_match_limit_depth" = "MATCH_LIMIT"; then
-  with_match_limit_depth=$with_match_limit_recursion
-fi
-fi
-
-AC_DEFINE_UNQUOTED([MATCH_LIMIT_DEPTH], [$with_match_limit_depth], [
-  The above limit applies to all backtracks, whether or not they are nested. In
-  some environments it is desirable to limit the nesting of backtracking (that
-  is, the depth of tree that is searched) more strictly, in order to restrict
-  the maximum amount of heap memory that is used. The value of
-  MATCH_LIMIT_DEPTH provides this facility. To have any useful effect, it must
-  be less than the value of MATCH_LIMIT. The default is to use the same value
-  as MATCH_LIMIT. There is a runtime method for setting a different limit. In
-  the case of pcre2_dfa_match(), this limit controls the depth of the internal
-  nested function calls that are used for pattern recursions, lookarounds, and
-  atomic groups.])
-
-AC_DEFINE_UNQUOTED([HEAP_LIMIT], [$with_heap_limit], [
-  This limits the amount of memory that may be used while matching
-  a pattern. It applies to both pcre2_match() and pcre2_dfa_match(). It does
-  not apply to JIT matching. The value is in kibibytes (units of 1024 bytes).])
-
-AC_DEFINE([MAX_NAME_SIZE], [32], [
-  This limit is parameterized just in case anybody ever wants to
-  change it. Care must be taken if it is increased, because it guards
-  against integer overflow caused by enormously large patterns.])
-
-AC_DEFINE([MAX_NAME_COUNT], [10000], [
-  This limit is parameterized just in case anybody ever wants to
-  change it. Care must be taken if it is increased, because it guards
-  against integer overflow caused by enormously large patterns.])
-
-AH_VERBATIM([PCRE2_EXP_DEFN], [
-/* If you are compiling for a system other than a Unix-like system or
-   Win32, and it needs some magic to be inserted before the definition
-   of a function that is exported by the library, define this macro to
-   contain the relevant magic. If you do not define this macro, a suitable
-    __declspec value is used for Windows systems; in other environments
-   "extern" is used for a C compiler and "extern C" for a C++ compiler.
-   This macro apears at the start of every exported function that is part
-   of the external API. It does not appear on functions that are "external"
-   in the C sense, but which are internal to the library. */
-#undef PCRE2_EXP_DEFN])
-
-if test "$enable_ebcdic" = "yes"; then
-  AC_DEFINE_UNQUOTED([EBCDIC], [], [
-    If you are compiling for a system that uses EBCDIC instead of ASCII
-    character codes, define this macro to any value. When EBCDIC is set, PCRE2
-    assumes that all input strings are in EBCDIC. If you do not define this
-    macro, PCRE2 will assume input strings are ASCII or UTF-8/16/32 Unicode. It
-    is not possible to build a version of PCRE2 that supports both EBCDIC and
-    UTF-8/16/32.])
-fi
-
-if test "$enable_ebcdic_nl25" = "yes"; then
-  AC_DEFINE_UNQUOTED([EBCDIC_NL25], [], [
-    In an EBCDIC environment, define this macro to any value to arrange for
-    the NL character to be 0x25 instead of the default 0x15. NL plays the role
-    that LF does in an ASCII/Unicode environment.])
-fi
-
-if test "$enable_valgrind" = "yes"; then
-  AC_DEFINE_UNQUOTED([SUPPORT_VALGRIND], [], [
-     Define to any value for valgrind support to find invalid memory reads.])
-fi
-
-# Platform specific issues
-NO_UNDEFINED=
-EXPORT_ALL_SYMBOLS=
-case $host_os in
-  cygwin* | mingw* )
-    if test X"$enable_shared" = Xyes; then
-      NO_UNDEFINED="-no-undefined"
-      EXPORT_ALL_SYMBOLS="-Wl,--export-all-symbols"
-    fi
-    ;;
-esac
-
-# The extra LDFLAGS for each particular library. The libpcre2*_version values
-# are m4 variables, assigned above.
-
-EXTRA_LIBPCRE2_8_LDFLAGS="$EXTRA_LIBPCRE2_8_LDFLAGS \
-  $NO_UNDEFINED -version-info libpcre2_8_version"
-
-EXTRA_LIBPCRE2_16_LDFLAGS="$EXTRA_LIBPCRE2_16_LDFLAGS \
-  $NO_UNDEFINED -version-info libpcre2_16_version"
-
-EXTRA_LIBPCRE2_32_LDFLAGS="$EXTRA_LIBPCRE2_32_LDFLAGS \
-  $NO_UNDEFINED -version-info libpcre2_32_version"
-
-EXTRA_LIBPCRE2_POSIX_LDFLAGS="$EXTRA_LIBPCRE2_POSIX_LDFLAGS \
-  $NO_UNDEFINED -version-info libpcre2_posix_version"
-
-AC_SUBST(EXTRA_LIBPCRE2_8_LDFLAGS)
-AC_SUBST(EXTRA_LIBPCRE2_16_LDFLAGS)
-AC_SUBST(EXTRA_LIBPCRE2_32_LDFLAGS)
-AC_SUBST(EXTRA_LIBPCRE2_POSIX_LDFLAGS)
-
-# When we run 'make distcheck', use these arguments. Turning off compiler
-# optimization makes it run faster.
-DISTCHECK_CONFIGURE_FLAGS="CFLAGS='' CXXFLAGS='' --enable-pcre2-16 --enable-pcre2-32 --enable-jit"
-AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
-
-# Check that, if --enable-pcre2grep-libz or --enable-pcre2grep-libbz2 is
-# specified, the relevant library is available.
-
-if test "$enable_pcre2grep_libz" = "yes"; then
-  if test "$HAVE_ZLIB_H" != "1"; then
-    echo "** Cannot --enable-pcre2grep-libz because zlib.h was not found"
-    exit 1
-  fi
-  if test "$HAVE_LIBZ" != "1"; then
-    echo "** Cannot --enable-pcre2grep-libz because libz was not found"
-    exit 1
-  fi
-  LIBZ="-lz"
-fi
-AC_SUBST(LIBZ)
-
-if test "$enable_pcre2grep_libbz2" = "yes"; then
-  if test "$HAVE_BZLIB_H" != "1"; then
-    echo "** Cannot --enable-pcre2grep-libbz2 because bzlib.h was not found"
-    exit 1
-  fi
-  if test "$HAVE_LIBBZ2" != "1"; then
-    echo "** Cannot --enable-pcre2grep-libbz2 because libbz2 was not found"
-    exit 1
-  fi
-  LIBBZ2="-lbz2"
-fi
-AC_SUBST(LIBBZ2)
-
-# Similarly for --enable-pcre2test-readline
-
-if test "$enable_pcre2test_libedit" = "yes"; then
-  if test "$enable_pcre2test_libreadline" = "yes"; then
-    echo "** Cannot use both --enable-pcre2test-libedit and --enable-pcre2test-readline"
-    exit 1
-  fi
-  if test "$HAVE_EDITLINE_READLINE_H" != "1" -a \
-          "$HAVE_READLINE_READLINE_H" != "1"; then
-    echo "** Cannot --enable-pcre2test-libedit because neither editline/readline.h"
-    echo "** nor readline/readline.h was found."
-    exit 1
-  fi
-  if test -z "$LIBEDIT"; then
-    echo "** Cannot --enable-pcre2test-libedit because libedit library was not found."
-    exit 1
-  fi
-fi
-
-if test "$enable_pcre2test_libreadline" = "yes"; then
-  if test "$HAVE_READLINE_H" != "1"; then
-    echo "** Cannot --enable-pcre2test-readline because readline/readline.h was not found."
-    exit 1
-  fi
-  if test "$HAVE_HISTORY_H" != "1"; then
-    echo "** Cannot --enable-pcre2test-readline because readline/history.h was not found."
-    exit 1
-  fi
-  if test -z "$LIBREADLINE"; then
-    echo "** Cannot --enable-pcre2test-readline because readline library was not found."
-    exit 1
-  fi
-fi
-
-# Handle valgrind support
-
-if test "$enable_valgrind" = "yes"; then
-  m4_ifdef([PKG_CHECK_MODULES],
-           [PKG_CHECK_MODULES([VALGRIND],[valgrind])],
-           [AC_MSG_ERROR([pkg-config not supported])])
-fi
-
-# Handle code coverage reporting support
-if test "$enable_coverage" = "yes"; then
-  if test "x$GCC" != "xyes"; then
-    AC_MSG_ERROR([Code coverage reports can only be generated when using GCC])
-  fi
-
-  # ccache is incompatible with gcov
-  AC_PATH_PROG([SHTOOL],[shtool],[false])
-  case `$SHTOOL path $CC` in
-    *ccache*) cc_ccache=yes;;
-    *) cc_ccache=no;;
-  esac
-
-  if test "$cc_ccache" = "yes"; then
-    if test -z "$CCACHE_DISABLE" -o "$CCACHE_DISABLE" != "1"; then
-      AC_MSG_ERROR([must export CCACHE_DISABLE=1 to disable ccache for code coverage])
-    fi
-  fi
-
-  AC_ARG_VAR([LCOV],[the ltp lcov program])
-  AC_PATH_PROG([LCOV],[lcov],[false])
-  if test "x$LCOV" = "xfalse"; then
-    AC_MSG_ERROR([lcov not found])
-  fi
-
-  AC_ARG_VAR([GENHTML],[the ltp genhtml program])
-  AC_PATH_PROG([GENHTML],[genhtml],[false])
-  if test "x$GENHTML" = "xfalse"; then
-    AC_MSG_ERROR([genhtml not found])
-  fi
-
-  # Set flags needed for gcov
-  GCOV_CFLAGS="-O0 -ggdb3 -fprofile-arcs -ftest-coverage"
-  GCOV_CXXFLAGS="-O0 -ggdb3 -fprofile-arcs -ftest-coverage"
-  GCOV_LIBS="-lgcov"
-  AC_SUBST([GCOV_CFLAGS])
-  AC_SUBST([GCOV_CXXFLAGS])
-  AC_SUBST([GCOV_LIBS])
-fi # enable_coverage
-
-AM_CONDITIONAL([WITH_GCOV],[test "x$enable_coverage" = "xyes"])
-
-AC_MSG_CHECKING([whether Intel CET is enabled])
-AC_LANG_PUSH([C])
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,
-                   [[#ifndef __CET__
-# error CET is not enabled
-#endif]])],
-                   [pcre2_cc_cv_intel_cet_enabled=yes],
-                   [pcre2_cc_cv_intel_cet_enabled=no])
-AC_MSG_RESULT([$pcre2_cc_cv_intel_cet_enabled])
-if test "$pcre2_cc_cv_intel_cet_enabled" = yes; then
-  CET_CFLAGS="-mshstk"
-  AC_SUBST([CET_CFLAGS])
-fi
-AC_LANG_POP([C])
-
-# LIB_POSTFIX is used by CMakeLists.txt for Windows debug builds.
-# Pass empty LIB_POSTFIX to *.pc files and pcre2-config here.
-AC_SUBST(LIB_POSTFIX)
-
-# Produce these files, in addition to config.h.
-
-AC_CONFIG_FILES(
-	Makefile
-	libpcre2-8.pc
-	libpcre2-16.pc
-	libpcre2-32.pc
-	libpcre2-posix.pc
-	pcre2-config
-	src/pcre2.h
-)
-
-# Make the generated script files executable.
-AC_CONFIG_COMMANDS([script-chmod], [chmod a+x pcre2-config])
-
-# Make sure that pcre2_chartables.c is removed in case the method for
-# creating it was changed by reconfiguration.
-AC_CONFIG_COMMANDS([delete-old-chartables], [rm -f pcre2_chartables.c])
-
-AC_OUTPUT
-
-# --disable-stack-for-recursion is obsolete and has no effect.
-
-if test "$enable_stack_for_recursion" = "no"; then
-cat <<EOF
-
-WARNING: --disable-stack-for-recursion is obsolete and has no effect.
-EOF
-fi
-
-# Print out a nice little message after configure is run displaying the
-# chosen options.
-
-ebcdic_nl_code=n/a
-if test "$enable_ebcdic_nl25" = "yes"; then
-  ebcdic_nl_code=0x25
-elif test "$enable_ebcdic" = "yes"; then
-  ebcdic_nl_code=0x15
-fi
-
-cat <<EOF
-
-$PACKAGE-$VERSION configuration summary:
-
-    Install prefix ..................... : ${prefix}
-    C preprocessor ..................... : ${CPP}
-    C compiler ......................... : ${CC}
-    Linker ............................. : ${LD}
-    C preprocessor flags ............... : ${CPPFLAGS}
-    C compiler flags ................... : ${CFLAGS} ${VISIBILITY_CFLAGS}
-    Linker flags ....................... : ${LDFLAGS}
-    Extra libraries .................... : ${LIBS}
-
-    Build 8-bit pcre2 library .......... : ${enable_pcre2_8}
-    Build 16-bit pcre2 library ......... : ${enable_pcre2_16}
-    Build 32-bit pcre2 library ......... : ${enable_pcre2_32}
-    Include debugging code ............. : ${enable_debug}
-    Enable JIT compiling support ....... : ${enable_jit}
-    Use SELinux allocator in JIT ....... : ${enable_jit_sealloc}
-    Enable Unicode support ............. : ${enable_unicode}
-    Newline char/sequence .............. : ${enable_newline}
-    \R matches only ANYCRLF ............ : ${enable_bsr_anycrlf}
-    \C is disabled ..................... : ${enable_never_backslash_C}
-    EBCDIC coding ...................... : ${enable_ebcdic}
-    EBCDIC code for NL ................. : ${ebcdic_nl_code}
-    Rebuild char tables ................ : ${enable_rebuild_chartables}
-    Internal link size ................. : ${with_link_size}
-    Nested parentheses limit ........... : ${with_parens_nest_limit}
-    Heap limit ......................... : ${with_heap_limit} kibibytes
-    Match limit ........................ : ${with_match_limit}
-    Match depth limit .................. : ${with_match_limit_depth}
-    Build shared libs .................. : ${enable_shared}
-    Build static libs .................. : ${enable_static}
-    Use JIT in pcre2grep ............... : ${enable_pcre2grep_jit}
-    Enable callouts in pcre2grep ....... : ${enable_pcre2grep_callout}
-    Enable fork in pcre2grep callouts .. : ${enable_pcre2grep_callout_fork}
-    Initial buffer size for pcre2grep .. : ${with_pcre2grep_bufsize}
-    Maximum buffer size for pcre2grep .. : ${with_pcre2grep_max_bufsize}
-    Link pcre2grep with libz ........... : ${enable_pcre2grep_libz}
-    Link pcre2grep with libbz2 ......... : ${enable_pcre2grep_libbz2}
-    Link pcre2test with libedit ........ : ${enable_pcre2test_libedit}
-    Link pcre2test with libreadline .... : ${enable_pcre2test_libreadline}
-    Valgrind support ................... : ${enable_valgrind}
-    Code coverage ...................... : ${enable_coverage}
-    Fuzzer support ..................... : ${enable_fuzz_support}
-    Use %zu and %td .................... : ${enable_percent_zt}
-
-EOF
-
-dnl end configure.ac

+ 0 - 410
src/deps/regex/pcre2/doc/html/NON-AUTOTOOLS-BUILD.txt

@@ -1,410 +0,0 @@
-Building PCRE2 without using autotools
---------------------------------------
-
-This document contains the following sections:
-
-  General
-  Generic instructions for the PCRE2 C library
-  Stack size in Windows environments
-  Linking programs in Windows environments
-  Calling conventions in Windows environments
-  Comments about Win32 builds
-  Building PCRE2 on Windows with CMake
-  Building PCRE2 on Windows with Visual Studio
-  Testing with RunTest.bat
-  Building PCRE2 on native z/OS and z/VM
-
-
-GENERAL
-
-The basic PCRE2 library consists entirely of code written in Standard C, and so
-should compile successfully on any system that has a Standard C compiler and
-library.
-
-The PCRE2 distribution includes a "configure" file for use by the
-configure/make (autotools) build system, as found in many Unix-like
-environments. The README file contains information about the options for
-"configure".
-
-There is also support for CMake, which some users prefer, especially in Windows
-environments, though it can also be run in Unix-like environments. See the
-section entitled "Building PCRE2 on Windows with CMake" below.
-
-Versions of src/config.h and src/pcre2.h are distributed in the PCRE2 tarballs
-under the names src/config.h.generic and src/pcre2.h.generic. These are
-provided for those who build PCRE2 without using "configure" or CMake. If you
-use "configure" or CMake, the .generic versions are not used.
-
-
-GENERIC INSTRUCTIONS FOR THE PCRE2 C LIBRARY
-
-The following are generic instructions for building the PCRE2 C library "by
-hand". If you are going to use CMake, this section does not apply to you; you
-can skip ahead to the CMake section. Note that the settings concerned with
-8-bit, 16-bit, and 32-bit code units relate to the type of data string that
-PCRE2 processes. They are NOT referring to the underlying operating system bit
-width. You do not have to do anything special to compile in a 64-bit
-environment, for example.
-
- (1) Copy or rename the file src/config.h.generic as src/config.h, and edit the
-     macro settings that it contains to whatever is appropriate for your
-     environment. In particular, you can alter the definition of the NEWLINE
-     macro to specify what character(s) you want to be interpreted as line
-     terminators by default.
-
-     When you subsequently compile any of the PCRE2 modules, you must specify
-     -DHAVE_CONFIG_H to your compiler so that src/config.h is included in the
-     sources.
-
-     An alternative approach is not to edit src/config.h, but to use -D on the
-     compiler command line to make any changes that you need to the
-     configuration options. In this case -DHAVE_CONFIG_H must not be set.
-
-     NOTE: There have been occasions when the way in which certain parameters
-     in src/config.h are used has changed between releases. (In the
-     configure/make world, this is handled automatically.) When upgrading to a
-     new release, you are strongly advised to review src/config.h.generic
-     before re-using what you had previously.
-
-     Note also that the src/config.h.generic file is created from a config.h
-     that was generated by Autotools, which automatically includes settings of
-     a number of macros that are not actually used by PCRE2 (for example,
-     HAVE_MEMORY_H).
-
- (2) Copy or rename the file src/pcre2.h.generic as src/pcre2.h.
-
- (3) EITHER:
-       Copy or rename file src/pcre2_chartables.c.dist as
-       src/pcre2_chartables.c.
-
-     OR:
-       Compile src/pcre2_dftables.c as a stand-alone program (using
-       -DHAVE_CONFIG_H if you have set up src/config.h), and then run it with
-       the single argument "src/pcre2_chartables.c". This generates a set of
-       standard character tables and writes them to that file. The tables are
-       generated using the default C locale for your system. If you want to use
-       a locale that is specified by LC_xxx environment variables, add the -L
-       option to the pcre2_dftables command. You must use this method if you
-       are building on a system that uses EBCDIC code.
-
-     The tables in src/pcre2_chartables.c are defaults. The caller of PCRE2 can
-     specify alternative tables at run time.
-
- (4) For a library that supports 8-bit code units in the character strings that
-     it processes, compile the following source files from the src directory,
-     setting -DPCRE2_CODE_UNIT_WIDTH=8 as a compiler option. Also set
-     -DHAVE_CONFIG_H if you have set up src/config.h with your configuration,
-     or else use other -D settings to change the configuration as required.
-
-       pcre2_auto_possess.c
-       pcre2_chartables.c
-       pcre2_compile.c
-       pcre2_config.c
-       pcre2_context.c
-       pcre2_convert.c
-       pcre2_dfa_match.c
-       pcre2_error.c
-       pcre2_extuni.c
-       pcre2_find_bracket.c
-       pcre2_jit_compile.c
-       pcre2_maketables.c
-       pcre2_match.c
-       pcre2_match_data.c
-       pcre2_newline.c
-       pcre2_ord2utf.c
-       pcre2_pattern_info.c
-       pcre2_script_run.c
-       pcre2_serialize.c
-       pcre2_string_utils.c
-       pcre2_study.c
-       pcre2_substitute.c
-       pcre2_substring.c
-       pcre2_tables.c
-       pcre2_ucd.c
-       pcre2_valid_utf.c
-       pcre2_xclass.c
-
-     Make sure that you include -I. in the compiler command (or equivalent for
-     an unusual compiler) so that all included PCRE2 header files are first
-     sought in the src directory under the current directory. Otherwise you run
-     the risk of picking up a previously-installed file from somewhere else.
-
-     Note that you must compile pcre2_jit_compile.c, even if you have not
-     defined SUPPORT_JIT in src/config.h, because when JIT support is not
-     configured, dummy functions are compiled. When JIT support IS configured,
-     pcre2_jit_compile.c #includes other files from the sljit subdirectory,
-     all of whose names begin with "sljit". It also #includes
-     src/pcre2_jit_match.c and src/pcre2_jit_misc.c, so you should not compile
-     these yourself.
-
-     Note also that the pcre2_fuzzsupport.c file contains special code that is
-     useful to those who want to run fuzzing tests on the PCRE2 library. Unless
-     you are doing that, you can ignore it.
-
- (5) Now link all the compiled code into an object library in whichever form
-     your system keeps such libraries. This is the basic PCRE2 C 8-bit library.
-     If your system has static and shared libraries, you may have to do this
-     once for each type.
-
- (6) If you want to build a library that supports 16-bit or 32-bit code units,
-     (as well as, or instead of the 8-bit library) just supply 16 or 32 as the
-     value of -DPCRE2_CODE_UNIT_WIDTH when you are compiling.
-
- (7) If you want to build the POSIX wrapper functions (which apply only to the
-     8-bit library), ensure that you have the src/pcre2posix.h file and then
-     compile src/pcre2posix.c. Link the result (on its own) as the pcre2posix
-     library.
-
- (8) The pcre2test program can be linked with any combination of the 8-bit,
-     16-bit and 32-bit libraries (depending on what you selected in
-     src/config.h). Compile src/pcre2test.c; don't forget -DHAVE_CONFIG_H if
-     necessary, but do NOT define PCRE2_CODE_UNIT_WIDTH. Then link with the
-     appropriate library/ies. If you compiled an 8-bit library, pcre2test also
-     needs the pcre2posix wrapper library.
-
- (9) Run pcre2test on the testinput files in the testdata directory, and check
-     that the output matches the corresponding testoutput files. There are
-     comments about what each test does in the section entitled "Testing PCRE2"
-     in the README file. If you compiled more than one of the 8-bit, 16-bit and
-     32-bit libraries, you need to run pcre2test with the -16 option to do
-     16-bit tests and with the -32 option to do 32-bit tests.
-
-     Some tests are relevant only when certain build-time options are selected.
-     For example, test 4 is for Unicode support, and will not run if you have
-     built PCRE2 without it. See the comments at the start of each testinput
-     file. If you have a suitable Unix-like shell, the RunTest script will run
-     the appropriate tests for you. The command "RunTest list" will output a
-     list of all the tests.
-
-     Note that the supplied files are in Unix format, with just LF characters
-     as line terminators. You may need to edit them to change this if your
-     system uses a different convention.
-
-(10) If you have built PCRE2 with SUPPORT_JIT, the JIT features can be tested
-     by running pcre2test with the -jit option. This is done automatically by
-     the RunTest script. You might also like to build and run the freestanding
-     JIT test program, src/pcre2_jit_test.c.
-
-(11) If you want to use the pcre2grep command, compile and link
-     src/pcre2grep.c; it uses only the basic 8-bit PCRE2 library (it does not
-     need the pcre2posix library). If you have built the PCRE2 library with JIT
-     support by defining SUPPORT_JIT in src/config.h, you can also define
-     SUPPORT_PCRE2GREP_JIT, which causes pcre2grep to make use of JIT (unless
-     it is run with --no-jit). If you define SUPPORT_PCRE2GREP_JIT without
-     defining SUPPORT_JIT, pcre2grep does not try to make use of JIT.
-
-
-STACK SIZE IN WINDOWS ENVIRONMENTS
-
-Prior to release 10.30 the default system stack size of 1MiB in some Windows
-environments caused issues with some tests. This should no longer be the case
-for 10.30 and later releases.
-
-
-LINKING PROGRAMS IN WINDOWS ENVIRONMENTS
-
-If you want to statically link a program against a PCRE2 library in the form of
-a non-dll .a file, you must define PCRE2_STATIC before including src/pcre2.h.
-
-
-CALLING CONVENTIONS IN WINDOWS ENVIRONMENTS
-
-It is possible to compile programs to use different calling conventions using
-MSVC. Search the web for "calling conventions" for more information. To make it
-easier to change the calling convention for the exported functions in the
-PCRE2 library, the macro PCRE2_CALL_CONVENTION is present in all the external
-definitions. It can be set externally when compiling (e.g. in CFLAGS). If it is
-not set, it defaults to empty; the default calling convention is then used
-(which is what is wanted most of the time).
-
-
-COMMENTS ABOUT WIN32 BUILDS (see also "BUILDING PCRE2 ON WINDOWS WITH CMAKE")
-
-There are two ways of building PCRE2 using the "configure, make, make install"
-paradigm on Windows systems: using MinGW or using Cygwin. These are not at all
-the same thing; they are completely different from each other. There is also
-support for building using CMake, which some users find a more straightforward
-way of building PCRE2 under Windows.
-
-The MinGW home page (http://www.mingw.org/) says this:
-
-  MinGW: A collection of freely available and freely distributable Windows
-  specific header files and import libraries combined with GNU toolsets that
-  allow one to produce native Windows programs that do not rely on any
-  3rd-party C runtime DLLs.
-
-The Cygwin home page (http://www.cygwin.com/) says this:
-
-  Cygwin is a Linux-like environment for Windows. It consists of two parts:
-
-  . A DLL (cygwin1.dll) which acts as a Linux API emulation layer providing
-    substantial Linux API functionality
-
-  . A collection of tools which provide Linux look and feel.
-
-On both MinGW and Cygwin, PCRE2 should build correctly using:
-
-  ./configure && make && make install
-
-This should create two libraries called libpcre2-8 and libpcre2-posix. These
-are independent libraries: when you link with libpcre2-posix you must also link
-with libpcre2-8, which contains the basic functions.
-
-Using Cygwin's compiler generates libraries and executables that depend on
-cygwin1.dll. If a library that is generated this way is distributed,
-cygwin1.dll has to be distributed as well. Since cygwin1.dll is under the GPL
-licence, this forces not only PCRE2 to be under the GPL, but also the entire
-application. A distributor who wants to keep their own code proprietary must
-purchase an appropriate Cygwin licence.
-
-MinGW has no such restrictions. The MinGW compiler generates a library or
-executable that can run standalone on Windows without any third party dll or
-licensing issues.
-
-But there is more complication:
-
-If a Cygwin user uses the -mno-cygwin Cygwin gcc flag, what that really does is
-to tell Cygwin's gcc to use the MinGW gcc. Cygwin's gcc is only acting as a
-front end to MinGW's gcc (if you install Cygwin's gcc, you get both Cygwin's
-gcc and MinGW's gcc). So, a user can:
-
-. Build native binaries by using MinGW or by getting Cygwin and using
-  -mno-cygwin.
-
-. Build binaries that depend on cygwin1.dll by using Cygwin with the normal
-  compiler flags.
-
-The test files that are supplied with PCRE2 are in UNIX format, with LF
-characters as line terminators. Unless your PCRE2 library uses a default
-newline option that includes LF as a valid newline, it may be necessary to
-change the line terminators in the test files to get some of the tests to work.
-
-
-BUILDING PCRE2 ON WINDOWS WITH CMAKE
-
-CMake is an alternative configuration facility that can be used instead of
-"configure". CMake creates project files (make files, solution files, etc.)
-tailored to numerous development environments, including Visual Studio,
-Borland, Msys, MinGW, NMake, and Unix. If possible, use short paths with no
-spaces in the names for your CMake installation and your PCRE2 source and build
-directories.
-
-The following instructions were contributed by a PCRE1 user, but they should
-also work for PCRE2. If they are not followed exactly, errors may occur. In the
-event that errors do occur, it is recommended that you delete the CMake cache
-before attempting to repeat the CMake build process. In the CMake GUI, the
-cache can be deleted by selecting "File > Delete Cache".
-
-1.  Install the latest CMake version available from http://www.cmake.org/, and
-    ensure that cmake\bin is on your path.
-
-2.  Unzip (retaining folder structure) the PCRE2 source tree into a source
-    directory such as C:\pcre2. You should ensure your local date and time
-    is not earlier than the file dates in your source dir if the release is
-    very new.
-
-3.  Create a new, empty build directory, preferably a subdirectory of the
-    source dir. For example, C:\pcre2\pcre2-xx\build.
-
-4.  Run cmake-gui from the Shell envirornment of your build tool, for example,
-    Msys for Msys/MinGW or Visual Studio Command Prompt for VC/VC++. Do not try
-    to start Cmake from the Windows Start menu, as this can lead to errors.
-
-5.  Enter C:\pcre2\pcre2-xx and C:\pcre2\pcre2-xx\build for the source and
-    build directories, respectively.
-
-6.  Hit the "Configure" button.
-
-7.  Select the particular IDE / build tool that you are using (Visual
-    Studio, MSYS makefiles, MinGW makefiles, etc.)
-
-8.  The GUI will then list several configuration options. This is where
-    you can disable Unicode support or select other PCRE2 optional features.
-
-9.  Hit "Configure" again. The adjacent "Generate" button should now be
-    active.
-
-10. Hit "Generate".
-
-11. The build directory should now contain a usable build system, be it a
-    solution file for Visual Studio, makefiles for MinGW, etc. Exit from
-    cmake-gui and use the generated build system with your compiler or IDE.
-    E.g., for MinGW you can run "make", or for Visual Studio, open the PCRE2
-    solution, select the desired configuration (Debug, or Release, etc.) and
-    build the ALL_BUILD project.
-
-12. If during configuration with cmake-gui you've elected to build the test
-    programs, you can execute them by building the test project. E.g., for
-    MinGW: "make test"; for Visual Studio build the RUN_TESTS project. The
-    most recent build configuration is targeted by the tests. A summary of
-    test results is presented. Complete test output is subsequently
-    available for review in Testing\Temporary under your build dir.
-
-
-BUILDING PCRE2 ON WINDOWS WITH VISUAL STUDIO
-
-The code currently cannot be compiled without a stdint.h header, which is
-available only in relatively recent versions of Visual Studio. However, this
-portable and permissively-licensed implementation of the header worked without
-issue:
-
-  http://www.azillionmonkeys.com/qed/pstdint.h
-
-Just rename it and drop it into the top level of the build tree.
-
-
-TESTING WITH RUNTEST.BAT
-
-If configured with CMake, building the test project ("make test" or building
-ALL_TESTS in Visual Studio) creates (and runs) pcre2_test.bat (and depending
-on your configuration options, possibly other test programs) in the build
-directory. The pcre2_test.bat script runs RunTest.bat with correct source and
-exe paths.
-
-For manual testing with RunTest.bat, provided the build dir is a subdirectory
-of the source directory: Open command shell window. Chdir to the location
-of your pcre2test.exe and pcre2grep.exe programs. Call RunTest.bat with
-"..\RunTest.Bat" or "..\..\RunTest.bat" as appropriate.
-
-To run only a particular test with RunTest.Bat provide a test number argument.
-
-Otherwise:
-
-1. Copy RunTest.bat into the directory where pcre2test.exe and pcre2grep.exe
-   have been created.
-
-2. Edit RunTest.bat to indentify the full or relative location of
-   the pcre2 source (wherein which the testdata folder resides), e.g.:
-
-   set srcdir=C:\pcre2\pcre2-10.00
-
-3. In a Windows command environment, chdir to the location of your bat and
-   exe programs.
-
-4. Run RunTest.bat. Test outputs will automatically be compared to expected
-   results, and discrepancies will be identified in the console output.
-
-To independently test the just-in-time compiler, run pcre2_jit_test.exe.
-
-
-BUILDING PCRE2 ON NATIVE Z/OS AND Z/VM
-
-z/OS and z/VM are operating systems for mainframe computers, produced by IBM.
-The character code used is EBCDIC, not ASCII or Unicode. In z/OS, UNIX APIs and
-applications can be supported through UNIX System Services, and in such an
-environment it should be possible to build PCRE2 in the same way as in other
-systems, with the EBCDIC related configuration settings, but it is not known if
-anybody has tried this.
-
-In native z/OS (without UNIX System Services) and in z/VM, special ports are
-required. For details, please see file 939 on this web site:
-
-  http://www.cbttape.org
-
-Everything in that location, source and executable, is in EBCDIC and native
-z/OS file formats. The port provides an API for LE languages such as COBOL and
-for the z/OS and z/VM versions of the Rexx languages.
-
-===========================
-Last Updated: 28 April 2021
-===========================

+ 0 - 907
src/deps/regex/pcre2/doc/html/README.txt

@@ -1,907 +0,0 @@
-README file for PCRE2 (Perl-compatible regular expression library)
-------------------------------------------------------------------
-
-PCRE2 is a re-working of the original PCRE1 library to provide an entirely new
-API. Since its initial release in 2015, there has been further development of
-the code and it now differs from PCRE1 in more than just the API. There are new
-features, and the internals have been improved. The original PCRE1 library is
-now obsolete and should not be used in new projects. The latest release of
-PCRE2 is available in three alternative formats from:
-
-https://ftp.pcre.org/pub/pcre/pcre2-10.xx.tar.gz
-https://ftp.pcre.org/pub/pcre/pcre2-10.xx.tar.bz2
-https://ftp.pcre.org/pub/pcre/pcre2-10.xx.tar.zip
-
-There is a mailing list for discussion about the development of PCRE at
-pcre-dev@exim.org. You can access the archives and subscribe or manage your
-subscription here:
-
-   https://lists.exim.org/mailman/listinfo/pcre-dev
-
-Please read the NEWS file if you are upgrading from a previous release. The
-contents of this README file are:
-
-  The PCRE2 APIs
-  Documentation for PCRE2
-  Contributions by users of PCRE2
-  Building PCRE2 on non-Unix-like systems
-  Building PCRE2 without using autotools
-  Building PCRE2 using autotools
-  Retrieving configuration information
-  Shared libraries
-  Cross-compiling using autotools
-  Making new tarballs
-  Testing PCRE2
-  Character tables
-  File manifest
-
-
-The PCRE2 APIs
---------------
-
-PCRE2 is written in C, and it has its own API. There are three sets of
-functions, one for the 8-bit library, which processes strings of bytes, one for
-the 16-bit library, which processes strings of 16-bit values, and one for the
-32-bit library, which processes strings of 32-bit values. Unlike PCRE1, there
-are no C++ wrappers.
-
-The distribution does contain a set of C wrapper functions for the 8-bit
-library that are based on the POSIX regular expression API (see the pcre2posix
-man page). These are built into a library called libpcre2-posix. Note that this
-just provides a POSIX calling interface to PCRE2; the regular expressions
-themselves still follow Perl syntax and semantics. The POSIX API is restricted,
-and does not give full access to all of PCRE2's facilities.
-
-The header file for the POSIX-style functions is called pcre2posix.h. The
-official POSIX name is regex.h, but I did not want to risk possible problems
-with existing files of that name by distributing it that way. To use PCRE2 with
-an existing program that uses the POSIX API, pcre2posix.h will have to be
-renamed or pointed at by a link (or the program modified, of course). See the
-pcre2posix documentation for more details.
-
-
-Documentation for PCRE2
------------------------
-
-If you install PCRE2 in the normal way on a Unix-like system, you will end up
-with a set of man pages whose names all start with "pcre2". The one that is
-just called "pcre2" lists all the others. In addition to these man pages, the
-PCRE2 documentation is supplied in two other forms:
-
-  1. There are files called doc/pcre2.txt, doc/pcre2grep.txt, and
-     doc/pcre2test.txt in the source distribution. The first of these is a
-     concatenation of the text forms of all the section 3 man pages except the
-     listing of pcre2demo.c and those that summarize individual functions. The
-     other two are the text forms of the section 1 man pages for the pcre2grep
-     and pcre2test commands. These text forms are provided for ease of scanning
-     with text editors or similar tools. They are installed in
-     <prefix>/share/doc/pcre2, where <prefix> is the installation prefix
-     (defaulting to /usr/local).
-
-  2. A set of files containing all the documentation in HTML form, hyperlinked
-     in various ways, and rooted in a file called index.html, is distributed in
-     doc/html and installed in <prefix>/share/doc/pcre2/html.
-
-
-Building PCRE2 on non-Unix-like systems
----------------------------------------
-
-For a non-Unix-like system, please read the file NON-AUTOTOOLS-BUILD, though if
-your system supports the use of "configure" and "make" you may be able to build
-PCRE2 using autotools in the same way as for many Unix-like systems.
-
-PCRE2 can also be configured using CMake, which can be run in various ways
-(command line, GUI, etc). This creates Makefiles, solution files, etc. The file
-NON-AUTOTOOLS-BUILD has information about CMake.
-
-PCRE2 has been compiled on many different operating systems. It should be
-straightforward to build PCRE2 on any system that has a Standard C compiler and
-library, because it uses only Standard C functions.
-
-
-Building PCRE2 without using autotools
---------------------------------------
-
-The use of autotools (in particular, libtool) is problematic in some
-environments, even some that are Unix or Unix-like. See the NON-AUTOTOOLS-BUILD
-file for ways of building PCRE2 without using autotools.
-
-
-Building PCRE2 using autotools
-------------------------------
-
-The following instructions assume the use of the widely used "configure; make;
-make install" (autotools) process.
-
-To build PCRE2 on system that supports autotools, first run the "configure"
-command from the PCRE2 distribution directory, with your current directory set
-to the directory where you want the files to be created. This command is a
-standard GNU "autoconf" configuration script, for which generic instructions
-are supplied in the file INSTALL.
-
-Most commonly, people build PCRE2 within its own distribution directory, and in
-this case, on many systems, just running "./configure" is sufficient. However,
-the usual methods of changing standard defaults are available. For example:
-
-CFLAGS='-O2 -Wall' ./configure --prefix=/opt/local
-
-This command specifies that the C compiler should be run with the flags '-O2
--Wall' instead of the default, and that "make install" should install PCRE2
-under /opt/local instead of the default /usr/local.
-
-If you want to build in a different directory, just run "configure" with that
-directory as current. For example, suppose you have unpacked the PCRE2 source
-into /source/pcre2/pcre2-xxx, but you want to build it in
-/build/pcre2/pcre2-xxx:
-
-cd /build/pcre2/pcre2-xxx
-/source/pcre2/pcre2-xxx/configure
-
-PCRE2 is written in C and is normally compiled as a C library. However, it is
-possible to build it as a C++ library, though the provided building apparatus
-does not have any features to support this.
-
-There are some optional features that can be included or omitted from the PCRE2
-library. They are also documented in the pcre2build man page.
-
-. By default, both shared and static libraries are built. You can change this
-  by adding one of these options to the "configure" command:
-
-  --disable-shared
-  --disable-static
-
-  (See also "Shared libraries on Unix-like systems" below.)
-
-. By default, only the 8-bit library is built. If you add --enable-pcre2-16 to
-  the "configure" command, the 16-bit library is also built. If you add
-  --enable-pcre2-32 to the "configure" command, the 32-bit library is also
-  built. If you want only the 16-bit or 32-bit library, use --disable-pcre2-8
-  to disable building the 8-bit library.
-
-. If you want to include support for just-in-time (JIT) compiling, which can
-  give large performance improvements on certain platforms, add --enable-jit to
-  the "configure" command. This support is available only for certain hardware
-  architectures. If you try to enable it on an unsupported architecture, there
-  will be a compile time error. If in doubt, use --enable-jit=auto, which
-  enables JIT only if the current hardware is supported.
-
-. If you are enabling JIT under SELinux environment you may also want to add
-  --enable-jit-sealloc, which enables the use of an executable memory allocator
-  that is compatible with SELinux. Warning: this allocator is experimental!
-  It does not support fork() operation and may crash when no disk space is
-  available. This option has no effect if JIT is disabled.
-
-. If you do not want to make use of the default support for UTF-8 Unicode
-  character strings in the 8-bit library, UTF-16 Unicode character strings in
-  the 16-bit library, or UTF-32 Unicode character strings in the 32-bit
-  library, you can add --disable-unicode to the "configure" command. This
-  reduces the size of the libraries. It is not possible to configure one
-  library with Unicode support, and another without, in the same configuration.
-  It is also not possible to use --enable-ebcdic (see below) with Unicode
-  support, so if this option is set, you must also use --disable-unicode.
-
-  When Unicode support is available, the use of a UTF encoding still has to be
-  enabled by setting the PCRE2_UTF option at run time or starting a pattern
-  with (*UTF). When PCRE2 is compiled with Unicode support, its input can only
-  either be ASCII or UTF-8/16/32, even when running on EBCDIC platforms.
-
-  As well as supporting UTF strings, Unicode support includes support for the
-  \P, \p, and \X sequences that recognize Unicode character properties.
-  However, only the basic two-letter properties such as Lu are supported.
-  Escape sequences such as \d and \w in patterns do not by default make use of
-  Unicode properties, but can be made to do so by setting the PCRE2_UCP option
-  or starting a pattern with (*UCP).
-
-. You can build PCRE2 to recognize either CR or LF or the sequence CRLF, or any
-  of the preceding, or any of the Unicode newline sequences, or the NUL (zero)
-  character as indicating the end of a line. Whatever you specify at build time
-  is the default; the caller of PCRE2 can change the selection at run time. The
-  default newline indicator is a single LF character (the Unix standard). You
-  can specify the default newline indicator by adding --enable-newline-is-cr,
-  --enable-newline-is-lf, --enable-newline-is-crlf,
-  --enable-newline-is-anycrlf, --enable-newline-is-any, or
-  --enable-newline-is-nul to the "configure" command, respectively.
-
-. By default, the sequence \R in a pattern matches any Unicode line ending
-  sequence. This is independent of the option specifying what PCRE2 considers
-  to be the end of a line (see above). However, the caller of PCRE2 can
-  restrict \R to match only CR, LF, or CRLF. You can make this the default by
-  adding --enable-bsr-anycrlf to the "configure" command (bsr = "backslash R").
-
-. In a pattern, the escape sequence \C matches a single code unit, even in a
-  UTF mode. This can be dangerous because it breaks up multi-code-unit
-  characters. You can build PCRE2 with the use of \C permanently locked out by
-  adding --enable-never-backslash-C (note the upper case C) to the "configure"
-  command. When \C is allowed by the library, individual applications can lock
-  it out by calling pcre2_compile() with the PCRE2_NEVER_BACKSLASH_C option.
-
-. PCRE2 has a counter that limits the depth of nesting of parentheses in a
-  pattern. This limits the amount of system stack that a pattern uses when it
-  is compiled. The default is 250, but you can change it by setting, for
-  example,
-
-  --with-parens-nest-limit=500
-
-. PCRE2 has a counter that can be set to limit the amount of computing resource
-  it uses when matching a pattern. If the limit is exceeded during a match, the
-  match fails. The default is ten million. You can change the default by
-  setting, for example,
-
-  --with-match-limit=500000
-
-  on the "configure" command. This is just the default; individual calls to
-  pcre2_match() or pcre2_dfa_match() can supply their own value. There is more
-  discussion in the pcre2api man page (search for pcre2_set_match_limit).
-
-. There is a separate counter that limits the depth of nested backtracking
-  (pcre2_match()) or nested function calls (pcre2_dfa_match()) during a
-  matching process, which indirectly limits the amount of heap memory that is
-  used, and in the case of pcre2_dfa_match() the amount of stack as well. This
-  counter also has a default of ten million, which is essentially "unlimited".
-  You can change the default by setting, for example,
-
-  --with-match-limit-depth=5000
-
-  There is more discussion in the pcre2api man page (search for
-  pcre2_set_depth_limit).
-
-. You can also set an explicit limit on the amount of heap memory used by
-  the pcre2_match() and pcre2_dfa_match() interpreters:
-
-  --with-heap-limit=500
-
-  The units are kibibytes (units of 1024 bytes). This limit does not apply when
-  the JIT optimization (which has its own memory control features) is used.
-  There is more discussion on the pcre2api man page (search for
-  pcre2_set_heap_limit).
-
-. In the 8-bit library, the default maximum compiled pattern size is around
-  64 kibibytes. You can increase this by adding --with-link-size=3 to the
-  "configure" command. PCRE2 then uses three bytes instead of two for offsets
-  to different parts of the compiled pattern. In the 16-bit library,
-  --with-link-size=3 is the same as --with-link-size=4, which (in both
-  libraries) uses four-byte offsets. Increasing the internal link size reduces
-  performance in the 8-bit and 16-bit libraries. In the 32-bit library, the
-  link size setting is ignored, as 4-byte offsets are always used.
-
-. For speed, PCRE2 uses four tables for manipulating and identifying characters
-  whose code point values are less than 256. By default, it uses a set of
-  tables for ASCII encoding that is part of the distribution. If you specify
-
-  --enable-rebuild-chartables
-
-  a program called pcre2_dftables is compiled and run in the default C locale
-  when you obey "make". It builds a source file called pcre2_chartables.c. If
-  you do not specify this option, pcre2_chartables.c is created as a copy of
-  pcre2_chartables.c.dist. See "Character tables" below for further
-  information.
-
-. It is possible to compile PCRE2 for use on systems that use EBCDIC as their
-  character code (as opposed to ASCII/Unicode) by specifying
-
-  --enable-ebcdic --disable-unicode
-
-  This automatically implies --enable-rebuild-chartables (see above). However,
-  when PCRE2 is built this way, it always operates in EBCDIC. It cannot support
-  both EBCDIC and UTF-8/16/32. There is a second option, --enable-ebcdic-nl25,
-  which specifies that the code value for the EBCDIC NL character is 0x25
-  instead of the default 0x15.
-
-. If you specify --enable-debug, additional debugging code is included in the
-  build. This option is intended for use by the PCRE2 maintainers.
-
-. In environments where valgrind is installed, if you specify
-
-  --enable-valgrind
-
-  PCRE2 will use valgrind annotations to mark certain memory regions as
-  unaddressable. This allows it to detect invalid memory accesses, and is
-  mostly useful for debugging PCRE2 itself.
-
-. In environments where the gcc compiler is used and lcov is installed, if you
-  specify
-
-  --enable-coverage
-
-  the build process implements a code coverage report for the test suite. The
-  report is generated by running "make coverage". If ccache is installed on
-  your system, it must be disabled when building PCRE2 for coverage reporting.
-  You can do this by setting the environment variable CCACHE_DISABLE=1 before
-  running "make" to build PCRE2. There is more information about coverage
-  reporting in the "pcre2build" documentation.
-
-. When JIT support is enabled, pcre2grep automatically makes use of it, unless
-  you add --disable-pcre2grep-jit to the "configure" command.
-
-. There is support for calling external programs during matching in the
-  pcre2grep command, using PCRE2's callout facility with string arguments. This
-  support can be disabled by adding --disable-pcre2grep-callout to the
-  "configure" command. There are two kinds of callout: one that generates
-  output from inbuilt code, and another that calls an external program. The
-  latter has special support for Windows and VMS; otherwise it assumes the
-  existence of the fork() function. This facility can be disabled by adding
-  --disable-pcre2grep-callout-fork to the "configure" command.
-
-. The pcre2grep program currently supports only 8-bit data files, and so
-  requires the 8-bit PCRE2 library. It is possible to compile pcre2grep to use
-  libz and/or libbz2, in order to read .gz and .bz2 files (respectively), by
-  specifying one or both of
-
-  --enable-pcre2grep-libz
-  --enable-pcre2grep-libbz2
-
-  Of course, the relevant libraries must be installed on your system.
-
-. The default starting size (in bytes) of the internal buffer used by pcre2grep
-  can be set by, for example:
-
-  --with-pcre2grep-bufsize=51200
-
-  The value must be a plain integer. The default is 20480. The amount of memory
-  used by pcre2grep is actually three times this number, to allow for "before"
-  and "after" lines. If very long lines are encountered, the buffer is
-  automatically enlarged, up to a fixed maximum size.
-
-. The default maximum size of pcre2grep's internal buffer can be set by, for
-  example:
-
-  --with-pcre2grep-max-bufsize=2097152
-
-  The default is either 1048576 or the value of --with-pcre2grep-bufsize,
-  whichever is the larger.
-
-. It is possible to compile pcre2test so that it links with the libreadline
-  or libedit libraries, by specifying, respectively,
-
-  --enable-pcre2test-libreadline or --enable-pcre2test-libedit
-
-  If this is done, when pcre2test's input is from a terminal, it reads it using
-  the readline() function. This provides line-editing and history facilities.
-  Note that libreadline is GPL-licenced, so if you distribute a binary of
-  pcre2test linked in this way, there may be licensing issues. These can be
-  avoided by linking with libedit (which has a BSD licence) instead.
-
-  Enabling libreadline causes the -lreadline option to be added to the
-  pcre2test build. In many operating environments with a sytem-installed
-  readline library this is sufficient. However, in some environments (e.g. if
-  an unmodified distribution version of readline is in use), it may be
-  necessary to specify something like LIBS="-lncurses" as well. This is
-  because, to quote the readline INSTALL, "Readline uses the termcap functions,
-  but does not link with the termcap or curses library itself, allowing
-  applications which link with readline the to choose an appropriate library."
-  If you get error messages about missing functions tgetstr, tgetent, tputs,
-  tgetflag, or tgoto, this is the problem, and linking with the ncurses library
-  should fix it.
-
-. The C99 standard defines formatting modifiers z and t for size_t and
-  ptrdiff_t values, respectively. By default, PCRE2 uses these modifiers in
-  environments other than Microsoft Visual Studio when __STDC_VERSION__ is
-  defined and has a value greater than or equal to 199901L (indicating C99).
-  However, there is at least one environment that claims to be C99 but does not
-  support these modifiers. If --disable-percent-zt is specified, no use is made
-  of the z or t modifiers. Instead or %td or %zu, %lu is used, with a cast for
-  size_t values.
-
-. There is a special option called --enable-fuzz-support for use by people who
-  want to run fuzzing tests on PCRE2. At present this applies only to the 8-bit
-  library. If set, it causes an extra library called libpcre2-fuzzsupport.a to
-  be built, but not installed. This contains a single function called
-  LLVMFuzzerTestOneInput() whose arguments are a pointer to a string and the
-  length of the string. When called, this function tries to compile the string
-  as a pattern, and if that succeeds, to match it. This is done both with no
-  options and with some random options bits that are generated from the string.
-  Setting --enable-fuzz-support also causes a binary called pcre2fuzzcheck to
-  be created. This is normally run under valgrind or used when PCRE2 is
-  compiled with address sanitizing enabled. It calls the fuzzing function and
-  outputs information about it is doing. The input strings are specified by
-  arguments: if an argument starts with "=" the rest of it is a literal input
-  string. Otherwise, it is assumed to be a file name, and the contents of the
-  file are the test string.
-
-. Releases before 10.30 could be compiled with --disable-stack-for-recursion,
-  which caused pcre2_match() to use individual blocks on the heap for
-  backtracking instead of recursive function calls (which use the stack). This
-  is now obsolete since pcre2_match() was refactored always to use the heap (in
-  a much more efficient way than before). This option is retained for backwards
-  compatibility, but has no effect other than to output a warning.
-
-The "configure" script builds the following files for the basic C library:
-
-. Makefile             the makefile that builds the library
-. src/config.h         build-time configuration options for the library
-. src/pcre2.h          the public PCRE2 header file
-. pcre2-config          script that shows the building settings such as CFLAGS
-                         that were set for "configure"
-. libpcre2-8.pc        )
-. libpcre2-16.pc       ) data for the pkg-config command
-. libpcre2-32.pc       )
-. libpcre2-posix.pc    )
-. libtool              script that builds shared and/or static libraries
-
-Versions of config.h and pcre2.h are distributed in the src directory of PCRE2
-tarballs under the names config.h.generic and pcre2.h.generic. These are
-provided for those who have to build PCRE2 without using "configure" or CMake.
-If you use "configure" or CMake, the .generic versions are not used.
-
-The "configure" script also creates config.status, which is an executable
-script that can be run to recreate the configuration, and config.log, which
-contains compiler output from tests that "configure" runs.
-
-Once "configure" has run, you can run "make". This builds whichever of the
-libraries libpcre2-8, libpcre2-16 and libpcre2-32 are configured, and a test
-program called pcre2test. If you enabled JIT support with --enable-jit, another
-test program called pcre2_jit_test is built as well. If the 8-bit library is
-built, libpcre2-posix and the pcre2grep command are also built. Running
-"make" with the -j option may speed up compilation on multiprocessor systems.
-
-The command "make check" runs all the appropriate tests. Details of the PCRE2
-tests are given below in a separate section of this document. The -j option of
-"make" can also be used when running the tests.
-
-You can use "make install" to install PCRE2 into live directories on your
-system. The following are installed (file names are all relative to the
-<prefix> that is set when "configure" is run):
-
-  Commands (bin):
-    pcre2test
-    pcre2grep (if 8-bit support is enabled)
-    pcre2-config
-
-  Libraries (lib):
-    libpcre2-8      (if 8-bit support is enabled)
-    libpcre2-16     (if 16-bit support is enabled)
-    libpcre2-32     (if 32-bit support is enabled)
-    libpcre2-posix  (if 8-bit support is enabled)
-
-  Configuration information (lib/pkgconfig):
-    libpcre2-8.pc
-    libpcre2-16.pc
-    libpcre2-32.pc
-    libpcre2-posix.pc
-
-  Header files (include):
-    pcre2.h
-    pcre2posix.h
-
-  Man pages (share/man/man{1,3}):
-    pcre2grep.1
-    pcre2test.1
-    pcre2-config.1
-    pcre2.3
-    pcre2*.3 (lots more pages, all starting "pcre2")
-
-  HTML documentation (share/doc/pcre2/html):
-    index.html
-    *.html (lots more pages, hyperlinked from index.html)
-
-  Text file documentation (share/doc/pcre2):
-    AUTHORS
-    COPYING
-    ChangeLog
-    LICENCE
-    NEWS
-    README
-    pcre2.txt         (a concatenation of the man(3) pages)
-    pcre2test.txt     the pcre2test man page
-    pcre2grep.txt     the pcre2grep man page
-    pcre2-config.txt  the pcre2-config man page
-
-If you want to remove PCRE2 from your system, you can run "make uninstall".
-This removes all the files that "make install" installed. However, it does not
-remove any directories, because these are often shared with other programs.
-
-
-Retrieving configuration information
-------------------------------------
-
-Running "make install" installs the command pcre2-config, which can be used to
-recall information about the PCRE2 configuration and installation. For example:
-
-  pcre2-config --version
-
-prints the version number, and
-
-  pcre2-config --libs8
-
-outputs information about where the 8-bit library is installed. This command
-can be included in makefiles for programs that use PCRE2, saving the programmer
-from having to remember too many details. Run pcre2-config with no arguments to
-obtain a list of possible arguments.
-
-The pkg-config command is another system for saving and retrieving information
-about installed libraries. Instead of separate commands for each library, a
-single command is used. For example:
-
-  pkg-config --libs libpcre2-16
-
-The data is held in *.pc files that are installed in a directory called
-<prefix>/lib/pkgconfig.
-
-
-Shared libraries
-----------------
-
-The default distribution builds PCRE2 as shared libraries and static libraries,
-as long as the operating system supports shared libraries. Shared library
-support relies on the "libtool" script which is built as part of the
-"configure" process.
-
-The libtool script is used to compile and link both shared and static
-libraries. They are placed in a subdirectory called .libs when they are newly
-built. The programs pcre2test and pcre2grep are built to use these uninstalled
-libraries (by means of wrapper scripts in the case of shared libraries). When
-you use "make install" to install shared libraries, pcre2grep and pcre2test are
-automatically re-built to use the newly installed shared libraries before being
-installed themselves. However, the versions left in the build directory still
-use the uninstalled libraries.
-
-To build PCRE2 using static libraries only you must use --disable-shared when
-configuring it. For example:
-
-./configure --prefix=/usr/gnu --disable-shared
-
-Then run "make" in the usual way. Similarly, you can use --disable-static to
-build only shared libraries.
-
-
-Cross-compiling using autotools
--------------------------------
-
-You can specify CC and CFLAGS in the normal way to the "configure" command, in
-order to cross-compile PCRE2 for some other host. However, you should NOT
-specify --enable-rebuild-chartables, because if you do, the pcre2_dftables.c
-source file is compiled and run on the local host, in order to generate the
-inbuilt character tables (the pcre2_chartables.c file). This will probably not
-work, because pcre2_dftables.c needs to be compiled with the local compiler,
-not the cross compiler.
-
-When --enable-rebuild-chartables is not specified, pcre2_chartables.c is
-created by making a copy of pcre2_chartables.c.dist, which is a default set of
-tables that assumes ASCII code. Cross-compiling with the default tables should
-not be a problem.
-
-If you need to modify the character tables when cross-compiling, you should
-move pcre2_chartables.c.dist out of the way, then compile pcre2_dftables.c by
-hand and run it on the local host to make a new version of
-pcre2_chartables.c.dist. See the pcre2build section "Creating character tables
-at build time" for more details.
-
-
-Making new tarballs
--------------------
-
-The command "make dist" creates three PCRE2 tarballs, in tar.gz, tar.bz2, and
-zip formats. The command "make distcheck" does the same, but then does a trial
-build of the new distribution to ensure that it works.
-
-If you have modified any of the man page sources in the doc directory, you
-should first run the PrepareRelease script before making a distribution. This
-script creates the .txt and HTML forms of the documentation from the man pages.
-
-
-Testing PCRE2
--------------
-
-To test the basic PCRE2 library on a Unix-like system, run the RunTest script.
-There is another script called RunGrepTest that tests the pcre2grep command.
-When JIT support is enabled, a third test program called pcre2_jit_test is
-built. Both the scripts and all the program tests are run if you obey "make
-check". For other environments, see the instructions in NON-AUTOTOOLS-BUILD.
-
-The RunTest script runs the pcre2test test program (which is documented in its
-own man page) on each of the relevant testinput files in the testdata
-directory, and compares the output with the contents of the corresponding
-testoutput files. RunTest uses a file called testtry to hold the main output
-from pcre2test. Other files whose names begin with "test" are used as working
-files in some tests.
-
-Some tests are relevant only when certain build-time options were selected. For
-example, the tests for UTF-8/16/32 features are run only when Unicode support
-is available. RunTest outputs a comment when it skips a test.
-
-Many (but not all) of the tests that are not skipped are run twice if JIT
-support is available. On the second run, JIT compilation is forced. This
-testing can be suppressed by putting "nojit" on the RunTest command line.
-
-The entire set of tests is run once for each of the 8-bit, 16-bit and 32-bit
-libraries that are enabled. If you want to run just one set of tests, call
-RunTest with either the -8, -16 or -32 option.
-
-If valgrind is installed, you can run the tests under it by putting "valgrind"
-on the RunTest command line. To run pcre2test on just one or more specific test
-files, give their numbers as arguments to RunTest, for example:
-
-  RunTest 2 7 11
-
-You can also specify ranges of tests such as 3-6 or 3- (meaning 3 to the
-end), or a number preceded by ~ to exclude a test. For example:
-
-  Runtest 3-15 ~10
-
-This runs tests 3 to 15, excluding test 10, and just ~13 runs all the tests
-except test 13. Whatever order the arguments are in, the tests are always run
-in numerical order.
-
-You can also call RunTest with the single argument "list" to cause it to output
-a list of tests.
-
-The test sequence starts with "test 0", which is a special test that has no
-input file, and whose output is not checked. This is because it will be
-different on different hardware and with different configurations. The test
-exists in order to exercise some of pcre2test's code that would not otherwise
-be run.
-
-Tests 1 and 2 can always be run, as they expect only plain text strings (not
-UTF) and make no use of Unicode properties. The first test file can be fed
-directly into the perltest.sh script to check that Perl gives the same results.
-The only difference you should see is in the first few lines, where the Perl
-version is given instead of the PCRE2 version. The second set of tests check
-auxiliary functions, error detection, and run-time flags that are specific to
-PCRE2. It also uses the debugging flags to check some of the internals of
-pcre2_compile().
-
-If you build PCRE2 with a locale setting that is not the standard C locale, the
-character tables may be different (see next paragraph). In some cases, this may
-cause failures in the second set of tests. For example, in a locale where the
-isprint() function yields TRUE for characters in the range 128-255, the use of
-[:isascii:] inside a character class defines a different set of characters, and
-this shows up in this test as a difference in the compiled code, which is being
-listed for checking. For example, where the comparison test output contains
-[\x00-\x7f] the test might contain [\x00-\xff], and similarly in some other
-cases. This is not a bug in PCRE2.
-
-Test 3 checks pcre2_maketables(), the facility for building a set of character
-tables for a specific locale and using them instead of the default tables. The
-script uses the "locale" command to check for the availability of the "fr_FR",
-"french", or "fr" locale, and uses the first one that it finds. If the "locale"
-command fails, or if its output doesn't include "fr_FR", "french", or "fr" in
-the list of available locales, the third test cannot be run, and a comment is
-output to say why. If running this test produces an error like this:
-
-  ** Failed to set locale "fr_FR"
-
-it means that the given locale is not available on your system, despite being
-listed by "locale". This does not mean that PCRE2 is broken. There are three
-alternative output files for the third test, because three different versions
-of the French locale have been encountered. The test passes if its output
-matches any one of them.
-
-Tests 4 and 5 check UTF and Unicode property support, test 4 being compatible
-with the perltest.sh script, and test 5 checking PCRE2-specific things.
-
-Tests 6 and 7 check the pcre2_dfa_match() alternative matching function, in
-non-UTF mode and UTF-mode with Unicode property support, respectively.
-
-Test 8 checks some internal offsets and code size features, but it is run only
-when Unicode support is enabled. The output is different in 8-bit, 16-bit, and
-32-bit modes and for different link sizes, so there are different output files
-for each mode and link size.
-
-Tests 9 and 10 are run only in 8-bit mode, and tests 11 and 12 are run only in
-16-bit and 32-bit modes. These are tests that generate different output in
-8-bit mode. Each pair are for general cases and Unicode support, respectively.
-
-Test 13 checks the handling of non-UTF characters greater than 255 by
-pcre2_dfa_match() in 16-bit and 32-bit modes.
-
-Test 14 contains some special UTF and UCP tests that give different output for
-different code unit widths.
-
-Test 15 contains a number of tests that must not be run with JIT. They check,
-among other non-JIT things, the match-limiting features of the intepretive
-matcher.
-
-Test 16 is run only when JIT support is not available. It checks that an
-attempt to use JIT has the expected behaviour.
-
-Test 17 is run only when JIT support is available. It checks JIT complete and
-partial modes, match-limiting under JIT, and other JIT-specific features.
-
-Tests 18 and 19 are run only in 8-bit mode. They check the POSIX interface to
-the 8-bit library, without and with Unicode support, respectively.
-
-Test 20 checks the serialization functions by writing a set of compiled
-patterns to a file, and then reloading and checking them.
-
-Tests 21 and 22 test \C support when the use of \C is not locked out, without
-and with UTF support, respectively. Test 23 tests \C when it is locked out.
-
-Tests 24 and 25 test the experimental pattern conversion functions, without and
-with UTF support, respectively.
-
-
-Character tables
-----------------
-
-For speed, PCRE2 uses four tables for manipulating and identifying characters
-whose code point values are less than 256. By default, a set of tables that is
-built into the library is used. The pcre2_maketables() function can be called
-by an application to create a new set of tables in the current locale. This are
-passed to PCRE2 by calling pcre2_set_character_tables() to put a pointer into a
-compile context.
-
-The source file called pcre2_chartables.c contains the default set of tables.
-By default, this is created as a copy of pcre2_chartables.c.dist, which
-contains tables for ASCII coding. However, if --enable-rebuild-chartables is
-specified for ./configure, a new version of pcre2_chartables.c is built by the
-program pcre2_dftables (compiled from pcre2_dftables.c), which uses the ANSI C
-character handling functions such as isalnum(), isalpha(), isupper(),
-islower(), etc. to build the table sources. This means that the default C
-locale that is set for your system will control the contents of these default
-tables. You can change the default tables by editing pcre2_chartables.c and
-then re-building PCRE2. If you do this, you should take care to ensure that the
-file does not get automatically re-generated. The best way to do this is to
-move pcre2_chartables.c.dist out of the way and replace it with your customized
-tables.
-
-When the pcre2_dftables program is run as a result of specifying
---enable-rebuild-chartables, it uses the default C locale that is set on your
-system. It does not pay attention to the LC_xxx environment variables. In other
-words, it uses the system's default locale rather than whatever the compiling
-user happens to have set. If you really do want to build a source set of
-character tables in a locale that is specified by the LC_xxx variables, you can
-run the pcre2_dftables program by hand with the -L option. For example:
-
-  ./pcre2_dftables -L pcre2_chartables.c.special
-
-The second argument names the file where the source code for the tables is
-written. The first two 256-byte tables provide lower casing and case flipping
-functions, respectively. The next table consists of a number of 32-byte bit
-maps which identify certain character classes such as digits, "word"
-characters, white space, etc. These are used when building 32-byte bit maps
-that represent character classes for code points less than 256. The final
-256-byte table has bits indicating various character types, as follows:
-
-    1   white space character
-    2   letter
-    4   lower case letter
-    8   decimal digit
-   16   alphanumeric or '_'
-
-You can also specify -b (with or without -L) when running pcre2_dftables. This
-causes the tables to be written in binary instead of as source code. A set of
-binary tables can be loaded into memory by an application and passed to
-pcre2_compile() in the same way as tables created dynamically by calling
-pcre2_maketables(). The tables are just a string of bytes, independent of
-hardware characteristics such as endianness. This means they can be bundled
-with an application that runs in different environments, to ensure consistent
-behaviour.
-
-See also the pcre2build section "Creating character tables at build time".
-
-
-File manifest
--------------
-
-The distribution should contain the files listed below.
-
-(A) Source files for the PCRE2 library functions and their headers are found in
-    the src directory:
-
-  src/pcre2_dftables.c     auxiliary program for building pcre2_chartables.c
-                           when --enable-rebuild-chartables is specified
-
-  src/pcre2_chartables.c.dist  a default set of character tables that assume
-                           ASCII coding; unless --enable-rebuild-chartables is
-                           specified, used by copying to pcre2_chartables.c
-
-  src/pcre2posix.c         )
-  src/pcre2_auto_possess.c )
-  src/pcre2_compile.c      )
-  src/pcre2_config.c       )
-  src/pcre2_context.c      )
-  src/pcre2_convert.c      )
-  src/pcre2_dfa_match.c    )
-  src/pcre2_error.c        )
-  src/pcre2_extuni.c       )
-  src/pcre2_find_bracket.c )
-  src/pcre2_jit_compile.c  )
-  src/pcre2_jit_match.c    ) sources for the functions in the library,
-  src/pcre2_jit_misc.c     )   and some internal functions that they use
-  src/pcre2_maketables.c   )
-  src/pcre2_match.c        )
-  src/pcre2_match_data.c   )
-  src/pcre2_newline.c      )
-  src/pcre2_ord2utf.c      )
-  src/pcre2_pattern_info.c )
-  src/pcre2_script_run.c   )
-  src/pcre2_serialize.c    )
-  src/pcre2_string_utils.c )
-  src/pcre2_study.c        )
-  src/pcre2_substitute.c   )
-  src/pcre2_substring.c    )
-  src/pcre2_tables.c       )
-  src/pcre2_ucd.c          )
-  src/pcre2_valid_utf.c    )
-  src/pcre2_xclass.c       )
-
-  src/pcre2_printint.c     debugging function that is used by pcre2test,
-  src/pcre2_fuzzsupport.c  function for (optional) fuzzing support
-
-  src/config.h.in          template for config.h, when built by "configure"
-  src/pcre2.h.in           template for pcre2.h when built by "configure"
-  src/pcre2posix.h         header for the external POSIX wrapper API
-  src/pcre2_internal.h     header for internal use
-  src/pcre2_intmodedep.h   a mode-specific internal header
-  src/pcre2_ucp.h          header for Unicode property handling
-
-  sljit/*                  source files for the JIT compiler
-
-(B) Source files for programs that use PCRE2:
-
-  src/pcre2demo.c          simple demonstration of coding calls to PCRE2
-  src/pcre2grep.c          source of a grep utility that uses PCRE2
-  src/pcre2test.c          comprehensive test program
-  src/pcre2_jit_test.c     JIT test program
-
-(C) Auxiliary files:
-
-  132html                  script to turn "man" pages into HTML
-  AUTHORS                  information about the author of PCRE2
-  ChangeLog                log of changes to the code
-  CleanTxt                 script to clean nroff output for txt man pages
-  Detrail                  script to remove trailing spaces
-  HACKING                  some notes about the internals of PCRE2
-  INSTALL                  generic installation instructions
-  LICENCE                  conditions for the use of PCRE2
-  COPYING                  the same, using GNU's standard name
-  Makefile.in              ) template for Unix Makefile, which is built by
-                           )   "configure"
-  Makefile.am              ) the automake input that was used to create
-                           )   Makefile.in
-  NEWS                     important changes in this release
-  NON-AUTOTOOLS-BUILD      notes on building PCRE2 without using autotools
-  PrepareRelease           script to make preparations for "make dist"
-  README                   this file
-  RunTest                  a Unix shell script for running tests
-  RunGrepTest              a Unix shell script for pcre2grep tests
-  aclocal.m4               m4 macros (generated by "aclocal")
-  config.guess             ) files used by libtool,
-  config.sub               )   used only when building a shared library
-  configure                a configuring shell script (built by autoconf)
-  configure.ac             ) the autoconf input that was used to build
-                           )   "configure" and config.h
-  depcomp                  ) script to find program dependencies, generated by
-                           )   automake
-  doc/*.3                  man page sources for PCRE2
-  doc/*.1                  man page sources for pcre2grep and pcre2test
-  doc/index.html.src       the base HTML page
-  doc/html/*               HTML documentation
-  doc/pcre2.txt            plain text version of the man pages
-  doc/pcre2test.txt        plain text documentation of test program
-  install-sh               a shell script for installing files
-  libpcre2-8.pc.in         template for libpcre2-8.pc for pkg-config
-  libpcre2-16.pc.in        template for libpcre2-16.pc for pkg-config
-  libpcre2-32.pc.in        template for libpcre2-32.pc for pkg-config
-  libpcre2-posix.pc.in     template for libpcre2-posix.pc for pkg-config
-  ltmain.sh                file used to build a libtool script
-  missing                  ) common stub for a few missing GNU programs while
-                           )   installing, generated by automake
-  mkinstalldirs            script for making install directories
-  perltest.sh              Script for running a Perl test program
-  pcre2-config.in          source of script which retains PCRE2 information
-  testdata/testinput*      test data for main library tests
-  testdata/testoutput*     expected test results
-  testdata/grep*           input and output for pcre2grep tests
-  testdata/*               other supporting test files
-
-(D) Auxiliary files for cmake support
-
-  cmake/COPYING-CMAKE-SCRIPTS
-  cmake/FindPackageHandleStandardArgs.cmake
-  cmake/FindEditline.cmake
-  cmake/FindReadline.cmake
-  CMakeLists.txt
-  config-cmake.h.in
-
-(E) Auxiliary files for building PCRE2 "by hand"
-
-  src/pcre2.h.generic     ) a version of the public PCRE2 header file
-                          )   for use in non-"configure" environments
-  src/config.h.generic    ) a version of config.h for use in non-"configure"
-                          )   environments
-
-Philip Hazel
-Email local part: Philip.Hazel
-Email domain: gmail.com
-Last updated: 28 April 2021

+ 0 - 312
src/deps/regex/pcre2/doc/html/index.html

@@ -1,312 +0,0 @@
-<html>
-<!-- This is a manually maintained file that is the root of the HTML version of
-     the PCRE2 documentation. When the HTML documents are built from the man
-     page versions, the entire doc/html directory is emptied, this file is then
-     copied into doc/html/index.html, and the remaining files therein are
-     created by the 132html script.
--->
-<head>
-<title>PCRE2 specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>Perl-compatible Regular Expressions (revised API: PCRE2)</h1>
-<p>
-The HTML documentation for PCRE2 consists of a number of pages that are listed
-below in alphabetical order. If you are new to PCRE2, please read the first one
-first.
-</p>
-
-<table>
-<tr><td><a href="pcre2.html">pcre2</a></td>
-    <td>&nbsp;&nbsp;Introductory page</td></tr>
-
-<tr><td><a href="pcre2-config.html">pcre2-config</a></td>
-    <td>&nbsp;&nbsp;Information about the installation configuration</td></tr>
-
-<tr><td><a href="pcre2api.html">pcre2api</a></td>
-    <td>&nbsp;&nbsp;PCRE2's native API</td></tr>
-
-<tr><td><a href="pcre2build.html">pcre2build</a></td>
-    <td>&nbsp;&nbsp;Building PCRE2</td></tr>
-
-<tr><td><a href="pcre2callout.html">pcre2callout</a></td>
-    <td>&nbsp;&nbsp;The <i>callout</i> facility</td></tr>
-
-<tr><td><a href="pcre2compat.html">pcre2compat</a></td>
-    <td>&nbsp;&nbsp;Compability with Perl</td></tr>
-
-<tr><td><a href="pcre2convert.html">pcre2convert</a></td>
-    <td>&nbsp;&nbsp;Experimental foreign pattern conversion functions</td></tr>
-
-<tr><td><a href="pcre2demo.html">pcre2demo</a></td>
-    <td>&nbsp;&nbsp;A demonstration C program that uses the PCRE2 library</td></tr>
-
-<tr><td><a href="pcre2grep.html">pcre2grep</a></td>
-    <td>&nbsp;&nbsp;The <b>pcre2grep</b> command</td></tr>
-
-<tr><td><a href="pcre2jit.html">pcre2jit</a></td>
-    <td>&nbsp;&nbsp;Discussion of the just-in-time optimization support</td></tr>
-
-<tr><td><a href="pcre2limits.html">pcre2limits</a></td>
-    <td>&nbsp;&nbsp;Details of size and other limits</td></tr>
-
-<tr><td><a href="pcre2matching.html">pcre2matching</a></td>
-    <td>&nbsp;&nbsp;Discussion of the two matching algorithms</td></tr>
-
-<tr><td><a href="pcre2partial.html">pcre2partial</a></td>
-    <td>&nbsp;&nbsp;Using PCRE2 for partial matching</td></tr>
-
-<tr><td><a href="pcre2pattern.html">pcre2pattern</a></td>
-    <td>&nbsp;&nbsp;Specification of the regular expressions supported by PCRE2</td></tr>
-
-<tr><td><a href="pcre2perform.html">pcre2perform</a></td>
-    <td>&nbsp;&nbsp;Some comments on performance</td></tr>
-
-<tr><td><a href="pcre2posix.html">pcre2posix</a></td>
-    <td>&nbsp;&nbsp;The POSIX API to the PCRE2 8-bit library</td></tr>
-
-<tr><td><a href="pcre2sample.html">pcre2sample</a></td>
-    <td>&nbsp;&nbsp;Discussion of the pcre2demo program</td></tr>
-
-<tr><td><a href="pcre2serialize.html">pcre2serialize</a></td>
-    <td>&nbsp;&nbsp;Serializing functions for saving precompiled patterns</td></tr>
-
-<tr><td><a href="pcre2syntax.html">pcre2syntax</a></td>
-    <td>&nbsp;&nbsp;Syntax quick-reference summary</td></tr>
-
-<tr><td><a href="pcre2test.html">pcre2test</a></td>
-    <td>&nbsp;&nbsp;The <b>pcre2test</b> command for testing PCRE2</td></tr>
-
-<tr><td><a href="pcre2unicode.html">pcre2unicode</a></td>
-    <td>&nbsp;&nbsp;Discussion of Unicode and UTF-8/UTF-16/UTF-32 support</td></tr>
-</table>
-
-<p>
-There are also individual pages that summarize the interface for each function
-in the library.
-</p>
-
-<table>
-
-<tr><td><a href="pcre2_callout_enumerate.html">pcre2_callout_enumerate</a></td>
-    <td>&nbsp;&nbsp;Enumerate callouts in a compiled pattern</td></tr>
-
-<tr><td><a href="pcre2_code_copy.html">pcre2_code_copy</a></td>
-    <td>&nbsp;&nbsp;Copy a compiled pattern</td></tr>
-
-<tr><td><a href="pcre2_code_copy_with_tables.html">pcre2_code_copy_with_tables</a></td>
-    <td>&nbsp;&nbsp;Copy a compiled pattern and its character tables</td></tr>
-
-<tr><td><a href="pcre2_code_free.html">pcre2_code_free</a></td>
-    <td>&nbsp;&nbsp;Free a compiled pattern</td></tr>
-
-<tr><td><a href="pcre2_compile.html">pcre2_compile</a></td>
-    <td>&nbsp;&nbsp;Compile a regular expression pattern</td></tr>
-
-<tr><td><a href="pcre2_compile_context_copy.html">pcre2_compile_context_copy</a></td>
-    <td>&nbsp;&nbsp;Copy a compile context</td></tr>
-
-<tr><td><a href="pcre2_compile_context_create.html">pcre2_compile_context_create</a></td>
-    <td>&nbsp;&nbsp;Create a compile context</td></tr>
-
-<tr><td><a href="pcre2_compile_context_free.html">pcre2_compile_context_free</a></td>
-    <td>&nbsp;&nbsp;Free a compile context</td></tr>
-
-<tr><td><a href="pcre2_config.html">pcre2_config</a></td>
-    <td>&nbsp;&nbsp;Show build-time configuration options</td></tr>
-
-<tr><td><a href="pcre2_convert_context_copy.html">pcre2_convert_context_copy</a></td>
-    <td>&nbsp;&nbsp;Copy a convert context</td></tr>
-
-<tr><td><a href="pcre2_convert_context_create.html">pcre2_convert_context_create</a></td>
-    <td>&nbsp;&nbsp;Create a convert context</td></tr>
-
-<tr><td><a href="pcre2_convert_context_free.html">pcre2_convert_context_free</a></td>
-    <td>&nbsp;&nbsp;Free a convert context</td></tr>
-
-<tr><td><a href="pcre2_converted_pattern_free.html">pcre2_converted_pattern_free</a></td>
-    <td>&nbsp;&nbsp;Free converted foreign pattern</td></tr>
-
-<tr><td><a href="pcre2_dfa_match.html">pcre2_dfa_match</a></td>
-    <td>&nbsp;&nbsp;Match a compiled pattern to a subject string
-    (DFA algorithm; <i>not</i> Perl compatible)</td></tr>
-
-<tr><td><a href="pcre2_general_context_copy.html">pcre2_general_context_copy</a></td>
-    <td>&nbsp;&nbsp;Copy a general context</td></tr>
-
-<tr><td><a href="pcre2_general_context_create.html">pcre2_general_context_create</a></td>
-    <td>&nbsp;&nbsp;Create a general context</td></tr>
-
-<tr><td><a href="pcre2_general_context_free.html">pcre2_general_context_free</a></td>
-    <td>&nbsp;&nbsp;Free a general context</td></tr>
-
-<tr><td><a href="pcre2_get_error_message.html">pcre2_get_error_message</a></td>
-    <td>&nbsp;&nbsp;Get textual error message for error number</td></tr>
-
-<tr><td><a href="pcre2_get_mark.html">pcre2_get_mark</a></td>
-    <td>&nbsp;&nbsp;Get a (*MARK) name</td></tr>
-
-<tr><td><a href="pcre2_get_match_data_size.html">pcre2_get_match_data_size</a></td>
-    <td>&nbsp;&nbsp;Get the size of a match data block</td></tr>
-
-<tr><td><a href="pcre2_get_ovector_count.html">pcre2_get_ovector_count</a></td>
-    <td>&nbsp;&nbsp;Get the ovector count</td></tr>
-
-<tr><td><a href="pcre2_get_ovector_pointer.html">pcre2_get_ovector_pointer</a></td>
-    <td>&nbsp;&nbsp;Get a pointer to the ovector</td></tr>
-
-<tr><td><a href="pcre2_get_startchar.html">pcre2_get_startchar</a></td>
-    <td>&nbsp;&nbsp;Get the starting character offset</td></tr>
-
-<tr><td><a href="pcre2_jit_compile.html">pcre2_jit_compile</a></td>
-    <td>&nbsp;&nbsp;Process a compiled pattern with the JIT compiler</td></tr>
-
-<tr><td><a href="pcre2_jit_free_unused_memory.html">pcre2_jit_free_unused_memory</a></td>
-    <td>&nbsp;&nbsp;Free unused JIT memory</td></tr>
-
-<tr><td><a href="pcre2_jit_match.html">pcre2_jit_match</a></td>
-    <td>&nbsp;&nbsp;Fast path interface to JIT matching</td></tr>
-
-<tr><td><a href="pcre2_jit_stack_assign.html">pcre2_jit_stack_assign</a></td>
-    <td>&nbsp;&nbsp;Assign stack for JIT matching</td></tr>
-
-<tr><td><a href="pcre2_jit_stack_create.html">pcre2_jit_stack_create</a></td>
-    <td>&nbsp;&nbsp;Create a stack for JIT matching</td></tr>
-
-<tr><td><a href="pcre2_jit_stack_free.html">pcre2_jit_stack_free</a></td>
-    <td>&nbsp;&nbsp;Free a JIT matching stack</td></tr>
-
-<tr><td><a href="pcre2_maketables.html">pcre2_maketables</a></td>
-    <td>&nbsp;&nbsp;Build character tables in current locale</td></tr>
-
-<tr><td><a href="pcre2_maketables_free.html">pcre2_maketables_free</a></td>
-    <td>&nbsp;&nbsp;Free character tables</td></tr>
-
-<tr><td><a href="pcre2_match.html">pcre2_match</a></td>
-    <td>&nbsp;&nbsp;Match a compiled pattern to a subject string
-    (Perl compatible)</td></tr>
-
-<tr><td><a href="pcre2_match_context_copy.html">pcre2_match_context_copy</a></td>
-    <td>&nbsp;&nbsp;Copy a match context</td></tr>
-
-<tr><td><a href="pcre2_match_context_create.html">pcre2_match_context_create</a></td>
-    <td>&nbsp;&nbsp;Create a match context</td></tr>
-
-<tr><td><a href="pcre2_match_context_free.html">pcre2_match_context_free</a></td>
-    <td>&nbsp;&nbsp;Free a match context</td></tr>
-
-<tr><td><a href="pcre2_match_data_create.html">pcre2_match_data_create</a></td>
-    <td>&nbsp;&nbsp;Create a match data block</td></tr>
-
-<tr><td><a href="pcre2_match_data_create_from_pattern.html">pcre2_match_data_create_from_pattern</a></td>
-    <td>&nbsp;&nbsp;Create a match data block getting size from pattern</td></tr>
-
-<tr><td><a href="pcre2_match_data_free.html">pcre2_match_data_free</a></td>
-    <td>&nbsp;&nbsp;Free a match data block</td></tr>
-
-<tr><td><a href="pcre2_pattern_convert.html">pcre2_pattern_convert</a></td>
-    <td>&nbsp;&nbsp;Experimental foreign pattern converter</td></tr>
-
-<tr><td><a href="pcre2_pattern_info.html">pcre2_pattern_info</a></td>
-    <td>&nbsp;&nbsp;Extract information about a pattern</td></tr>
-
-<tr><td><a href="pcre2_serialize_decode.html">pcre2_serialize_decode</a></td>
-    <td>&nbsp;&nbsp;Decode serialized compiled patterns</td></tr>
-
-<tr><td><a href="pcre2_serialize_encode.html">pcre2_serialize_encode</a></td>
-    <td>&nbsp;&nbsp;Serialize compiled patterns for save/restore</td></tr>
-
-<tr><td><a href="pcre2_serialize_free.html">pcre2_serialize_free</a></td>
-    <td>&nbsp;&nbsp;Free serialized compiled patterns</td></tr>
-
-<tr><td><a href="pcre2_serialize_get_number_of_codes.html">pcre2_serialize_get_number_of_codes</a></td>
-    <td>&nbsp;&nbsp;Get number of serialized compiled patterns</td></tr>
-
-<tr><td><a href="pcre2_set_bsr.html">pcre2_set_bsr</a></td>
-    <td>&nbsp;&nbsp;Set \R convention</td></tr>
-
-<tr><td><a href="pcre2_set_callout.html">pcre2_set_callout</a></td>
-    <td>&nbsp;&nbsp;Set up a callout function</td></tr>
-
-<tr><td><a href="pcre2_set_character_tables.html">pcre2_set_character_tables</a></td>
-    <td>&nbsp;&nbsp;Set character tables</td></tr>
-
-<tr><td><a href="pcre2_set_compile_extra_options.html">pcre2_set_compile_extra_options</a></td>
-    <td>&nbsp;&nbsp;Set compile time extra options</td></tr>
-
-<tr><td><a href="pcre2_set_compile_recursion_guard.html">pcre2_set_compile_recursion_guard</a></td>
-    <td>&nbsp;&nbsp;Set up a compile recursion guard function</td></tr>
-
-<tr><td><a href="pcre2_set_depth_limit.html">pcre2_set_depth_limit</a></td>
-    <td>&nbsp;&nbsp;Set the match backtracking depth limit</td></tr>
-
-<tr><td><a href="pcre2_set_glob_escape.html">pcre2_set_glob_escape</a></td>
-    <td>&nbsp;&nbsp;Set glob escape character</td></tr>
-
-<tr><td><a href="pcre2_set_glob_separator.html">pcre2_set_glob_separator</a></td>
-    <td>&nbsp;&nbsp;Set glob separator character</td></tr>
-
-<tr><td><a href="pcre2_set_heap_limit.html">pcre2_set_heap_limit</a></td>
-    <td>&nbsp;&nbsp;Set the match backtracking heap limit</td></tr>
-
-<tr><td><a href="pcre2_set_match_limit.html">pcre2_set_match_limit</a></td>
-    <td>&nbsp;&nbsp;Set the match limit</td></tr>
-
-<tr><td><a href="pcre2_set_max_pattern_length.html">pcre2_set_max_pattern_length</a></td>
-    <td>&nbsp;&nbsp;Set the maximum length of pattern</td></tr>
-
-<tr><td><a href="pcre2_set_newline.html">pcre2_set_newline</a></td>
-    <td>&nbsp;&nbsp;Set the newline convention</td></tr>
-
-<tr><td><a href="pcre2_set_offset_limit.html">pcre2_set_offset_limit</a></td>
-    <td>&nbsp;&nbsp;Set the offset limit</td></tr>
-
-<tr><td><a href="pcre2_set_parens_nest_limit.html">pcre2_set_parens_nest_limit</a></td>
-    <td>&nbsp;&nbsp;Set the parentheses nesting limit</td></tr>
-
-<tr><td><a href="pcre2_set_recursion_limit.html">pcre2_set_recursion_limit</a></td>
-    <td>&nbsp;&nbsp;Obsolete: use pcre2_set_depth_limit</td></tr>
-
-<tr><td><a href="pcre2_set_recursion_memory_management.html">pcre2_set_recursion_memory_management</a></td>
-    <td>&nbsp;&nbsp;Obsolete function that (from 10.30 onwards) does nothing</td></tr>
-
-<tr><td><a href="pcre2_substitute.html">pcre2_substitute</a></td>
-    <td>&nbsp;&nbsp;Match a compiled pattern to a subject string and do
-    substitutions</td></tr>
-
-<tr><td><a href="pcre2_substring_copy_byname.html">pcre2_substring_copy_byname</a></td>
-    <td>&nbsp;&nbsp;Extract named substring into given buffer</td></tr>
-
-<tr><td><a href="pcre2_substring_copy_bynumber.html">pcre2_substring_copy_bynumber</a></td>
-    <td>&nbsp;&nbsp;Extract numbered substring into given buffer</td></tr>
-
-<tr><td><a href="pcre2_substring_free.html">pcre2_substring_free</a></td>
-    <td>&nbsp;&nbsp;Free extracted substring</td></tr>
-
-<tr><td><a href="pcre2_substring_get_byname.html">pcre2_substring_get_byname</a></td>
-    <td>&nbsp;&nbsp;Extract named substring into new memory</td></tr>
-
-<tr><td><a href="pcre2_substring_get_bynumber.html">pcre2_substring_get_bynumber</a></td>
-    <td>&nbsp;&nbsp;Extract numbered substring into new memory</td></tr>
-
-<tr><td><a href="pcre2_substring_length_byname.html">pcre2_substring_length_byname</a></td>
-    <td>&nbsp;&nbsp;Find length of named substring</td></tr>
-
-<tr><td><a href="pcre2_substring_length_bynumber.html">pcre2_substring_length_bynumber</a></td>
-    <td>&nbsp;&nbsp;Find length of numbered substring</td></tr>
-
-<tr><td><a href="pcre2_substring_list_free.html">pcre2_substring_list_free</a></td>
-    <td>&nbsp;&nbsp;Free list of extracted substrings</td></tr>
-
-<tr><td><a href="pcre2_substring_list_get.html">pcre2_substring_list_get</a></td>
-    <td>&nbsp;&nbsp;Extract all substrings into new memory</td></tr>
-
-<tr><td><a href="pcre2_substring_nametable_scan.html">pcre2_substring_nametable_scan</a></td>
-    <td>&nbsp;&nbsp;Find table entries for given string name</td></tr>
-
-<tr><td><a href="pcre2_substring_number_from_name.html">pcre2_substring_number_from_name</a></td>
-    <td>&nbsp;&nbsp;Convert captured string name to number</td></tr>
-</table>
-
-</html>
-

+ 0 - 102
src/deps/regex/pcre2/doc/html/pcre2-config.html

@@ -1,102 +0,0 @@
-<html>
-<head>
-<title>pcre2-config specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2-config man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<ul>
-<li><a name="TOC1" href="#SEC1">SYNOPSIS</a>
-<li><a name="TOC2" href="#SEC2">DESCRIPTION</a>
-<li><a name="TOC3" href="#SEC3">OPTIONS</a>
-<li><a name="TOC4" href="#SEC4">SEE ALSO</a>
-<li><a name="TOC5" href="#SEC5">AUTHOR</a>
-<li><a name="TOC6" href="#SEC6">REVISION</a>
-</ul>
-<br><a name="SEC1" href="#TOC1">SYNOPSIS</a><br>
-<P>
-<b>pcre2-config  [--prefix] [--exec-prefix] [--version]</b>
-<b>             [--libs8] [--libs16] [--libs32] [--libs-posix]</b>
-<b>             [--cflags] [--cflags-posix]</b>
-</P>
-<br><a name="SEC2" href="#TOC1">DESCRIPTION</a><br>
-<P>
-<b>pcre2-config</b> returns the configuration of the installed PCRE2 libraries
-and the options required to compile a program to use them. Some of the options
-apply only to the 8-bit, or 16-bit, or 32-bit libraries, respectively, and are
-not available for libraries that have not been built. If an unavailable option
-is encountered, the "usage" information is output.
-</P>
-<br><a name="SEC3" href="#TOC1">OPTIONS</a><br>
-<P>
-<b>--prefix</b>
-Writes the directory prefix used in the PCRE2 installation for architecture
-independent files (<i>/usr</i> on many systems, <i>/usr/local</i> on some
-systems) to the standard output.
-</P>
-<P>
-<b>--exec-prefix</b>
-Writes the directory prefix used in the PCRE2 installation for architecture
-dependent files (normally the same as <b>--prefix</b>) to the standard output.
-</P>
-<P>
-<b>--version</b>
-Writes the version number of the installed PCRE2 libraries to the standard
-output.
-</P>
-<P>
-<b>--libs8</b>
-Writes to the standard output the command line options required to link
-with the 8-bit PCRE2 library (<b>-lpcre2-8</b> on many systems).
-</P>
-<P>
-<b>--libs16</b>
-Writes to the standard output the command line options required to link
-with the 16-bit PCRE2 library (<b>-lpcre2-16</b> on many systems).
-</P>
-<P>
-<b>--libs32</b>
-Writes to the standard output the command line options required to link
-with the 32-bit PCRE2 library (<b>-lpcre2-32</b> on many systems).
-</P>
-<P>
-<b>--libs-posix</b>
-Writes to the standard output the command line options required to link with
-PCRE2's POSIX API wrapper library (<b>-lpcre2-posix</b> <b>-lpcre2-8</b> on many
-systems).
-</P>
-<P>
-<b>--cflags</b>
-Writes to the standard output the command line options required to compile
-files that use PCRE2 (this may include some <b>-I</b> options, but is blank on
-many systems).
-</P>
-<P>
-<b>--cflags-posix</b>
-Writes to the standard output the command line options required to compile
-files that use PCRE2's POSIX API wrapper library (this may include some
-<b>-I</b> options, but is blank on many systems).
-</P>
-<br><a name="SEC4" href="#TOC1">SEE ALSO</a><br>
-<P>
-<b>pcre2(3)</b>
-</P>
-<br><a name="SEC5" href="#TOC1">AUTHOR</a><br>
-<P>
-This manual page was originally written by Mark Baker for the Debian GNU/Linux
-system. It has been subsequently revised as a generic PCRE2 man page.
-</P>
-<br><a name="SEC6" href="#TOC1">REVISION</a><br>
-<P>
-Last updated: 28 September 2014
-<br>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 213
src/deps/regex/pcre2/doc/html/pcre2.html

@@ -1,213 +0,0 @@
-<html>
-<head>
-<title>pcre2 specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2 man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<ul>
-<li><a name="TOC1" href="#SEC1">INTRODUCTION</a>
-<li><a name="TOC2" href="#SEC2">SECURITY CONSIDERATIONS</a>
-<li><a name="TOC3" href="#SEC3">USER DOCUMENTATION</a>
-<li><a name="TOC4" href="#SEC4">AUTHOR</a>
-<li><a name="TOC5" href="#SEC5">REVISION</a>
-</ul>
-<br><a name="SEC1" href="#TOC1">INTRODUCTION</a><br>
-<P>
-PCRE2 is the name used for a revised API for the PCRE library, which is a set
-of functions, written in C, that implement regular expression pattern matching
-using the same syntax and semantics as Perl, with just a few differences. After
-nearly two decades, the limitations of the original API were making development
-increasingly difficult. The new API is more extensible, and it was simplified
-by abolishing the separate "study" optimizing function; in PCRE2, patterns are
-automatically optimized where possible. Since forking from PCRE1, the code has
-been extensively refactored and new features introduced.
-</P>
-<P>
-As well as Perl-style regular expression patterns, some features that appeared
-in Python and the original PCRE before they appeared in Perl are available
-using the Python syntax. There is also some support for one or two .NET and
-Oniguruma syntax items, and there are options for requesting some minor changes
-that give better ECMAScript (aka JavaScript) compatibility.
-</P>
-<P>
-The source code for PCRE2 can be compiled to support strings of 8-bit, 16-bit,
-or 32-bit code units, which means that up to three separate libraries may be
-installed, one for each code unit size. The size of code unit is not related to
-the bit size of the underlying hardware. In a 64-bit environment that also
-supports 32-bit applications, versions of PCRE2 that are compiled in both
-64-bit and 32-bit modes may be needed.
-</P>
-<P>
-The original work to extend PCRE to 16-bit and 32-bit code units was done by
-Zoltan Herczeg and Christian Persch, respectively. In all three cases, strings
-can be interpreted either as one character per code unit, or as UTF-encoded
-Unicode, with support for Unicode general category properties. Unicode support
-is optional at build time (but is the default). However, processing strings as
-UTF code units must be enabled explicitly at run time. The version of Unicode
-in use can be discovered by running
-<pre>
-  pcre2test -C
-</PRE>
-</P>
-<P>
-The three libraries contain identical sets of functions, with names ending in
-_8, _16, or _32, respectively (for example, <b>pcre2_compile_8()</b>). However,
-by defining PCRE2_CODE_UNIT_WIDTH to be 8, 16, or 32, a program that uses just
-one code unit width can be written using generic names such as
-<b>pcre2_compile()</b>, and the documentation is written assuming that this is
-the case.
-</P>
-<P>
-In addition to the Perl-compatible matching function, PCRE2 contains an
-alternative function that matches the same compiled patterns in a different
-way. In certain circumstances, the alternative function has some advantages.
-For a discussion of the two matching algorithms, see the
-<a href="pcre2matching.html"><b>pcre2matching</b></a>
-page.
-</P>
-<P>
-Details of exactly which Perl regular expression features are and are not
-supported by PCRE2 are given in separate documents. See the
-<a href="pcre2pattern.html"><b>pcre2pattern</b></a>
-and
-<a href="pcre2compat.html"><b>pcre2compat</b></a>
-pages. There is a syntax summary in the
-<a href="pcre2syntax.html"><b>pcre2syntax</b></a>
-page.
-</P>
-<P>
-Some features of PCRE2 can be included, excluded, or changed when the library
-is built. The
-<a href="pcre2_config.html"><b>pcre2_config()</b></a>
-function makes it possible for a client to discover which features are
-available. The features themselves are described in the
-<a href="pcre2build.html"><b>pcre2build</b></a>
-page. Documentation about building PCRE2 for various operating systems can be
-found in the
-<a href="README.txt"><b>README</b></a>
-and
-<a href="NON-AUTOTOOLS-BUILD.txt"><b>NON-AUTOTOOLS_BUILD</b></a>
-files in the source distribution.
-</P>
-<P>
-The libraries contains a number of undocumented internal functions and data
-tables that are used by more than one of the exported external functions, but
-which are not intended for use by external callers. Their names all begin with
-"_pcre2", which hopefully will not provoke any name clashes. In some
-environments, it is possible to control which external symbols are exported
-when a shared library is built, and in these cases the undocumented symbols are
-not exported.
-</P>
-<br><a name="SEC2" href="#TOC1">SECURITY CONSIDERATIONS</a><br>
-<P>
-If you are using PCRE2 in a non-UTF application that permits users to supply
-arbitrary patterns for compilation, you should be aware of a feature that
-allows users to turn on UTF support from within a pattern. For example, an
-8-bit pattern that begins with "(*UTF)" turns on UTF-8 mode, which interprets
-patterns and subjects as strings of UTF-8 code units instead of individual
-8-bit characters. This causes both the pattern and any data against which it is
-matched to be checked for UTF-8 validity. If the data string is very long, such
-a check might use sufficiently many resources as to cause your application to
-lose performance.
-</P>
-<P>
-One way of guarding against this possibility is to use the
-<b>pcre2_pattern_info()</b> function to check the compiled pattern's options for
-PCRE2_UTF. Alternatively, you can set the PCRE2_NEVER_UTF option when calling
-<b>pcre2_compile()</b>. This causes a compile time error if the pattern contains
-a UTF-setting sequence.
-</P>
-<P>
-The use of Unicode properties for character types such as \d can also be
-enabled from within the pattern, by specifying "(*UCP)". This feature can be
-disallowed by setting the PCRE2_NEVER_UCP option.
-</P>
-<P>
-If your application is one that supports UTF, be aware that validity checking
-can take time. If the same data string is to be matched many times, you can use
-the PCRE2_NO_UTF_CHECK option for the second and subsequent matches to avoid
-running redundant checks.
-</P>
-<P>
-The use of the \C escape sequence in a UTF-8 or UTF-16 pattern can lead to
-problems, because it may leave the current matching point in the middle of a
-multi-code-unit character. The PCRE2_NEVER_BACKSLASH_C option can be used by an
-application to lock out the use of \C, causing a compile-time error if it is
-encountered. It is also possible to build PCRE2 with the use of \C permanently
-disabled.
-</P>
-<P>
-Another way that performance can be hit is by running a pattern that has a very
-large search tree against a string that will never match. Nested unlimited
-repeats in a pattern are a common example. PCRE2 provides some protection
-against this: see the <b>pcre2_set_match_limit()</b> function in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page. There is a similar function called <b>pcre2_set_depth_limit()</b> that can
-be used to restrict the amount of memory that is used.
-</P>
-<br><a name="SEC3" href="#TOC1">USER DOCUMENTATION</a><br>
-<P>
-The user documentation for PCRE2 comprises a number of different sections. In
-the "man" format, each of these is a separate "man page". In the HTML format,
-each is a separate page, linked from the index page. In the plain text format,
-the descriptions of the <b>pcre2grep</b> and <b>pcre2test</b> programs are in
-files called <b>pcre2grep.txt</b> and <b>pcre2test.txt</b>, respectively. The
-remaining sections, except for the <b>pcre2demo</b> section (which is a program
-listing), and the short pages for individual functions, are concatenated in
-<b>pcre2.txt</b>, for ease of searching. The sections are as follows:
-<pre>
-  pcre2              this document
-  pcre2-config       show PCRE2 installation configuration information
-  pcre2api           details of PCRE2's native C API
-  pcre2build         building PCRE2
-  pcre2callout       details of the pattern callout feature
-  pcre2compat        discussion of Perl compatibility
-  pcre2convert       details of pattern conversion functions
-  pcre2demo          a demonstration C program that uses PCRE2
-  pcre2grep          description of the <b>pcre2grep</b> command (8-bit only)
-  pcre2jit           discussion of just-in-time optimization support
-  pcre2limits        details of size and other limits
-  pcre2matching      discussion of the two matching algorithms
-  pcre2partial       details of the partial matching facility
-  pcre2pattern       syntax and semantics of supported regular expression patterns
-  pcre2perform       discussion of performance issues
-  pcre2posix         the POSIX-compatible C API for the 8-bit library
-  pcre2sample        discussion of the pcre2demo program
-  pcre2serialize     details of pattern serialization
-  pcre2syntax        quick syntax reference
-  pcre2test          description of the <b>pcre2test</b> command
-  pcre2unicode       discussion of Unicode and UTF support
-</pre>
-In the "man" and HTML formats, there is also a short page for each C library
-function, listing its arguments and results.
-</P>
-<br><a name="SEC4" href="#TOC1">AUTHOR</a><br>
-<P>
-Philip Hazel
-<br>
-University Computing Service
-<br>
-Cambridge, England.
-<br>
-</P>
-<P>
-Putting an actual email address here is a spam magnet. If you want to email me,
-use my two initials, followed by the two digits 10, at the domain cam.ac.uk.
-</P>
-<br><a name="SEC5" href="#TOC1">REVISION</a><br>
-<P>
-Last updated: 28 April 2021
-<br>
-Copyright &copy; 1997-2021 University of Cambridge.
-<br>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 63
src/deps/regex/pcre2/doc/html/pcre2_callout_enumerate.html

@@ -1,63 +0,0 @@
-<html>
-<head>
-<title>pcre2_callout_enumerate specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_callout_enumerate man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_callout_enumerate(const pcre2_code *<i>code</i>,</b>
-<b>  int (*<i>callback</i>)(pcre2_callout_enumerate_block *, void *),</b>
-<b>  void *<i>callout_data</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function scans a compiled regular expression and calls the <i>callback()</i>
-function for each callout within the pattern. The yield of the function is zero
-for success and non-zero otherwise. The arguments are:
-<pre>
-  <i>code</i>           Points to the compiled pattern
-  <i>callback</i>       The callback function
-  <i>callout_data</i>   User data that is passed to the callback
-</pre>
-The <i>callback()</i> function is passed a pointer to a data block containing
-the following fields (not necessarily in this order):
-<pre>
-  uint32_t   <i>version</i>                Block version number
-  uint32_t   <i>callout_number</i>         Number for numbered callouts
-  PCRE2_SIZE <i>pattern_position</i>       Offset to next item in pattern
-  PCRE2_SIZE <i>next_item_length</i>       Length of next item in pattern
-  PCRE2_SIZE <i>callout_string_offset</i>  Offset to string within pattern
-  PCRE2_SIZE <i>callout_string_length</i>  Length of callout string
-  PCRE2_SPTR <i>callout_string</i>         Points to callout string or is NULL
-</pre>
-The second argument passed to the <b>callback()</b> function is the callout data
-that was passed to <b>pcre2_callout_enumerate()</b>. The <b>callback()</b>
-function must return zero for success. Any other value causes the pattern scan
-to stop, with the value being passed back as the result of
-<b>pcre2_callout_enumerate()</b>.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 43
src/deps/regex/pcre2/doc/html/pcre2_code_copy.html

@@ -1,43 +0,0 @@
-<html>
-<head>
-<title>pcre2_code_copy specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_code_copy man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_code *pcre2_code_copy(const pcre2_code *<i>code</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function makes a copy of the memory used for a compiled pattern, excluding
-any memory used by the JIT compiler. Without a subsequent call to
-<b>pcre2_jit_compile()</b>, the copy can be used only for non-JIT matching. The
-pointer to the character tables is copied, not the tables themselves (see
-<b>pcre2_code_copy_with_tables()</b>). The yield of the function is NULL if
-<i>code</i> is NULL or if sufficient memory cannot be obtained.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 44
src/deps/regex/pcre2/doc/html/pcre2_code_copy_with_tables.html

@@ -1,44 +0,0 @@
-<html>
-<head>
-<title>pcre2_code_copy_with_tables specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_code_copy_with_tables man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_code *pcre2_code_copy_with_tables(const pcre2_code *<i>code</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function makes a copy of the memory used for a compiled pattern, excluding
-any memory used by the JIT compiler. Without a subsequent call to
-<b>pcre2_jit_compile()</b>, the copy can be used only for non-JIT matching.
-Unlike <b>pcre2_code_copy()</b>, a separate copy of the character tables is also
-made, with the new code pointing to it. This memory will be automatically freed
-when <b>pcre2_code_free()</b> is called. The yield of the function is NULL if
-<i>code</i> is NULL or if sufficient memory cannot be obtained.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 42
src/deps/regex/pcre2/doc/html/pcre2_code_free.html

@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>pcre2_code_free specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_code_free man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>void pcre2_code_free(pcre2_code *<i>code</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-If <i>code</i> is NULL, this function does nothing. Otherwise, <i>code</i> must
-point to a compiled pattern. This function frees its memory, including any
-memory used by the JIT compiler. If the compiled pattern was created by a call
-to <b>pcre2_code_copy_with_tables()</b>, the memory for the character tables is
-also freed.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 107
src/deps/regex/pcre2/doc/html/pcre2_compile.html

@@ -1,107 +0,0 @@
-<html>
-<head>
-<title>pcre2_compile specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_compile man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_code *pcre2_compile(PCRE2_SPTR <i>pattern</i>, PCRE2_SIZE <i>length</i>,</b>
-<b>  uint32_t <i>options</i>, int *<i>errorcode</i>, PCRE2_SIZE *<i>erroroffset,</i></b>
-<b>  pcre2_compile_context *<i>ccontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function compiles a regular expression pattern into an internal form. Its
-arguments are:
-<pre>
-  <i>pattern</i>       A string containing expression to be compiled
-  <i>length</i>        The length of the string or PCRE2_ZERO_TERMINATED
-  <i>options</i>       Option bits
-  <i>errorcode</i>     Where to put an error code
-  <i>erroffset</i>     Where to put an error offset
-  <i>ccontext</i>      Pointer to a compile context or NULL
-</pre>
-The length of the pattern and any error offset that is returned are in code
-units, not characters. A compile context is needed only if you want to provide
-custom memory allocation functions, or to provide an external function for
-system stack size checking, or to change one or more of these parameters:
-<pre>
-  What \R matches (Unicode newlines, or CR, LF, CRLF only);
-  PCRE2's character tables;
-  The newline character sequence;
-  The compile time nested parentheses limit;
-  The maximum pattern length (in code units) that is allowed.
-  The additional options bits (see pcre2_set_compile_extra_options())
-</pre>
-The option bits are:
-<pre>
-  PCRE2_ANCHORED           Force pattern anchoring
-  PCRE2_ALLOW_EMPTY_CLASS  Allow empty classes
-  PCRE2_ALT_BSUX           Alternative handling of \u, \U, and \x
-  PCRE2_ALT_CIRCUMFLEX     Alternative handling of ^ in multiline mode
-  PCRE2_ALT_VERBNAMES      Process backslashes in verb names
-  PCRE2_AUTO_CALLOUT       Compile automatic callouts
-  PCRE2_CASELESS           Do caseless matching
-  PCRE2_DOLLAR_ENDONLY     $ not to match newline at end
-  PCRE2_DOTALL             . matches anything including NL
-  PCRE2_DUPNAMES           Allow duplicate names for subpatterns
-  PCRE2_ENDANCHORED        Pattern can match only at end of subject
-  PCRE2_EXTENDED           Ignore white space and # comments
-  PCRE2_FIRSTLINE          Force matching to be before newline
-  PCRE2_LITERAL            Pattern characters are all literal
-  PCRE2_MATCH_INVALID_UTF  Enable support for matching invalid UTF
-  PCRE2_MATCH_UNSET_BACKREF  Match unset backreferences
-  PCRE2_MULTILINE          ^ and $ match newlines within data
-  PCRE2_NEVER_BACKSLASH_C  Lock out the use of \C in patterns
-  PCRE2_NEVER_UCP          Lock out PCRE2_UCP, e.g. via (*UCP)
-  PCRE2_NEVER_UTF          Lock out PCRE2_UTF, e.g. via (*UTF)
-  PCRE2_NO_AUTO_CAPTURE    Disable numbered capturing paren-
-                            theses (named ones available)
-  PCRE2_NO_AUTO_POSSESS    Disable auto-possessification
-  PCRE2_NO_DOTSTAR_ANCHOR  Disable automatic anchoring for .*
-  PCRE2_NO_START_OPTIMIZE  Disable match-time start optimizations
-  PCRE2_NO_UTF_CHECK       Do not check the pattern for UTF validity
-                             (only relevant if PCRE2_UTF is set)
-  PCRE2_UCP                Use Unicode properties for \d, \w, etc.
-  PCRE2_UNGREEDY           Invert greediness of quantifiers
-  PCRE2_USE_OFFSET_LIMIT   Enable offset limit for unanchored matching
-  PCRE2_UTF                Treat pattern and subjects as UTF strings
-</pre>
-PCRE2 must be built with Unicode support (the default) in order to use
-PCRE2_UTF, PCRE2_UCP and related options.
-</P>
-<P>
-Additional options may be set in the compile context via the
-<a href="pcre2_set_compile_extra_options.html"><b>pcre2_set_compile_extra_options</b></a>
-function.
-</P>
-<P>
-The yield of this function is a pointer to a private data structure that
-contains the compiled pattern, or NULL if an error was detected.
-</P>
-<P>
-There is a complete description of the PCRE2 native API, with more detail on
-each option, in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page, and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 41
src/deps/regex/pcre2/doc/html/pcre2_compile_context_copy.html

@@ -1,41 +0,0 @@
-<html>
-<head>
-<title>pcre2_compile_context_copy specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_compile_context_copy man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_compile_context *pcre2_compile_context_copy(</b>
-<b>  pcre2_compile_context *<i>ccontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function makes a new copy of a compile context, using the memory
-allocation function that was used for the original context. The result is NULL
-if the memory cannot be obtained.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 42
src/deps/regex/pcre2/doc/html/pcre2_compile_context_create.html

@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>pcre2_compile_context_create specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_compile_context_create man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_compile_context *pcre2_compile_context_create(</b>
-<b>  pcre2_general_context *<i>gcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function creates and initializes a new compile context. If its argument is
-NULL, <b>malloc()</b> is used to get the necessary memory; otherwise the memory
-allocation function within the general context is used. The result is NULL if
-the memory could not be obtained.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 41
src/deps/regex/pcre2/doc/html/pcre2_compile_context_free.html

@@ -1,41 +0,0 @@
-<html>
-<head>
-<title>pcre2_compile_context_free specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_compile_context_free man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>void pcre2_compile_context_free(pcre2_compile_context *<i>ccontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function frees the memory occupied by a compile context, using the memory
-freeing function from the general context with which it was created, or
-<b>free()</b> if that was not set. If the argument is NULL, the function returns
-immediately without doing anything.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 84
src/deps/regex/pcre2/doc/html/pcre2_config.html

@@ -1,84 +0,0 @@
-<html>
-<head>
-<title>pcre2_config specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_config man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_config(uint32_t <i>what</i>, void *<i>where</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function makes it possible for a client program to find out which optional
-features are available in the version of the PCRE2 library it is using. The
-arguments are as follows:
-<pre>
-  <i>what</i>     A code specifying what information is required
-  <i>where</i>    Points to where to put the information
-</pre>
-If <i>where</i> is NULL, the function returns the amount of memory needed for
-the requested information. When the information is a string, the value is in
-code units; for other types of data it is in bytes.
-</P>
-<P>
-If <b>where</b> is not NULL, for PCRE2_CONFIG_JITTARGET,
-PCRE2_CONFIG_UNICODE_VERSION, and PCRE2_CONFIG_VERSION it must point to a
-buffer that is large enough to hold the string. For all other codes it must
-point to a uint32_t integer variable. The available codes are:
-<pre>
-  PCRE2_CONFIG_BSR             Indicates what \R matches by default:
-                                 PCRE2_BSR_UNICODE
-                                 PCRE2_BSR_ANYCRLF
-  PCRE2_CONFIG_COMPILED_WIDTHS Which of 8/16/32 support was compiled
-  PCRE2_CONFIG_DEPTHLIMIT      Default backtracking depth limit
-  PCRE2_CONFIG_HEAPLIMIT       Default heap memory limit
-  PCRE2_CONFIG_JIT             Availability of just-in-time compiler support (1=yes 0=no)
-  PCRE2_CONFIG_JITTARGET       Information (a string) about the target architecture for the JIT compiler
-  PCRE2_CONFIG_LINKSIZE        Configured internal link size (2, 3, 4)
-  PCRE2_CONFIG_MATCHLIMIT      Default internal resource limit
-  PCRE2_CONFIG_NEVER_BACKSLASH_C  Whether or not \C is disabled
-  PCRE2_CONFIG_NEWLINE         Code for the default newline sequence:
-                                 PCRE2_NEWLINE_CR
-                                 PCRE2_NEWLINE_LF
-                                 PCRE2_NEWLINE_CRLF
-                                 PCRE2_NEWLINE_ANY
-                                 PCRE2_NEWLINE_ANYCRLF
-                                 PCRE2_NEWLINE_NUL
-  PCRE2_CONFIG_PARENSLIMIT     Default parentheses nesting limit
-  PCRE2_CONFIG_RECURSIONLIMIT  Obsolete: use PCRE2_CONFIG_DEPTHLIMIT
-  PCRE2_CONFIG_STACKRECURSE    Obsolete: always returns 0
-  PCRE2_CONFIG_UNICODE         Availability of Unicode support (1=yes 0=no)
-  PCRE2_CONFIG_UNICODE_VERSION The Unicode version (a string)
-  PCRE2_CONFIG_VERSION         The PCRE2 version (a string)
-</pre>
-The function yields a non-negative value on success or the negative value
-PCRE2_ERROR_BADOPTION otherwise. This is also the result for the
-PCRE2_CONFIG_JITTARGET code if JIT support is not available. When a string is
-requested, the function returns the number of code units used, including the
-terminating zero.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 40
src/deps/regex/pcre2/doc/html/pcre2_convert_context_copy.html

@@ -1,40 +0,0 @@
-<html>
-<head>
-<title>pcre2_convert_context_copy specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_convert_context_copy man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_convert_context *pcre2_convert_context_copy(</b>
-<b>  pcre2_convert_context *<i>cvcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function is part of an experimental set of pattern conversion functions.
-It makes a new copy of a convert context, using the memory allocation function
-that was used for the original context. The result is NULL if the memory cannot
-be obtained.
-</P>
-<P>
-The pattern conversion functions are described in the
-<a href="pcre2convert.html"><b>pcre2convert</b></a>
-documentation.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 41
src/deps/regex/pcre2/doc/html/pcre2_convert_context_create.html

@@ -1,41 +0,0 @@
-<html>
-<head>
-<title>pcre2_convert_context_create specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_convert_context_create man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_convert_context *pcre2_convert_context_create(</b>
-<b>  pcre2_general_context *<i>gcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function is part of an experimental set of pattern conversion functions.
-It creates and initializes a new convert context. If its argument is
-NULL, <b>malloc()</b> is used to get the necessary memory; otherwise the memory
-allocation function within the general context is used. The result is NULL if
-the memory could not be obtained.
-</P>
-<P>
-The pattern conversion functions are described in the
-<a href="pcre2convert.html"><b>pcre2convert</b></a>
-documentation.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 40
src/deps/regex/pcre2/doc/html/pcre2_convert_context_free.html

@@ -1,40 +0,0 @@
-<html>
-<head>
-<title>pcre2_convert_context_free specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_convert_context_free man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>void pcre2_convert_context_free(pcre2_convert_context *<i>cvcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function is part of an experimental set of pattern conversion functions.
-It frees the memory occupied by a convert context, using the memory
-freeing function from the general context with which it was created, or
-<b>free()</b> if that was not set. If the argument is NULL, the function returns
-immediately without doing anything.
-</P>
-<P>
-The pattern conversion functions are described in the
-<a href="pcre2convert.html"><b>pcre2convert</b></a>
-documentation.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 40
src/deps/regex/pcre2/doc/html/pcre2_converted_pattern_free.html

@@ -1,40 +0,0 @@
-<html>
-<head>
-<title>pcre2_converted_pattern_free specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_converted_pattern_free man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>void pcre2_converted_pattern_free(PCRE2_UCHAR *<i>converted_pattern</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function is part of an experimental set of pattern conversion functions.
-It frees the memory occupied by a converted pattern that was obtained by
-calling <b>pcre2_pattern_convert()</b> with arguments that caused it to place
-the converted pattern into newly obtained heap memory. If the argument is NULL,
-the function returns immediately without doing anything.
-</P>
-<P>
-The pattern conversion functions are described in the
-<a href="pcre2convert.html"><b>pcre2convert</b></a>
-documentation.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 80
src/deps/regex/pcre2/doc/html/pcre2_dfa_match.html

@@ -1,80 +0,0 @@
-<html>
-<head>
-<title>pcre2_dfa_match specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_dfa_match man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_dfa_match(const pcre2_code *<i>code</i>, PCRE2_SPTR <i>subject</i>,</b>
-<b>  PCRE2_SIZE <i>length</i>, PCRE2_SIZE <i>startoffset</i>,</b>
-<b>  uint32_t <i>options</i>, pcre2_match_data *<i>match_data</i>,</b>
-<b>  pcre2_match_context *<i>mcontext</i>,</b>
-<b>  int *<i>workspace</i>, PCRE2_SIZE <i>wscount</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function matches a compiled regular expression against a given subject
-string, using an alternative matching algorithm that scans the subject string
-just once (except when processing lookaround assertions). This function is
-<i>not</i> Perl-compatible (the Perl-compatible matching function is
-<b>pcre2_match()</b>). The arguments for this function are:
-<pre>
-  <i>code</i>         Points to the compiled pattern
-  <i>subject</i>      Points to the subject string
-  <i>length</i>       Length of the subject string
-  <i>startoffset</i>  Offset in the subject at which to start matching
-  <i>options</i>      Option bits
-  <i>match_data</i>   Points to a match data block, for results
-  <i>mcontext</i>     Points to a match context, or is NULL
-  <i>workspace</i>    Points to a vector of ints used as working space
-  <i>wscount</i>      Number of elements in the vector
-</pre>
-For <b>pcre2_dfa_match()</b>, a match context is needed only if you want to set
-up a callout function or specify the heap limit or the match or the recursion
-depth limits. The <i>length</i> and <i>startoffset</i> values are code units, not
-characters. The options are:
-<pre>
-  PCRE2_ANCHORED          Match only at the first position
-  PCRE2_COPY_MATCHED_SUBJECT
-                          On success, make a private subject copy
-  PCRE2_ENDANCHORED       Pattern can match only at end of subject
-  PCRE2_NOTBOL            Subject is not the beginning of a line
-  PCRE2_NOTEOL            Subject is not the end of a line
-  PCRE2_NOTEMPTY          An empty string is not a valid match
-  PCRE2_NOTEMPTY_ATSTART  An empty string at the start of the subject is not a valid match
-  PCRE2_NO_UTF_CHECK      Do not check the subject for UTF validity (only relevant if PCRE2_UTF
-                           was set at compile time)
-  PCRE2_PARTIAL_HARD      Return PCRE2_ERROR_PARTIAL for a partial match even if there is a full match
-  PCRE2_PARTIAL_SOFT      Return PCRE2_ERROR_PARTIAL for a partial match if no full matches are found
-  PCRE2_DFA_RESTART       Restart after a partial match
-  PCRE2_DFA_SHORTEST      Return only the shortest match
-</pre>
-There are restrictions on what may appear in a pattern when using this matching
-function. Details are given in the
-<a href="pcre2matching.html"><b>pcre2matching</b></a>
-documentation. For details of partial matching, see the
-<a href="pcre2partial.html"><b>pcre2partial</b></a>
-page. There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 42
src/deps/regex/pcre2/doc/html/pcre2_general_context_copy.html

@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>pcre2_general_context_copy specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_general_context_copy man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_general_context *pcre2_general_context_copy(</b>
-<b>  pcre2_general_context *<i>gcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function makes a new copy of a general context, using the memory
-allocation functions in the context, if set, to get the necessary memory.
-Otherwise <b>malloc()</b> is used. The result is NULL if the memory cannot be
-obtained.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 44
src/deps/regex/pcre2/doc/html/pcre2_general_context_create.html

@@ -1,44 +0,0 @@
-<html>
-<head>
-<title>pcre2_general_context_create specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_general_context_create man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_general_context *pcre2_general_context_create(</b>
-<b>  void *(*<i>private_malloc</i>)(PCRE2_SIZE, void *),</b>
-<b>  void (*<i>private_free</i>)(void *, void *), void *<i>memory_data</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function creates and initializes a general context. The arguments define
-custom memory management functions and a data value that is passed to them when
-they are called. The <b>private_malloc()</b> function is used to get memory for
-the context. If either of the first two arguments is NULL, the system memory
-management function is used. The result is NULL if no memory could be obtained.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 40
src/deps/regex/pcre2/doc/html/pcre2_general_context_free.html

@@ -1,40 +0,0 @@
-<html>
-<head>
-<title>pcre2_general_context_free specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_general_context_free man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>void pcre2_general_context_free(pcre2_general_context *<i>gcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function frees the memory occupied by a general context, using the memory
-freeing function within the context, if set.  If the argument is NULL, the
-function returns immediately without doing anything.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 51
src/deps/regex/pcre2/doc/html/pcre2_get_error_message.html

@@ -1,51 +0,0 @@
-<html>
-<head>
-<title>pcre2_get_error_message specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_get_error_message man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_get_error_message(int <i>errorcode</i>, PCRE2_UCHAR *<i>buffer</i>,</b>
-<b>  PCRE2_SIZE <i>bufflen</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function provides a textual error message for each PCRE2 error code.
-Compilation errors are positive numbers; UTF formatting errors and matching
-errors are negative numbers. The arguments are:
-<pre>
-  <i>errorcode</i>   an error code (positive or negative)
-  <i>buffer</i>      where to put the message
-  <i>bufflen</i>     the length of the buffer (code units)
-</pre>
-The function returns the length of the message in code units, excluding the
-trailing zero, or the negative error code PCRE2_ERROR_NOMEMORY if the buffer is
-too small. In this case, the returned message is truncated (but still with a
-trailing zero). If <i>errorcode</i> does not contain a recognized error code
-number, the negative value PCRE2_ERROR_BADDATA is returned.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 47
src/deps/regex/pcre2/doc/html/pcre2_get_mark.html

@@ -1,47 +0,0 @@
-<html>
-<head>
-<title>pcre2_get_mark specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_get_mark man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>PCRE2_SPTR pcre2_get_mark(pcre2_match_data *<i>match_data</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-After a call of <b>pcre2_match()</b> that was passed the match block that is
-this function's argument, this function returns a pointer to the last (*MARK),
-(*PRUNE), or (*THEN) name that was encountered during the matching process. The
-name is zero-terminated, and is within the compiled pattern. The length of the
-name is in the preceding code unit. If no name is available, NULL is returned.
-</P>
-<P>
-After a successful match, the name that is returned is the last one on the
-matching path. After a failed match or a partial match, the last encountered
-name is returned.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 39
src/deps/regex/pcre2/doc/html/pcre2_get_match_data_size.html

@@ -1,39 +0,0 @@
-<html>
-<head>
-<title>pcre2_get_match_data_size specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_get_match_data_size man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>PCRE2_SIZE pcre2_get_match_data_size(pcre2_match_data *<i>match_data</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function returns the size, in bytes, of the match data block that is its
-argument.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 39
src/deps/regex/pcre2/doc/html/pcre2_get_ovector_count.html

@@ -1,39 +0,0 @@
-<html>
-<head>
-<title>pcre2_get_ovector_count specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_get_ovector_count man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>uint32_t pcre2_get_ovector_count(pcre2_match_data *<i>match_data</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function returns the number of pairs of offsets in the ovector that forms
-part of the given match data block.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 40
src/deps/regex/pcre2/doc/html/pcre2_get_ovector_pointer.html

@@ -1,40 +0,0 @@
-<html>
-<head>
-<title>pcre2_get_ovector_pointer specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_get_ovector_pointer man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>PCRE2_SIZE *pcre2_get_ovector_pointer(pcre2_match_data *<i>match_data</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function returns a pointer to the vector of offsets that forms part of the
-given match data block. The number of pairs can be found by calling
-<b>pcre2_get_ovector_count()</b>.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 44
src/deps/regex/pcre2/doc/html/pcre2_get_startchar.html

@@ -1,44 +0,0 @@
-<html>
-<head>
-<title>pcre2_get_startchar specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_get_startchar man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>PCRE2_SIZE pcre2_get_startchar(pcre2_match_data *<i>match_data</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-After a successful call of <b>pcre2_match()</b> that was passed the match block
-that is this function's argument, this function returns the code unit offset of
-the character at which the successful match started. For a non-partial match,
-this can be different to the value of <i>ovector[0]</i> if the pattern contains
-the \K escape sequence. After a partial match, however, this value is always
-the same as <i>ovector[0]</i> because \K does not affect the result of a
-partial match.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 63
src/deps/regex/pcre2/doc/html/pcre2_jit_compile.html

@@ -1,63 +0,0 @@
-<html>
-<head>
-<title>pcre2_jit_compile specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_jit_compile man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_jit_compile(pcre2_code *<i>code</i>, uint32_t <i>options</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function requests JIT compilation, which, if the just-in-time compiler is
-available, further processes a compiled pattern into machine code that executes
-much faster than the <b>pcre2_match()</b> interpretive matching function. Full
-details are given in the
-<a href="pcre2jit.html"><b>pcre2jit</b></a>
-documentation.
-</P>
-<P>
-The first argument is a pointer that was returned by a successful call to
-<b>pcre2_compile()</b>, and the second must contain one or more of the following
-bits:
-<pre>
-  PCRE2_JIT_COMPLETE      compile code for full matching
-  PCRE2_JIT_PARTIAL_SOFT  compile code for soft partial matching
-  PCRE2_JIT_PARTIAL_HARD  compile code for hard partial matching
-</pre>
-There is also an obsolete option called PCRE2_JIT_INVALID_UTF, which has been
-superseded by the <b>pcre2_compile()</b> option PCRE2_MATCH_INVALID_UTF. The old
-option is deprecated and may be removed in the future.
-</P>
-<P>
-The yield of the function is 0 for success, or a negative error code otherwise.
-In particular, PCRE2_ERROR_JIT_BADOPTION is returned if JIT is not supported or
-if an unknown bit is set in <i>options</i>. The function can also return
-PCRE2_ERROR_NOMEMORY if JIT is unable to allocate executable memory for the
-compiler, even if it was because of a system security restriction.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 43
src/deps/regex/pcre2/doc/html/pcre2_jit_free_unused_memory.html

@@ -1,43 +0,0 @@
-<html>
-<head>
-<title>pcre2_jit_free_unused_memory specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_jit_free_unused_memory man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>void pcre2_jit_free_unused_memory(pcre2_general_context *<i>gcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function frees unused JIT executable memory. The argument is a general
-context, for custom memory management, or NULL for standard memory management.
-JIT memory allocation retains some memory in order to improve future JIT
-compilation speed. In low memory conditions,
-<b>pcre2_jit_free_unused_memory()</b> can be used to cause this memory to be
-freed.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 60
src/deps/regex/pcre2/doc/html/pcre2_jit_match.html

@@ -1,60 +0,0 @@
-<html>
-<head>
-<title>pcre2_jit_match specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_jit_match man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_jit_match(const pcre2_code *<i>code</i>, PCRE2_SPTR <i>subject</i>,</b>
-<b>  PCRE2_SIZE <i>length</i>, PCRE2_SIZE <i>startoffset</i>,</b>
-<b>  uint32_t <i>options</i>, pcre2_match_data *<i>match_data</i>,</b>
-<b>  pcre2_match_context *<i>mcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function matches a compiled regular expression that has been successfully
-processed by the JIT compiler against a given subject string, using a matching
-algorithm that is similar to Perl's. It is a "fast path" interface to JIT, and
-it bypasses some of the sanity checks that <b>pcre2_match()</b> applies.
-Its arguments are exactly the same as for
-<a href="pcre2_match.html"><b>pcre2_match()</b>,</a>
-except that the subject string must be specified with a length;
-PCRE2_ZERO_TERMINATED is not supported.
-</P>
-<P>
-The supported options are PCRE2_NOTBOL, PCRE2_NOTEOL, PCRE2_NOTEMPTY,
-PCRE2_NOTEMPTY_ATSTART, PCRE2_PARTIAL_HARD, and PCRE2_PARTIAL_SOFT. Unsupported
-options are ignored. The subject string is not checked for UTF validity.
-</P>
-<P>
-The return values are the same as for <b>pcre2_match()</b> plus
-PCRE2_ERROR_JIT_BADOPTION if a matching mode (partial or complete) is requested
-that was not compiled. For details of partial matching, see the
-<a href="pcre2partial.html"><b>pcre2partial</b></a>
-page.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the JIT API in the
-<a href="pcre2jit.html"><b>pcre2jit</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 75
src/deps/regex/pcre2/doc/html/pcre2_jit_stack_assign.html

@@ -1,75 +0,0 @@
-<html>
-<head>
-<title>pcre2_jit_stack_assign specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_jit_stack_assign man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>void pcre2_jit_stack_assign(pcre2_match_context *<i>mcontext</i>,</b>
-<b>  pcre2_jit_callback <i>callback_function</i>, void *<i>callback_data</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function provides control over the memory used by JIT as a run-time stack
-when <b>pcre2_match()</b> or <b>pcre2_jit_match()</b> is called with a pattern
-that has been successfully processed by the JIT compiler. The information that
-determines which stack is used is put into a match context that is subsequently
-passed to a matching function. The arguments of this function are:
-<pre>
-  mcontext       a pointer to a match context
-  callback       a callback function
-  callback_data  a JIT stack or a value to be passed to the callback
-</PRE>
-</P>
-<P>
-If <i>mcontext</i> is NULL, the function returns immediately, without doing
-anything.
-</P>
-<P>
-If <i>callback</i> is NULL and <i>callback_data</i> is NULL, an internal 32KiB
-block on the machine stack is used.
-</P>
-<P>
-If <i>callback</i> is NULL and <i>callback_data</i> is not NULL,
-<i>callback_data</i> must be a valid JIT stack, the result of calling
-<b>pcre2_jit_stack_create()</b>.
-</P>
-<P>
-If <i>callback</i> not NULL, it is called with <i>callback_data</i> as an
-argument at the start of matching, in order to set up a JIT stack. If the
-result is NULL, the internal 32KiB stack is used; otherwise the return value
-must be a valid JIT stack, the result of calling
-<b>pcre2_jit_stack_create()</b>.
-</P>
-<P>
-You may safely use the same JIT stack for multiple patterns, as long as they
-are all matched in the same thread. In a multithread application, each thread
-must use its own JIT stack. For more details, see the
-<a href="pcre2jit.html"><b>pcre2jit</b></a>
-page.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 49
src/deps/regex/pcre2/doc/html/pcre2_jit_stack_create.html

@@ -1,49 +0,0 @@
-<html>
-<head>
-<title>pcre2_jit_stack_create specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_jit_stack_create man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_jit_stack *pcre2_jit_stack_create(PCRE2_SIZE <i>startsize</i>,</b>
-<b>  PCRE2_SIZE <i>maxsize</i>, pcre2_general_context *<i>gcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function is used to create a stack for use by the code compiled by the JIT
-compiler. The first two arguments are a starting size for the stack, and a
-maximum size to which it is allowed to grow. The final argument is a general
-context, for memory allocation functions, or NULL for standard memory
-allocation. The result can be passed to the JIT run-time code by calling
-<b>pcre2_jit_stack_assign()</b> to associate the stack with a compiled pattern,
-which can then be processed by <b>pcre2_match()</b> or <b>pcre2_jit_match()</b>.
-A maximum stack size of 512KiB to 1MiB should be more than enough for any
-pattern. For more details, see the
-<a href="pcre2jit.html"><b>pcre2jit</b></a>
-page.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 43
src/deps/regex/pcre2/doc/html/pcre2_jit_stack_free.html

@@ -1,43 +0,0 @@
-<html>
-<head>
-<title>pcre2_jit_stack_free specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_jit_stack_free man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>void pcre2_jit_stack_free(pcre2_jit_stack *<i>jit_stack</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function is used to free a JIT stack that was created by
-<b>pcre2_jit_stack_create()</b> when it is no longer needed. If the argument is
-NULL, the function returns immediately without doing anything. For more
-details, see the
-<a href="pcre2jit.html"><b>pcre2jit</b></a>
-page.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 48
src/deps/regex/pcre2/doc/html/pcre2_maketables.html

@@ -1,48 +0,0 @@
-<html>
-<head>
-<title>pcre2_maketables specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_maketables man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>const uint8_t *pcre2_maketables(pcre2_general_context *<i>gcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function builds a set of character tables for character code points that
-are less than 256. These can be passed to <b>pcre2_compile()</b> in a compile
-context in order to override the internal, built-in tables (which were either
-defaulted or made by <b>pcre2_maketables()</b> when PCRE2 was compiled). See the
-<a href="pcre2_set_character_tables.html"><b>pcre2_set_character_tables()</b></a>
-page. You might want to do this if you are using a non-standard locale.
-</P>
-<P>
-If the argument is NULL, <b>malloc()</b> is used to get memory for the tables.
-Otherwise it must point to a general context, which can supply pointers to a
-custom memory manager. The function yields a pointer to the tables.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 44
src/deps/regex/pcre2/doc/html/pcre2_maketables_free.html

@@ -1,44 +0,0 @@
-<html>
-<head>
-<title>pcre2_maketables_free specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_maketables_free man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>void pcre2_maketables_free(pcre2_general_context *<i>gcontext</i>,</b>
-<b>  const uint8_t *<i>tables</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function discards a set of character tables that were created by a call
-to
-<a href="pcre2_maketables.html"><b>pcre2_maketables()</b>.</a>
-</P>
-<P>
-The <i>gcontext</i> parameter should match what was used in that call to
-account for any custom allocators that might be in use; if it is NULL
-the system <b>free()</b> is used.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 85
src/deps/regex/pcre2/doc/html/pcre2_match.html

@@ -1,85 +0,0 @@
-<html>
-<head>
-<title>pcre2_match specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_match man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_match(const pcre2_code *<i>code</i>, PCRE2_SPTR <i>subject</i>,</b>
-<b>  PCRE2_SIZE <i>length</i>, PCRE2_SIZE <i>startoffset</i>,</b>
-<b>  uint32_t <i>options</i>, pcre2_match_data *<i>match_data</i>,</b>
-<b>  pcre2_match_context *<i>mcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function matches a compiled regular expression against a given subject
-string, using a matching algorithm that is similar to Perl's. It returns
-offsets to what it has matched and to captured substrings via the
-<b>match_data</b> block, which can be processed by functions with names that
-start with <b>pcre2_get_ovector_...()</b> or <b>pcre2_substring_...()</b>. The
-return from <b>pcre2_match()</b> is one more than the highest numbered capturing
-pair that has been set (for example, 1 if there are no captures), zero if the
-vector of offsets is too small, or a negative error code for no match and other
-errors. The function arguments are:
-<pre>
-  <i>code</i>         Points to the compiled pattern
-  <i>subject</i>      Points to the subject string
-  <i>length</i>       Length of the subject string
-  <i>startoffset</i>  Offset in the subject at which to start matching
-  <i>options</i>      Option bits
-  <i>match_data</i>   Points to a match data block, for results
-  <i>mcontext</i>     Points to a match context, or is NULL
-</pre>
-A match context is needed only if you want to:
-<pre>
-  Set up a callout function
-  Set a matching offset limit
-  Change the heap memory limit
-  Change the backtracking match limit
-  Change the backtracking depth limit
-  Set custom memory management specifically for the match
-</pre>
-The <i>length</i> and <i>startoffset</i> values are code units, not characters.
-The length may be given as PCRE2_ZERO_TERMINATED for a subject that is
-terminated by a binary zero code unit. The options are:
-<pre>
-  PCRE2_ANCHORED          Match only at the first position
-  PCRE2_COPY_MATCHED_SUBJECT
-                          On success, make a private subject copy
-  PCRE2_ENDANCHORED       Pattern can match only at end of subject
-  PCRE2_NOTBOL            Subject string is not the beginning of a line
-  PCRE2_NOTEOL            Subject string is not the end of a line
-  PCRE2_NOTEMPTY          An empty string is not a valid match
-  PCRE2_NOTEMPTY_ATSTART  An empty string at the start of the subject is not a valid match
-  PCRE2_NO_JIT            Do not use JIT matching
-  PCRE2_NO_UTF_CHECK      Do not check the subject for UTF validity (only relevant if PCRE2_UTF
-                           was set at compile time)
-  PCRE2_PARTIAL_HARD      Return PCRE2_ERROR_PARTIAL for a partial match even if there is a full match
-  PCRE2_PARTIAL_SOFT      Return PCRE2_ERROR_PARTIAL for a partial match if no full matches are found
-</pre>
-For details of partial matching, see the
-<a href="pcre2partial.html"><b>pcre2partial</b></a>
-page. There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 41
src/deps/regex/pcre2/doc/html/pcre2_match_context_copy.html

@@ -1,41 +0,0 @@
-<html>
-<head>
-<title>pcre2_match_context_copy specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_match_context_copy man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_match_context *pcre2_match_context_copy(</b>
-<b>  pcre2_match_context *<i>mcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function makes a new copy of a match context, using the memory
-allocation function that was used for the original context. The result is NULL
-if the memory cannot be obtained.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 42
src/deps/regex/pcre2/doc/html/pcre2_match_context_create.html

@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>pcre2_match_context_create specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_match_context_create man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_match_context *pcre2_match_context_create(</b>
-<b>  pcre2_general_context *<i>gcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function creates and initializes a new match context. If its argument is
-NULL, <b>malloc()</b> is used to get the necessary memory; otherwise the memory
-allocation function within the general context is used. The result is NULL if
-the memory could not be obtained.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 41
src/deps/regex/pcre2/doc/html/pcre2_match_context_free.html

@@ -1,41 +0,0 @@
-<html>
-<head>
-<title>pcre2_match_context_free specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_match_context_free man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>void pcre2_match_context_free(pcre2_match_context *<i>mcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function frees the memory occupied by a match context, using the memory
-freeing function from the general context with which it was created, or
-<b>free()</b> if that was not set. If the argument is NULL, the function returns
-immediately without doing anything.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 49
src/deps/regex/pcre2/doc/html/pcre2_match_data_create.html

@@ -1,49 +0,0 @@
-<html>
-<head>
-<title>pcre2_match_data_create specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_match_data_create man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_match_data *pcre2_match_data_create(uint32_t <i>ovecsize</i>,</b>
-<b>  pcre2_general_context *<i>gcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function creates a new match data block, which is used for holding the
-result of a match. The first argument specifies the number of pairs of offsets
-that are required. These form the "output vector" (ovector) within the match
-data block, and are used to identify the matched string and any captured
-substrings. There is always one pair of offsets; if <b>ovecsize</b> is zero, it
-is treated as one.
-</P>
-<P>
-The second argument points to a general context, for custom memory management,
-or is NULL for system memory management. The result of the function is NULL if
-the memory for the block could not be obtained.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 50
src/deps/regex/pcre2/doc/html/pcre2_match_data_create_from_pattern.html

@@ -1,50 +0,0 @@
-<html>
-<head>
-<title>pcre2_match_data_create_from_pattern specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_match_data_create_from_pattern man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>pcre2_match_data *pcre2_match_data_create_from_pattern(</b>
-<b>  const pcre2_code *<i>code</i>, pcre2_general_context *<i>gcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function creates a new match data block, which is used for holding the
-result of a match. The first argument points to a compiled pattern. The number
-of capturing parentheses within the pattern is used to compute the number of
-pairs of offsets that are required in the match data block. These form the
-"output vector" (ovector) within the match data block, and are used to identify
-the matched string and any captured substrings.
-</P>
-<P>
-The second argument points to a general context, for custom memory management,
-or is NULL to use the same memory allocator as was used for the compiled
-pattern. The result of the function is NULL if the memory for the block could
-not be obtained.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 46
src/deps/regex/pcre2/doc/html/pcre2_match_data_free.html

@@ -1,46 +0,0 @@
-<html>
-<head>
-<title>pcre2_match_data_free specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_match_data_free man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>void pcre2_match_data_free(pcre2_match_data *<i>match_data</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-If <i>match_data</i> is NULL, this function does nothing. Otherwise,
-<i>match_data</i> must point to a match data block, which this function frees,
-using the memory freeing function from the general context or compiled pattern
-with which it was created, or <b>free()</b> if that was not set.
-</P>
-<P>
-If the PCRE2_COPY_MATCHED_SUBJECT was used for a successful match using this
-match data block, the copy of the subject that was remembered with the block is
-also freed.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 70
src/deps/regex/pcre2/doc/html/pcre2_pattern_convert.html

@@ -1,70 +0,0 @@
-<html>
-<head>
-<title>pcre2_pattern_convert specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_pattern_convert man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_pattern_convert(PCRE2_SPTR <i>pattern</i>, PCRE2_SIZE <i>length</i>,</b>
-<b>  uint32_t <i>options</i>, PCRE2_UCHAR **<i>buffer</i>,</b>
-<b>  PCRE2_SIZE *<i>blength</i>, pcre2_convert_context *<i>cvcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function is part of an experimental set of pattern conversion functions.
-It converts a foreign pattern (for example, a glob) into a PCRE2 regular
-expression pattern. Its arguments are:
-<pre>
-  <i>pattern</i>     The foreign pattern
-  <i>length</i>      The length of the input pattern or PCRE2_ZERO_TERMINATED
-  <i>options</i>     Option bits
-  <i>buffer</i>      Pointer to pointer to output buffer, or NULL
-  <i>blength</i>     Pointer to output length field
-  <i>cvcontext</i>   Pointer to a convert context or NULL
-</pre>
-The length of the converted pattern (excluding the terminating zero) is
-returned via <i>blength</i>. If <i>buffer</i> is NULL, the function just returns
-the output length. If <i>buffer</i> points to a NULL pointer, heap memory is
-obtained for the converted pattern, using the allocator in the context if
-present (or else <b>malloc()</b>), and the field pointed to by <i>buffer</i> is
-updated. If <i>buffer</i> points to a non-NULL field, that must point to a
-buffer whose size is in the variable pointed to by <i>blength</i>. This value is
-updated.
-</P>
-<P>
-The option bits are:
-<pre>
-  PCRE2_CONVERT_UTF                     Input is UTF
-  PCRE2_CONVERT_NO_UTF_CHECK            Do not check UTF validity
-  PCRE2_CONVERT_POSIX_BASIC             Convert POSIX basic pattern
-  PCRE2_CONVERT_POSIX_EXTENDED          Convert POSIX extended pattern
-  PCRE2_CONVERT_GLOB                    ) Convert
-  PCRE2_CONVERT_GLOB_NO_WILD_SEPARATOR  )   various types
-  PCRE2_CONVERT_GLOB_NO_STARSTAR        )     of glob
-</pre>
-The return value from <b>pcre2_pattern_convert()</b> is zero on success or a
-non-zero PCRE2 error code.
-</P>
-<P>
-The pattern conversion functions are described in the
-<a href="pcre2convert.html"><b>pcre2convert</b></a>
-documentation.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 109
src/deps/regex/pcre2/doc/html/pcre2_pattern_info.html

@@ -1,109 +0,0 @@
-<html>
-<head>
-<title>pcre2_pattern_info specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_pattern_info man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_pattern_info(const pcre2_code *<i>code</i>, uint32_t <i>what</i>,</b>
-<b>   void *<i>where</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function returns information about a compiled pattern. Its arguments are:
-<pre>
-  <i>code</i>     Pointer to a compiled regular expression pattern
-  <i>what</i>     What information is required
-  <i>where</i>    Where to put the information
-</pre>
-The recognized values for the <i>what</i> argument, and the information they
-request are as follows:
-<pre>
-  PCRE2_INFO_ALLOPTIONS      Final options after compiling
-  PCRE2_INFO_ARGOPTIONS      Options passed to <b>pcre2_compile()</b>
-  PCRE2_INFO_BACKREFMAX      Number of highest backreference
-  PCRE2_INFO_BSR             What \R matches:
-                               PCRE2_BSR_UNICODE: Unicode line endings
-                               PCRE2_BSR_ANYCRLF: CR, LF, or CRLF only
-  PCRE2_INFO_CAPTURECOUNT    Number of capturing subpatterns
-  PCRE2_INFO_DEPTHLIMIT      Backtracking depth limit if set, otherwise PCRE2_ERROR_UNSET
-  PCRE2_INFO_EXTRAOPTIONS    Extra options that were passed in the
-                               compile context
-  PCRE2_INFO_FIRSTBITMAP     Bitmap of first code units, or NULL
-  PCRE2_INFO_FIRSTCODETYPE   Type of start-of-match information
-                               0 nothing set
-                               1 first code unit is set
-                               2 start of string or after newline
-  PCRE2_INFO_FIRSTCODEUNIT   First code unit when type is 1
-  PCRE2_INFO_FRAMESIZE       Size of backtracking frame
-  PCRE2_INFO_HASBACKSLASHC   Return 1 if pattern contains \C
-  PCRE2_INFO_HASCRORLF       Return 1 if explicit CR or LF matches exist in the pattern
-  PCRE2_INFO_HEAPLIMIT       Heap memory limit if set, otherwise PCRE2_ERROR_UNSET
-  PCRE2_INFO_JCHANGED        Return 1 if (?J) or (?-J) was used
-  PCRE2_INFO_JITSIZE         Size of JIT compiled code, or 0
-  PCRE2_INFO_LASTCODETYPE    Type of must-be-present information
-                               0 nothing set
-                               1 code unit is set
-  PCRE2_INFO_LASTCODEUNIT    Last code unit when type is 1
-  PCRE2_INFO_MATCHEMPTY      1 if the pattern can match an empty string, 0 otherwise
-  PCRE2_INFO_MATCHLIMIT      Match limit if set, otherwise PCRE2_ERROR_UNSET
-  PCRE2_INFO_MAXLOOKBEHIND   Length (in characters) of the longest lookbehind assertion
-  PCRE2_INFO_MINLENGTH       Lower bound length of matching strings
-  PCRE2_INFO_NAMECOUNT       Number of named subpatterns
-  PCRE2_INFO_NAMEENTRYSIZE   Size of name table entries
-  PCRE2_INFO_NAMETABLE       Pointer to name table
-  PCRE2_CONFIG_NEWLINE       Code for the newline sequence:
-                               PCRE2_NEWLINE_CR
-                               PCRE2_NEWLINE_LF
-                               PCRE2_NEWLINE_CRLF
-                               PCRE2_NEWLINE_ANY
-                               PCRE2_NEWLINE_ANYCRLF
-                               PCRE2_NEWLINE_NUL
-  PCRE2_INFO_RECURSIONLIMIT  Obsolete synonym for PCRE2_INFO_DEPTHLIMIT
-  PCRE2_INFO_SIZE            Size of compiled pattern
-</pre>
-If <i>where</i> is NULL, the function returns the amount of memory needed for
-the requested information, in bytes. Otherwise, the <i>where</i> argument must
-point to an unsigned 32-bit integer (uint32_t variable), except for the
-following <i>what</i> values, when it must point to a variable of the type
-shown:
-<pre>
-  PCRE2_INFO_FIRSTBITMAP     const uint8_t *
-  PCRE2_INFO_JITSIZE         size_t
-  PCRE2_INFO_NAMETABLE       PCRE2_SPTR
-  PCRE2_INFO_SIZE            size_t
-</pre>
-The yield of the function is zero on success or:
-<pre>
-  PCRE2_ERROR_NULL           the argument <i>code</i> is NULL
-  PCRE2_ERROR_BADMAGIC       the "magic number" was not found
-  PCRE2_ERROR_BADOPTION      the value of <i>what</i> is invalid
-  PCRE2_ERROR_BADMODE        the pattern was compiled in the wrong mode
-  PCRE2_ERROR_UNSET          the requested information is not set
-</PRE>
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 65
src/deps/regex/pcre2/doc/html/pcre2_serialize_decode.html

@@ -1,65 +0,0 @@
-<html>
-<head>
-<title>pcre2_serialize_decode specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_serialize_decode man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int32_t pcre2_serialize_decode(pcre2_code **<i>codes</i>,</b>
-<b>  int32_t <i>number_of_codes</i>, const uint8_t *<i>bytes</i>,</b>
-<b>  pcre2_general_context *<i>gcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function decodes a serialized set of compiled patterns back into a list of
-individual patterns. This is possible only on a host that is running the same
-version of PCRE2, with the same code unit width, and the host must also have
-the same endianness, pointer width and PCRE2_SIZE type. The arguments for
-<b>pcre2_serialize_decode()</b> are:
-<pre>
-  <i>codes</i>            pointer to a vector in which to build the list
-  <i>number_of_codes</i>  number of slots in the vector
-  <i>bytes</i>            the serialized byte stream
-  <i>gcontext</i>         pointer to a general context or NULL
-</pre>
-The <i>bytes</i> argument must point to a block of data that was originally
-created by <b>pcre2_serialize_encode()</b>, though it may have been saved on
-disc or elsewhere in the meantime. If there are more codes in the serialized
-data than slots in the list, only those compiled patterns that will fit are
-decoded. The yield of the function is the number of decoded patterns, or one of
-the following negative error codes:
-<pre>
-  PCRE2_ERROR_BADDATA   <i>number_of_codes</i> is zero or less
-  PCRE2_ERROR_BADMAGIC  mismatch of id bytes in <i>bytes</i>
-  PCRE2_ERROR_BADMODE   mismatch of variable unit size or PCRE version
-  PCRE2_ERROR_MEMORY    memory allocation failed
-  PCRE2_ERROR_NULL      <i>codes</i> or <i>bytes</i> is NULL
-</pre>
-PCRE2_ERROR_BADMAGIC may mean that the data is corrupt, or that it was compiled
-on a system with different endianness.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the serialization functions in the
-<a href="pcre2serialize.html"><b>pcre2serialize</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 66
src/deps/regex/pcre2/doc/html/pcre2_serialize_encode.html

@@ -1,66 +0,0 @@
-<html>
-<head>
-<title>pcre2_serialize_encode specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_serialize_encode man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int32_t pcre2_serialize_encode(const pcre2_code **<i>codes</i>,</b>
-<b>  int32_t <i>number_of_codes</i>, uint8_t **<i>serialized_bytes</i>,</b>
-<b>  PCRE2_SIZE *<i>serialized_size</i>, pcre2_general_context *<i>gcontext</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function encodes a list of compiled patterns into a byte stream that can
-be saved on disc or elsewhere. Note that this is not an abstract format like
-Java or .NET. Conversion of the byte stream back into usable compiled patterns
-can only happen on a host that is running the same version of PCRE2, with the
-same code unit width, and the host must also have the same endianness, pointer
-width and PCRE2_SIZE type. The arguments for <b>pcre2_serialize_encode()</b>
-are:
-<pre>
-  <i>codes</i>             pointer to a vector containing the list
-  <i>number_of_codes</i>   number of slots in the vector
-  <i>serialized_bytes</i>  set to point to the serialized byte stream
-  <i>serialized_size</i>   set to the number of bytes in the byte stream
-  <i>gcontext</i>          pointer to a general context or NULL
-</pre>
-The context argument is used to obtain memory for the byte stream. When the
-serialized data is no longer needed, it must be freed by calling
-<b>pcre2_serialize_free()</b>. The yield of the function is the number of
-serialized patterns, or one of the following negative error codes:
-<pre>
-  PCRE2_ERROR_BADDATA      <i>number_of_codes</i> is zero or less
-  PCRE2_ERROR_BADMAGIC     mismatch of id bytes in one of the patterns
-  PCRE2_ERROR_MEMORY       memory allocation failed
-  PCRE2_ERROR_MIXEDTABLES  the patterns do not all use the same tables
-  PCRE2_ERROR_NULL         an argument other than <i>gcontext</i> is NULL
-</pre>
-PCRE2_ERROR_BADMAGIC means either that a pattern's code has been corrupted, or
-that a slot in the vector does not point to a compiled pattern.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the serialization functions in the
-<a href="pcre2serialize.html"><b>pcre2serialize</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 41
src/deps/regex/pcre2/doc/html/pcre2_serialize_free.html

@@ -1,41 +0,0 @@
-<html>
-<head>
-<title>pcre2_serialize_free specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_serialize_free man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>void pcre2_serialize_free(uint8_t *<i>bytes</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function frees the memory that was obtained by
-<b>pcre2_serialize_encode()</b> to hold a serialized byte stream. The argument
-must point to such a byte stream or be NULL, in which case the function returns
-without doing anything.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the serialization functions in the
-<a href="pcre2serialize.html"><b>pcre2serialize</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 49
src/deps/regex/pcre2/doc/html/pcre2_serialize_get_number_of_codes.html

@@ -1,49 +0,0 @@
-<html>
-<head>
-<title>pcre2_serialize_get_number_of_codes specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_serialize_get_number_of_codes man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int32_t pcre2_serialize_get_number_of_codes(const uint8_t *<i>bytes</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-The <i>bytes</i> argument must point to a serialized byte stream that was
-originally created by <b>pcre2_serialize_encode()</b> (though it may have been
-saved on disc or elsewhere in the meantime). The function returns the number of
-serialized patterns in the byte stream, or one of the following negative error
-codes:
-<pre>
-  PCRE2_ERROR_BADMAGIC  mismatch of id bytes in <i>bytes</i>
-  PCRE2_ERROR_BADMODE   mismatch of variable unit size or PCRE version
-  PCRE2_ERROR_NULL      the argument is NULL
-</pre>
-PCRE2_ERROR_BADMAGIC may mean that the data is corrupt, or that it was compiled
-on a system with different endianness.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the serialization functions in the
-<a href="pcre2serialize.html"><b>pcre2serialize</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 42
src/deps/regex/pcre2/doc/html/pcre2_set_bsr.html

@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>pcre2_set_bsr specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_set_bsr man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_set_bsr(pcre2_compile_context *<i>ccontext</i>,</b>
-<b>  uint32_t <i>value</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function sets the convention for processing \R within a compile context.
-The second argument must be one of PCRE2_BSR_ANYCRLF or PCRE2_BSR_UNICODE. The
-result is zero for success or PCRE2_ERROR_BADDATA if the second argument is
-invalid.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 43
src/deps/regex/pcre2/doc/html/pcre2_set_callout.html

@@ -1,43 +0,0 @@
-<html>
-<head>
-<title>pcre2_set_callout specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_set_callout man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_set_callout(pcre2_match_context *<i>mcontext</i>,</b>
-<b>  int (*<i>callout_function</i>)(pcre2_callout_block *),</b>
-<b>  void *<i>callout_data</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function sets the callout fields in a match context (the first argument).
-The second argument specifies a callout function, and the third argument is an
-opaque data item that is passed to it. The result of this function is always
-zero.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 45
src/deps/regex/pcre2/doc/html/pcre2_set_character_tables.html

@@ -1,45 +0,0 @@
-<html>
-<head>
-<title>pcre2_set_character_tables specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_set_character_tables man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_set_character_tables(pcre2_compile_context *<i>ccontext</i>,</b>
-<b>  const uint8_t *<i>tables</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function sets a pointer to custom character tables within a compile
-context. The second argument must point to a set of PCRE2 character tables or
-be NULL to request the default tables. The result is always zero. Character
-tables can be created by calling <b>pcre2_maketables()</b> or by running the
-<b>pcre2_dftables</b> maintenance command in binary mode (see the
-<a href="pcre2build.html"><b>pcre2build</b></a>
-documentation).
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 47
src/deps/regex/pcre2/doc/html/pcre2_set_compile_extra_options.html

@@ -1,47 +0,0 @@
-<html>
-<head>
-<title>pcre2_set_compile_extra_options specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_set_compile_extra_options man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_set_compile_extra_options(pcre2_compile_context *<i>ccontext</i>,</b>
-<b>  uint32_t <i>extra_options</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function sets additional option bits for <b>pcre2_compile()</b> that are
-housed in a compile context. It completely replaces all the bits. The extra
-options are:
-<pre>
-  PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES  Allow \x{df800} to \x{dfff} in UTF-8 and UTF-32 modes
-  PCRE2_EXTRA_ALT_BSUX                 Extended alternate \u, \U, and \x handling
-  PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL    Treat all invalid escapes as a literal following character
-  PCRE2_EXTRA_ESCAPED_CR_IS_LF         Interpret \r as \n
-  PCRE2_EXTRA_MATCH_LINE               Pattern matches whole lines
-  PCRE2_EXTRA_MATCH_WORD               Pattern matches "words"
-</pre>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 46
src/deps/regex/pcre2/doc/html/pcre2_set_compile_recursion_guard.html

@@ -1,46 +0,0 @@
-<html>
-<head>
-<title>pcre2_set_compile_recursion_guard specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_set_compile_recursion_guard man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_set_compile_recursion_guard(pcre2_compile_context *<i>ccontext</i>,</b>
-<b>  int (*<i>guard_function</i>)(uint32_t, void *), void *<i>user_data</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function defines, within a compile context, a function that is called
-whenever <b>pcre2_compile()</b> starts to compile a parenthesized part of a
-pattern. The first argument to the function gives the current depth of
-parenthesis nesting, and the second is user data that is supplied when the
-function is set up. The callout function should return zero if all is well, or
-non-zero to force an error. This feature is provided so that applications can
-check the available system stack space, in order to avoid running out. The
-result of <b>pcre2_set_compile_recursion_guard()</b> is always zero.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

+ 0 - 40
src/deps/regex/pcre2/doc/html/pcre2_set_depth_limit.html

@@ -1,40 +0,0 @@
-<html>
-<head>
-<title>pcre2_set_depth_limit specification</title>
-</head>
-<body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
-<h1>pcre2_set_depth_limit man page</h1>
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>
-<p>
-This page is part of the PCRE2 HTML documentation. It was generated
-automatically from the original man page. If there is any nonsense in it,
-please consult the man page, in case the conversion went wrong.
-<br>
-<br><b>
-SYNOPSIS
-</b><br>
-<P>
-<b>#include &#60;pcre2.h&#62;</b>
-</P>
-<P>
-<b>int pcre2_set_depth_limit(pcre2_match_context *<i>mcontext</i>,</b>
-<b>  uint32_t <i>value</i>);</b>
-</P>
-<br><b>
-DESCRIPTION
-</b><br>
-<P>
-This function sets the backtracking depth limit field in a match context. The
-result is always zero.
-</P>
-<P>
-There is a complete description of the PCRE2 native API in the
-<a href="pcre2api.html"><b>pcre2api</b></a>
-page and a description of the POSIX API in the
-<a href="pcre2posix.html"><b>pcre2posix</b></a>
-page.
-<p>
-Return to the <a href="index.html">PCRE2 index page</a>.
-</p>

Some files were not shown because too many files changed in this diff