passenger 4.0.27 → 4.0.28

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (156) hide show
  1. data.tar.gz.asc +7 -7
  2. data/.gitignore +1 -0
  3. data/NEWS +22 -0
  4. data/build/preprocessor.rb +10 -0
  5. data/build/rpm.rb +74 -65
  6. data/debian.template/rules.template +8 -0
  7. data/dev/copy_boost_headers.rb +11 -2
  8. data/doc/Users guide Apache.idmap.txt +161 -145
  9. data/doc/Users guide Apache.txt +12 -1
  10. data/doc/Users guide Nginx.idmap.txt +142 -126
  11. data/doc/Users guide Nginx.txt +14 -1
  12. data/doc/Users guide Standalone.txt +1 -0
  13. data/doc/users_guide_snippets/environment_variables.txt +1 -1
  14. data/doc/users_guide_snippets/installation.txt +2 -0
  15. data/doc/users_guide_snippets/tips.txt +118 -0
  16. data/ext/apache2/Configuration.cpp +0 -6
  17. data/ext/apache2/Configuration.hpp +0 -5
  18. data/ext/apache2/ConfigurationCommands.cpp +7 -0
  19. data/ext/apache2/ConfigurationFields.hpp +2 -0
  20. data/ext/apache2/ConfigurationSetters.cpp +24 -0
  21. data/ext/apache2/CreateDirConfig.cpp +1 -0
  22. data/ext/apache2/Hooks.cpp +0 -1
  23. data/ext/apache2/MergeDirConfig.cpp +7 -0
  24. data/ext/apache2/SetHeaders.cpp +5 -1
  25. data/ext/boost/cregex.hpp +39 -0
  26. data/ext/boost/libs/regex/src/c_regex_traits.cpp +193 -0
  27. data/ext/boost/libs/regex/src/cpp_regex_traits.cpp +117 -0
  28. data/ext/boost/libs/regex/src/cregex.cpp +660 -0
  29. data/ext/boost/libs/regex/src/instances.cpp +32 -0
  30. data/ext/boost/libs/regex/src/internals.hpp +35 -0
  31. data/ext/boost/libs/regex/src/posix_api.cpp +296 -0
  32. data/ext/boost/libs/regex/src/regex.cpp +227 -0
  33. data/ext/boost/libs/regex/src/regex_debug.cpp +59 -0
  34. data/ext/boost/libs/regex/src/regex_raw_buffer.cpp +72 -0
  35. data/ext/boost/libs/regex/src/regex_traits_defaults.cpp +692 -0
  36. data/ext/boost/libs/regex/src/static_mutex.cpp +179 -0
  37. data/ext/boost/libs/regex/src/wc_regex_traits.cpp +301 -0
  38. data/ext/boost/libs/regex/src/wide_posix_api.cpp +315 -0
  39. data/ext/boost/libs/regex/src/winstances.cpp +35 -0
  40. data/ext/boost/regex.h +100 -0
  41. data/ext/boost/regex.hpp +37 -0
  42. data/ext/boost/regex/concepts.hpp +1128 -0
  43. data/ext/boost/regex/config.hpp +435 -0
  44. data/ext/boost/regex/config/borland.hpp +72 -0
  45. data/ext/boost/regex/config/cwchar.hpp +207 -0
  46. data/ext/boost/regex/mfc.hpp +190 -0
  47. data/ext/boost/regex/pattern_except.hpp +100 -0
  48. data/ext/boost/regex/pending/object_cache.hpp +165 -0
  49. data/ext/boost/regex/pending/static_mutex.hpp +179 -0
  50. data/ext/boost/regex/pending/unicode_iterator.hpp +776 -0
  51. data/ext/boost/regex/regex_traits.hpp +35 -0
  52. data/ext/boost/regex/user.hpp +93 -0
  53. data/ext/boost/regex/v4/basic_regex.hpp +782 -0
  54. data/ext/boost/regex/v4/basic_regex_creator.hpp +1571 -0
  55. data/ext/boost/regex/v4/basic_regex_parser.hpp +2874 -0
  56. data/ext/boost/regex/v4/c_regex_traits.hpp +211 -0
  57. data/ext/boost/regex/v4/char_regex_traits.hpp +81 -0
  58. data/ext/boost/regex/v4/cpp_regex_traits.hpp +1099 -0
  59. data/ext/boost/regex/v4/cregex.hpp +330 -0
  60. data/ext/boost/regex/v4/error_type.hpp +59 -0
  61. data/ext/boost/regex/v4/fileiter.hpp +455 -0
  62. data/ext/boost/regex/v4/instances.hpp +222 -0
  63. data/ext/boost/regex/v4/iterator_category.hpp +91 -0
  64. data/ext/boost/regex/v4/iterator_traits.hpp +135 -0
  65. data/ext/boost/regex/v4/match_flags.hpp +138 -0
  66. data/ext/boost/regex/v4/match_results.hpp +702 -0
  67. data/ext/boost/regex/v4/mem_block_cache.hpp +99 -0
  68. data/ext/boost/regex/v4/perl_matcher.hpp +587 -0
  69. data/ext/boost/regex/v4/perl_matcher_common.hpp +996 -0
  70. data/ext/boost/regex/v4/perl_matcher_non_recursive.hpp +1642 -0
  71. data/ext/boost/regex/v4/perl_matcher_recursive.hpp +991 -0
  72. data/ext/boost/regex/v4/primary_transform.hpp +146 -0
  73. data/ext/boost/regex/v4/protected_call.hpp +81 -0
  74. data/ext/boost/regex/v4/regbase.hpp +180 -0
  75. data/ext/boost/regex/v4/regex.hpp +202 -0
  76. data/ext/boost/regex/v4/regex_format.hpp +1156 -0
  77. data/ext/boost/regex/v4/regex_fwd.hpp +73 -0
  78. data/ext/boost/regex/v4/regex_grep.hpp +155 -0
  79. data/ext/boost/regex/v4/regex_iterator.hpp +201 -0
  80. data/ext/boost/regex/v4/regex_match.hpp +382 -0
  81. data/ext/boost/regex/v4/regex_merge.hpp +93 -0
  82. data/ext/boost/regex/v4/regex_raw_buffer.hpp +210 -0
  83. data/ext/boost/regex/v4/regex_replace.hpp +99 -0
  84. data/ext/boost/regex/v4/regex_search.hpp +217 -0
  85. data/ext/boost/regex/v4/regex_split.hpp +172 -0
  86. data/ext/boost/regex/v4/regex_token_iterator.hpp +342 -0
  87. data/ext/boost/regex/v4/regex_traits.hpp +189 -0
  88. data/ext/boost/regex/v4/regex_traits_defaults.hpp +371 -0
  89. data/ext/boost/regex/v4/regex_workaround.hpp +232 -0
  90. data/ext/boost/regex/v4/states.hpp +301 -0
  91. data/ext/boost/regex/v4/sub_match.hpp +512 -0
  92. data/ext/boost/regex/v4/syntax_type.hpp +105 -0
  93. data/ext/boost/regex/v4/u32regex_iterator.hpp +193 -0
  94. data/ext/boost/regex/v4/u32regex_token_iterator.hpp +377 -0
  95. data/ext/boost/regex/v4/w32_regex_traits.hpp +741 -0
  96. data/ext/boost/regex_fwd.hpp +33 -0
  97. data/ext/common/AgentsStarter.h +0 -11
  98. data/ext/common/ApplicationPool2/Common.h +1 -7
  99. data/ext/common/ApplicationPool2/DirectSpawner.h +3 -3
  100. data/ext/common/ApplicationPool2/Group.h +166 -69
  101. data/ext/common/ApplicationPool2/Implementation.cpp +55 -10
  102. data/ext/common/ApplicationPool2/Options.h +45 -10
  103. data/ext/common/ApplicationPool2/PipeWatcher.h +1 -2
  104. data/ext/common/ApplicationPool2/Pool.h +29 -7
  105. data/ext/common/ApplicationPool2/Process.h +22 -3
  106. data/ext/common/ApplicationPool2/Session.h +1 -0
  107. data/ext/common/ApplicationPool2/SmartSpawner.h +5 -10
  108. data/ext/common/ApplicationPool2/Spawner.h +10 -15
  109. data/ext/common/ApplicationPool2/SuperGroup.h +10 -9
  110. data/ext/common/Constants.h +1 -3
  111. data/ext/common/Hooks.h +193 -0
  112. data/ext/common/Logging.cpp +67 -2
  113. data/ext/common/Logging.h +23 -1
  114. data/ext/common/Utils.cpp +0 -21
  115. data/ext/common/Utils.h +0 -42
  116. data/ext/common/Utils/CachedFileStat.hpp +1 -1
  117. data/ext/common/Utils/StrIntUtils.h +61 -14
  118. data/ext/common/Utils/StringMap.h +4 -0
  119. data/ext/common/agents/HelperAgent/AgentOptions.h +4 -4
  120. data/ext/common/agents/HelperAgent/Main.cpp +2 -3
  121. data/ext/common/agents/HelperAgent/RequestHandler.h +65 -2
  122. data/ext/common/agents/LoggingAgent/FilterSupport.h +3 -1
  123. data/ext/common/agents/Watchdog/Main.cpp +8 -72
  124. data/ext/nginx/CacheLocationConfig.c +29 -1
  125. data/ext/nginx/Configuration.c +0 -12
  126. data/ext/nginx/Configuration.h +0 -1
  127. data/ext/nginx/ConfigurationCommands.c +10 -0
  128. data/ext/nginx/ConfigurationFields.h +2 -0
  129. data/ext/nginx/CreateLocationConfig.c +4 -0
  130. data/ext/nginx/MergeLocationConfig.c +6 -0
  131. data/ext/oxt/system_calls.cpp +7 -1
  132. data/ext/oxt/system_calls.hpp +7 -7
  133. data/helper-scripts/node-loader.js +6 -2
  134. data/helper-scripts/rack-loader.rb +5 -2
  135. data/helper-scripts/rack-preloader.rb +5 -2
  136. data/lib/phusion_passenger.rb +1 -1
  137. data/lib/phusion_passenger/apache2/config_options.rb +8 -0
  138. data/lib/phusion_passenger/constants.rb +0 -1
  139. data/lib/phusion_passenger/nginx/config_options.rb +9 -2
  140. data/lib/phusion_passenger/platform_info/apache.rb +2 -1
  141. data/lib/phusion_passenger/platform_info/compiler.rb +15 -1
  142. data/lib/phusion_passenger/platform_info/cxx_portability.rb +2 -0
  143. data/node_lib/phusion_passenger/httplib_emulation.js +85 -17
  144. data/node_lib/phusion_passenger/request_handler.js +10 -2
  145. data/rpm/Vagrantfile +32 -0
  146. data/rpm/get_distro_id.py +4 -0
  147. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +2 -2
  148. data/test/cxx/ApplicationPool2/PoolTest.cpp +60 -9
  149. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +2 -6
  150. data/test/cxx/CachedFileStatTest.cpp +5 -5
  151. data/test/cxx/RequestHandlerTest.cpp +3 -6
  152. data/test/cxx/UtilsTest.cpp +30 -0
  153. data/test/node/httplib_emulation_spec.js +491 -0
  154. data/test/node/spec_helper.js +25 -0
  155. metadata +78 -2
  156. metadata.gz.asc +7 -7
