rugged 1.9.4 → 1.9.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/CMakeLists.txt +1 -1
  4. data/vendor/libgit2/COPYING +83 -11
  5. data/vendor/libgit2/cmake/SelectRegex.cmake +8 -3
  6. data/vendor/libgit2/deps/pcre2/CMakeLists.txt +110 -0
  7. data/vendor/libgit2/deps/pcre2/LICENCE.md +104 -0
  8. data/vendor/libgit2/deps/pcre2/config.h.in +54 -0
  9. data/vendor/libgit2/deps/pcre2/pcre2.h +1079 -0
  10. data/vendor/libgit2/deps/pcre2/pcre2_auto_possess.c +1416 -0
  11. data/vendor/libgit2/deps/{pcre/pcre_chartables.c → pcre2/pcre2_chartables.c} +41 -47
  12. data/vendor/libgit2/deps/{pcre/pcre_ord2utf8.c → pcre2/pcre2_chkdint.c} +36 -36
  13. data/vendor/libgit2/deps/pcre2/pcre2_compile.c +11345 -0
  14. data/vendor/libgit2/deps/pcre2/pcre2_compile.h +356 -0
  15. data/vendor/libgit2/deps/pcre2/pcre2_compile_cgroup.c +632 -0
  16. data/vendor/libgit2/deps/pcre2/pcre2_compile_class.c +2777 -0
  17. data/vendor/libgit2/deps/pcre2/pcre2_config.c +250 -0
  18. data/vendor/libgit2/deps/pcre2/pcre2_context.c +557 -0
  19. data/vendor/libgit2/deps/pcre2/pcre2_convert.c +1263 -0
  20. data/vendor/libgit2/deps/{pcre/pcre_dfa_exec.c → pcre2/pcre2_dfa_match.c} +1402 -943
  21. data/vendor/libgit2/deps/pcre2/pcre2_error.c +384 -0
  22. data/vendor/libgit2/deps/pcre2/pcre2_extuni.c +159 -0
  23. data/vendor/libgit2/deps/pcre2/pcre2_find_bracket.c +217 -0
  24. data/vendor/libgit2/deps/pcre2/pcre2_fuzzsupport.c +844 -0
  25. data/vendor/libgit2/deps/pcre2/pcre2_internal.h +2353 -0
  26. data/vendor/libgit2/deps/pcre2/pcre2_intmodedep.h +1044 -0
  27. data/vendor/libgit2/deps/pcre2/pcre2_maketables.c +177 -0
  28. data/vendor/libgit2/deps/pcre2/pcre2_match.c +8244 -0
  29. data/vendor/libgit2/deps/pcre2/pcre2_match_data.c +184 -0
  30. data/vendor/libgit2/deps/pcre2/pcre2_match_next.c +171 -0
  31. data/vendor/libgit2/deps/{pcre/pcre_newline.c → pcre2/pcre2_newline.c} +92 -63
  32. data/vendor/libgit2/deps/{pcre/pcre_refcount.c → pcre2/pcre2_ord2utf.c} +64 -38
  33. data/vendor/libgit2/deps/pcre2/pcre2_pattern_info.c +430 -0
  34. data/vendor/libgit2/deps/pcre2/pcre2_printint_inc.h +1098 -0
  35. data/vendor/libgit2/deps/pcre2/pcre2_script_run.c +344 -0
  36. data/vendor/libgit2/deps/pcre2/pcre2_serialize.c +284 -0
  37. data/vendor/libgit2/deps/pcre2/pcre2_string_utils.c +199 -0
  38. data/vendor/libgit2/deps/pcre2/pcre2_study.c +2087 -0
  39. data/vendor/libgit2/deps/pcre2/pcre2_substitute.c +1761 -0
  40. data/vendor/libgit2/deps/pcre2/pcre2_substring.c +553 -0
  41. data/vendor/libgit2/deps/pcre2/pcre2_tables.c +310 -0
  42. data/vendor/libgit2/deps/pcre2/pcre2_ucd.c +5805 -0
  43. data/vendor/libgit2/deps/pcre2/pcre2_ucp.h +408 -0
  44. data/vendor/libgit2/deps/pcre2/pcre2_ucptables_inc.h +1596 -0
  45. data/vendor/libgit2/deps/pcre2/pcre2_util.h +179 -0
  46. data/vendor/libgit2/deps/pcre2/pcre2_valid_utf.c +397 -0
  47. data/vendor/libgit2/deps/pcre2/pcre2_xclass.c +547 -0
  48. data/vendor/libgit2/include/git2/common.h +13 -1
  49. data/vendor/libgit2/include/git2/version.h +2 -2
  50. data/vendor/libgit2/src/libgit2/blame.c +6 -0
  51. data/vendor/libgit2/src/libgit2/delta.c +8 -0
  52. data/vendor/libgit2/src/libgit2/indexer.c +3 -2
  53. data/vendor/libgit2/src/libgit2/settings.c +9 -0
  54. data/vendor/libgit2/src/libgit2/streams/openssl.c +4 -1
  55. data/vendor/libgit2/src/libgit2/submodule.c +77 -12
  56. data/vendor/libgit2/src/libgit2/transports/http.c +4 -4
  57. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +2 -1
  58. data/vendor/libgit2/src/util/fs_path.h +10 -10
  59. data/vendor/libgit2/src/util/regexp.c +27 -12
  60. data/vendor/libgit2/src/util/regexp.h +7 -2
  61. metadata +44 -37
  62. data/vendor/libgit2/deps/pcre/CMakeLists.txt +0 -140
  63. data/vendor/libgit2/deps/pcre/COPYING +0 -5
  64. data/vendor/libgit2/deps/pcre/LICENCE +0 -93
  65. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +0 -22
  66. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +0 -17
  67. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +0 -58
  68. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +0 -29
  69. data/vendor/libgit2/deps/pcre/config.h.in +0 -57
  70. data/vendor/libgit2/deps/pcre/pcre.h +0 -641
  71. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +0 -319
  72. data/vendor/libgit2/deps/pcre/pcre_compile.c +0 -9815
  73. data/vendor/libgit2/deps/pcre/pcre_config.c +0 -190
  74. data/vendor/libgit2/deps/pcre/pcre_exec.c +0 -7173
  75. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +0 -245
  76. data/vendor/libgit2/deps/pcre/pcre_get.c +0 -669
  77. data/vendor/libgit2/deps/pcre/pcre_globals.c +0 -86
  78. data/vendor/libgit2/deps/pcre/pcre_internal.h +0 -2787
  79. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +0 -11913
  80. data/vendor/libgit2/deps/pcre/pcre_maketables.c +0 -156
  81. data/vendor/libgit2/deps/pcre/pcre_printint.c +0 -834
  82. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +0 -211
  83. data/vendor/libgit2/deps/pcre/pcre_study.c +0 -1686
  84. data/vendor/libgit2/deps/pcre/pcre_tables.c +0 -727
  85. data/vendor/libgit2/deps/pcre/pcre_ucd.c +0 -3644
  86. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +0 -301
  87. data/vendor/libgit2/deps/pcre/pcre_version.c +0 -98
  88. data/vendor/libgit2/deps/pcre/pcre_xclass.c +0 -268
  89. data/vendor/libgit2/deps/pcre/pcreposix.c +0 -420
  90. data/vendor/libgit2/deps/pcre/pcreposix.h +0 -117
  91. data/vendor/libgit2/deps/pcre/ucp.h +0 -224
