Compare commits

...

38 Commits

Author SHA1 Message Date
4cbcd3078e Merge branch 'develop' 2023-02-22 18:58:30 +00:00
237e69caf6 Merge pull request #189 from boostorg/use_core_snprintf
Simplify snprintf workaround usage.
2022-12-15 11:43:05 +00:00
372d3f7a7e Drop redundant config check. 2022-12-14 18:39:17 +00:00
362c85cf66 Add swprintf workarounds. 2022-12-14 13:06:33 +00:00
430419705b Simplify snprintf workaround usage.
Via boost/core/snprintf.hpp
Remove some obsolete workarounds.
Remove tabs in files.
Supersedes https://github.com/boostorg/regex/pull/188.
2022-12-13 18:48:59 +00:00
1cad53766e Merge pull request #187 from boostorg/test_standalone
Add testing of standalone mode.
2022-12-13 18:19:49 +00:00
a851f2141f Merge branch 'develop' 2022-06-27 18:36:04 +01:00
57aca85a8e Merge branch 'develop' 2022-06-26 18:56:14 +01:00
177ee2cc0f Merge branch 'develop' 2022-03-08 11:34:00 +00:00
63575ddad8 Merge branch 'develop' 2022-03-08 11:32:34 +00:00
e1c8a4b6a4 Merge branch 'develop' 2021-11-15 12:45:47 +00:00
9b946cfcb7 Merge branch 'develop' 2021-11-01 13:19:01 +01:00
86f82635d4 Merge branch 'develop' 2021-07-03 10:17:35 +01:00
0c8158f6ce Merge branch 'develop' 2021-06-25 19:19:28 +01:00
a3f97b5bec Merge pull request #126 from boostorg/header_fix
Add missing #include  for release.
2021-04-12 08:21:42 +01:00
13a13e58c9 Merge branch 'develop' into header_fix 2021-04-11 18:14:48 +01:00
714eaf8ae9 Merge branch 'develop' 2021-03-07 09:51:58 +00:00
78e73e29ec Merge branch 'develop'
Fixed Conflicts:
	doc/html/index.html
2021-02-25 19:27:04 +00:00
39f28ac456 Fix incorrect references to sub_match having a .last member.
Fixes https://github.com/boostorg/regex/issues/115.

