/[pcre]/code/trunk/doc/html/pcretest.html
ViewVC logotype

Diff of /code/trunk/doc/html/pcretest.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1193 by ph10, Sat Jun 2 11:03:06 2012 UTC revision 1194 by ph10, Wed Oct 31 17:42:29 2012 UTC
# Line 14  man page, in case the conversion went wr Line 14  man page, in case the conversion went wr
14  <br>  <br>
15  <ul>  <ul>
16  <li><a name="TOC1" href="#SEC1">SYNOPSIS</a>  <li><a name="TOC1" href="#SEC1">SYNOPSIS</a>
17  <li><a name="TOC2" href="#SEC2">PCRE's 8-BIT and 16-BIT LIBRARIES</a>  <li><a name="TOC2" href="#SEC2">PCRE's 8-BIT, 16-BIT AND 32-BIT LIBRARIES</a>
18  <li><a name="TOC3" href="#SEC3">COMMAND LINE OPTIONS</a>  <li><a name="TOC3" href="#SEC3">COMMAND LINE OPTIONS</a>
19  <li><a name="TOC4" href="#SEC4">DESCRIPTION</a>  <li><a name="TOC4" href="#SEC4">DESCRIPTION</a>
20  <li><a name="TOC5" href="#SEC5">PATTERN MODIFIERS</a>  <li><a name="TOC5" href="#SEC5">PATTERN MODIFIERS</a>
# Line 43  details of the regular expressions thems Line 43  details of the regular expressions thems
43  documentation. For details of the PCRE library function calls and their  documentation. For details of the PCRE library function calls and their
44  options, see the  options, see the
45  <a href="pcreapi.html"><b>pcreapi</b></a>  <a href="pcreapi.html"><b>pcreapi</b></a>
46  and  ,
47  <a href="pcre16.html"><b>pcre16</b></a>  <a href="pcre16.html"><b>pcre16</b></a>
48  documentation. The input for <b>pcretest</b> is a sequence of regular expression  and
49  patterns and strings to be matched, as described below. The output shows the  <a href="pcre32.html"><b>pcre32</b></a>
50  result of each match. Options on the command line and the patterns control PCRE  documentation.
51  options and exactly what is output.  </P>
52    <P>
53    The input for <b>pcretest</b> is a sequence of regular expression patterns and
54    strings to be matched, as described below. The output shows the result of each
55    match. Options on the command line and the patterns control PCRE options and
56    exactly what is output.
57    </P>
58    <P>
59    As PCRE has evolved, it has acquired many different features, and as a result,
60    <b>pcretest</b> now has rather a lot of obscure options for testing every
61    possible feature. Some of these options are specifically designed for use in
62    conjunction with the test script and data files that are distributed as part of
63    PCRE, and are unlikely to be of use otherwise. They are all documented here,
64    but without much justification.
65  </P>  </P>
66  <br><a name="SEC2" href="#TOC1">PCRE's 8-BIT and 16-BIT LIBRARIES</a><br>  <br><a name="SEC2" href="#TOC1">PCRE's 8-BIT, 16-BIT AND 32-BIT LIBRARIES</a><br>
67  <P>  <P>
68  From release 8.30, two separate PCRE libraries can be built. The original one  From release 8.30, two separate PCRE libraries can be built. The original one
69  supports 8-bit character strings, whereas the newer 16-bit library supports  supports 8-bit character strings, whereas the newer 16-bit library supports
70  character strings encoded in 16-bit units. The <b>pcretest</b> program can be  character strings encoded in 16-bit units. From release 8.32, a third
71  used to test both libraries. However, it is itself still an 8-bit program,  library can be built, supporting character strings encoded in 32-bit units.
72  reading 8-bit input and writing 8-bit output. When testing the 16-bit library,  The <b>pcretest</b> program can be
73  the patterns and data strings are converted to 16-bit format before being  used to test all three libraries. However, it is itself still an 8-bit program,
74  passed to the PCRE library functions. Results are converted to 8-bit for  reading 8-bit input and writing 8-bit output. When testing the 16-bit or 32-bit
75  output.  library, the patterns and data strings are converted to 16- or 32-bit format
76    before being passed to the PCRE library functions. Results are converted to
77    8-bit for output.
78  </P>  </P>
79  <P>  <P>
80  References to functions and structures of the form <b>pcre[16]_xx</b> below  References to functions and structures of the form <b>pcre[16|32]_xx</b> below
81  mean "<b>pcre_xx</b> when using the 8-bit library or <b>pcre16_xx</b> when using  mean "<b>pcre_xx</b> when using the 8-bit library or <b>pcre16_xx</b> when using
82  the 16-bit library".  the 16-bit library".
83  </P>  </P>
84  <br><a name="SEC3" href="#TOC1">COMMAND LINE OPTIONS</a><br>  <br><a name="SEC3" href="#TOC1">COMMAND LINE OPTIONS</a><br>
85  <P>  <P>
86  <b>-16</b>  <b>-8</b>
87  If both the 8-bit and the 16-bit libraries have been built, this option causes  If both the 8-bit library has been built, this option causes the 8-bit library
88  the 16-bit library to be used. If only the 16-bit library has been built, this  to be used (which is the default); if the 8-bit library has not been built,
 is the default (so has no effect). If only the 8-bit library has been built,  
