httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject svn commit: r598339 [3/37] - in /httpd/httpd/vendor/pcre/current: ./ doc/ doc/html/ testdata/
Date Mon, 26 Nov 2007 16:50:09 GMT
Added: httpd/httpd/vendor/pcre/current/HACKING
--- httpd/httpd/vendor/pcre/current/HACKING (added)
+++ httpd/httpd/vendor/pcre/current/HACKING Mon Nov 26 08:49:53 2007
@@ -0,0 +1,414 @@
+Technical Notes about PCRE
+These are very rough technical notes that record potentially useful information 
+about PCRE internals.
+Historical note 1
+Many years ago I implemented some regular expression functions to an algorithm
+suggested by Martin Richards. These 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
+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 form the "basic" PCRE library (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. In any case, a
+first pass through the pattern is helpful for other reasons. 
+Computing the memory requirement: how it was
+Up to and including release 6.7, PCRE worked by running a very degenerate first
+pass to calculate a maximum store size, 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 the vector, 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
+actually only ever using a few hundred bytes of working memory, and without too
+many tests of the mode that might slow it down. So I re-factored the compiling
+functions to work this way. This got rid of about 600 lines of source. It
+should make future 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 are also present in the 7.0 release).
+A side effect of this work is that the previous limit of 200 on the nesting
+depth of parentheses was removed. However, there is a downside: pcre_compile()
+runs more slowly than before (30% or more, depending on the pattern) because it
+is doing a full analysis of the pattern. My hope is that this is not a big
+Traditional matching function
+The "traditional", and original, matching function is called pcre_exec(), and 
+it implements an NFA algorithm, similar to the original Henry Spencer algorithm 
+and the way that Perl works. Not surprising, since it is intended to be as 
+compatible with Perl as possible. This is the function most users of PCRE will 
+use most of the time.
+Supplementary matching function
+From PCRE 6.0, there is also a supplementary matching function called 
+pcre_dfa_exec(). 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 pcre_exec(); 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 pcre_dfa_exec() 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.
+Format of compiled patterns
+The compiled form of a pattern is a vector of bytes, containing items of
+variable length. The first byte in an item is an opcode, and the length of the
+item is either implicit in the opcode or contained in the data bytes that
+follow it. 
+In many cases below LINK_SIZE data values are specified for offsets within the 
+compiled pattern. The default value for LINK_SIZE is 2, but PCRE can be
+compiled to use 3-byte or 4-byte values for these offsets (impairing the
+performance). This is necessary only when patterns whose compiled length is
+greater than 64K are going to be processed. In this description, we assume the
+"normal" compilation options. Data values that are counts (e.g. for
+quantifiers) are always just two bytes long.
+A list of the opcodes follows:
+Opcodes with no following data
+These items are all just one byte long
+  OP_END                 end of pattern
+  OP_ANY                 match any character
+  OP_ANYBYTE             match any single byte, even in UTF-8 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, or after \n in multiline)
+  OP_WORD_BOUNDARY       \w
+  OP_NOT_DIGIT           \D
+  OP_DIGIT               \d
+  OP_NOT_HSPACE          \H
+  OP_HSPACE              \h  
+  OP_WHITESPACE          \s
+  OP_NOT_VSPACE          \V
+  OP_VSPACE              \v  
+  OP_NOT_WORDCHAR        \W
+  OP_WORDCHAR            \w
+  OP_EODN                match end of data or \n at end: \Z
+  OP_EOD                 match end of data: \z
+  OP_DOLL                $ (end of data, or before \n in multiline)
+  OP_EXTUNI              match an extended Unicode character 
+  OP_ANYNL               match any Unicode newline sequence 
+  OP_ACCEPT              )
+  OP_COMMIT              ) 
+  OP_FAIL                ) These are Perl 5.10's "backtracking     
+  OP_PRUNE               ) control verbs".                         
+  OP_SKIP                )
+  OP_THEN                )
+Repeating single characters
+The common repeats (*, +, ?) when applied to a single character use the
+following opcodes:
+In ASCII mode, these are two-byte items; in UTF-8 mode, the length is variable.
+Those with "MIN" in their name are the minimizing versions. Those with "POS" in 
+their names are possessive versions. Each is followed by the character that is
+to be repeated. Other repeats make use of
+which are followed by a two-byte count (most significant first) and the
+repeated character. 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
+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 is stored in the data
+byte. The opcodes are:
+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 bytes that encode the desired property as a type and a 
+Repeats of these items use the OP_TYPESTAR etc. set of opcodes, followed by 
+three bytes: OP_PROP or OP_NOTPROP and then the desired property type and 
+Matching literal characters
+The OP_CHAR opcode is followed by a single character that is to be matched 
+casefully. For caseless matching, OP_CHARNC is used. In UTF-8 mode, the 
+character may be more than one byte long. (Earlier versions of PCRE used 
+multi-character strings, but this was changed to allow some new features to be 
+Character classes
+If there is only one character, OP_CHAR or OP_CHARNC is used for a positive
+class, and OP_NOT for a negative one (that is, for something like [^a]).
+However, in UTF-8 mode, the use of OP_NOT applies only to characters with
+values < 128, because OP_NOT is confined to single bytes.
+Another set of repeating opcodes (OP_NOTSTAR etc.) are used for a repeated,
+negated, single-character class. The normal ones (OP_STAR etc.) are used for a
+repeated positive single-character class.
+When there's more than one character in a class and all the characters 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 bit map containing a 1
+bit for every character that is acceptable. The bits are counted from the least
+significant end of each byte.
+The reason for having both OP_CLASS and OP_NCLASS is so that, in UTF-8 mode,
+subject characters with values greater than 256 can be handled correctly. For
+OP_CLASS they don't match, whereas for OP_NCLASS they do.
+For classes containing characters with values > 255, OP_XCLASS is used. It
+optionally uses a bit map (if any characters lie within it), followed by a list
+of pairs and single characters. There is a flag character than indicates
+whether it's a positive or a negative class.
+Back references
+OP_REF is followed by two bytes containing the reference number.
+Repeating character classes and back references
+Single-character classes are handled specially (see above). This section
+applies to OP_CLASS and OP_REF. 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
+All but the last two are just single-byte items. The others are followed by
+four bytes of data, comprising the minimum and maximum repeat counts. There are 
+no special possessive opcodes for these repeats; a possessive repeat is 
+compiled into an atomic group.
+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.]
+Non-capturing brackets use the opcode OP_BRA. Originally PCRE was limited to 99
+capturing brackets and it used a different opcode for each one. From release
+3.5, the limit was removed by putting the bracket number into the data for
+higher-numbered brackets. From release 7.0 all capturing brackets are handled
+this way, using the single opcode OP_CBRA.
+A bracket opcode is followed by LINK_SIZE bytes which give the offset to the
+next alternative OP_ALT or, if there aren't any branches, to the matching
+OP_KET opcode. Each OP_ALT is followed by LINK_SIZE bytes giving the offset to
+the next one, or to the OP_KET opcode. For capturing brackets, the bracket 
+number immediately follows the offset, always as a 2-byte item.
+OP_KET is used for subpatterns that do not repeat indefinitely, while
+OP_KETRMIN and OP_KETRMAX are used for indefinite repetitions, minimally or
+maximally respectively. All three are followed by LINK_SIZE bytes 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 or OP_BRAMINZERO. These are single-byte
+opcodes which tell the matcher that skipping this subpattern entirely is a
+valid branch.
+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.
+Forward assertions are just like other subpatterns, but starting with one of
+the opcodes OP_ASSERT or OP_ASSERT_NOT. Backward assertions use the opcodes
+OP_ASSERTBACK and OP_ASSERTBACK_NOT, and the first opcode inside the assertion
+is OP_REVERSE, followed by a two byte count of the number of characters to move
+back the pointer in the subject string. When operating in UTF-8 mode, the count
+is a character count rather than a byte count. A separate count is present in
+each alternative of a lookbehind assertion, allowing them to have different
+fixed lengths.
+Once-only (atomic) subpatterns
+These are also 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.
+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 two bytes containing the
+reference number. 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, and a value of zero for "the
+whole pattern". For a DEFINE condition, just the single byte OP_DEF is used (it
+has no associated data). Otherwise, a conditional subpattern always starts with
+one of the assertions.
+Recursion either matches the current regex, or some subexpression. The opcode
+OP_RECURSE is followed by an value which is the offset to the starting bracket
+from the start of the whole pattern. From release 6.5, OP_RECURSE is 
+automatically wrapped inside OP_ONCE brackets (because otherwise some patterns 
+broke it). OP_RECURSE is also used for "subroutine" calls, even though they 
+are not strictly a recursion.
+OP_CALLOUT is followed by one byte of data that holds a callout number in the
+range 0 to 254 for manual callouts, or 255 for an automatic callout. In both 
+cases there follows a two-byte value giving the offset in the pattern to the
+start of the following item, and another two-byte item giving the length of the
+next item.
+Changing options
+If any of the /i, /m, or /s options are changed within a pattern, an OP_OPT
+opcode is compiled, followed by one byte containing the new settings of these
+flags. If there are several alternatives, there is an occurrence of OP_OPT at
+the start of all those following the first options change, to set appropriate
+options for the start of the alternative. Immediately after the end of the
+group there is another such item to reset the flags to their previous values. A
+change of flag right at the very start of the pattern can be handled entirely
+at compile time, and so does not cause anything to be put into the compiled
+Philip Hazel
+August 2007