# Fixed Conflicts:
#	doc/html/index.html
2020-11-23 18:12:18 +00:00
e9645776f9 Merge branch 'develop' 2020-06-23 18:57:40 +01:00
ea23777b48 Merge branch 'develop' 2020-04-28 17:41:58 +01:00
c21b52d87c Merge branch 'develop'
# Conflicts:
#	doc/html/boost_regex/background.html
#	doc/html/boost_regex/background/acknowledgements.html
#	doc/html/boost_regex/background/examples.html
#	doc/html/boost_regex/background/faq.html
#	doc/html/boost_regex/background/futher.html
#	doc/html/boost_regex/background/headers.html
#	doc/html/boost_regex/background/history.html
#	doc/html/boost_regex/background/locale.html
#	doc/html/boost_regex/background/performance.html
#	doc/html/boost_regex/background/performance/section_id1378460593.html
#	doc/html/boost_regex/background/performance/section_id1675827111.html
#	doc/html/boost_regex/background/performance/section_id3141719723.html
#	doc/html/boost_regex/background/performance/section_id3258595385.html
#	doc/html/boost_regex/background/performance/section_id3261825021.html
#	doc/html/boost_regex/background/performance/section_id3752650613.html
#	doc/html/boost_regex/background/performance/section_id4128344975.html
#	doc/html/boost_regex/background/performance/section_id4148872883.html
#	doc/html/boost_regex/background/redist.html
#	doc/html/boost_regex/background/standards.html
#	doc/html/boost_regex/background/thread_safety.html
#	doc/html/boost_regex/captures.html
#	doc/html/boost_regex/configuration.html
#	doc/html/boost_regex/configuration/algorithm.html
#	doc/html/boost_regex/configuration/compiler.html
#	doc/html/boost_regex/configuration/linkage.html
#	doc/html/boost_regex/configuration/locale.html
#	doc/html/boost_regex/configuration/tuning.html
#	doc/html/boost_regex/format.html
#	doc/html/boost_regex/format/boost_format_syntax.html
#	doc/html/boost_regex/format/perl_format.html
#	doc/html/boost_regex/format/sed_format.html
#	doc/html/boost_regex/install.html
#	doc/html/boost_regex/intro.html
#	doc/html/boost_regex/partial_matches.html
#	doc/html/boost_regex/ref.html
#	doc/html/boost_regex/ref/bad_expression.html
#	doc/html/boost_regex/ref/basic_regex.html
#	doc/html/boost_regex/ref/concepts.html
#	doc/html/boost_regex/ref/concepts/charT_concept.html
#	doc/html/boost_regex/ref/concepts/iterator_concepts.html
#	doc/html/boost_regex/ref/concepts/traits_concept.html
#	doc/html/boost_regex/ref/deprecated.html
#	doc/html/boost_regex/ref/deprecated/old_regex.html
#	doc/html/boost_regex/ref/deprecated/regex_format.html
#	doc/html/boost_regex/ref/deprecated/regex_grep.html
#	doc/html/boost_regex/ref/deprecated/regex_split.html
#	doc/html/boost_regex/ref/error_type.html
#	doc/html/boost_regex/ref/internals.html
#	doc/html/boost_regex/ref/internals/uni_iter.html
#	doc/html/boost_regex/ref/match_flag_type.html
#	doc/html/boost_regex/ref/match_results.html
#	doc/html/boost_regex/ref/non_std_strings.html
#	doc/html/boost_regex/ref/non_std_strings/icu.html
#	doc/html/boost_regex/ref/non_std_strings/icu/intro.html
#	doc/html/boost_regex/ref/non_std_strings/icu/unicode_algo.html
#	doc/html/boost_regex/ref/non_std_strings/icu/unicode_iter.html
#	doc/html/boost_regex/ref/non_std_strings/icu/unicode_types.html
#	doc/html/boost_regex/ref/non_std_strings/mfc_strings.html
#	doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_algo.html
#	doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_intro.html
#	doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_iter.html
#	doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_create.html
#	doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_types.html
#	doc/html/boost_regex/ref/posix.html
#	doc/html/boost_regex/ref/regex_iterator.html
#	doc/html/boost_regex/ref/regex_match.html
#	doc/html/boost_regex/ref/regex_replace.html
#	doc/html/boost_regex/ref/regex_search.html
#	doc/html/boost_regex/ref/regex_token_iterator.html
#	doc/html/boost_regex/ref/regex_traits.html
#	doc/html/boost_regex/ref/sub_match.html
#	doc/html/boost_regex/ref/syntax_option_type.html
#	doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_basic.html
#	doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_extended.html
#	doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_literal.html
#	doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_overview.html
#	doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_perl.html
#	doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_synopsis.html
#	doc/html/boost_regex/syntax.html
#	doc/html/boost_regex/syntax/basic_extended.html
#	doc/html/boost_regex/syntax/basic_syntax.html
#	doc/html/boost_regex/syntax/character_classes.html
#	doc/html/boost_regex/syntax/character_classes/optional_char_class_names.html
#	doc/html/boost_regex/syntax/character_classes/std_char_classes.html
#	doc/html/boost_regex/syntax/collating_names.html
#	doc/html/boost_regex/syntax/collating_names/digraphs.html
#	doc/html/boost_regex/syntax/collating_names/named_unicode.html
#	doc/html/boost_regex/syntax/collating_names/posix_symbolic_names.html
#	doc/html/boost_regex/syntax/leftmost_longest_rule.html
#	doc/html/boost_regex/syntax/perl_syntax.html
#	doc/html/boost_regex/unicode.html
#	doc/html/index.html
2019-10-31 17:47:34 +00:00
18e7b8c463 Merge branch 'develop' 2019-02-24 09:17:34 +00:00
866d546fd0 Merge branch 'develop' 2018-10-22 19:07:00 +01:00
309eee3459 doc regen. 2018-09-15 09:00:20 +01:00
c653a0bf05 Merge branch 'develop' 2018-09-15 08:59:28 +01:00
a9fc8fb5de Merge pull request #50 from boostorg/develop
Merge Fuzz-bug fixes from develop
2017-11-24 17:25:41 +00:00
b3f73b4792 Merge pull request #48 from boostorg/develop
Merge de-fuzz fixes from develop.
2017-10-29 17:03:03 +00:00
5bc2a4a301 Merge pull request #39 from boostorg/develop
Merge develop to master
2017-10-09 18:27:25 +01:00
8191d58266 Remove corpus files from master - we don't need them here! 2017-03-03 09:18:29 +00:00
f0b577a82c Merge branch 'develop' 2017-03-02 18:33:14 +00:00
ed556985d7 Merge branch 'develop' 2016-11-03 20:05:53 +01:00
bf7d64a7ef Add, and update, documentation build targets. 2016-10-10 11:39:53 -05:00
6f02c1a388 Merge branch 'develop' 2016-08-22 12:50:59 +01:00
dec7b5028d Merge branch 'develop' 2016-08-10 18:34:37 +01:00
dd20ac2669 Merge branch 'develop'
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2016-04-01 18:35:47 +01:00
d84bab7c4d Merge branch 'develop' 2016-02-15 19:32:53 +00:00
9034bd9c02 Merge branch 'develop' 2015-10-20 13:43:25 +01:00
3859 changed files with 29 additions and 6778 deletions