89  this option causes an error.  this option causes an error.
90  </P>  </P>
91  <P>  <P>
92    <b>-16</b>
93    If both the 8-bit or the 32-bit, and the 16-bit libraries have been built, this
94    option causes the 16-bit library to be used. If only the 16-bit library has been
95    built, this is the default (so has no effect). If only the 8-bit or the 32-bit
96    library has been built, this option causes an error.
97    </P>
98    <P>
99    <b>-32</b>
100    If both the 8-bit or the 16-bit, and the 32-bit libraries have been built, this
101    option causes the 32-bit library to be used. If only the 32-bit library has been
102    built, this is the default (so has no effect). If only the 8-bit or the 16-bit
103    library has been built, this option causes an error.
104    </P>
105    <P>
106  <b>-b</b>  <b>-b</b>
107  Behave as if each pattern has the <b>/B</b> (show byte code) modifier; the  Behave as if each pattern has the <b>/B</b> (show byte code) modifier; the
108  internal form is output after compilation.  internal form is output after compilation.
# Line 91  Output information about a specific buil Line 119  Output information about a specific buil
119  functionality is intended for use in scripts such as <b>RunTest</b>. The  functionality is intended for use in scripts such as <b>RunTest</b>. The
120  following options output the value indicated:  following options output the value indicated:
121  <pre>  <pre>
122      ebcdic-nl  the code for LF (= NL) in an EBCDIC environment:
123                   0x15 or 0x25
124                   0 if used in an ASCII environment
125    linksize   the internal link size (2, 3, or 4)    linksize   the internal link size (2, 3, or 4)
126    newline    the default newline setting:    newline    the default newline setting:
127                 CR, LF, CRLF, ANYCRLF, or ANY                 CR, LF, CRLF, ANYCRLF, or ANY
128  </pre>  </pre>
129  The following options output 1 for true or zero for false:  The following options output 1 for true or zero for false:
130  <pre>  <pre>
131      ebcdic     compiled for an EBCDIC environment
132    jit        just-in-time support is available    jit        just-in-time support is available
133    pcre16     the 16-bit library was built    pcre16     the 16-bit library was built
134      pcre32     the 32-bit library was built
135    pcre8      the 8-bit library was built    pcre8      the 8-bit library was built
136    ucp        Unicode property support is available    ucp        Unicode property support is available
137    utf        UTF-8 and/or UTF-16 support is available    utf        UTF-8 and/or UTF-16 and/or UTF-32 support is available
138  </PRE>  </PRE>
139  </P>  </P>
140  <P>  <P>
# Line 113  form and information about the compiled Line 146  form and information about the compiled
146  <P>  <P>
147  <b>-dfa</b>  <b>-dfa</b>
148  Behave as if each data line contains the \D escape sequence; this causes the  Behave as if each data line contains the \D escape sequence; this causes the
149  alternative matching function, <b>pcre[16]_dfa_exec()</b>, to be used instead of  alternative matching function, <b>pcre[16|32]_dfa_exec()</b>, to be used instead
150  the standard <b>pcre[16]_exec()</b> function (more detail is given below).  of the standard <b>pcre[16|32]_exec()</b> function (more detail is given below).
151  </P>  </P>
152  <P>  <P>
153  <b>-help</b>  <b>-help</b>
# Line 129  compiled pattern is given after compilat Line 162  compiled pattern is given after compilat
162  <b>-M</b>  <b>-M</b>
163  Behave as if each data line contains the \M escape sequence; this causes  Behave as if each data line contains the \M escape sequence; this causes
164  PCRE to discover the minimum MATCH_LIMIT and MATCH_LIMIT_RECURSION settings by  PCRE to discover the minimum MATCH_LIMIT and MATCH_LIMIT_RECURSION settings by
165  calling <b>pcre[16]_exec()</b> repeatedly with different limits.  calling <b>pcre[16|32]_exec()</b> repeatedly with different limits.
166  </P>  </P>
167  <P>  <P>
168  <b>-m</b>  <b>-m</b>
# Line 140  bytes for both libraries. Line 173  bytes for both libraries.
173  <P>  <P>
174  <b>-o</b> <i>osize</i>  <b>-o</b> <i>osize</i>
175  Set the number of elements in the output vector that is used when calling  Set the number of elements in the output vector that is used when calling
176  <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b> to be <i>osize</i>. The  <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b> to be <i>osize</i>. The
177  default value is 45, which is enough for 14 capturing subexpressions for  default value is 45, which is enough for 14 capturing subexpressions for
178  <b>pcre[16]_exec()</b> or 22 different matches for <b>pcre[16]_dfa_exec()</b>.  <b>pcre[16|32]_exec()</b> or 22 different matches for
179    <b>pcre[16|32]_dfa_exec()</b>.
180  The vector size can be changed for individual matching calls by including \O  The vector size can be changed for individual matching calls by including \O
181  in the data line (see below).  in the data line (see below).
182  </P>  </P>
# Line 165  megabytes. Line 199  megabytes.
199  <b>-s</b> or <b>-s+</b>  <b>-s</b> or <b>-s+</b>
200  Behave as if each pattern has the <b>/S</b> modifier; in other words, force each  Behave as if each pattern has the <b>/S</b> modifier; in other words, force each
201  pattern to be studied. If <b>-s+</b> is used, all the JIT compile options are  pattern to be studied. If <b>-s+</b> is used, all the JIT compile options are
202  passed to <b>pcre[16]_study()</b>, causing just-in-time optimization to be set  passed to <b>pcre[16|32]_study()</b>, causing just-in-time optimization to be set
203  up if it is available, for both full and partial matching. Specific JIT compile  up if it is available, for both full and partial matching. Specific JIT compile
204  options can be selected by following <b>-s+</b> with a digit in the range 1 to  options can be selected by following <b>-s+</b> with a digit in the range 1 to
205  7, which selects the JIT compile modes as follows:  7, which selects the JIT compile modes as follows:
# Line 180  options can be selected by following <b> Line 214  options can be selected by following <b>
214  If <b>-s++</b> is used instead of <b>-s+</b> (with or without a following digit),  If <b>-s++</b> is used instead of <b>-s+</b> (with or without a following digit),
215  the text "(JIT)" is added to the first output line after a match or no match  the text "(JIT)" is added to the first output line after a match or no match
216  when JIT-compiled code was actually used.  when JIT-compiled code was actually used.
217  </P>  <br>
218  <P>  <br>
219    Note that there are pattern options that can override <b>-s</b>, either
220    specifying no studying at all, or suppressing JIT compilation.
221    <br>
222    <br>
223  If the <b>/I</b> or <b>/D</b> option is present on a pattern (requesting output  If the <b>/I</b> or <b>/D</b> option is present on a pattern (requesting output
224  about the compiled pattern), information about the result of studying is not  about the compiled pattern), information about the result of studying is not
225  included when studying is caused only by <b>-s</b> and neither <b>-i</b> nor  included when studying is caused only by <b>-s</b> and neither <b>-i</b> nor
# Line 275  pcretest to read the next line as a cont Line 313  pcretest to read the next line as a cont
313  <br><a name="SEC5" href="#TOC1">PATTERN MODIFIERS</a><br>  <br><a name="SEC5" href="#TOC1">PATTERN MODIFIERS</a><br>
314  <P>  <P>
315  A pattern may be followed by any number of modifiers, which are mostly single  A pattern may be followed by any number of modifiers, which are mostly single
316  characters. Following Perl usage, these are referred to below as, for example,  characters, though some of these can be qualified by further characters.
317  "the <b>/i</b> modifier", even though the delimiter of the pattern need not  Following Perl usage, these are referred to below as, for example, "the
318  always be a slash, and no slash is used when writing modifiers. White space may  <b>/i</b> modifier", even though the delimiter of the pattern need not always be
319  appear between the final pattern delimiter and the first modifier, and between  a slash, and no slash is used when writing modifiers. White space may appear
320  the modifiers themselves.  between the final pattern delimiter and the first modifier, and between the
321    modifiers themselves. For reference, here is a complete list of modifiers. They
322    fall into several groups that are described in detail in the following
323    sections.
324    <pre>
325      <b>/8</b>              set UTF mode
326      <b>/?</b>              disable UTF validity check
327      <b>/+</b>              show remainder of subject after match
328      <b>/=</b>              show all captures (not just those that are set)
329    
330      <b>/A</b>              set PCRE_ANCHORED
331      <b>/B</b>              show compiled code
332      <b>/C</b>              set PCRE_AUTO_CALLOUT
333      <b>/D</b>              same as <b>/B</b> plus <b>/I</b>
334      <b>/E</b>              set PCRE_DOLLAR_ENDONLY
335      <b>/F</b>              flip byte order in compiled pattern
336      <b>/f</b>              set PCRE_FIRSTLINE
337      <b>/G</b>              find all matches (shorten string)
338      <b>/g</b>              find all matches (use startoffset)
339      <b>/I</b>              show information about pattern
340      <b>/i</b>              set PCRE_CASELESS
341      <b>/J</b>              set PCRE_DUPNAMES
342      <b>/K</b>              show backtracking control names
343      <b>/L</b>              set locale
344      <b>/M</b>              show compiled memory size
345      <b>/m</b>              set PCRE_MULTILINE
346      <b>/N</b>              set PCRE_NO_AUTO_CAPTURE
347      <b>/P</b>              use the POSIX wrapper
348      <b>/S</b>              study the pattern after compilation
349      <b>/s</b>              set PCRE_DOTALL
350      <b>/T</b>              select character tables
351      <b>/U</b>              set PCRE_UNGREEDY
352      <b>/W</b>              set PCRE_UCP
353      <b>/X</b>              set PCRE_EXTRA
354      <b>/x</b>              set PCRE_EXTENDED
355      <b>/Y</b>              set PCRE_NO_START_OPTIMIZE
356      <b>/Z</b>              don't show lengths in <b>/B</b> output
357    
358      <b>/&#60;any&#62;</b>          set PCRE_NEWLINE_ANY
359      <b>/&#60;anycrlf&#62;</b>      set PCRE_NEWLINE_ANYCRLF
360      <b>/&#60;cr&#62;</b>           set PCRE_NEWLINE_CR
361      <b>/&#60;crlf&#62;</b>         set PCRE_NEWLINE_CRLF
362      <b>/&#60;lf&#62;</b>           set PCRE_NEWLINE_LF
363      <b>/&#60;bsr_anycrlf&#62;</b>  set PCRE_BSR_ANYCRLF
364      <b>/&#60;bsr_unicode&#62;</b>  set PCRE_BSR_UNICODE
365      <b>/&#60;JS&#62;</b>           set PCRE_JAVASCRIPT_COMPAT
366    
367    </PRE>
368  </P>  </P>
369    <br><b>
370    Perl-compatible modifiers
371    </b><br>
372  <P>  <P>
373  The <b>/i</b>, <b>/m</b>, <b>/s</b>, and <b>/x</b> modifiers set the PCRE_CASELESS,  The <b>/i</b>, <b>/m</b>, <b>/s</b>, and <b>/x</b> modifiers set the PCRE_CASELESS,
374  PCRE_MULTILINE, PCRE_DOTALL, or PCRE_EXTENDED options, respectively, when  PCRE_MULTILINE, PCRE_DOTALL, or PCRE_EXTENDED options, respectively, when
375  <b>pcre[16]_compile()</b> is called. These four modifier letters have the same  <b>pcre[16|32]_compile()</b> is called. These four modifier letters have the same
376  effect as they do in Perl. For example:  effect as they do in Perl. For example:
377  <pre>  <pre>
378    /caseless/i    /caseless/i
379  </pre>  
380    </PRE>
381    </P>
382    <br><b>
383    Modifiers for other PCRE options
384    </b><br>
385    <P>
386  The following table shows additional modifiers for setting PCRE compile-time  The following table shows additional modifiers for setting PCRE compile-time
387  options that do not correspond to anything in Perl:  options that do not correspond to anything in Perl:
388  <pre>  <pre>
# Line 298  options that do not correspond to anythi Line 392  options that do not correspond to anythi
392    <b>/8</b>              PCRE_UTF16          ) when using the 16-bit    <b>/8</b>              PCRE_UTF16          ) when using the 16-bit
393    <b>/?</b>              PCRE_NO_UTF16_CHECK )   library    <b>/?</b>              PCRE_NO_UTF16_CHECK )   library
394    
395      <b>/8</b>              PCRE_UTF32          ) when using the 32-bit
396      <b>/?</b>              PCRE_NO_UTF32_CHECK )   library
397    
398    <b>/A</b>              PCRE_ANCHORED    <b>/A</b>              PCRE_ANCHORED
399    <b>/C</b>              PCRE_AUTO_CALLOUT    <b>/C</b>              PCRE_AUTO_CALLOUT
400    <b>/E</b>              PCRE_DOLLAR_ENDONLY    <b>/E</b>              PCRE_DOLLAR_ENDONLY
# Line 308  options that do not correspond to anythi Line 405  options that do not correspond to anythi
405    <b>/W</b>              PCRE_UCP    <b>/W</b>              PCRE_UCP
406    <b>/X</b>              PCRE_EXTRA    <b>/X</b>              PCRE_EXTRA
407    <b>/Y</b>              PCRE_NO_START_OPTIMIZE    <b>/Y</b>              PCRE_NO_START_OPTIMIZE
408    <b>/&#60;JS&#62;</b>           PCRE_JAVASCRIPT_COMPAT    <b>/&#60;any&#62;</b>          PCRE_NEWLINE_ANY
409      <b>/&#60;anycrlf&#62;</b>      PCRE_NEWLINE_ANYCRLF
410    <b>/&#60;cr&#62;</b>           PCRE_NEWLINE_CR    <b>/&#60;cr&#62;</b>           PCRE_NEWLINE_CR
   <b>/&#60;lf&#62;</b>           PCRE_NEWLINE_LF  
