On the authzperf branch:  Add support for prefix segment patterns ("foo*").

These simple patterns may be very frequent in default rules like /**/foo*
and can be checked efficiently through sorted arrays.  All matching prefixes
must then be in a consecutive section of that array and the first match can
be found by binary search.

The code will be shared with the support for the probably more common suffix
pattern due for next commit.

* BRANCH-README
  (TODO, DONE): Another wildcard pattern is now supported.

* subversion/libsvn_repos/authz.c
  (node_pattern_t): Add yet another sub-node container.
  (SORTING_THRESHOLD): A new tuning parameter.
  (is_prefix_segment): New segment pattern classification utility.
  (compare_segment,
   ensure_node_in_array): New code to fill a sorted sub-node array.
  (insert_path): Detect and handle prefix pattern rules. 
  (finalize_subnode_array): New utility.
  (finalize_tree): Include traversal of the new sub-node array.
  (add_prefix_matches): New function efficiently matching a segment against
                        a sorted array of prefix pattern nodes.
  (lookup): Include scanning the new sub-node array.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/authzperf@1614619 13f79535-47bb-0310-9956-ffa450edef68
On the authzperf branch:  Add support for suffix segment patterns ("*foo").

Suffix rules are basically reversed prefix rules.  So, we reverse the
rules and match against reversed segment names using the existing prefix
matching code.

* BRANCH-README
  (TODO, DONE): Another wildcard pattern is now supported.

* subversion/libsvn_repos/authz.c
  (reverse_string): New utility for reversing segments and patterns.
  (node_pattern_t): Add yet another sub-node container.
  (is_suffix_segment): New segment pattern classification utility.
  (insert_path): Detect and handle suffix pattern rules. 
  (finalize_tree): Include traversal of the new sub-node array.
  (lookup): Include scanning the new sub-node array.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/authzperf@1614622 13f79535-47bb-0310-9956-ffa450edef68
On the authzperf branch: Simplify the constructor semantics, since the authz
parser will not need all the extra bells and whistles. We can still add them
at a later date if we happen to actually need them.

* subversion/include/private/svn_config_private.h
  (svn_config__constructor_create): Remove parameters expand_parsed_values,
   section_names_case_sensitive and option_names_case_sensitive.
   Update the docstring.
  (svn_config__default_add_value_fn): Move prototype from here ...
* subversion/libsvn_subr/config_impl.h
  (svn_config__default_add_value_fn): ... to here.
* subversion/libsvn_subr/config.c
  (svn_config__default_add_value_fn): Move the implementation here
   from config_file.c.
  (svn_config_parse): Update call to svn_config__parse_stream.

* subversion/libsvn_subr/config_file.c
  (svn_config__constructor_t): Remove members expand_values,
   ci_section_names, ci_option_names, defaults, options and order.
  (svn_config__constructor_create): Update implementation.
  (open_section, close_section, add_value): Make these simple wrappers
   around the constructor callbacks, and handle loop termination.
  (parse_value): Update call to add_value.
  (svn_config__parse_file): Update call to svn_config__parse_stream.
  (svn_config__default_add_value_fn): Remove implementation.
  (svn_config__parse_stream): Update calls to open_section and close_section.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/authzperf@1614625 13f79535-47bb-0310-9956-ffa450edef68