Modified: httpd/httpd/vendor/pcre/current/INSTALL
--- httpd/httpd/vendor/pcre/current/INSTALL (original)
+++ httpd/httpd/vendor/pcre/current/INSTALL Mon Nov 26 08:49:53 2007
@@ -1,41 +1,54 @@
+Installation Instructions
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006 Free Software Foundation, Inc.
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
 Basic Installation
-   These are generic installation instructions that apply to systems that
-can run the `configure' shell script - Unix systems and any that imitate
-it. They are not specific to PCRE. There are PCRE-specific instructions
-for non-Unix systems in the file NON-UNIX-USE.
+Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
    The `configure' shell script attempts to guess correct values for
 various system-dependent variables used during compilation.  It uses
 those values to create a `Makefile' in each directory of the package.
 It may also create one or more `.h' files containing system-dependent
 definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
    If you need to do unusual things to compile the package, please try
 to figure out how `configure' could check whether to do them, and mail
 diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
-   The file `' is used to create `configure' by a program
-called `autoconf'.  You only need `' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+   The file `' (or `') is used to create
+`configure' by a program called `autoconf'.  You need `' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
 The simplest way to compile this package is:
   1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
+     `./configure' to configure the package for your system.
-     Running `configure' takes awhile.  While running, it prints some
-     messages telling which features it is checking for.
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
   2. Type `make' to compile the package.
@@ -57,49 +70,49 @@
 Compilers and Options
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  You can give `configure'
-initial values for variables by setting them in the environment.  Using
-a Bourne-compatible shell, you can do that on the command line like
-     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about.  Run `./configure --help' for
+details on some of the pertinent environment variables.
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
-Or on systems that have the `env' program, you can do it like this:
-     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+   *Note Defining Variables::, for more details.
 Compiling For Multiple Architectures
-   You can compile the package for more than one kind of computer at the
+You can compile the package for more than one kind of computer at the
 same time, by placing the object files for each architecture in their
-own directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+own directory.  To do this, you can use GNU `make'.  `cd' to the
 directory where you want the object files and executables to go and run
 the `configure' script.  `configure' automatically checks for the
 source code in the directory that `configure' is in and in `..'.
-   If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory.  After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
 Installation Names
-   By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc.  You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
    In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
+options like `--bindir=DIR' to specify different values for particular
 kinds of files.  Run `configure --help' for a list of the directories
 you can set and what kinds of files go in them.
@@ -110,7 +123,7 @@
 Optional Features
-   Some packages pay attention to `--enable-FEATURE' options to
+Some packages pay attention to `--enable-FEATURE' options to
 `configure', where FEATURE indicates an optional part of the package.
 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
 is something like `gnu-as' or `x' (for the X Window System).  The
@@ -125,48 +138,86 @@
 Specifying the System Type
-   There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on.  Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
-See the file `config.sub' for the possible values of each field.  If
+where SYSTEM can have one of these forms:
+   See the file `config.sub' for the possible values of each field.  If
 `config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
+need to know the machine type.
-   If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
 Sharing Defaults
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
 `configure' looks for `PREFIX/share/' if it exists, then
 `PREFIX/etc/' if it exists.  Or, you can set the
 `CONFIG_SITE' environment variable to the location of the site script.
 A warning: not all `configure' scripts look for a site script.
-Operation Controls
+Defining Variables
-   `configure' recognizes the following options to control how it
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
-     Use and save the results of the tests in FILE instead of
-     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
-     debugging `configure'.
+     ./configure CC=/usr/local2/bin/gcc
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug.  Until the bug is fixed you can use this workaround:
+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+`configure' Invocation
+`configure' recognizes the following options to control how it operates.
      Print a summary of the options to `configure', and exit.
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+     Alias for `--cache-file=config.cache'.
@@ -178,8 +229,6 @@
      Look for the package's source code in directory DIR.  Usually
      `configure' can determine that directory automatically.
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
-`configure' also accepts some other, not widely useful, options.

Modified: httpd/httpd/vendor/pcre/current/LICENCE
--- httpd/httpd/vendor/pcre/current/LICENCE (original)
+++ httpd/httpd/vendor/pcre/current/LICENCE Mon Nov 26 08:49:53 2007
@@ -4,18 +4,40 @@
 PCRE 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.
-Release 5 of PCRE is distributed under the terms of the "BSD" licence, as
+Release 7 of PCRE is distributed under the terms of the "BSD" licence, as
 specified below. The documentation for PCRE, supplied in the "doc"
 directory, is distributed under the same terms as the software itself.
-Written by: Philip Hazel <>
+The basic library functions are written in C and are freestanding. Also
+included in the distribution is a set of C++ wrapper functions.
+Written by:       Philip Hazel
+Email local part: ph10
+Email domain:
 University of Cambridge Computing Service,
-Cambridge, England. Phone: +44 1223 334714.
+Cambridge, England.
+Copyright (c) 1997-2007 University of Cambridge
+All rights reserved.
-Copyright (c) 1997-2004 University of Cambridge
+Contributed by:   Google Inc.
+Copyright (c) 2007, Google Inc.
 All rights reserved.
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
@@ -26,9 +48,10 @@
       notice, 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 its
-      contributors may be used to endorse or promote products derived from
-      this software without specific prior written permission.
+    * Neither the name of the University of Cambridge nor the name of Google
+      Inc. nor the names of their contributors may be used to endorse or
+      promote products derived from this software without specific prior
+      written permission.

Added: httpd/httpd/vendor/pcre/current/
--- httpd/httpd/vendor/pcre/current/ (added)
+++ httpd/httpd/vendor/pcre/current/ Mon Nov 26 08:49:53 2007
@@ -0,0 +1,364 @@
+## Process this file with automake to produce
+dist_doc_DATA = \
+  doc/pcre.txt \
+  doc/pcre-config.txt \
+  doc/pcregrep.txt \
+  doc/pcretest.txt \
+  ChangeLog \
+  NEWS \
+dist_html_DATA = \
+  doc/html/index.html \
+  doc/html/pcre.html \
+  doc/html/pcre-config.html \
+  doc/html/pcre_compile.html \
+  doc/html/pcre_compile2.html \
+  doc/html/pcre_config.html \
+  doc/html/pcre_copy_named_substring.html \
+  doc/html/pcre_copy_substring.html \
+  doc/html/pcre_dfa_exec.html \
+  doc/html/pcre_exec.html \
+  doc/html/pcre_free_substring.html \
+  doc/html/pcre_free_substring_list.html \
+  doc/html/pcre_fullinfo.html \
+  doc/html/pcre_get_named_substring.html \
+  doc/html/pcre_get_stringnumber.html \
+  doc/html/pcre_get_stringtable_entries.html \
+  doc/html/pcre_get_substring.html \
+  doc/html/pcre_get_substring_list.html \
+  doc/html/pcre_info.html \
+  doc/html/pcre_maketables.html \
+  doc/html/pcre_refcount.html \
+  doc/html/pcre_study.html \
+  doc/html/pcre_version.html \
+  doc/html/pcreapi.html \
+  doc/html/pcrebuild.html \
+  doc/html/pcrecallout.html \
+  doc/html/pcrecompat.html \
+  doc/html/pcregrep.html \
+  doc/html/pcrematching.html \
+  doc/html/pcrepartial.html \
+  doc/html/pcrepattern.html \
+  doc/html/pcreperform.html \
+  doc/html/pcreposix.html \
+  doc/html/pcreprecompile.html \
+  doc/html/pcresample.html \
+  doc/html/pcrestack.html \
+  doc/html/pcresyntax.html \
+  doc/html/pcretest.html
+pcrecpp_html = doc/html/pcrecpp.html
+dist_noinst_DATA = $(pcrecpp_html)
+html_DATA = $(pcrecpp_html)
+# The Libtool libraries to install.  We'll add to this later.
+# Unit tests you want to run when people type 'make check'.
+# TESTS is for binary unit tests, check_SCRIPTS for script-based 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 libpcre.
+noinst_PROGRAMS =
+# Additional files to delete on 'make clean' and 'make maintainer-clean'.
+# Additional files to bundle with the distribution, over and above what
+# the Autotools include by default.
+# These files contain maintenance information
+  doc/perltest.txt \
+# These files are used in the preparation of a release
+  PrepareRelease \
+  CleanTxt \
+  Detrail \
+  132html \
+  doc/index.html.src
+# These files are to do with building for Virtual Pascal
+  makevp.bat \
+  makevp_c.txt \
+  makevp_l.txt \
+  pcregexp.pas
+# These files are usable versions of pcre.h and config.h that are distributed
+# for the benefit of people who are building PCRE manually, without the
+# Autotools support.
+  pcre.h.generic \
+  config.h.generic
+	rm -f $@
+	cp -p pcre.h $@
+# These are the header files we'll install. We do not distribute pcre.h because
+# it is generated from
+nodist_include_HEADERS = \
+  pcre.h
+include_HEADERS = \
+  pcreposix.h
+# These additional headers will be be installed if C++ support is enabled. We
+# do not distribute pcrecpparg.h or pcre_stringpiece.h, as these are generated
+# from corresponding files (which we do distribute).
+nodist_include_HEADERS += \
+  pcrecpparg.h \
+  pcre_stringpiece.h
+include_HEADERS += \
+  pcrecpp.h \
+  pcre_scanner.h
+endif # WITH_PCRE_CPP
+bin_SCRIPTS = pcre-config
+## ---------------------------------------------------------------
+## The dftables program is used to rebuild character tables before compiling
+## PCRE, if --enable-rebuild-chartables is specified. It is not a user-visible
+## 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, dftables is not needed.
+noinst_PROGRAMS += dftables
+dftables_SOURCES = dftables.c
+pcre_chartables.c: dftables$(EXEEXT)
+	./dftables$(EXEEXT) $@
+pcre_chartables.c: $(srcdir)/pcre_chartables.c.dist
+	rm -f $@
+	$(LN_S) $(srcdir)/pcre_chartables.c.dist $@
+## The main pcre library
+libpcre_la_SOURCES = \
+  pcre_compile.c \
+  pcre_config.c \
+  pcre_dfa_exec.c \
+  pcre_exec.c \
+  pcre_fullinfo.c \
+  pcre_get.c \
+  pcre_globals.c \
+  pcre_info.c \
+  pcre_internal.h \
+  pcre_maketables.c \
+  pcre_newline.c \
+  pcre_ord2utf8.c \
+  pcre_refcount.c \
+  pcre_study.c \
+  pcre_tables.c \
+  pcre_try_flipped.c \
+  pcre_ucp_searchfuncs.c \
+  pcre_valid_utf8.c \
+  pcre_version.c \
+  pcre_xclass.c \
+  ucp.h \
+  ucpinternal.h \
+  ucptable.h
+## This file is generated as part of the building process, so don't distribute.
+nodist_libpcre_la_SOURCES = \
+  pcre_chartables.c
+# The pcre_printint.src file is #included by some source files, so it must be
+# distributed. The pcre_chartables.c.dist file is the default version of
+# pcre_chartables.c, used unless --enable-rebuild-chartables is specified.
+EXTRA_DIST += pcre_printint.src pcre_chartables.c.dist
+CLEANFILES += pcre_chartables.c
+## A version of the main pcre library that has a posix re API.
+libpcreposix_la_SOURCES = \
+  pcreposix.c
+libpcreposix_la_LIBADD =
+## There's a C++ library as well.
+libpcrecpp_la_SOURCES = \
+  pcrecpp_internal.h \
+ \
+ \
+libpcrecpp_la_LIBADD =
+TESTS += pcrecpp_unittest
+noinst_PROGRAMS += pcrecpp_unittest
+pcrecpp_unittest_SOURCES =
+pcrecpp_unittest_LDADD =
+TESTS += pcre_scanner_unittest
+noinst_PROGRAMS += pcre_scanner_unittest
+pcre_scanner_unittest_SOURCES =
+pcre_scanner_unittest_LDADD =
+TESTS += pcre_stringpiece_unittest
+noinst_PROGRAMS += pcre_stringpiece_unittest
+pcre_stringpiece_unittest_SOURCES =
+pcre_stringpiece_unittest_LDADD =
+endif # WITH_PCRE_CPP
+## The main unit tests
+# Each unit 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.
+TESTS += RunTest
+dist_noinst_SCRIPTS += RunTest
+EXTRA_DIST += RunTest.bat
+bin_PROGRAMS += pcretest
+pcretest_SOURCES = pcretest.c
+pcretest_LDADD =
+TESTS += RunGrepTest
+dist_noinst_SCRIPTS += RunGrepTest
+bin_PROGRAMS += pcregrep
+pcregrep_SOURCES = pcregrep.c
+pcregrep_LDADD =
+  testdata/grepinput \
+  testdata/grepinput8 \
+  testdata/grepinputv \
+  testdata/grepinputx \
+  testdata/greplist \
+  testdata/grepoutput \
+  testdata/grepoutput8 \
+  testdata/grepoutputN \
+  testdata/testinput1 \
+  testdata/testinput2 \
+  testdata/testinput3 \
+  testdata/testinput4 \
+  testdata/testinput5 \
+  testdata/testinput6 \
+  testdata/testinput7 \
+  testdata/testinput8 \
+  testdata/testinput9 \
+  testdata/testinput10 \
+  testdata/testoutput1 \
+  testdata/testoutput2 \
+  testdata/testoutput3 \
+  testdata/testoutput4 \
+  testdata/testoutput5 \
+  testdata/testoutput6 \
+  testdata/testoutput7 \
+  testdata/testoutput8 \
+  testdata/testoutput9 \
+  testdata/testoutput10 \
+  testdata/wintestinput3 \
+  testdata/wintestoutput3 \
+	testsavedregex \
+	teststderr \
+	testtry \
+        testNinput
+# PCRE demonstration program
+noinst_PROGRAMS += pcredemo
+pcredemo_SOURCES = pcredemo.c
+pcredemo_LDADD =
+## Utility rules, documentation, etc.
+# A compatibility line, the old build system worked with 'make test'
+test: check ;
+# We have .pc files for pkg-config users.
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libpcre.pc
+pkgconfig_DATA += libpcrecpp.pc
+dist_man_MANS = \
+  doc/pcre.3 \
+  doc/pcre-config.1 \
+  doc/pcre_compile.3 \
+  doc/pcre_compile2.3 \
+  doc/pcre_config.3 \
+  doc/pcre_copy_named_substring.3 \
+  doc/pcre_copy_substring.3 \
+  doc/pcre_dfa_exec.3 \
+  doc/pcre_exec.3 \
+  doc/pcre_free_substring.3 \
+  doc/pcre_free_substring_list.3 \
+  doc/pcre_fullinfo.3 \
+  doc/pcre_get_named_substring.3 \
+  doc/pcre_get_stringnumber.3 \
+  doc/pcre_get_stringtable_entries.3 \
+  doc/pcre_get_substring.3 \
+  doc/pcre_get_substring_list.3 \
+  doc/pcre_info.3 \
+  doc/pcre_maketables.3 \
+  doc/pcre_refcount.3 \
+  doc/pcre_study.3 \
+  doc/pcre_version.3 \
+  doc/pcreapi.3 \
+  doc/pcrebuild.3 \
+  doc/pcrecallout.3 \
+  doc/pcrecompat.3 \
+  doc/pcregrep.1 \
+  doc/pcrematching.3 \
+  doc/pcrepartial.3 \
+  doc/pcrepattern.3 \
+  doc/pcreperform.3 \
+  doc/pcreposix.3 \
+  doc/pcreprecompile.3 \
+  doc/pcresample.3 \
+  doc/pcrestack.3 \
+  doc/pcresyntax.3 \
+  doc/pcretest.1
+pcrecpp_man = doc/pcrecpp.3
+EXTRA_DIST += $(pcrecpp_man)
+man_MANS = $(pcrecpp_man)
+## CMake support
+  CMakeLists.txt \
+## end

View raw message