@@ -0,0 +1,557 @@
1
+ /*************************************************
2
+ * Perl-Compatible Regular Expressions *
3
+ *************************************************/
4
+
5
+ /* PCRE is a library of functions to support regular expressions whose syntax
6
+ and semantics are as close as possible to those of the Perl 5 language.
7
+
8
+ Written by Philip Hazel
9
+ Original API code Copyright (c) 1997-2012 University of Cambridge
10
+ New API code Copyright (c) 2016-2024 University of Cambridge
11
+
12
+ -----------------------------------------------------------------------------
13
+ Redistribution and use in source and binary forms, with or without
14
+ modification, are permitted provided that the following conditions are met:
15
+
16
+ * Redistributions of source code must retain the above copyright notice,
17
+ this list of conditions and the following disclaimer.
18
+
19
+ * Redistributions in binary form must reproduce the above copyright
20
+ notice, this list of conditions and the following disclaimer in the
21
+ documentation and/or other materials provided with the distribution.
22
+
23
+ * Neither the name of the University of Cambridge nor the names of its
24
+ contributors may be used to endorse or promote products derived from
25
+ this software without specific prior written permission.
26
+
27
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
28
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
31
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37
+ POSSIBILITY OF SUCH DAMAGE.
38
+ -----------------------------------------------------------------------------
39
+ */
40
+
41
+
42
+ #include "pcre2_internal.h"
43
+
44
+
45
+
46
+ /*************************************************
47
+ * Default malloc/free functions *
48
+ *************************************************/
49
+
50
+ /* Ignore the "user data" argument in each case. */
51
+
52
+ static void *default_malloc(size_t size, void *data)
53
+ {
54
+ (void)data;
55
+ return malloc(size);
56
+ }
57
+
58
+
59
+ static void default_free(void *block, void *data)
60
+ {
61
+ (void)data;
62
+ free(block);
63
+ }
64
+
65
+
66
+
67
+ /*************************************************
68
+ * Get a block and save memory control *
69
+ *************************************************/
70
+
71
+ /* This internal function is called to get a block of memory in which the
72
+ memory control data is to be stored at the start for future use.
73
+
74
+ Arguments:
75
+ size amount of memory required
76
+ memctl pointer to a memctl block or NULL
77
+
78
+ Returns: pointer to memory or NULL on failure
79
+ */
80
+
81
+ extern void *
82
+ PRIV(memctl_malloc)(size_t size, pcre2_memctl *memctl)
83
+ {
84
+ pcre2_memctl *newmemctl;
85
+ void *yield = (memctl == NULL)? malloc(size) :
86
+ memctl->malloc(size, memctl->memory_data);
87
+ if (yield == NULL) return NULL;
88
+ newmemctl = (pcre2_memctl *)yield;
89
+ if (memctl == NULL)
90
+ {
91
+ newmemctl->malloc = default_malloc;
92
+ newmemctl->free = default_free;
93
+ newmemctl->memory_data = NULL;
94
+ }
95
+ else *newmemctl = *memctl;
96
+ return yield;
97
+ }
98
+
99
+
100
+
101
+ /*************************************************
102
+ * Create and initialize contexts *
103
+ *************************************************/
104
+
105
+ /* Initializing for compile and match contexts is done in separate, private
106
+ functions so that these can be called from functions such as pcre2_compile()
107
+ when an external context is not supplied. The initializing functions have an
108
+ option to set up default memory management. */
109
+
110
+ PCRE2_EXP_DEFN pcre2_general_context * PCRE2_CALL_CONVENTION
111
+ pcre2_general_context_create(void *(*private_malloc)(size_t, void *),
112
+ void (*private_free)(void *, void *), void *memory_data)
113
+ {
114
+ pcre2_general_context *gcontext;
115
+ if (private_malloc == NULL) private_malloc = default_malloc;
116
+ if (private_free == NULL) private_free = default_free;
117
+ gcontext = private_malloc(sizeof(pcre2_real_general_context), memory_data);
118
+ if (gcontext == NULL) return NULL;
119
+ gcontext->memctl.malloc = private_malloc;
120
+ gcontext->memctl.free = private_free;
121
+ gcontext->memctl.memory_data = memory_data;
122
+ return gcontext;
123
+ }
124
+
125
+
126
+ /* A default compile context is set up to save having to initialize at run time
127
+ when no context is supplied to the compile function. */
128
+
129
+ pcre2_compile_context PRIV(default_compile_context) = {
130
+ { default_malloc, default_free, NULL }, /* Default memory handling */
131
+ NULL, /* Stack guard */
132
+ NULL, /* Stack guard data */
133
+ PRIV(default_tables), /* Character tables */
134
+ PCRE2_UNSET, /* Max pattern length */
135
+ PCRE2_UNSET, /* Max pattern compiled length */
136
+ BSR_DEFAULT, /* Backslash R default */
137
+ NEWLINE_DEFAULT, /* Newline convention */
138
+ PARENS_NEST_LIMIT, /* As it says */
139
+ 0, /* Extra options */
140
+ MAX_VARLOOKBEHIND, /* As it says */
141
+ PCRE2_OPTIMIZATION_ALL /* All optimizations enabled */
142
+ };
143
+
144
+ /* The create function copies the default into the new memory, but must
145
+ override the default memory handling functions if a gcontext was provided. */
146
+
147
+ PCRE2_EXP_DEFN pcre2_compile_context * PCRE2_CALL_CONVENTION
148
+ pcre2_compile_context_create(pcre2_general_context *gcontext)
149
+ {
150
+ pcre2_compile_context *ccontext = PRIV(memctl_malloc)(
151
+ sizeof(pcre2_real_compile_context), (pcre2_memctl *)gcontext);
152
+ if (ccontext == NULL) return NULL;
153
+ *ccontext = PRIV(default_compile_context);
154
+ if (gcontext != NULL)
155
+ *((pcre2_memctl *)ccontext) = *((pcre2_memctl *)gcontext);
156
+ return ccontext;
157
+ }
158
+
159
+
160
+ /* A default match context is set up to save having to initialize at run time
161
+ when no context is supplied to a match function. */
162
+
163
+ pcre2_match_context PRIV(default_match_context) = {
164
+ { default_malloc, default_free, NULL },
165
+ #ifdef SUPPORT_JIT
166
+ NULL, /* JIT callback */
167
+ NULL, /* JIT callback data */
168
+ #endif
169
+ NULL, /* Callout function */
170
+ NULL, /* Callout data */
171
+ NULL, /* Substitute callout function */
172
+ NULL, /* Substitute callout data */
173
+ NULL, /* Substitute case callout function */
174
+ NULL, /* Substitute case callout data */
175
+ PCRE2_UNSET, /* Offset limit */
176
+ HEAP_LIMIT,
177
+ MATCH_LIMIT,
178
+ MATCH_LIMIT_DEPTH };
179
+
180
+ /* The create function copies the default into the new memory, but must
181
+ override the default memory handling functions if a gcontext was provided. */
182
+
183
+ PCRE2_EXP_DEFN pcre2_match_context * PCRE2_CALL_CONVENTION
184
+ pcre2_match_context_create(pcre2_general_context *gcontext)
185
+ {
186
+ pcre2_match_context *mcontext = PRIV(memctl_malloc)(
187
+ sizeof(pcre2_real_match_context), (pcre2_memctl *)gcontext);
188
+ if (mcontext == NULL) return NULL;
189
+ *mcontext = PRIV(default_match_context);
190
+ if (gcontext != NULL)
191
+ *((pcre2_memctl *)mcontext) = *((pcre2_memctl *)gcontext);
192
+ return mcontext;
193
+ }
194
+
195
+
196
+ /* A default convert context is set up to save having to initialize at run time
197
+ when no context is supplied to the convert function. */
198
+
199
+ pcre2_convert_context PRIV(default_convert_context) = {
200
+ { default_malloc, default_free, NULL }, /* Default memory handling */
201
+ #ifdef _WIN32
202
+ CHAR_BACKSLASH, /* Default path separator */
203
+ CHAR_GRAVE_ACCENT /* Default escape character */
204
+ #else /* Not Windows */
205
+ CHAR_SLASH, /* Default path separator */
206
+ CHAR_BACKSLASH /* Default escape character */
207
+ #endif
208
+ };
209
+
210
+ /* The create function copies the default into the new memory, but must
211
+ override the default memory handling functions if a gcontext was provided. */
212
+
213
+ PCRE2_EXP_DEFN pcre2_convert_context * PCRE2_CALL_CONVENTION
214
+ pcre2_convert_context_create(pcre2_general_context *gcontext)
215
+ {
216
+ pcre2_convert_context *ccontext = PRIV(memctl_malloc)(
217
+ sizeof(pcre2_real_convert_context), (pcre2_memctl *)gcontext);
218
+ if (ccontext == NULL) return NULL;
219
+ *ccontext = PRIV(default_convert_context);
220
+ if (gcontext != NULL)
221
+ *((pcre2_memctl *)ccontext) = *((pcre2_memctl *)gcontext);
222
+ return ccontext;
223
+ }
224
+
225
+
226
+ /*************************************************
227
+ * Context copy functions *
228
+ *************************************************/
229
+
230
+ PCRE2_EXP_DEFN pcre2_general_context * PCRE2_CALL_CONVENTION
231
+ pcre2_general_context_copy(pcre2_general_context *gcontext)
232
+ {
233
+ pcre2_general_context *newcontext =
234
+ gcontext->memctl.malloc(sizeof(pcre2_real_general_context),
235
+ gcontext->memctl.memory_data);
236
+ if (newcontext == NULL) return NULL;
237
+ memcpy(newcontext, gcontext, sizeof(pcre2_real_general_context));
238
+ return newcontext;
239
+ }
240
+
241
+
242
+ PCRE2_EXP_DEFN pcre2_compile_context * PCRE2_CALL_CONVENTION
243
+ pcre2_compile_context_copy(pcre2_compile_context *ccontext)
244
+ {
245
+ pcre2_compile_context *newcontext =
246
+ ccontext->memctl.malloc(sizeof(pcre2_real_compile_context),
247
+ ccontext->memctl.memory_data);
248
+ if (newcontext == NULL) return NULL;
249
+ memcpy(newcontext, ccontext, sizeof(pcre2_real_compile_context));
250
+ return newcontext;
251
+ }
252
+
253
+
254
+ PCRE2_EXP_DEFN pcre2_match_context * PCRE2_CALL_CONVENTION
255
+ pcre2_match_context_copy(pcre2_match_context *mcontext)
256
+ {
257
+ pcre2_match_context *newcontext =
258
+ mcontext->memctl.malloc(sizeof(pcre2_real_match_context),
259
+ mcontext->memctl.memory_data);
260
+ if (newcontext == NULL) return NULL;
261
+ memcpy(newcontext, mcontext, sizeof(pcre2_real_match_context));
262
+ return newcontext;
263
+ }
264
+
265
+
266
+ PCRE2_EXP_DEFN pcre2_convert_context * PCRE2_CALL_CONVENTION
267
+ pcre2_convert_context_copy(pcre2_convert_context *ccontext)
268
+ {
269
+ pcre2_convert_context *newcontext =
270
+ ccontext->memctl.malloc(sizeof(pcre2_real_convert_context),
271
+ ccontext->memctl.memory_data);
272
+ if (newcontext == NULL) return NULL;
273
+ memcpy(newcontext, ccontext, sizeof(pcre2_real_convert_context));
274
+ return newcontext;
275
+ }
276
+
277
+
278
+ /*************************************************
279
+ * Context free functions *
280
+ *************************************************/
281
+
282
+ PCRE2_EXP_DEFN void PCRE2_CALL_CONVENTION
283
+ pcre2_general_context_free(pcre2_general_context *gcontext)
284
+ {
285
+ if (gcontext != NULL)
286
+ gcontext->memctl.free(gcontext, gcontext->memctl.memory_data);
287
+ }
288
+
289
+
290
+ PCRE2_EXP_DEFN void PCRE2_CALL_CONVENTION
291
+ pcre2_compile_context_free(pcre2_compile_context *ccontext)
292
+ {
293
+ if (ccontext != NULL)
294
+ ccontext->memctl.free(ccontext, ccontext->memctl.memory_data);
295
+ }
296
+
297
+
298
+ PCRE2_EXP_DEFN void PCRE2_CALL_CONVENTION
299
+ pcre2_match_context_free(pcre2_match_context *mcontext)
300
+ {
301
+ if (mcontext != NULL)
302
+ mcontext->memctl.free(mcontext, mcontext->memctl.memory_data);
303
+ }
304
+
305
+
306
+ PCRE2_EXP_DEFN void PCRE2_CALL_CONVENTION
307
+ pcre2_convert_context_free(pcre2_convert_context *ccontext)
308
+ {
309
+ if (ccontext != NULL)
310
+ ccontext->memctl.free(ccontext, ccontext->memctl.memory_data);
311
+ }
312
+
313
+
314
+ /*************************************************
315
+ * Set values in contexts *
316
+ *************************************************/
317
+
318
+ /* All these functions return 0 for success or PCRE2_ERROR_BADDATA if invalid
319
+ data is given. Only some of the functions are able to test the validity of the
320
+ data. */
321
+
322
+
323
+ /* ------------ Compile context ------------ */
324
+
325
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
326
+ pcre2_set_character_tables(pcre2_compile_context *ccontext,
327
+ const uint8_t *tables)
328
+ {
329
+ ccontext->tables = tables;
330
+ return 0;
331
+ }
332
+
333
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
334
+ pcre2_set_bsr(pcre2_compile_context *ccontext, uint32_t value)
335
+ {
336
+ switch(value)
337
+ {
338
+ case PCRE2_BSR_ANYCRLF:
339
+ case PCRE2_BSR_UNICODE:
340
+ ccontext->bsr_convention = value;
341
+ return 0;
342
+
343
+ default:
344
+ return PCRE2_ERROR_BADDATA;
345
+ }
346
+ }
347
+
348
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
349
+ pcre2_set_max_pattern_length(pcre2_compile_context *ccontext, PCRE2_SIZE length)
350
+ {
351
+ ccontext->max_pattern_length = length;
352
+ return 0;
353
+ }
354
+
355
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
356
+ pcre2_set_max_pattern_compiled_length(pcre2_compile_context *ccontext, PCRE2_SIZE length)
357
+ {
358
+ ccontext->max_pattern_compiled_length = length;
359
+ return 0;
360
+ }
361
+
362
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
363
+ pcre2_set_newline(pcre2_compile_context *ccontext, uint32_t newline)
364
+ {
365
+ switch(newline)
366
+ {
367
+ case PCRE2_NEWLINE_CR:
368
+ case PCRE2_NEWLINE_LF:
369
+ case PCRE2_NEWLINE_CRLF:
370
+ case PCRE2_NEWLINE_ANY:
371
+ case PCRE2_NEWLINE_ANYCRLF:
372
+ case PCRE2_NEWLINE_NUL:
373
+ ccontext->newline_convention = newline;
374
+ return 0;
375
+
376
+ default:
377
+ return PCRE2_ERROR_BADDATA;
378
+ }
379
+ }
380
+
381
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
382
+ pcre2_set_max_varlookbehind(pcre2_compile_context *ccontext, uint32_t limit)
383
+ {
384
+ ccontext->max_varlookbehind = limit;
385
+ return 0;
386
+ }
387
+
388
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
389
+ pcre2_set_parens_nest_limit(pcre2_compile_context *ccontext, uint32_t limit)
390
+ {
391
+ ccontext->parens_nest_limit = limit;
392
+ return 0;
393
+ }
394
+
395
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
396
+ pcre2_set_compile_extra_options(pcre2_compile_context *ccontext, uint32_t options)
397
+ {
398
+ ccontext->extra_options = options;
399
+ return 0;
400
+ }
401
+
402
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
403
+ pcre2_set_compile_recursion_guard(pcre2_compile_context *ccontext,
404
+ int (*guard)(uint32_t, void *), void *user_data)
405
+ {
406
+ ccontext->stack_guard = guard;
407
+ ccontext->stack_guard_data = user_data;
408
+ return 0;
409
+ }
410
+
411
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
412
+ pcre2_set_optimize(pcre2_compile_context *ccontext, uint32_t directive)
413
+ {
414
+ if (ccontext == NULL)
415
+ return PCRE2_ERROR_NULL;
416
+
417
+ switch (directive)
418
+ {
419
+ case PCRE2_OPTIMIZATION_NONE:
420
+ ccontext->optimization_flags = 0;
421
+ break;
422
+
423
+ case PCRE2_OPTIMIZATION_FULL:
424
+ ccontext->optimization_flags = PCRE2_OPTIMIZATION_ALL;
425
+ break;
426
+
427
+ default:
428
+ if (directive >= PCRE2_AUTO_POSSESS && directive <= PCRE2_START_OPTIMIZE_OFF)
429
+ {
430
+ /* Even directive numbers starting from 64 switch a bit on;
431
+ * Odd directive numbers starting from 65 switch a bit off */
432
+ if ((directive & 1) != 0)
433
+ ccontext->optimization_flags &= ~(1u << ((directive >> 1) - 32));
434
+ else
435
+ ccontext->optimization_flags |= 1u << ((directive >> 1) - 32);
436
+ return 0;
437
+ }
438
+ return PCRE2_ERROR_BADOPTION;
439
+ }
440
+
441
+ return 0;
442
+ }
443
+
444
+ /* ------------ Match context ------------ */
445
+
446
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
447
+ pcre2_set_callout(pcre2_match_context *mcontext,
448
+ int (*callout)(pcre2_callout_block *, void *), void *callout_data)
449
+ {
450
+ mcontext->callout = callout;
451
+ mcontext->callout_data = callout_data;
452
+ return 0;
453
+ }
454
+
455
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
456
+ pcre2_set_substitute_callout(pcre2_match_context *mcontext,
457
+ int (*substitute_callout)(pcre2_substitute_callout_block *, void *),
458
+ void *substitute_callout_data)
459
+ {
460
+ mcontext->substitute_callout = substitute_callout;
461
+ mcontext->substitute_callout_data = substitute_callout_data;
462
+ return 0;
463
+ }
464
+
465
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
466
+ pcre2_set_substitute_case_callout(pcre2_match_context *mcontext,
467
+ PCRE2_SIZE (*substitute_case_callout)(PCRE2_SPTR, PCRE2_SIZE, PCRE2_UCHAR *,
468
+ PCRE2_SIZE, int, void *),
469
+ void *substitute_case_callout_data)
470
+ {
471
+ mcontext->substitute_case_callout = substitute_case_callout;
472
+ mcontext->substitute_case_callout_data = substitute_case_callout_data;
473
+ return 0;
474
+ }
475
+
476
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
477
+ pcre2_set_heap_limit(pcre2_match_context *mcontext, uint32_t limit)
478
+ {
479
+ mcontext->heap_limit = limit;
480
+ return 0;
481
+ }
482
+
483
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
484
+ pcre2_set_match_limit(pcre2_match_context *mcontext, uint32_t limit)
485
+ {
486
+ mcontext->match_limit = limit;
487
+ return 0;
488
+ }
489
+
490
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
491
+ pcre2_set_depth_limit(pcre2_match_context *mcontext, uint32_t limit)
492
+ {
493
+ mcontext->depth_limit = limit;
494
+ return 0;
495
+ }
496
+
497
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
498
+ pcre2_set_offset_limit(pcre2_match_context *mcontext, PCRE2_SIZE limit)
499
+ {
500
+ mcontext->offset_limit = limit;
501
+ return 0;
502
+ }
503
+
504
+ /* These functions became obsolete at release 10.30. The first is kept as a
505
+ synonym for backwards compatibility. The second now does nothing. */
506
+
507
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
508
+ pcre2_set_recursion_limit(pcre2_match_context *mcontext, uint32_t limit)
509
+ {
510
+ return pcre2_set_depth_limit(mcontext, limit);
511
+ }
512
+
513
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
514
+ pcre2_set_recursion_memory_management(pcre2_match_context *mcontext,
515
+ void *(*mymalloc)(size_t, void *), void (*myfree)(void *, void *),
516
+ void *mydata)
517
+ {
518
+ (void)mcontext;
519
+ (void)mymalloc;
520
+ (void)myfree;
521
+ (void)mydata;
522
+ return 0;
523
+ }
524
+
525
+
526
+ /* ------------ Convert context ------------ */
527
+
528
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
529
+ pcre2_set_glob_separator(pcre2_convert_context *ccontext, uint32_t separator)
530
+ {
531
+ if (separator != CHAR_SLASH && separator != CHAR_BACKSLASH &&
532
+ separator != CHAR_DOT) return PCRE2_ERROR_BADDATA;
533
+ ccontext->glob_separator = separator;
534
+ return 0;
535
+ }
536
+
537
+ static const char *globpunct =
538
+ STR_EXCLAMATION_MARK STR_QUOTATION_MARK STR_NUMBER_SIGN STR_DOLLAR_SIGN
539
+ STR_PERCENT_SIGN STR_AMPERSAND STR_APOSTROPHE STR_LEFT_PARENTHESIS
540
+ STR_RIGHT_PARENTHESIS STR_ASTERISK STR_PLUS STR_COMMA STR_MINUS STR_DOT
541
+ STR_SLASH STR_COLON STR_SEMICOLON STR_LESS_THAN_SIGN STR_EQUALS_SIGN
542
+ STR_GREATER_THAN_SIGN STR_QUESTION_MARK STR_COMMERCIAL_AT
543
+ STR_LEFT_SQUARE_BRACKET STR_BACKSLASH STR_RIGHT_SQUARE_BRACKET
544
+ STR_CIRCUMFLEX_ACCENT STR_UNDERSCORE STR_GRAVE_ACCENT STR_LEFT_CURLY_BRACKET
545
+ STR_VERTICAL_LINE STR_RIGHT_CURLY_BRACKET STR_TILDE;
546
+
547
+ PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION
548
+ pcre2_set_glob_escape(pcre2_convert_context *ccontext, uint32_t escape)
549
+ {
550
+ if (escape > 255 || (escape != 0 && strchr(globpunct, escape) == NULL))
551
+ return PCRE2_ERROR_BADDATA;
552
+ ccontext->glob_escape = escape;
553
+ return 0;
554
+ }
555
+
556
+ /* End of pcre2_context.c */
557
+