411    <b>/&#60;crlf&#62;</b>         PCRE_NEWLINE_CRLF    <b>/&#60;crlf&#62;</b>         PCRE_NEWLINE_CRLF
412    <b>/&#60;anycrlf&#62;</b>      PCRE_NEWLINE_ANYCRLF    <b>/&#60;lf&#62;</b>           PCRE_NEWLINE_LF
   <b>/&#60;any&#62;</b>          PCRE_NEWLINE_ANY  
413    <b>/&#60;bsr_anycrlf&#62;</b>  PCRE_BSR_ANYCRLF    <b>/&#60;bsr_anycrlf&#62;</b>  PCRE_BSR_ANYCRLF
414    <b>/&#60;bsr_unicode&#62;</b>  PCRE_BSR_UNICODE    <b>/&#60;bsr_unicode&#62;</b>  PCRE_BSR_UNICODE
415      <b>/&#60;JS&#62;</b>           PCRE_JAVASCRIPT_COMPAT
416  </pre>  </pre>
417  The modifiers that are enclosed in angle brackets are literal strings as shown,  The modifiers that are enclosed in angle brackets are literal strings as shown,
418  including the angle brackets, but the letters within can be in either case.  including the angle brackets, but the letters within can be in either case.
# Line 323  This example sets multiline matching wit Line 420  This example sets multiline matching wit
420  <pre>  <pre>
421    /^abc/m&#60;CRLF&#62;    /^abc/m&#60;CRLF&#62;
422  </pre>  </pre>
423  As well as turning on the PCRE_UTF8/16 option, the <b>/8</b> modifier causes  As well as turning on the PCRE_UTF8/16/32 option, the <b>/8</b> modifier causes
424  all non-printing characters in output strings to be printed using the  all non-printing characters in output strings to be printed using the
425  \x{hh...} notation. Otherwise, those less than 0x100 are output in hex without  \x{hh...} notation. Otherwise, those less than 0x100 are output in hex without
426  the curly brackets.  the curly brackets.
# Line 341  Searching for all possible matches withi Line 438  Searching for all possible matches withi
438  by the <b>/g</b> or <b>/G</b> modifier. After finding a match, PCRE is called  by the <b>/g</b> or <b>/G</b> modifier. After finding a match, PCRE is called
439  again to search the remainder of the subject string. The difference between  again to search the remainder of the subject string. The difference between
440  <b>/g</b> and <b>/G</b> is that the former uses the <i>startoffset</i> argument to  <b>/g</b> and <b>/G</b> is that the former uses the <i>startoffset</i> argument to
441  <b>pcre[16]_exec()</b> to start searching at a new point within the entire  <b>pcre[16|32]_exec()</b> to start searching at a new point within the entire
442  string (which is in effect what Perl does), whereas the latter passes over a  string (which is in effect what Perl does), whereas the latter passes over a
443  shortened substring. This makes a difference to the matching process if the  shortened substring. This makes a difference to the matching process if the
444  pattern begins with a lookbehind assertion (including \b or \B).  pattern begins with a lookbehind assertion (including \b or \B).
445  </P>  </P>
446  <P>  <P>
447  If any call to <b>pcre[16]_exec()</b> in a <b>/g</b> or <b>/G</b> sequence matches  If any call to <b>pcre[16|32]_exec()</b> in a <b>/g</b> or <b>/G</b> sequence matches
448  an empty string, the next call is done with the PCRE_NOTEMPTY_ATSTART and  an empty string, the next call is done with the PCRE_NOTEMPTY_ATSTART and
449  PCRE_ANCHORED flags set in order to search for another, non-empty, match at the  PCRE_ANCHORED flags set in order to search for another, non-empty, match at the
450  same point. If this second match fails, the start offset is advanced, and the  same point. If this second match fails, the start offset is advanced, and the
# Line 378  modifier because /S+ and /S++ have other Line 475  modifier because /S+ and /S++ have other
475  The <b>/=</b> modifier requests that the values of all potential captured  The <b>/=</b> modifier requests that the values of all potential captured
476  parentheses be output after a match. By default, only those up to the highest  parentheses be output after a match. By default, only those up to the highest
477  one actually used in the match are output (corresponding to the return code  one actually used in the match are output (corresponding to the return code
478  from <b>pcre[16]_exec()</b>). Values in the offsets vector corresponding to  from <b>pcre[16|32]_exec()</b>). Values in the offsets vector corresponding to
479  higher numbers should be set to -1, and these are output as "&#60;unset&#62;". This  higher numbers should be set to -1, and these are output as "&#60;unset&#62;". This
480  modifier gives a way of checking that this is happening.  modifier gives a way of checking that this is happening.
481  </P>  </P>
# Line 406  below. Line 503  below.
503  <P>  <P>
504  The <b>/I</b> modifier requests that <b>pcretest</b> output information about the  The <b>/I</b> modifier requests that <b>pcretest</b> output information about the
505  compiled pattern (whether it is anchored, has a fixed first character, and  compiled pattern (whether it is anchored, has a fixed first character, and
506  so on). It does this by calling <b>pcre[16]_fullinfo()</b> after compiling a  so on). It does this by calling <b>pcre[16|32]_fullinfo()</b> after compiling a
507  pattern. If the pattern is studied, the results of that are also output.  pattern. If the pattern is studied, the results of that are also output.
508  </P>  </P>
509  <P>  <P>
510  The <b>/K</b> modifier requests <b>pcretest</b> to show names from backtracking  The <b>/K</b> modifier requests <b>pcretest</b> to show names from backtracking
511  control verbs that are returned from calls to <b>pcre[16]_exec()</b>. It causes  control verbs that are returned from calls to <b>pcre[16|32]_exec()</b>. It causes
512  <b>pcretest</b> to create a <b>pcre[16]_extra</b> block if one has not already  <b>pcretest</b> to create a <b>pcre[16|32]_extra</b> block if one has not already
513  been created by a call to <b>pcre[16]_study()</b>, and to set the  been created by a call to <b>pcre[16|32]_study()</b>, and to set the
514  PCRE_EXTRA_MARK flag and the <b>mark</b> field within it, every time that  PCRE_EXTRA_MARK flag and the <b>mark</b> field within it, every time that
515  <b>pcre[16]_exec()</b> is called. If the variable that the <b>mark</b> field  <b>pcre[16|32]_exec()</b> is called. If the variable that the <b>mark</b> field
516  points to is non-NULL for a match, non-match, or partial match, <b>pcretest</b>  points to is non-NULL for a match, non-match, or partial match, <b>pcretest</b>
517  prints the string to which it points. For a match, this is shown on a line by  prints the string to which it points. For a match, this is shown on a line by
518  itself, tagged with "MK:". For a non-match it is added to the message.  itself, tagged with "MK:". For a non-match it is added to the message.
# Line 427  example, Line 524  example,
524    /pattern/Lfr_FR    /pattern/Lfr_FR
525  </pre>  </pre>
526  For this reason, it must be the last modifier. The given locale is set,  For this reason, it must be the last modifier. The given locale is set,
527  <b>pcre[16]_maketables()</b> is called to build a set of character tables for  <b>pcre[16|32]_maketables()</b> is called to build a set of character tables for
528  the locale, and this is then passed to <b>pcre[16]_compile()</b> when compiling  the locale, and this is then passed to <b>pcre[16|32]_compile()</b> when compiling
529  the regular expression. Without an <b>/L</b> (or <b>/T</b>) modifier, NULL is  the regular expression. Without an <b>/L</b> (or <b>/T</b>) modifier, NULL is
530  passed as the tables pointer; that is, <b>/L</b> applies only to the expression  passed as the tables pointer; that is, <b>/L</b> applies only to the expression
531  on which it appears.  on which it appears.
# Line 436  on which it appears. Line 533  on which it appears.
533  <P>  <P>
534  The <b>/M</b> modifier causes the size in bytes of the memory block used to hold  The <b>/M</b> modifier causes the size in bytes of the memory block used to hold
535  the compiled pattern to be output. This does not include the size of the  the compiled pattern to be output. This does not include the size of the
536  <b>pcre[16]</b> block; it is just the actual compiled data. If the pattern is  <b>pcre[16|32]</b> block; it is just the actual compiled data. If the pattern is
537  successfully studied with the PCRE_STUDY_JIT_COMPILE option, the size of the  successfully studied with the PCRE_STUDY_JIT_COMPILE option, the size of the
538  JIT compiled code is also output.  JIT compiled code is also output.
539  </P>  </P>
540  <P>  <P>
541  If the <b>/S</b> modifier appears once, it causes <b>pcre[16]_study()</b> to be  The <b>/S</b> modifier causes <b>pcre[16|32]_study()</b> to be called after the
542  called after the expression has been compiled, and the results used when the  expression has been compiled, and the results used when the expression is
543  expression is matched. If <b>/S</b> appears twice, it suppresses studying, even  matched. There are a number of qualifying characters that may follow <b>/S</b>.
544    They may appear in any order.
545    </P>
546    <P>
547    If <b>S</b> is followed by an exclamation mark, <b>pcre[16|32]_study()</b> is called
548    with the PCRE_STUDY_EXTRA_NEEDED option, causing it always to return a
549    <b>pcre_extra</b> block, even when studying discovers no useful information.
550    </P>
551    <P>
552    If <b>/S</b> is followed by a second S character, it suppresses studying, even
553  if it was requested externally by the <b>-s</b> command line option. This makes  if it was requested externally by the <b>-s</b> command line option. This makes
554  it possible to specify that certain patterns are always studied, and others are  it possible to specify that certain patterns are always studied, and others are
555  never studied, independently of <b>-s</b>. This feature is used in the test  never studied, independently of <b>-s</b>. This feature is used in the test
556  files in a few cases where the output is different when the pattern is studied.  files in a few cases where the output is different when the pattern is studied.
557  </P>  </P>
558  <P>  <P>
559  If the <b>/S</b> modifier is immediately followed by a + character, the call to  If the <b>/S</b> modifier is followed by a + character, the call to
560  <b>pcre[16]_study()</b> is made with all the JIT study options, requesting  <b>pcre[16|32]_study()</b> is made with all the JIT study options, requesting
561  just-in-time optimization support if it is available, for both normal and  just-in-time optimization support if it is available, for both normal and
562  partial matching. If you want to restrict the JIT compiling modes, you can  partial matching. If you want to restrict the JIT compiling modes, you can
563  follow <b>/S+</b> with a digit in the range 1 to 7:  follow <b>/S+</b> with a digit in the range 1 to 7:
# Line 473  immediately after <b>/S</b> or <b>/S+</b Line 579  immediately after <b>/S</b> or <b>/S+</b
579  </P>  </P>
580  <P>  <P>
581  If JIT studying is successful, the compiled JIT code will automatically be used  If JIT studying is successful, the compiled JIT code will automatically be used
582  when <b>pcre[16]_exec()</b> is run, except when incompatible run-time options  when <b>pcre[16|32]_exec()</b> is run, except when incompatible run-time options
583  are specified. For more details, see the  are specified. For more details, see the
584  <a href="pcrejit.html"><b>pcrejit</b></a>  <a href="pcrejit.html"><b>pcrejit</b></a>
585  documentation. See also the <b>\J</b> escape sequence below for a way of  documentation. See also the <b>\J</b> escape sequence below for a way of
586  setting the size of the JIT stack.  setting the size of the JIT stack.
587  </P>  </P>
588  <P>  <P>
589    Finally, if <b>/S</b> is followed by a minus character, JIT compilation is
590    suppressed, even if it was requested externally by the <b>-s</b> command line
591    option. This makes it possible to specify that JIT is never to be used for
592    certain patterns.
593    </P>
594    <P>
595  The <b>/T</b> modifier must be followed by a single digit. It causes a specific  The <b>/T</b> modifier must be followed by a single digit. It causes a specific
596  set of built-in character tables to be passed to <b>pcre[16]_compile()</b>. It  set of built-in character tables to be passed to <b>pcre[16|32]_compile()</b>. It
597  is used in the standard PCRE tests to check behaviour with different character  is used in the standard PCRE tests to check behaviour with different character
598  tables. The digit specifies the tables as follows:  tables. The digit specifies the tables as follows:
599  <pre>  <pre>
# Line 514  ignored. Line 626  ignored.
626  </P>  </P>
627  <br><a name="SEC6" href="#TOC1">DATA LINES</a><br>  <br><a name="SEC6" href="#TOC1">DATA LINES</a><br>
628  <P>  <P>
629  Before each data line is passed to <b>pcre[16]_exec()</b>, leading and trailing  Before each data line is passed to <b>pcre[16|32]_exec()</b>, leading and trailing
630  white space is removed, and it is then scanned for \ escapes. Some of these  white space is removed, and it is then scanned for \ escapes. Some of these
631  are pretty esoteric features, intended for checking out some of the more  are pretty esoteric features, intended for checking out some of the more
632  complicated features of PCRE. If you are just testing "ordinary" regular  complicated features of PCRE. If you are just testing "ordinary" regular
# Line 531  recognized: Line 643  recognized:
643    \t         tab (\x09)    \t         tab (\x09)
644    \v         vertical tab (\x0b)    \v         vertical tab (\x0b)
645    \nnn       octal character (up to 3 octal digits); always    \nnn       octal character (up to 3 octal digits); always
646                 a byte unless &#62; 255 in UTF-8 or 16-bit mode                 a byte unless &#62; 255 in UTF-8 or 16-bit or 32-bit mode
647    \xhh       hexadecimal byte (up to 2 hex digits)    \xhh       hexadecimal byte (up to 2 hex digits)
648    \x{hh...}  hexadecimal character (any number of hex digits)    \x{hh...}  hexadecimal character (any number of hex digits)
649    \A         pass the PCRE_ANCHORED option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>    \A         pass the PCRE_ANCHORED option to <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>
650    \B         pass the PCRE_NOTBOL option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>    \B         pass the PCRE_NOTBOL option to <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>
651    \Cdd       call pcre[16]_copy_substring() for substring dd after a successful match (number less than 32)    \Cdd       call pcre[16|32]_copy_substring() for substring dd after a successful match (number less than 32)
652    \Cname     call pcre[16]_copy_named_substring() for substring "name" after a successful match (name termin-    \Cname     call pcre[16|32]_copy_named_substring() for substring "name" after a successful match (name termin-
653                 ated by next non alphanumeric character)                 ated by next non alphanumeric character)
654    \C+        show the current captured substrings at callout time    \C+        show the current captured substrings at callout time
655    \C-        do not supply a callout function    \C-        do not supply a callout function
656    \C!n       return 1 instead of 0 when callout number n is reached    \C!n       return 1 instead of 0 when callout number n is reached
657    \C!n!m     return 1 instead of 0 when callout number n is reached for the nth time    \C!n!m     return 1 instead of 0 when callout number n is reached for the nth time
658    \C*n       pass the number n (may be negative) as callout data; this is used as the callout return value    \C*n       pass the number n (may be negative) as callout data; this is used as the callout return value
659    \D         use the <b>pcre[16]_dfa_exec()</b> match function    \D         use the <b>pcre[16|32]_dfa_exec()</b> match function
660    \F         only shortest match for <b>pcre[16]_dfa_exec()</b>    \F         only shortest match for <b>pcre[16|32]_dfa_exec()</b>
661    \Gdd       call pcre[16]_get_substring() for substring dd after a successful match (number less than 32)    \Gdd       call pcre[16|32]_get_substring() for substring dd after a successful match (number less than 32)
662    \Gname     call pcre[16]_get_named_substring() for substring "name" after a successful match (name termin-    \Gname     call pcre[16|32]_get_named_substring() for substring "name" after a successful match (name termin-
663                 ated by next non-alphanumeric character)                 ated by next non-alphanumeric character)
664    \Jdd       set up a JIT stack of dd kilobytes maximum (any number of digits)    \Jdd       set up a JIT stack of dd kilobytes maximum (any number of digits)
665    \L         call pcre[16]_get_substringlist() after a successful match    \L         call pcre[16|32]_get_substringlist() after a successful match
666    \M         discover the minimum MATCH_LIMIT and MATCH_LIMIT_RECURSION settings    \M         discover the minimum MATCH_LIMIT and MATCH_LIMIT_RECURSION settings
667    \N         pass the PCRE_NOTEMPTY option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>; if used twice, pass the    \N         pass the PCRE_NOTEMPTY option to <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>; if used twice, pass the
668                 PCRE_NOTEMPTY_ATSTART option                 PCRE_NOTEMPTY_ATSTART option
669    \Odd       set the size of the output vector passed to <b>pcre[16]_exec()</b> to dd (any number of digits)    \Odd       set the size of the output vector passed to <b>pcre[16|32]_exec()</b> to dd (any number of digits)
670    \P         pass the PCRE_PARTIAL_SOFT option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>; if used twice, pass the    \P         pass the PCRE_PARTIAL_SOFT option to <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>; if used twice, pass the
671                 PCRE_PARTIAL_HARD option                 PCRE_PARTIAL_HARD option
672    \Qdd       set the PCRE_MATCH_LIMIT_RECURSION limit to dd (any number of digits)    \Qdd       set the PCRE_MATCH_LIMIT_RECURSION limit to dd (any number of digits)
673    \R         pass the PCRE_DFA_RESTART option to <b>pcre[16]_dfa_exec()</b>    \R         pass the PCRE_DFA_RESTART option to <b>pcre[16|32]_dfa_exec()</b>
674    \S         output details of memory get/free calls during matching    \S         output details of memory get/free calls during matching
675    \Y         pass the PCRE_NO_START_OPTIMIZE option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>    \Y         pass the PCRE_NO_START_OPTIMIZE option to <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>
676    \Z         pass the PCRE_NOTEOL option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>    \Z         pass the PCRE_NOTEOL option to <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>
677    \?         pass the PCRE_NO_UTF[8|16]_CHECK option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>    \?         pass the PCRE_NO_UTF[8|16|32]_CHECK option to <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>
678    \&#62;dd       start the match at offset dd (optional "-"; then any number of digits); this sets the <i>startoffset</i>    \&#62;dd       start the match at offset dd (optional "-"; then any number of digits); this sets the <i>startoffset</i>
679                 argument for <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>                 argument for <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>
680    \&#60;cr&#62;      pass the PCRE_NEWLINE_CR option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>    \&#60;cr&#62;      pass the PCRE_NEWLINE_CR option to <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>
681    \&#60;lf&#62;      pass the PCRE_NEWLINE_LF option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>    \&#60;lf&#62;      pass the PCRE_NEWLINE_LF option to <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>
682    \&#60;crlf&#62;    pass the PCRE_NEWLINE_CRLF option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>    \&#60;crlf&#62;    pass the PCRE_NEWLINE_CRLF option to <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>
683    \&#60;anycrlf&#62; pass the PCRE_NEWLINE_ANYCRLF option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>    \&#60;anycrlf&#62; pass the PCRE_NEWLINE_ANYCRLF option to <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>
684    \&#60;any&#62;     pass the PCRE_NEWLINE_ANY option to <b>pcre[16]_exec()</b> or <b>pcre[16]_dfa_exec()</b>    \&#60;any&#62;     pass the PCRE_NEWLINE_ANY option to <b>pcre[16|32]_exec()</b> or <b>pcre[16|32]_dfa_exec()</b>
685  </pre>  </pre>
686  The use of \x{hh...} is not dependent on the use of the <b>/8</b> modifier on  The use of \x{hh...} is not dependent on the use of the <b>/8</b> modifier on
687  the pattern. It is recognized always. There may be any number of hexadecimal  the pattern. It is recognized always. There may be any number of hexadecimal
# Line 588  In UTF-16 mode, all 4-digit \x{hhhh} val Line 700  In UTF-16 mode, all 4-digit \x{hhhh} val
700  possible to construct invalid UTF-16 sequences for testing purposes.  possible to construct invalid UTF-16 sequences for testing purposes.
701  </P>  </P>
702  <P>  <P>
703    In UTF-32 mode, all 4- to 8-digit \x{...} values are accepted. This makes it
704    possible to construct invalid UTF-32 sequences for testing purposes.
705    </P>
706    <P>
707  The escapes that specify line ending sequences are literal strings, exactly as  The escapes that specify line ending sequences are literal strings, exactly as
708  shown. No more than one newline setting should be present in any data line.  shown. No more than one newline setting should be present in any data line.
709  </P>  </P>
# Line 604  is not being used. Providing a stack tha Line 720  is not being used. Providing a stack tha
720  necessary only for very complicated patterns.  necessary only for very complicated patterns.
721  </P>  </P>
722  <P>  <P>
723  If \M is present, <b>pcretest</b> calls <b>pcre[16]_exec()</b> several times,  If \M is present, <b>pcretest</b> calls <b>pcre[16|32]_exec()</b> several times,
724  with different values in the <i>match_limit</i> and <i>match_limit_recursion</i>  with different values in the <i>match_limit</i> and <i>match_limit_recursion</i>
725  fields of the <b>pcre[16]_extra</b> data structure, until it finds the minimum  fields of the <b>pcre[16|32]_extra</b> data structure, until it finds the minimum
726  numbers for each parameter that allow <b>pcre[16]_exec()</b> to complete without  numbers for each parameter that allow <b>pcre[16|32]_exec()</b> to complete without
727  error. Because this is testing a specific feature of the normal interpretive  error. Because this is testing a specific feature of the normal interpretive
728  <b>pcre[16]_exec()</b> execution, the use of any JIT optimization that might  <b>pcre[16|32]_exec()</b> execution, the use of any JIT optimization that might
729  have been set up by the <b>/S+</b> qualifier of <b>-s+</b> option is disabled.  have been set up by the <b>/S+</b> qualifier of <b>-s+</b> option is disabled.
730  </P>  </P>
731  <P>  <P>
# Line 624  needed to complete the match attempt. Line 740  needed to complete the match attempt.
740  <P>  <P>
741  When \O is used, the value specified may be higher or lower than the size set  When \O is used, the value specified may be higher or lower than the size set
742  by the <b>-O</b> command line option (or defaulted to 45); \O applies only to  by the <b>-O</b> command line option (or defaulted to 45); \O applies only to
743  the call of <b>pcre[16]_exec()</b> for the line in which it appears.  the call of <b>pcre[16|32]_exec()</b> for the line in which it appears.
744  </P>  </P>
745  <P>  <P>
746  If the <b>/P</b> modifier was present on the pattern, causing the POSIX wrapper  If the <b>/P</b> modifier was present on the pattern, causing the POSIX wrapper
# Line 635  to be passed to <b>regexec()</b>. Line 751  to be passed to <b>regexec()</b>.
751  <br><a name="SEC7" href="#TOC1">THE ALTERNATIVE MATCHING FUNCTION</a><br>  <br><a name="SEC7" href="#TOC1">THE ALTERNATIVE MATCHING FUNCTION</a><br>
752  <P>  <P>
753  By default, <b>pcretest</b> uses the standard PCRE matching function,  By default, <b>pcretest</b> uses the standard PCRE matching function,
754  <b>pcre[16]_exec()</b> to match each data line. PCRE also supports an  <b>pcre[16|32]_exec()</b> to match each data line. PCRE also supports an
755  alternative matching function, <b>pcre[16]_dfa_test()</b>, which operates in a  alternative matching function, <b>pcre[16|32]_dfa_test()</b>, which operates in a
756  different way, and has some restrictions. The differences between the two  different way, and has some restrictions. The differences between the two
757  functions are described in the  functions are described in the
758  <a href="pcrematching.html"><b>pcrematching</b></a>  <a href="pcrematching.html"><b>pcrematching</b></a>
# Line 652  found. This is always the shortest possi Line 768  found. This is always the shortest possi
768  <br><a name="SEC8" href="#TOC1">DEFAULT OUTPUT FROM PCRETEST</a><br>  <br><a name="SEC8" href="#TOC1">DEFAULT OUTPUT FROM PCRETEST</a><br>
769  <P>  <P>
770  This section describes the output when the normal matching function,  This section describes the output when the normal matching function,
771  <b>pcre[16]_exec()</b>, is being used.  <b>pcre[16|32]_exec()</b>, is being used.
772  </P>  </P>
773  <P>  <P>
774  When a match succeeds, <b>pcretest</b> outputs the list of captured substrings  When a match succeeds, <b>pcretest</b> outputs the list of captured substrings
775  that <b>pcre[16]_exec()</b> returns, starting with number 0 for the string that  that <b>pcre[16|32]_exec()</b> returns, starting with number 0 for the string that
776  matched the whole pattern. Otherwise, it outputs "No match" when the return is  matched the whole pattern. Otherwise, it outputs "No match" when the return is
777  PCRE_ERROR_NOMATCH, and "Partial match:" followed by the partially matching  PCRE_ERROR_NOMATCH, and "Partial match:" followed by the partially matching
778  substring when <b>pcre[16]_exec()</b> returns PCRE_ERROR_PARTIAL. (Note that  substring when <b>pcre[16|32]_exec()</b> returns PCRE_ERROR_PARTIAL. (Note that
779  this is the entire substring that was inspected during the partial match; it  this is the entire substring that was inspected during the partial match; it
780  may include characters before the actual match start if a lookbehind assertion,  may include characters before the actual match start if a lookbehind assertion,
781  \K, \b, or \B was involved.) For any other return, <b>pcretest</b> outputs  \K, \b, or \B was involved.) For any other return, <b>pcretest</b> outputs
# Line 679  at least two. Here is an example of an i Line 795  at least two. Here is an example of an i
795    No match    No match
796  </pre>  </pre>
797  Unset capturing substrings that are not followed by one that is set are not  Unset capturing substrings that are not followed by one that is set are not
798  returned by <b>pcre[16]_exec()</b>, and are not shown by <b>pcretest</b>. In the  returned by <b>pcre[16|32]_exec()</b>, and are not shown by <b>pcretest</b>. In the
799  following example, there are two capturing substrings, but when the first data  following example, there are two capturing substrings, but when the first data
800  line is matched, the second, unset substring is not shown. An "internal" unset  line is matched, the second, unset substring is not shown. An "internal" unset
801  substring is shown as "&#60;unset&#62;", as for the second data line.  substring is shown as "&#60;unset&#62;", as for the second data line.
# Line 742  the newline sequence setting). Line 858  the newline sequence setting).
858  </P>  </P>
859  <br><a name="SEC9" href="#TOC1">OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION</a><br>  <br><a name="SEC9" href="#TOC1">OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION</a><br>
860  <P>  <P>
861  When the alternative matching function, <b>pcre[16]_dfa_exec()</b>, is used (by  When the alternative matching function, <b>pcre[16|32]_dfa_exec()</b>, is used (by
862  means of the \D escape sequence or the <b>-dfa</b> command line option), the  means of the \D escape sequence or the <b>-dfa</b> command line option), the
863  output consists of a list of all the matches that start at the first point in  output consists of a list of all the matches that start at the first point in
864  the subject where there is at least one match. For example:  the subject where there is at least one match. For example:
# Line 941  result is undefined. Line 1057  result is undefined.
1057  </P>  </P>
1058  <br><a name="SEC14" href="#TOC1">SEE ALSO</a><br>  <br><a name="SEC14" href="#TOC1">SEE ALSO</a><br>
1059  <P>  <P>
1060  <b>pcre</b>(3), <b>pcre16</b>(3), <b>pcreapi</b>(3), <b>pcrecallout</b>(3),  <b>pcre</b>(3), <b>pcre16</b>(3), <b>pcre32</b>(3), <b>pcreapi</b>(3),
1061    <b>pcrecallout</b>(3),
1062  <b>pcrejit</b>, <b>pcrematching</b>(3), <b>pcrepartial</b>(d),  <b>pcrejit</b>, <b>pcrematching</b>(3), <b>pcrepartial</b>(d),
1063  <b>pcrepattern</b>(3), <b>pcreprecompile</b>(3).  <b>pcrepattern</b>(3), <b>pcreprecompile</b>(3).
1064  </P>  </P>
# Line 956  Cambridge CB2 3QH, England. Line 1073  Cambridge CB2 3QH, England.
1073  </P>  </P>
1074  <br><a name="SEC16" href="#TOC1">REVISION</a><br>  <br><a name="SEC16" href="#TOC1">REVISION</a><br>
1075  <P>  <P>
1076  Last updated: 21 February 2012  Last updated: 10 September 2012
1077  <br>  <br>
1078  Copyright &copy; 1997-2012 University of Cambridge.  Copyright &copy; 1997-2012 University of Cambridge.
1079  <br>  <br>

Legend:
Removed from v.1193  
changed lines
  Added in v.1194

  ViewVC Help
Powered by ViewVC 1.1.5