/[pcre]/code/trunk/doc/pcrepattern.3
ViewVC logotype

Diff of /code/trunk/doc/pcrepattern.3

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

revision 1314 by ph10, Fri Apr 26 10:44:13 2013 UTC revision 1335 by ph10, Tue May 28 09:13:59 2013 UTC
# Line 37  page. Line 37  page.
37  .SH "SPECIAL START-OF-PATTERN ITEMS"  .SH "SPECIAL START-OF-PATTERN ITEMS"
38  .rs  .rs
39  .sp  .sp
40  A number of options that can be passed to \fBpcre_compile()\fP can also be set  A number of options that can be passed to \fBpcre_compile()\fP can also be set
41  by special items at the start of a pattern. These are not Perl-compatible, but  by special items at the start of a pattern. These are not Perl-compatible, but
42  are provided to make these options accessible to pattern writers who are not  are provided to make these options accessible to pattern writers who are not
43  able to change the program that processes the pattern. Any number of these  able to change the program that processes the pattern. Any number of these
# Line 71  places below. There is also a summary of Line 71  places below. There is also a summary of
71  .\"  .\"
72  page.  page.
73  .P  .P
74  Some applications that allow their users to supply patterns may wish to  Some applications that allow their users to supply patterns may wish to
75  restrict them to non-UTF data for security reasons. If the PCRE_NEVER_UTF  restrict them to non-UTF data for security reasons. If the PCRE_NEVER_UTF
76  option is set at compile time, (*UTF) etc. are not allowed, and their  option is set at compile time, (*UTF) etc. are not allowed, and their
77  appearance causes an error.  appearance causes an error.
# Line 151  convention. Line 151  convention.
151  .SS "Setting match and recursion limits"  .SS "Setting match and recursion limits"
152  .rs  .rs
153  .sp  .sp
154  The caller of \fBpcre_exec()\fP can set a limit on the number of times the  The caller of \fBpcre_exec()\fP can set a limit on the number of times the
155  internal \fBmatch()\fP function is called and on the maximum depth of  internal \fBmatch()\fP function is called and on the maximum depth of
156  recursive calls. These facilities are provided to catch runaway matches that  recursive calls. These facilities are provided to catch runaway matches that
157  are provoked by patterns with huge matching trees (a typical example is a  are provoked by patterns with huge matching trees (a typical example is a
158  pattern with nested unlimited repeats) and to avoid running out of system stack  pattern with nested unlimited repeats) and to avoid running out of system stack
159  by too much recursion. When one of these limits is reached, \fBpcre_exec()\fP  by too much recursion. When one of these limits is reached, \fBpcre_exec()\fP
160  gives an error return. The limits can also be set by items at the start of the  gives an error return. The limits can also be set by items at the start of the
161  pattern of the form  pattern of the form
162  .sp  .sp
163    (*LIMIT_MATCH=d)    (*LIMIT_MATCH=d)
164    (*LIMIT_RECURSION=d)    (*LIMIT_RECURSION=d)
165  .sp  .sp
166  where d is any number of decimal digits. However, the value of the setting must  where d is any number of decimal digits. However, the value of the setting must
167  be less than the value set by the caller of \fBpcre_exec()\fP for it to have  be less than the value set by the caller of \fBpcre_exec()\fP for it to have
168  any effect. In other words, the pattern writer can lower the limit set by the  any effect. In other words, the pattern writer can lower the limit set by the
169  programmer, but not raise it. If there is more than one setting of one of these  programmer, but not raise it. If there is more than one setting of one of these
170  limits, the lower value is used.  limits, the lower value is used.
171  .  .
172  .  .
173  .SH "EBCDIC CHARACTER CODES"  .SH "EBCDIC CHARACTER CODES"
# Line 846  Instead, this property is assumed for an Line 846  Instead, this property is assumed for an
846  Unicode table.  Unicode table.
847  .P  .P
848  Specifying caseless matching does not affect these escape sequences. For  Specifying caseless matching does not affect these escape sequences. For
849  example, \ep{Lu} always matches only upper case letters. This is different from  example, \ep{Lu} always matches only upper case letters. This is different from
850  the behaviour of current versions of Perl.  the behaviour of current versions of Perl.
851  .P  .P
852  Matching characters by Unicode property is not fast, because PCRE has to do a  Matching characters by Unicode property is not fast, because PCRE has to do a
# Line 907  the "mark" property always have the "ext Line 907  the "mark" property always have the "ext
907  As well as the standard Unicode properties described above, PCRE supports four  As well as the standard Unicode properties described above, PCRE supports four
908  more that make it possible to convert traditional escape sequences such as \ew  more that make it possible to convert traditional escape sequences such as \ew
909  and \es and POSIX character classes to use Unicode properties. PCRE uses these  and \es and POSIX character classes to use Unicode properties. PCRE uses these
910  non-standard, non-Perl properties internally when PCRE_UCP is set. However,  non-standard, non-Perl properties internally when PCRE_UCP is set. However,
911  they may also be used explicitly. These properties are:  they may also be used explicitly. These properties are:
912  .sp  .sp
913    Xan   Any alphanumeric character    Xan   Any alphanumeric character
# Line 921  carriage return, and any other character Line 921  carriage return, and any other character
921  Xsp is the same as Xps, except that vertical tab is excluded. Xwd matches the  Xsp is the same as Xps, except that vertical tab is excluded. Xwd matches the
922  same characters as Xan, plus underscore.  same characters as Xan, plus underscore.
923  .P  .P
924  There is another non-standard property, Xuc, which matches any character that  There is another non-standard property, Xuc, which matches any character that
925  can be represented by a Universal Character Name in C++ and other programming  can be represented by a Universal Character Name in C++ and other programming
926  languages. These are the characters $, @, ` (grave accent), and all characters  languages. These are the characters $, @, ` (grave accent), and all characters
927  with Unicode code points greater than or equal to U+00A0, except for the  with Unicode code points greater than or equal to U+00A0, except for the
928  surrogates U+D800 to U+DFFF. Note that most base (ASCII) characters are  surrogates U+D800 to U+DFFF. Note that most base (ASCII) characters are
929  excluded. (Universal Character Names are of the form \euHHHH or \eUHHHHHHHH  excluded. (Universal Character Names are of the form \euHHHH or \eUHHHHHHHH
930  where H is a hexadecimal digit. Note that the Xuc property does not match these  where H is a hexadecimal digit. Note that the Xuc property does not match these
931  sequences but the characters that they represent.)  sequences but the characters that they represent.)
932  .  .
933  .  .
# Line 1410  above. There are also the (*UTF8), (*UTF Line 1410  above. There are also the (*UTF8), (*UTF
1410  sequences that can be used to set UTF and Unicode property modes; they are  sequences that can be used to set UTF and Unicode property modes; they are
1411  equivalent to setting the PCRE_UTF8, PCRE_UTF16, PCRE_UTF32 and the PCRE_UCP  equivalent to setting the PCRE_UTF8, PCRE_UTF16, PCRE_UTF32 and the PCRE_UCP
1412  options, respectively. The (*UTF) sequence is a generic version that can be  options, respectively. The (*UTF) sequence is a generic version that can be
1413  used with any of the libraries. However, the application can set the  used with any of the libraries. However, the application can set the
1414  PCRE_NEVER_UTF option, which locks out the use of the (*UTF) sequences.  PCRE_NEVER_UTF option, which locks out the use of the (*UTF) sequences.
1415  .  .
1416  .  .
# Line 2020  except that it does not cause the curren Line 2020  except that it does not cause the curren
2020  Assertion subpatterns are not capturing subpatterns. If such an assertion  Assertion subpatterns are not capturing subpatterns. If such an assertion
2021  contains capturing subpatterns within it, these are counted for the purposes of  contains capturing subpatterns within it, these are counted for the purposes of
2022  numbering the capturing subpatterns in the whole pattern. However, substring  numbering the capturing subpatterns in the whole pattern. However, substring
2023  capturing is carried out only for positive assertions. (Perl sometimes, but not  capturing is carried out only for positive assertions. (Perl sometimes, but not
2024  always, does do capturing in negative assertions.)  always, does do capturing in negative assertions.)
2025  .P  .P
2026  For compatibility with Perl, assertion subpatterns may be repeated; though  For compatibility with Perl, assertion subpatterns may be repeated; though
# Line 2691  explicit callout may also be set at this Line 2691  explicit callout may also be set at this
2691  .sp  .sp
2692    (?(?C9)(?=a)abc|def)    (?(?C9)(?=a)abc|def)
2693  .sp  .sp
2694  Note that this applies only to assertion conditions, not to other types of  Note that this applies only to assertion conditions, not to other types of
2695  condition.  condition.
2696  .P  .P
2697  During matching, when PCRE reaches a callout point, the external function is  During matching, when PCRE reaches a callout point, the external function is
2698  called. It is provided with the number of the callout, the position in the  called. It is provided with the number of the callout, the position in the
# Line 2718  remarks apply to the PCRE features descr Line 2718  remarks apply to the PCRE features descr
2718  .P  .P
2719  The new verbs make use of what was previously invalid syntax: an opening  The new verbs make use of what was previously invalid syntax: an opening
2720  parenthesis followed by an asterisk. They are generally of the form  parenthesis followed by an asterisk. They are generally of the form
2721  (*VERB) or (*VERB:NAME). Some may take either form, possibly behaving  (*VERB) or (*VERB:NAME). Some may take either form, possibly behaving
2722  differently depending on whether or not a name is present. A name is any  differently depending on whether or not a name is present. A name is any
2723  sequence of characters that does not include a closing parenthesis. The maximum  sequence of characters that does not include a closing parenthesis. The maximum
2724  length of name is 255 in the 8-bit library and 65535 in the 16-bit and 32-bit  length of name is 255 in the 8-bit library and 65535 in the 16-bit and 32-bit
# Line 2729  Any number of these verbs may occur in a Line 2729  Any number of these verbs may occur in a
2729  Since these verbs are specifically related to backtracking, most of them can be  Since these verbs are specifically related to backtracking, most of them can be
2730  used only when the pattern is to be matched using one of the traditional  used only when the pattern is to be matched using one of the traditional
2731  matching functions, because these use a backtracking algorithm. With the  matching functions, because these use a backtracking algorithm. With the
2732  exception of (*FAIL), which behaves like a failing negative assertion, the  exception of (*FAIL), which behaves like a failing negative assertion, the
2733  backtracking control verbs cause an error if encountered by a DFA matching  backtracking control verbs cause an error if encountered by a DFA matching
2734  function.  function.
2735  .P  .P
2736  The behaviour of these verbs in  The behaviour of these verbs in
2737  .\" HTML <a href="#btrepeat">  .\" HTML <a href="#btrepeat">
2738  .\" </a>  .\" </a>
2739  repeated groups,  repeated groups,
2740  .\"  .\"
2741  .\" HTML <a href="#btassert">  .\" HTML <a href="#btassert">
2742  .\" </a>  .\" </a>
2743  assertions,  assertions,
2744  .\"  .\"
2745  and in  and in
2746  .\" HTML <a href="#btsub">  .\" HTML <a href="#btsub">
2747  .\" </a>  .\" </a>
2748  subpatterns called as subroutines  subpatterns called as subroutines
# Line 2788  followed by a name. Line 2788  followed by a name.
2788  This verb causes the match to end successfully, skipping the remainder of the  This verb causes the match to end successfully, skipping the remainder of the
2789  pattern. However, when it is inside a subpattern that is called as a  pattern. However, when it is inside a subpattern that is called as a
2790  subroutine, only that subpattern is ended successfully. Matching then continues  subroutine, only that subpattern is ended successfully. Matching then continues
2791  at the outer level. If (*ACCEPT) in triggered in a positive assertion, the  at the outer level. If (*ACCEPT) in triggered in a positive assertion, the
2792  assertion succeeds; in a negative assertion, the assertion fails.  assertion succeeds; in a negative assertion, the assertion fails.
2793  .P  .P
2794  If (*ACCEPT) is inside capturing parentheses, the data so far is captured. For  If (*ACCEPT) is inside capturing parentheses, the data so far is captured. For
# Line 2883  to ensure that the match is always attem Line 2883  to ensure that the match is always attem
2883  The following verbs do nothing when they are encountered. Matching continues  The following verbs do nothing when they are encountered. Matching continues
2884  with what follows, but if there is no subsequent match, causing a backtrack to  with what follows, but if there is no subsequent match, causing a backtrack to
2885  the verb, a failure is forced. That is, backtracking cannot pass to the left of  the verb, a failure is forced. That is, backtracking cannot pass to the left of
2886  the verb. However, when one of these verbs appears inside an atomic group or an  the verb. However, when one of these verbs appears inside an atomic group or an
2887  assertion that is true, its effect is confined to that group, because once the  assertion that is true, its effect is confined to that group, because once the
2888  group has been matched, there is never any backtracking into it. In this  group has been matched, there is never any backtracking into it. In this
2889  situation, backtracking can "jump back" to the left of the entire atomic group  situation, backtracking can "jump back" to the left of the entire atomic group
# Line 2892  applies in subroutine calls.) Line 2892  applies in subroutine calls.)
2892  .P  .P
2893  These verbs differ in exactly what kind of failure occurs when backtracking  These verbs differ in exactly what kind of failure occurs when backtracking
2894  reaches them. The behaviour described below is what happens when the verb is  reaches them. The behaviour described below is what happens when the verb is
2895  not in a subroutine or an assertion. Subsequent sections cover these special  not in a subroutine or an assertion. Subsequent sections cover these special
2896  cases.  cases.
2897  .sp  .sp
2898    (*COMMIT)    (*COMMIT)
2899  .sp  .sp
2900  This verb, which may not be followed by a name, causes the whole match to fail  This verb, which may not be followed by a name, causes the whole match to fail
2901  outright if there is a later matching failure that causes backtracking to reach  outright if there is a later matching failure that causes backtracking to reach
2902  it. Even if the pattern is unanchored, no further attempts to find a match by  it. Even if the pattern is unanchored, no further attempts to find a match by
2903  advancing the starting point take place. If (*COMMIT) is the only backtracking  advancing the starting point take place. If (*COMMIT) is the only backtracking
2904  verb that is encountered, once it has been passed \fBpcre_exec()\fP is  verb that is encountered, once it has been passed \fBpcre_exec()\fP is
# Line 2912  dynamic anchor, or "I've started, so I m Line 2912  dynamic anchor, or "I've started, so I m
2912  recently passed (*MARK) in the path is passed back when (*COMMIT) forces a  recently passed (*MARK) in the path is passed back when (*COMMIT) forces a
2913  match failure.  match failure.
2914  .P  .P
2915  If there is more than one backtracking verb in a pattern, a different one that  If there is more than one backtracking verb in a pattern, a different one that
2916  follows (*COMMIT) may be triggered first, so merely passing (*COMMIT) during a  follows (*COMMIT) may be triggered first, so merely passing (*COMMIT) during a
2917  match does not always guarantee that a match must be at this starting point.  match does not always guarantee that a match must be at this starting point.
2918  .P  .P
2919  Note that (*COMMIT) at the start of a pattern is not the same as an anchor,  Note that (*COMMIT) at the start of a pattern is not the same as an anchor,
# Line 2945  possessive quantifier, but there are som Line 2945  possessive quantifier, but there are som
2945  expressed in any other way. In an anchored pattern (*PRUNE) has the same effect  expressed in any other way. In an anchored pattern (*PRUNE) has the same effect
2946  as (*COMMIT).  as (*COMMIT).
2947  .P  .P
2948  The behaviour of (*PRUNE:NAME) is the not the same as (*MARK:NAME)(*PRUNE).  The behaviour of (*PRUNE:NAME) is the not the same as (*MARK:NAME)(*PRUNE).
2949  It is like (*MARK:NAME) in that the name is remembered for passing back to the  It is like (*MARK:NAME) in that the name is remembered for passing back to the
2950  caller. However, (*SKIP:NAME) searches only for names set with (*MARK).  caller. However, (*SKIP:NAME) searches only for names set with (*MARK).
2951  .sp  .sp
# Line 2968  instead of skipping on to "c". Line 2968  instead of skipping on to "c".
2968  .sp  .sp
2969    (*SKIP:NAME)    (*SKIP:NAME)
2970  .sp  .sp
2971  When (*SKIP) has an associated name, its behaviour is modified. When it is  When (*SKIP) has an associated name, its behaviour is modified. When it is
2972  triggered, the previous path through the pattern is searched for the most  triggered, the previous path through the pattern is searched for the most
2973  recent (*MARK) that has the same name. If one is found, the "bumpalong" advance  recent (*MARK) that has the same name. If one is found, the "bumpalong" advance
2974  is to the subject position that corresponds to that (*MARK) instead of to where  is to the subject position that corresponds to that (*MARK) instead of to where
2975  (*SKIP) was encountered. If no (*MARK) with a matching name is found, the  (*SKIP) was encountered. If no (*MARK) with a matching name is found, the
2976  (*SKIP) is ignored.  (*SKIP) is ignored.
2977  .P  .P
2978  Note that (*SKIP:NAME) searches only for names set by (*MARK:NAME). It ignores  Note that (*SKIP:NAME) searches only for names set by (*MARK:NAME). It ignores
2979  names that are set by (*PRUNE:NAME) or (*THEN:NAME).  names that are set by (*PRUNE:NAME) or (*THEN:NAME).
2980  .sp  .sp
2981    (*THEN) or (*THEN:NAME)    (*THEN) or (*THEN:NAME)
2982  .sp  .sp
2983  This verb causes a skip to the next innermost alternative when backtracking  This verb causes a skip to the next innermost alternative when backtracking
2984  reaches it. That is, it cancels any further backtracking within the current  reaches it. That is, it cancels any further backtracking within the current
2985  alternative. Its name comes from the observation that it can be used for a  alternative. Its name comes from the observation that it can be used for a
2986  pattern-based if-then-else block:  pattern-based if-then-else block:
# Line 2994  succeeds and BAR fails, COND3 is tried. Line 2994  succeeds and BAR fails, COND3 is tried.
2994  more alternatives, so there is a backtrack to whatever came before the entire  more alternatives, so there is a backtrack to whatever came before the entire
2995  group. If (*THEN) is not inside an alternation, it acts like (*PRUNE).  group. If (*THEN) is not inside an alternation, it acts like (*PRUNE).
2996  .P  .P
2997  The behaviour of (*THEN:NAME) is the not the same as (*MARK:NAME)(*THEN).  The behaviour of (*THEN:NAME) is the not the same as (*MARK:NAME)(*THEN).
2998  It is like (*MARK:NAME) in that the name is remembered for passing back to the  It is like (*MARK:NAME) in that the name is remembered for passing back to the
2999  caller. However, (*SKIP:NAME) searches only for names set with (*MARK).  caller. However, (*SKIP:NAME) searches only for names set with (*MARK).
3000  .P  .P
# Line 3051  etc. are complex pattern fragments: Line 3051  etc. are complex pattern fragments:
3051  .sp  .sp
3052    (A(*COMMIT)B(*THEN)C|ABD)    (A(*COMMIT)B(*THEN)C|ABD)
3053  .sp  .sp
3054  If A matches but B fails, the backtrack to (*COMMIT) causes the entire match to  If A matches but B fails, the backtrack to (*COMMIT) causes the entire match to
3055  fail. However, if A and B match, but C fails, the backtrack to (*THEN) causes  fail. However, if A and B match, but C fails, the backtrack to (*THEN) causes
3056  the next alternative (ABD) to be tried. This behaviour is consistent, but is  the next alternative (ABD) to be tried. This behaviour is consistent, but is
3057  not always the same as Perl's. It means that if two or more backtracking verbs  not always the same as Perl's. It means that if two or more backtracking verbs
3058  appear in succession, all the the last of them has no effect. Consider this  appear in succession, all the the last of them has no effect. Consider this
# Line 3060  example: Line 3060  example:
3060  .sp  .sp
3061    ...(*COMMIT)(*PRUNE)...    ...(*COMMIT)(*PRUNE)...
3062  .sp  .sp
3063  If there is a matching failure to the right, backtracking onto (*PRUNE) cases  If there is a matching failure to the right, backtracking onto (*PRUNE) cases
3064  it to be triggered, and its action is taken. There can never be a backtrack  it to be triggered, and its action is taken. There can never be a backtrack
3065  onto (*COMMIT).  onto (*COMMIT).
3066  .  .
3067  .  .
3068  .\" HTML <a name="btrepeat"></a>  .\" HTML <a name="btrepeat"></a>
3069  .SS "Backtracking verbs in repeated groups"  .SS "Backtracking verbs in repeated groups"
3070  .rs  .rs
3071  .sp  .sp
3072  PCRE differs from Perl in its handling of backtracking verbs in repeated  PCRE differs from Perl in its handling of backtracking verbs in repeated
3073  groups. For example, consider:  groups. For example, consider:
3074  .sp  .sp
3075    /(a(*COMMIT)b)+ac/    /(a(*COMMIT)b)+ac/
3076  .sp  .sp
3077  If the subject is "abac", Perl matches, but PCRE fails because the (*COMMIT) in  If the subject is "abac", Perl matches, but PCRE fails because the (*COMMIT) in
3078  the second repeat of the group acts.  the second repeat of the group acts.
3079  .  .
3080  .  .
3081  .\" HTML <a name="btassert"></a>  .\" HTML <a name="btassert"></a>
# Line 3084  the second repeat of the group acts. Line 3084  the second repeat of the group acts.
3084  .sp  .sp
3085  (*FAIL) in an assertion has its normal effect: it forces an immediate backtrack.  (*FAIL) in an assertion has its normal effect: it forces an immediate backtrack.
3086  .P  .P
3087  (*ACCEPT) in a positive assertion causes the assertion to succeed without any  (*ACCEPT) in a positive assertion causes the assertion to succeed without any
3088  further processing. In a negative assertion, (*ACCEPT) causes the assertion to  further processing. In a negative assertion, (*ACCEPT) causes the assertion to
3089  fail without any further processing.  fail without any further processing.
3090  .P  .P
3091  The other backtracking verbs are not treated specially if they appear in a  The other backtracking verbs are not treated specially if they appear in a
# Line 3095  the assertion. Line 3095  the assertion.
3095  .P  .P
3096  Negative assertions are, however, different, in order to ensure that changing a  Negative assertions are, however, different, in order to ensure that changing a
3097  positive assertion into a negative assertion changes its result. Backtracking  positive assertion into a negative assertion changes its result. Backtracking
3098  into (*COMMIT), (*SKIP), or (*PRUNE) causes a negative assertion to be true,  into (*COMMIT), (*SKIP), or (*PRUNE) causes a negative assertion to be true,
3099  without considering any further alternative branches in the assertion.  without considering any further alternative branches in the assertion.
3100  Backtracking into (*THEN) causes it to skip to the next enclosing alternative  Backtracking into (*THEN) causes it to skip to the next enclosing alternative
3101  within the assertion (the normal behaviour), but if the assertion does not have  within the assertion (the normal behaviour), but if the assertion does not have
3102  such an alternative, (*THEN) behaves like (*PRUNE).  such an alternative, (*THEN) behaves like (*PRUNE).
3103  .  .
3104  .  .
# Line 3106  such an alternative, (*THEN) behaves lik Line 3106  such an alternative, (*THEN) behaves lik
3106  .SS "Backtracking verbs in subroutines"  .SS "Backtracking verbs in subroutines"
3107  .rs  .rs
3108  .sp  .sp
3109  These behaviours occur whether or not the subpattern is called recursively.  These behaviours occur whether or not the subpattern is called recursively.
3110  Perl's treatment of subroutines is different in some cases.  Perl's treatment of subroutines is different in some cases.
3111  .P  .P
3112  (*FAIL) in a subpattern called as a subroutine has its normal effect: it forces  (*FAIL) in a subpattern called as a subroutine has its normal effect: it forces
3113  an immediate backtrack.  an immediate backtrack.
3114  .P  .P
3115  (*ACCEPT) in a subpattern called as a subroutine causes the subroutine match to  (*ACCEPT) in a subpattern called as a subroutine causes the subroutine match to
3116  succeed without any further processing. Matching then continues after the  succeed without any further processing. Matching then continues after the
3117  subroutine call.  subroutine call.
3118  .P  .P
3119  (*COMMIT), (*SKIP), and (*PRUNE) in a subpattern called as a subroutine cause  (*COMMIT), (*SKIP), and (*PRUNE) in a subpattern called as a subroutine cause
3120  the subroutine match to fail.  the subroutine match to fail.
3121  .P  .P
3122  (*THEN) skips to the next alternative in the innermost enclosing group within  (*THEN) skips to the next alternative in the innermost enclosing group within
3123  the subpattern that has alternatives. If there is no such group within the  the subpattern that has alternatives. If there is no such group within the
3124  subpattern, (*THEN) causes the subroutine match to fail.  subpattern, (*THEN) causes the subroutine match to fail.
3125  .  .
3126  .  .

Legend:
Removed from v.1314  
changed lines
  Added in v.1335

  ViewVC Help
Powered by ViewVC 1.1.5