Author: stefan2
Date: Thu Apr 12 20:44:33 2012
New Revision: 1325501
URL: http://svn.apache.org/viewvc?rev=1325501&view=rev
Log:
Minor optimization for parsing (near-empty) config files.
That is a particularly frequent case with default auth files.
* subversion/libsvn_subr/config.c
(svn_config_get): if we couldn't find the option, try to expand
the default value only if it could contain placeholders
Modified:
subversion/trunk/subversion/libsvn_subr/config.c
Modified: subversion/trunk/subversion/libsvn_subr/config.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/config.c?rev=1325501&r1=1325500&r2=1325501&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/config.c (original)
+++ subversion/trunk/subversion/libsvn_subr/config.c Thu Apr 12 20:44:33 2012
@@ -562,6 +562,7 @@ svn_config_get(svn_config_t *cfg, const
const char *section, const char *option,
const char *default_value)
{
+ *valuep = default_value;
if (cfg)
{
cfg_section_t *sec;
@@ -571,23 +572,21 @@ svn_config_get(svn_config_t *cfg, const
make_string_from_option(valuep, cfg, sec, opt, NULL);
}
else
- {
- apr_pool_t *tmp_pool = svn_pool_create(cfg->x_pool);
- const char *x_default;
- expand_option_value(cfg, sec, default_value, &x_default, tmp_pool);
- if (x_default)
- {
- svn_stringbuf_set(cfg->tmp_value, x_default);
- *valuep = cfg->tmp_value->data;
- }
- else
- *valuep = default_value;
- svn_pool_destroy(tmp_pool);
- }
- }
- else
- {
- *valuep = default_value;
+ /* before attempting to expand an option, check for the placeholder.
+ * If none is there, there is no point in calling expand_option_value.
+ */
+ if (default_value && strchr(default_value, '%'))
+ {
+ apr_pool_t *tmp_pool = svn_pool_create(cfg->x_pool);
+ const char *x_default;
+ expand_option_value(cfg, sec, default_value, &x_default, tmp_pool);
+ if (x_default)
+ {
+ svn_stringbuf_set(cfg->tmp_value, x_default);
+ *valuep = cfg->tmp_value->data;
+ }
+ svn_pool_destroy(tmp_pool);
+ }
}
}