View File

@ -198,10 +198,10 @@ namespace boost{ namespace BOOST_REGEX_DETAIL_NS{
const char *strSource
)
{
std::size_t lenSourceWithNull = std::strlen(strSource) + 1;
if (lenSourceWithNull > sizeInBytes)
std::size_t lenSourceWithNull = std::strlen(strSource) + 1;
if (lenSourceWithNull > sizeInBytes)
return 1;
std::memcpy(strDestination, strSource, lenSourceWithNull);
std::memcpy(strDestination, strSource, lenSourceWithNull);
return 0;
}
inline std::size_t strcat_s(
@ -210,11 +210,11 @@ namespace boost{ namespace BOOST_REGEX_DETAIL_NS{
const char *strSource
)
{
std::size_t lenSourceWithNull = std::strlen(strSource) + 1;
std::size_t lenDestination = std::strlen(strDestination);
if (lenSourceWithNull + lenDestination > sizeInBytes)
std::size_t lenSourceWithNull = std::strlen(strSource) + 1;
std::size_t lenDestination = std::strlen(strDestination);
if (lenSourceWithNull + lenDestination > sizeInBytes)
return 1;
std::memcpy(strDestination + lenDestination, strSource, lenSourceWithNull);
std::memcpy(strDestination + lenDestination, strSource, lenSourceWithNull);
return 0;
}

View File

@ -116,10 +116,10 @@ namespace boost{ namespace BOOST_REGEX_DETAIL_NS{
const char *strSource
)
{
std::size_t lenSourceWithNull = std::strlen(strSource) + 1;
if (lenSourceWithNull > sizeInBytes)
std::size_t lenSourceWithNull = std::strlen(strSource) + 1;
if (lenSourceWithNull > sizeInBytes)
return 1;
std::memcpy(strDestination, strSource, lenSourceWithNull);
std::memcpy(strDestination, strSource, lenSourceWithNull);
return 0;
}
inline std::size_t strcat_s(
@ -128,11 +128,11 @@ namespace boost{ namespace BOOST_REGEX_DETAIL_NS{
const char *strSource
)
{
std::size_t lenSourceWithNull = std::strlen(strSource) + 1;
std::size_t lenDestination = std::strlen(strDestination);
if (lenSourceWithNull + lenDestination > sizeInBytes)
std::size_t lenSourceWithNull = std::strlen(strSource) + 1;
std::size_t lenDestination = std::strlen(strDestination);
if (lenSourceWithNull + lenDestination > sizeInBytes)
return 1;
std::memcpy(strDestination + lenDestination, strSource, lenSourceWithNull);
std::memcpy(strDestination + lenDestination, strSource, lenSourceWithNull);
return 0;
}

View File

@ -22,19 +22,15 @@
#include <boost/cregex.hpp>
#include <cstdio>
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std{
using ::sprintf;
using ::strcpy;
using ::strcmp;
}
#endif
#ifndef BOOST_WORKAROUND
#define BOOST_WORKAROUND(x, y) false
#endif
#ifndef BOOST_REGEX_STANDALONE
#include <boost/core/snprintf.hpp>
#else
namespace boost { namespace core { using std::snprintf; } }
#endif
namespace boost{
@ -180,13 +176,7 @@ BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int code, const regex_tA*
// We're converting an integer i to a string, and since i <= REG_E_UNKNOWN
// a five character string is *always* large enough:
//
#if !defined(BOOST_CXX_VERSION) || (BOOST_CXX_VERSION >= 201103)
int r = (std::snprintf)(localbuf, 5, "%d", i);
#elif BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
int r = (::sprintf_s)(localbuf, 5, "%d", i);
#else
int r = (std::sprintf)(localbuf, "%d", i);
#endif
int r = (boost::core::snprintf)(localbuf, 5, "%d", i);
if(r < 0)
return 0; // sprintf failed
if(std::strlen(localbuf) < buf_size)
@ -194,13 +184,7 @@ BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int code, const regex_tA*
return std::strlen(localbuf) + 1;
}
}
#if !defined(BOOST_CXX_VERSION) || (BOOST_CXX_VERSION >= 201103)
int r = (::snprintf)(localbuf, 5, "%d", 0);
#elif BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
int r = (::sprintf_s)(localbuf, 5, "%d", 0);
#else
int r = (std::sprintf)(localbuf, "%d", 0);
#endif
int r = (boost::core::snprintf)(localbuf, 5, "%d", 0);
if(r < 0)
return 0; // sprintf failed
if(std::strlen(localbuf) < buf_size)

View File

@ -25,6 +25,12 @@
#include <boost/regex.hpp>
#include <boost/cregex.hpp>
#ifndef BOOST_REGEX_STANDALONE
#include <boost/core/snprintf.hpp>
#else
namespace boost { namespace core { using std::swprintf; } }
#endif
#ifndef BOOST_WORKAROUND
#define BOOST_WORKAROUND(x, y) false
#endif
@ -37,15 +43,6 @@
#pragma warning(disable:981)
#endif
#if defined(BOOST_NO_STDC_NAMESPACE) || defined(__NetBSD__)
namespace std{
# ifndef BOOST_NO_SWPRINTF
using ::swprintf;
# endif
}
#endif
namespace boost{
namespace {
@ -181,7 +178,6 @@ BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int code, const regex_tW*
}
return result;
}
#if !defined(BOOST_NO_SWPRINTF)
if(code == REG_ATOI)
{
wchar_t localbuf[5];
@ -194,7 +190,7 @@ BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int code, const regex_tW*
#if defined(_WIN32_WCE) && !defined(UNDER_CE)
(std::swprintf)(localbuf, L"%d", i);
#else
(std::swprintf)(localbuf, 5, L"%d", i);
(boost::core::swprintf)(localbuf, 5, L"%d", i);
#endif
if(std::wcslen(localbuf) < buf_size)
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
@ -208,7 +204,7 @@ BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int code, const regex_tW*
#if defined(_WIN32_WCE) && !defined(UNDER_CE)
(std::swprintf)(localbuf, L"%d", 0);
#else
(std::swprintf)(localbuf, 5, L"%d", 0);
(boost::core::swprintf)(localbuf, 5, L"%d", 0);
#endif
if(std::wcslen(localbuf) < buf_size)
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
@ -218,7 +214,6 @@ BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int code, const regex_tW*
#endif
return std::wcslen(localbuf) + 1;
}
#endif
if(code <= (int)REG_E_UNKNOWN)
{
std::string p;

View File

@ -1 +0,0 @@
Z(((((((a+)+)+)+)+)+)+)+|Y(((((((a+)+)+)+)+)+)+)+|X(((((((a+)+)+)+)+)+)+)+|W(((((((a+)+)+)+)+)+)+)+|V(((((((a+)+)+)+)+)+)+)+|CZ(((((((a+)+)+)+)+)+)+)+|CY(((((((a+)+)+)+)+)+)+;+|CX(((((((a+)+)+)+)+)+)+)+|CW(((((((a+)+)+)+)+)+)+)+|CV(((((((a+)+)+)+)+)+)+)+|(a+)+b)

View File

@ -1 +0,0 @@
Z(((((((a+)+)+)+)+<2B><><EFBFBD><EFBFBD>)+|Y(((((((a+)+)+)+)+)++)+)|X(((((((a+)+)+)+)+)+)+)+|W((<28><>(((a+)+)+)+)+)+)+)+;|V((()++)+)+|CW(((((((a+)+)+)+((((a+)+)+)+)+)+)+)+|CZ(((((((a+)+)+)+)+)+)+)+|CY(((((((a+)+)+)+)+)+)+)+|CX(((((((a+)+)+)+)+)+)+)+|CW(((((((a+)+)+)+)+)+)+)+|CV,((((((a+)+)+)+)+)+)+)+|(a+)+bc

View File

@ -1 +0,0 @@
8^\l*(?:((.<2E>*?)\W*(?1)\<5C>*\2[abc]| |((.)\)W*(?1)\W*\4|\ZZZZZZZZZZZZZZZZZZZZZZ<1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\pd\)W*(?1)\W*\4|\ZZZZZZZZZZZZZZZZZZZZZZ<1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\pd<1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\pdquick brown )ox

View File

@ -1,73 +0,0 @@
'<27> (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional leading comment
(?: (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: (\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\04<30>)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address spec
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] ^ | \\[\x80-\xff] )* \) )*
\) )* > # trailing >
# name and address
) (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional trailing comment
<user@dom.ain>

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