@@ -0,0 +1,59 @@
1
+ /*
2
+ *
3
+ * Copyright (c) 1998-2004
4
+ * John Maddock
5
+ *
6
+ * Use, modification and distribution are subject to the
7
+ * Boost Software License, Version 1.0. (See accompanying file
8
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ *
10
+ */
11
+
12
+ /*
13
+ * LOCATION: see http://www.boost.org for most recent version.
14
+ * FILE: regex_debug.cpp
15
+ * VERSION: see <boost/version.hpp>
16
+ * DESCRIPTION: Misc. debugging helpers.
17
+ */
18
+
19
+
20
+ #define BOOST_REGEX_SOURCE
21
+
22
+ #include <boost/regex/config.hpp>
23
+
24
+
25
+ //
26
+ // regex configuration information: this prints out the settings used
27
+ // when the library was built - include in debugging builds only:
28
+ //
29
+ #ifdef BOOST_REGEX_CONFIG_INFO
30
+
31
+ #define print_macro regex_lib_print_macro
32
+ #define print_expression regex_lib_print_expression
33
+ #define print_byte_order regex_lib_print_byte_order
34
+ #define print_sign regex_lib_print_sign
35
+ #define print_compiler_macros regex_lib_print_compiler_macros
36
+ #define print_stdlib_macros regex_lib_print_stdlib_macros
37
+ #define print_platform_macros regex_lib_print_platform_macros
38
+ #define print_boost_macros regex_lib_print_boost_macros
39
+ #define print_separator regex_lib_print_separator
40
+ #define OLD_MAIN regex_lib_main
41
+ #define NEW_MAIN regex_lib_main2
42
+ #define NO_RECURSE
43
+
44
+ #include <libs/regex/test/config_info/regex_config_info.cpp>
45
+
46
+ BOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info()
47
+ {
48
+ std::cout << "\n\n";
49
+ print_separator();
50
+ std::cout << "Regex library build configuration:\n\n";
51
+ regex_lib_main2();
52
+ }
53
+
54
+ #endif
55
+
56
+
57
+
58
+
59
+
@@ -0,0 +1,72 @@
1
+ /*
2
+ *
3
+ * Copyright (c) 2004
4
+ * John Maddock
5
+ *
6
+ * Use, modification and distribution are subject to the
7
+ * Boost Software License, Version 1.0. (See accompanying file
8
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ *
10
+ */
11
+
12
+ /*
13
+ * LOCATION: see http://www.boost.org for most recent version.
14
+ * FILE regex_raw_buffer.cpp
15
+ * VERSION see <boost/version.hpp>
16
+ * DESCRIPTION: Member functions for class raw_storage.
17
+ */
18
+
19
+
20
+ #define BOOST_REGEX_SOURCE
21
+ #include <boost/config.hpp>
22
+ #include <memory>
23
+ #include <cstring>
24
+ #include <boost/assert.hpp>
25
+ #include <boost/regex/v4/regex_raw_buffer.hpp>
26
+
27
+ #if defined(BOOST_NO_STDC_NAMESPACE)
28
+ namespace std{
29
+ using ::memcpy;
30
+ using ::memmove;
31
+ }
32
+ #endif
33
+
34
+
35
+ namespace boost{ namespace re_detail{
36
+
37
+ void BOOST_REGEX_CALL raw_storage::resize(size_type n)
38
+ {
39
+ register size_type newsize = start ? last - start : 1024;
40
+ while(newsize < n)
41
+ newsize *= 2;
42
+ register size_type datasize = end - start;
43
+ // extend newsize to WORD/DWORD boundary:
44
+ newsize = (newsize + padding_mask) & ~(padding_mask);
45
+
46
+ // allocate and copy data:
47
+ register pointer ptr = static_cast<pointer>(::operator new(newsize));
48
+ BOOST_REGEX_NOEH_ASSERT(ptr)
49
+ if(start)
50
+ std::memcpy(ptr, start, datasize);
51
+
52
+ // get rid of old buffer:
53
+ ::operator delete(start);
54
+
55
+ // and set up pointers:
56
+ start = ptr;
57
+ end = ptr + datasize;
58
+ last = ptr + newsize;
59
+ }
60
+
61
+ void* BOOST_REGEX_CALL raw_storage::insert(size_type pos, size_type n)
62
+ {
63
+ BOOST_ASSERT(pos <= size_type(end - start));
64
+ if(size_type(last - end) < n)
65
+ resize(n + (end - start));
66
+ register void* result = start + pos;
67
+ std::memmove(start + pos + n, start + pos, (end - start) - pos);
68
+ end += n;
69
+ return result;
70
+ }
71
+
72
+ }} // namespaces
@@ -0,0 +1,692 @@
1
+ /*
2
+ *
3
+ * Copyright (c) 2004
4
+ * John Maddock
5
+ *
6
+ * Use, modification and distribution are subject to the
7
+ * Boost Software License, Version 1.0. (See accompanying file
8
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ *
10
+ */
11
+
12
+ /*
13
+ * LOCATION: see http://www.boost.org for most recent version.
14
+ * FILE regex_traits_defaults.cpp
15
+ * VERSION see <boost/version.hpp>
16
+ * DESCRIPTION: Declares API's for access to regex_traits default properties.
17
+ */
18
+
19
+ #define BOOST_REGEX_SOURCE
20
+ #include <boost/regex/regex_traits.hpp>
21
+
22
+ #include <cctype>
23
+ #ifndef BOOST_NO_WREGEX
24
+ #include <cwctype>
25
+ #endif
26
+
27
+ #if defined(BOOST_NO_STDC_NAMESPACE)
28
+ namespace std{
29
+ using ::tolower;
30
+ using ::toupper;
31
+ #ifndef BOOST_NO_WREGEX
32
+ using ::towlower;
33
+ using ::towupper;
34
+ #endif
35
+ }
36
+ #endif
37
+
38
+
39
+ namespace boost{ namespace re_detail{
40
+
41
+ BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_syntax(regex_constants::syntax_type n)
42
+ {
43
+ // if the user hasn't supplied a message catalog, then this supplies
44
+ // default "messages" for us to load in the range 1-100.
45
+ const char* messages[] = {
46
+ "",
47
+ "(",
48
+ ")",
49
+ "$",
50
+ "^",
51
+ ".",
52
+ "*",
53
+ "+",
54
+ "?",
55
+ "[",
56
+ "]",
57
+ "|",
58
+ "\\",
59
+ "#",
60
+ "-",
61
+ "{",
62
+ "}",
63
+ "0123456789",
64
+ "b",
65
+ "B",
66
+ "<",
67
+ ">",
68
+ "",
69
+ "",
70
+ "A`",
71
+ "z'",
72
+ "\n",
73
+ ",",
74
+ "a",
75
+ "f",
76
+ "n",
77
+ "r",
78
+ "t",
79
+ "v",
80
+ "x",
81
+ "c",
82
+ ":",
83
+ "=",
84
+ "e",
85
+ "",
86
+ "",
87
+ "",
88
+ "",
89
+ "",
90
+ "",
91
+ "",
92
+ "",
93
+ "E",
94
+ "Q",
95
+ "X",
96
+ "C",
97
+ "Z",
98
+ "G",
99
+ "!",
100
+ "p",
101
+ "P",
102
+ "N",
103
+ "gk",
104
+ "K",
105
+ "R",
106
+ };
107
+
108
+ return ((n >= (sizeof(messages) / sizeof(messages[1]))) ? "" : messages[n]);
109
+ }
110
+
111
+ BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_error_string(regex_constants::error_type n)
112
+ {
113
+ static const char* const s_default_error_messages[] = {
114
+ "Success", /* REG_NOERROR 0 error_ok */
115
+ "No match", /* REG_NOMATCH 1 error_no_match */
116
+ "Invalid regular expression.", /* REG_BADPAT 2 error_bad_pattern */
117
+ "Invalid collation character.", /* REG_ECOLLATE 3 error_collate */
118
+ "Invalid character class name, collating name, or character range.", /* REG_ECTYPE 4 error_ctype */
119
+ "Invalid or unterminated escape sequence.", /* REG_EESCAPE 5 error_escape */
120
+ "Invalid back reference: specified capturing group does not exist.", /* REG_ESUBREG 6 error_backref */
121
+ "Unmatched [ or [^ in character class declaration.", /* REG_EBRACK 7 error_brack */
122
+ "Unmatched marking parenthesis ( or \\(.", /* REG_EPAREN 8 error_paren */
123
+ "Unmatched quantified repeat operator { or \\{.", /* REG_EBRACE 9 error_brace */
124
+ "Invalid content of repeat range.", /* REG_BADBR 10 error_badbrace */
125
+ "Invalid range end in character class", /* REG_ERANGE 11 error_range */
126
+ "Out of memory.", /* REG_ESPACE 12 error_space NOT USED */
127
+ "Invalid preceding regular expression prior to repetition operator.", /* REG_BADRPT 13 error_badrepeat */
128
+ "Premature end of regular expression", /* REG_EEND 14 error_end NOT USED */
129
+ "Regular expression is too large.", /* REG_ESIZE 15 error_size NOT USED */
130
+ "Unmatched ) or \\)", /* REG_ERPAREN 16 error_right_paren NOT USED */
131
+ "Empty regular expression.", /* REG_EMPTY 17 error_empty */
132
+ "The complexity of matching the regular expression exceeded predefined bounds. "
133
+ "Try refactoring the regular expression to make each choice made by the state machine unambiguous. "
134
+ "This exception is thrown to prevent \"eternal\" matches that take an "
135
+ "indefinite period time to locate.", /* REG_ECOMPLEXITY 18 error_complexity */
136
+ "Ran out of stack space trying to match the regular expression.", /* REG_ESTACK 19 error_stack */
137
+ "Invalid or unterminated Perl (?...) sequence.", /* REG_E_PERL 20 error_perl */
138
+ "Unknown error.", /* REG_E_UNKNOWN 21 error_unknown */
139
+ };
140
+
141
+ return (n > ::boost::regex_constants::error_unknown) ? s_default_error_messages[ ::boost::regex_constants::error_unknown] : s_default_error_messages[n];
142
+ }
143
+
144
+ BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining_implementation(boost::uint_least16_t c)
145
+ {
146
+ const boost::uint_least16_t combining_ranges[] = { 0x0300, 0x0361,
147
+ 0x0483, 0x0486,
148
+ 0x0903, 0x0903,
149
+ 0x093E, 0x0940,
150
+ 0x0949, 0x094C,
151
+ 0x0982, 0x0983,
152
+ 0x09BE, 0x09C0,
153
+ 0x09C7, 0x09CC,
154
+ 0x09D7, 0x09D7,
155
+ 0x0A3E, 0x0A40,
156
+ 0x0A83, 0x0A83,
157
+ 0x0ABE, 0x0AC0,
158
+ 0x0AC9, 0x0ACC,
159
+ 0x0B02, 0x0B03,
160
+ 0x0B3E, 0x0B3E,
161
+ 0x0B40, 0x0B40,
162
+ 0x0B47, 0x0B4C,
163
+ 0x0B57, 0x0B57,
164
+ 0x0B83, 0x0B83,
165
+ 0x0BBE, 0x0BBF,
166
+ 0x0BC1, 0x0BCC,
167
+ 0x0BD7, 0x0BD7,
168
+ 0x0C01, 0x0C03,
169
+ 0x0C41, 0x0C44,
170
+ 0x0C82, 0x0C83,
171
+ 0x0CBE, 0x0CBE,
172
+ 0x0CC0, 0x0CC4,
173
+ 0x0CC7, 0x0CCB,
174
+ 0x0CD5, 0x0CD6,
175
+ 0x0D02, 0x0D03,
176
+ 0x0D3E, 0x0D40,
177
+ 0x0D46, 0x0D4C,
178
+ 0x0D57, 0x0D57,
179
+ 0x0F7F, 0x0F7F,
180
+ 0x20D0, 0x20E1,
181
+ 0x3099, 0x309A,
182
+ 0xFE20, 0xFE23,
183
+ 0xffff, 0xffff, };
184
+
185
+ const boost::uint_least16_t* p = combining_ranges + 1;
186
+ while(*p < c) p += 2;
187
+ --p;
188
+ if((c >= *p) && (c <= *(p+1)))
189
+ return true;
190
+ return false;
191
+ }
192
+
193
+ //
194
+ // these are the POSIX collating names:
195
+ //
196
+ BOOST_REGEX_DECL const char* def_coll_names[] = {
197
+ "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "alert", "backspace", "tab", "newline",
198
+ "vertical-tab", "form-feed", "carriage-return", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK",
199
+ "SYN", "ETB", "CAN", "EM", "SUB", "ESC", "IS4", "IS3", "IS2", "IS1", "space", "exclamation-mark",
200
+ "quotation-mark", "number-sign", "dollar-sign", "percent-sign", "ampersand", "apostrophe",
201
+ "left-parenthesis", "right-parenthesis", "asterisk", "plus-sign", "comma", "hyphen",
202
+ "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
203
+ "colon", "semicolon", "less-than-sign", "equals-sign", "greater-than-sign",
204
+ "question-mark", "commercial-at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
205
+ "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "left-square-bracket", "backslash",
206
+ "right-square-bracket", "circumflex", "underscore", "grave-accent", "a", "b", "c", "d", "e", "f",
207
+ "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "left-curly-bracket",
208
+ "vertical-line", "right-curly-bracket", "tilde", "DEL", "",
209
+ };
210
+
211
+ // these multi-character collating elements
212
+ // should keep most Western-European locales
213
+ // happy - we should really localise these a
214
+ // little more - but this will have to do for
215
+ // now:
216
+
217
+ BOOST_REGEX_DECL const char* def_multi_coll[] = {
218
+ "ae",
219
+ "Ae",
220
+ "AE",
221
+ "ch",
222
+ "Ch",
223
+ "CH",
224
+ "ll",
225
+ "Ll",
226
+ "LL",
227
+ "ss",
228
+ "Ss",
229
+ "SS",
230
+ "nj",
231
+ "Nj",
232
+ "NJ",
233
+ "dz",
234
+ "Dz",
235
+ "DZ",
236
+ "lj",
237
+ "Lj",
238
+ "LJ",
239
+ "",
240
+ };
241
+
242
+
243
+
244
+ BOOST_REGEX_DECL std::string BOOST_REGEX_CALL lookup_default_collate_name(const std::string& name)
245
+ {
246
+ unsigned int i = 0;
247
+ while(*def_coll_names[i])
248
+ {
249
+ if(def_coll_names[i] == name)
250
+ {
251
+ return std::string(1, char(i));
252
+ }
253
+ ++i;
254
+ }
255
+ i = 0;
256
+ while(*def_multi_coll[i])
257
+ {
258
+ if(def_multi_coll[i] == name)
259
+ {
260
+ return def_multi_coll[i];
261
+ }
262
+ ++i;
263
+ }
264
+ return std::string();
265
+ }
266
+
267
+ BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_lower(char c)
268
+ {
269
+ return static_cast<char>((std::tolower)((unsigned char)c));
270
+ }
271
+
272
+ BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_upper(char c)
273
+ {
274
+ return static_cast<char>((std::toupper)((unsigned char)c));
275
+ }
276
+ #ifndef BOOST_NO_WREGEX
277
+ BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_lower(wchar_t c)
278
+ {
279
+ return (std::towlower)(c);
280
+ }
281
+
282
+ BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_upper(wchar_t c)
283
+ {
284
+ return (std::towupper)(c);
285
+ }
286
+ #ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
287
+ BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_lower(unsigned short c)
288
+ {
289
+ return (std::towlower)(c);
290
+ }
291
+
292
+ BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_upper(unsigned short c)
293
+ {
294
+ return (std::towupper)(c);
295
+ }
296
+ #endif
297
+
298
+ #endif
299
+
300
+ BOOST_REGEX_DECL regex_constants::escape_syntax_type BOOST_REGEX_CALL get_default_escape_syntax_type(char c)
301
+ {
302
+ //
303
+ // char_syntax determines how the compiler treats a given character
304
+ // in a regular expression.
305
+ //
306
+ static regex_constants::escape_syntax_type char_syntax[] = {
307
+ regex_constants::escape_type_identity, /**/
308
+ regex_constants::escape_type_identity, /**/
309
+ regex_constants::escape_type_identity, /**/
310
+ regex_constants::escape_type_identity, /**/
311
+ regex_constants::escape_type_identity, /**/
312
+ regex_constants::escape_type_identity, /**/
313
+ regex_constants::escape_type_identity, /**/
314
+ regex_constants::escape_type_identity, /**/
315
+ regex_constants::escape_type_identity, /**/
316
+ regex_constants::escape_type_identity, /**/
317
+ regex_constants::escape_type_identity, /**/
318
+ regex_constants::escape_type_identity, /**/
319
+ regex_constants::escape_type_identity, /**/
320
+ regex_constants::escape_type_identity, /**/
321
+ regex_constants::escape_type_identity, /**/
322
+ regex_constants::escape_type_identity, /**/
323
+ regex_constants::escape_type_identity, /**/
324
+ regex_constants::escape_type_identity, /**/
325
+ regex_constants::escape_type_identity, /**/
326
+ regex_constants::escape_type_identity, /**/
327
+ regex_constants::escape_type_identity, /**/
328
+ regex_constants::escape_type_identity, /**/
329
+ regex_constants::escape_type_identity, /**/
330
+ regex_constants::escape_type_identity, /**/
331
+ regex_constants::escape_type_identity, /**/
332
+ regex_constants::escape_type_identity, /**/
333
+ regex_constants::escape_type_identity, /**/
334
+ regex_constants::escape_type_identity, /**/
335
+ regex_constants::escape_type_identity, /**/
336
+ regex_constants::escape_type_identity, /**/
337
+ regex_constants::escape_type_identity, /**/
338
+ regex_constants::escape_type_identity, /**/
339
+ regex_constants::escape_type_identity, /* */ // 32
340
+ regex_constants::escape_type_identity, /*!*/
341
+ regex_constants::escape_type_identity, /*"*/
342
+ regex_constants::escape_type_identity, /*#*/
343
+ regex_constants::escape_type_identity, /*$*/
344
+ regex_constants::escape_type_identity, /*%*/
345
+ regex_constants::escape_type_identity, /*&*/
346
+ regex_constants::escape_type_end_buffer, /*'*/
347
+ regex_constants::syntax_open_mark, /*(*/
348
+ regex_constants::syntax_close_mark, /*)*/
349
+ regex_constants::escape_type_identity, /***/
350
+ regex_constants::syntax_plus, /*+*/
351
+ regex_constants::escape_type_identity, /*,*/
352
+ regex_constants::escape_type_identity, /*-*/
353
+ regex_constants::escape_type_identity, /*.*/
354
+ regex_constants::escape_type_identity, /*/*/
355
+ regex_constants::escape_type_decimal, /*0*/
356
+ regex_constants::escape_type_backref, /*1*/
357
+ regex_constants::escape_type_backref, /*2*/
358
+ regex_constants::escape_type_backref, /*3*/
359
+ regex_constants::escape_type_backref, /*4*/
360
+ regex_constants::escape_type_backref, /*5*/
361
+ regex_constants::escape_type_backref, /*6*/
362
+ regex_constants::escape_type_backref, /*7*/
363
+ regex_constants::escape_type_backref, /*8*/
364
+ regex_constants::escape_type_backref, /*9*/
365
+ regex_constants::escape_type_identity, /*:*/
366
+ regex_constants::escape_type_identity, /*;*/
367
+ regex_constants::escape_type_left_word, /*<*/
368
+ regex_constants::escape_type_identity, /*=*/
369
+ regex_constants::escape_type_right_word, /*>*/
370
+ regex_constants::syntax_question, /*?*/
371
+ regex_constants::escape_type_identity, /*@*/
372
+ regex_constants::escape_type_start_buffer, /*A*/
373
+ regex_constants::escape_type_not_word_assert, /*B*/
374
+ regex_constants::escape_type_C, /*C*/
375
+ regex_constants::escape_type_not_class, /*D*/
376
+ regex_constants::escape_type_E, /*E*/
377
+ regex_constants::escape_type_not_class, /*F*/
378
+ regex_constants::escape_type_G, /*G*/
379
+ regex_constants::escape_type_not_class, /*H*/
380
+ regex_constants::escape_type_not_class, /*I*/
381
+ regex_constants::escape_type_not_class, /*J*/
382
+ regex_constants::escape_type_reset_start_mark, /*K*/
383
+ regex_constants::escape_type_not_class, /*L*/
384
+ regex_constants::escape_type_not_class, /*M*/
385
+ regex_constants::escape_type_named_char, /*N*/
386
+ regex_constants::escape_type_not_class, /*O*/
387
+ regex_constants::escape_type_not_property, /*P*/
388
+ regex_constants::escape_type_Q, /*Q*/
389
+ regex_constants::escape_type_line_ending, /*R*/
390
+ regex_constants::escape_type_not_class, /*S*/
391
+ regex_constants::escape_type_not_class, /*T*/
392
+ regex_constants::escape_type_not_class, /*U*/
393
+ regex_constants::escape_type_not_class, /*V*/
394
+ regex_constants::escape_type_not_class, /*W*/
395
+ regex_constants::escape_type_X, /*X*/
396
+ regex_constants::escape_type_not_class, /*Y*/
397
+ regex_constants::escape_type_Z, /*Z*/
398
+ regex_constants::escape_type_identity, /*[*/
399
+ regex_constants::escape_type_identity, /*\*/
400
+ regex_constants::escape_type_identity, /*]*/
401
+ regex_constants::escape_type_identity, /*^*/
402
+ regex_constants::escape_type_identity, /*_*/
403
+ regex_constants::escape_type_start_buffer, /*`*/
404
+ regex_constants::escape_type_control_a, /*a*/
405
+ regex_constants::escape_type_word_assert, /*b*/
406
+ regex_constants::escape_type_ascii_control, /*c*/
407
+ regex_constants::escape_type_class, /*d*/
408
+ regex_constants::escape_type_e, /*e*/
409
+ regex_constants::escape_type_control_f, /*f*/
410
+ regex_constants::escape_type_extended_backref, /*g*/
411
+ regex_constants::escape_type_class, /*h*/
412
+ regex_constants::escape_type_class, /*i*/
413
+ regex_constants::escape_type_class, /*j*/
414
+ regex_constants::escape_type_extended_backref, /*k*/
415
+ regex_constants::escape_type_class, /*l*/
416
+ regex_constants::escape_type_class, /*m*/
417
+ regex_constants::escape_type_control_n, /*n*/
418
+ regex_constants::escape_type_class, /*o*/
419
+ regex_constants::escape_type_property, /*p*/
420
+ regex_constants::escape_type_class, /*q*/
421
+ regex_constants::escape_type_control_r, /*r*/
422
+ regex_constants::escape_type_class, /*s*/
423
+ regex_constants::escape_type_control_t, /*t*/
424
+ regex_constants::escape_type_class, /*u*/
425
+ regex_constants::escape_type_control_v, /*v*/
426
+ regex_constants::escape_type_class, /*w*/
427
+ regex_constants::escape_type_hex, /*x*/
428
+ regex_constants::escape_type_class, /*y*/
429
+ regex_constants::escape_type_end_buffer, /*z*/
430
+ regex_constants::syntax_open_brace, /*{*/
431
+ regex_constants::syntax_or, /*|*/
432
+ regex_constants::syntax_close_brace, /*}*/
433
+ regex_constants::escape_type_identity, /*~*/
434
+ regex_constants::escape_type_identity, /**/
435
+ regex_constants::escape_type_identity, /**/
436
+ regex_constants::escape_type_identity, /**/
437
+ regex_constants::escape_type_identity, /**/
438
+ regex_constants::escape_type_identity, /**/
439
+ regex_constants::escape_type_identity, /**/
440
+ regex_constants::escape_type_identity, /**/
441
+ regex_constants::escape_type_identity, /**/
442
+ regex_constants::escape_type_identity, /**/
443
+ regex_constants::escape_type_identity, /**/
444
+ regex_constants::escape_type_identity, /**/
445
+ regex_constants::escape_type_identity, /**/
446
+ regex_constants::escape_type_identity, /**/
447
+ regex_constants::escape_type_identity, /**/
448
+ regex_constants::escape_type_identity, /**/
449
+ regex_constants::escape_type_identity, /**/
450
+ regex_constants::escape_type_identity, /**/
451
+ regex_constants::escape_type_identity, /**/
452
+ regex_constants::escape_type_identity, /**/
453
+ regex_constants::escape_type_identity, /**/
454
+ regex_constants::escape_type_identity, /**/
455
+ regex_constants::escape_type_identity, /**/
456
+ regex_constants::escape_type_identity, /**/
457
+ regex_constants::escape_type_identity, /**/
458
+ regex_constants::escape_type_identity, /**/
459
+ regex_constants::escape_type_identity, /**/
460
+ regex_constants::escape_type_identity, /**/
461
+ regex_constants::escape_type_identity, /**/
462
+ regex_constants::escape_type_identity, /**/
463
+ regex_constants::escape_type_identity, /**/
464
+ regex_constants::escape_type_identity, /**/
465
+ regex_constants::escape_type_identity, /**/
466
+ regex_constants::escape_type_identity, /**/
467
+ regex_constants::escape_type_identity, /**/
468
+ regex_constants::escape_type_identity, /**/
469
+ regex_constants::escape_type_identity, /**/
470
+ regex_constants::escape_type_identity, /**/
471
+ regex_constants::escape_type_identity, /**/
472
+ regex_constants::escape_type_identity, /**/
473
+ regex_constants::escape_type_identity, /**/
474
+ regex_constants::escape_type_identity, /**/
475
+ regex_constants::escape_type_identity, /**/
476
+ regex_constants::escape_type_identity, /**/
477
+ regex_constants::escape_type_identity, /**/
478
+ regex_constants::escape_type_identity, /**/
479
+ regex_constants::escape_type_identity, /**/
480
+ regex_constants::escape_type_identity, /**/
481
+ regex_constants::escape_type_identity, /**/
482
+ regex_constants::escape_type_identity, /**/
483
+ regex_constants::escape_type_identity, /**/
484
+ regex_constants::escape_type_identity, /**/
485
+ regex_constants::escape_type_identity, /**/
486
+ regex_constants::escape_type_identity, /**/
487
+ regex_constants::escape_type_identity, /**/
488
+ regex_constants::escape_type_identity, /**/
489
+ regex_constants::escape_type_identity, /**/
490
+ };
491
+
492
+ return char_syntax[(unsigned char)c];
493
+ }
494
+
495
+ BOOST_REGEX_DECL regex_constants::syntax_type BOOST_REGEX_CALL get_default_syntax_type(char c)
496
+ {
497
+ //
498
+ // char_syntax determines how the compiler treats a given character
499
+ // in a regular expression.
500
+ //
501
+ static regex_constants::syntax_type char_syntax[] = {
502
+ regex_constants::syntax_char, /**/
503
+ regex_constants::syntax_char, /**/
504
+ regex_constants::syntax_char, /**/
505
+ regex_constants::syntax_char, /**/
506
+ regex_constants::syntax_char, /**/
507
+ regex_constants::syntax_char, /**/
508
+ regex_constants::syntax_char, /**/
509
+ regex_constants::syntax_char, /**/
510
+ regex_constants::syntax_char, /**/
511
+ regex_constants::syntax_char, /**/
512
+ regex_constants::syntax_newline, /**/
513
+ regex_constants::syntax_char, /**/
514
+ regex_constants::syntax_char, /**/
515
+ regex_constants::syntax_char, /**/
516
+ regex_constants::syntax_char, /**/
517
+ regex_constants::syntax_char, /**/
518
+ regex_constants::syntax_char, /**/
519
+ regex_constants::syntax_char, /**/
520
+ regex_constants::syntax_char, /**/
521
+ regex_constants::syntax_char, /**/
522
+ regex_constants::syntax_char, /**/
523
+ regex_constants::syntax_char, /**/
524
+ regex_constants::syntax_char, /**/
525
+ regex_constants::syntax_char, /**/
526
+ regex_constants::syntax_char, /**/
527
+ regex_constants::syntax_char, /**/
528
+ regex_constants::syntax_char, /**/
529
+ regex_constants::syntax_char, /**/
530
+ regex_constants::syntax_char, /**/
531
+ regex_constants::syntax_char, /**/
532
+ regex_constants::syntax_char, /**/
533
+ regex_constants::syntax_char, /**/
534
+ regex_constants::syntax_char, /* */ // 32
535
+ regex_constants::syntax_not, /*!*/
536
+ regex_constants::syntax_char, /*"*/
537
+ regex_constants::syntax_hash, /*#*/
538
+ regex_constants::syntax_dollar, /*$*/
539
+ regex_constants::syntax_char, /*%*/
540
+ regex_constants::syntax_char, /*&*/
541
+ regex_constants::escape_type_end_buffer, /*'*/
542
+ regex_constants::syntax_open_mark, /*(*/
543
+ regex_constants::syntax_close_mark, /*)*/
544
+ regex_constants::syntax_star, /***/
545
+ regex_constants::syntax_plus, /*+*/
546
+ regex_constants::syntax_comma, /*,*/
547
+ regex_constants::syntax_dash, /*-*/
548
+ regex_constants::syntax_dot, /*.*/
549
+ regex_constants::syntax_char, /*/*/
550
+ regex_constants::syntax_digit, /*0*/
551
+ regex_constants::syntax_digit, /*1*/
552
+ regex_constants::syntax_digit, /*2*/
553
+ regex_constants::syntax_digit, /*3*/
554
+ regex_constants::syntax_digit, /*4*/
555
+ regex_constants::syntax_digit, /*5*/
556
+ regex_constants::syntax_digit, /*6*/
557
+ regex_constants::syntax_digit, /*7*/
558
+ regex_constants::syntax_digit, /*8*/
559
+ regex_constants::syntax_digit, /*9*/
560
+ regex_constants::syntax_colon, /*:*/
561
+ regex_constants::syntax_char, /*;*/
562
+ regex_constants::escape_type_left_word, /*<*/
563
+ regex_constants::syntax_equal, /*=*/
564
+ regex_constants::escape_type_right_word, /*>*/
565
+ regex_constants::syntax_question, /*?*/
566
+ regex_constants::syntax_char, /*@*/
567
+ regex_constants::syntax_char, /*A*/
568
+ regex_constants::syntax_char, /*B*/
569
+ regex_constants::syntax_char, /*C*/
570
+ regex_constants::syntax_char, /*D*/
571
+ regex_constants::syntax_char, /*E*/
572
+ regex_constants::syntax_char, /*F*/
573
+ regex_constants::syntax_char, /*G*/
574
+ regex_constants::syntax_char, /*H*/
575
+ regex_constants::syntax_char, /*I*/
576
+ regex_constants::syntax_char, /*J*/
577
+ regex_constants::syntax_char, /*K*/
578
+ regex_constants::syntax_char, /*L*/
579
+ regex_constants::syntax_char, /*M*/
580
+ regex_constants::syntax_char, /*N*/
581
+ regex_constants::syntax_char, /*O*/
582
+ regex_constants::syntax_char, /*P*/
583
+ regex_constants::syntax_char, /*Q*/
584
+ regex_constants::syntax_char, /*R*/
585
+ regex_constants::syntax_char, /*S*/
586
+ regex_constants::syntax_char, /*T*/
587
+ regex_constants::syntax_char, /*U*/
588
+ regex_constants::syntax_char, /*V*/
589
+ regex_constants::syntax_char, /*W*/
590
+ regex_constants::syntax_char, /*X*/
591
+ regex_constants::syntax_char, /*Y*/
592
+ regex_constants::syntax_char, /*Z*/
593
+ regex_constants::syntax_open_set, /*[*/
594
+ regex_constants::syntax_escape, /*\*/
595
+ regex_constants::syntax_close_set, /*]*/
596
+ regex_constants::syntax_caret, /*^*/
597
+ regex_constants::syntax_char, /*_*/
598
+ regex_constants::syntax_char, /*`*/
599
+ regex_constants::syntax_char, /*a*/
600
+ regex_constants::syntax_char, /*b*/
601
+ regex_constants::syntax_char, /*c*/
602
+ regex_constants::syntax_char, /*d*/
603
+ regex_constants::syntax_char, /*e*/
604
+ regex_constants::syntax_char, /*f*/
605
+ regex_constants::syntax_char, /*g*/
606
+ regex_constants::syntax_char, /*h*/
607
+ regex_constants::syntax_char, /*i*/
608
+ regex_constants::syntax_char, /*j*/
609
+ regex_constants::syntax_char, /*k*/
610
+ regex_constants::syntax_char, /*l*/
611
+ regex_constants::syntax_char, /*m*/
612
+ regex_constants::syntax_char, /*n*/
613
+ regex_constants::syntax_char, /*o*/
614
+ regex_constants::syntax_char, /*p*/
615
+ regex_constants::syntax_char, /*q*/
616
+ regex_constants::syntax_char, /*r*/
617
+ regex_constants::syntax_char, /*s*/
618
+ regex_constants::syntax_char, /*t*/
619
+ regex_constants::syntax_char, /*u*/
620
+ regex_constants::syntax_char, /*v*/
621
+ regex_constants::syntax_char, /*w*/
622
+ regex_constants::syntax_char, /*x*/
623
+ regex_constants::syntax_char, /*y*/
624
+ regex_constants::syntax_char, /*z*/
625
+ regex_constants::syntax_open_brace, /*{*/
626
+ regex_constants::syntax_or, /*|*/
627
+ regex_constants::syntax_close_brace, /*}*/
628
+ regex_constants::syntax_char, /*~*/
629
+ regex_constants::syntax_char, /**/
630
+ regex_constants::syntax_char, /**/
631
+ regex_constants::syntax_char, /**/
632
+ regex_constants::syntax_char, /**/
633
+ regex_constants::syntax_char, /**/
634
+ regex_constants::syntax_char, /**/
635
+ regex_constants::syntax_char, /**/
636
+ regex_constants::syntax_char, /**/
637
+ regex_constants::syntax_char, /**/
638
+ regex_constants::syntax_char, /**/
639
+ regex_constants::syntax_char, /**/
640
+ regex_constants::syntax_char, /**/
641
+ regex_constants::syntax_char, /**/
642
+ regex_constants::syntax_char, /**/
643
+ regex_constants::syntax_char, /**/
644
+ regex_constants::syntax_char, /**/
645
+ regex_constants::syntax_char, /**/
646
+ regex_constants::syntax_char, /**/
647
+ regex_constants::syntax_char, /**/
648
+ regex_constants::syntax_char, /**/
649
+ regex_constants::syntax_char, /**/
650
+ regex_constants::syntax_char, /**/
651
+ regex_constants::syntax_char, /**/
652
+ regex_constants::syntax_char, /**/
653
+ regex_constants::syntax_char, /**/
654
+ regex_constants::syntax_char, /**/
655
+ regex_constants::syntax_char, /**/
656
+ regex_constants::syntax_char, /**/
657
+ regex_constants::syntax_char, /**/
658
+ regex_constants::syntax_char, /**/
659
+ regex_constants::syntax_char, /**/
660
+ regex_constants::syntax_char, /**/
661
+ regex_constants::syntax_char, /**/
662
+ regex_constants::syntax_char, /**/
663
+ regex_constants::syntax_char, /**/
664
+ regex_constants::syntax_char, /**/
665
+ regex_constants::syntax_char, /**/
666
+ regex_constants::syntax_char, /**/
667
+ regex_constants::syntax_char, /**/
668
+ regex_constants::syntax_char, /**/
669
+ regex_constants::syntax_char, /**/
670
+ regex_constants::syntax_char, /**/
671
+ regex_constants::syntax_char, /**/
672
+ regex_constants::syntax_char, /**/
673
+ regex_constants::syntax_char, /**/
674
+ regex_constants::syntax_char, /**/
675
+ regex_constants::syntax_char, /**/
676
+ regex_constants::syntax_char, /**/
677
+ regex_constants::syntax_char, /**/
678
+ regex_constants::syntax_char, /**/
679
+ regex_constants::syntax_char, /**/
680
+ regex_constants::syntax_char, /**/
681
+ regex_constants::syntax_char, /**/
682
+ regex_constants::syntax_char, /**/
683
+ regex_constants::syntax_char, /**/
684
+ regex_constants::syntax_char, /**/
685
+ };
686
+
687
+ return char_syntax[(unsigned char)c];
688
+ }
689
+
690
+
691
+ } // re_detail
692
+ } // boost