Author: ivan
Date: Mon Jan 21 13:50:54 2013
New Revision: 1436347
URL: http://svn.apache.org/viewvc?rev=1436347&view=rev
Log:
Add new svn_config_get_tristate() to read tristate option from config.
* subversion/include/svn_config.h
* subversion/libsvn_subr/config.c
(svn_config_get_tristate): New.
Modified:
subversion/trunk/subversion/include/svn_config.h
subversion/trunk/subversion/libsvn_subr/config.c
Modified: subversion/trunk/subversion/include/svn_config.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_config.h?rev=1436347&r1=1436346&r2=1436347&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_config.h (original)
+++ subversion/trunk/subversion/include/svn_config.h Mon Jan 21 13:50:54 2013
@@ -380,6 +380,20 @@ svn_config_get_yes_no_ask(svn_config_t *
const char *option,
const char* default_value);
+/** Like svn_config_set(), but for tristate values.
+ *
+ * Sets the option to 'TRUE'/'FALSE'/'UNKNOWN', depending on @a value.
+ *
+ * @a unknown_value specifies options value value allowed for third state.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_config_get_tristate(svn_config_t *cfg, svn_tristate_t *valuep,
+ const char *section, const char *option,
+ const char *unknown_value,
+ svn_tristate_t default_value);
+
/** Similar to @c svn_config_section_enumerator2_t, but is not
* provided with a memory pool argument.
*
Modified: subversion/trunk/subversion/libsvn_subr/config.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/config.c?rev=1436347&r1=1436346&r2=1436347&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/config.c (original)
+++ subversion/trunk/subversion/libsvn_subr/config.c Mon Jan 21 13:50:54 2013
@@ -796,6 +796,36 @@ svn_config_get_yes_no_ask(svn_config_t *
return SVN_NO_ERROR;
}
+svn_error_t *
+svn_config_get_tristate(svn_config_t *cfg, svn_tristate_t *valuep,
+ const char *section, const char *option,
+ const char *unknown_value,
+ svn_tristate_t default_value)
+{
+ const char *tmp_value;
+
+ svn_config_get(cfg, &tmp_value, section, option, NULL);
+
+ if (! tmp_value)
+ {
+ *valuep = default_value;
+ }
+ else if (0 == svn_cstring_casecmp(tmp_value, unknown_value))
+ {
+ *valuep = svn_tristate_unknown;
+ }
+ else
+ {
+ svn_boolean_t bool_val;
+ /* We already incorporated default_value into tmp_value if
+ necessary, so the FALSE below will be ignored unless the
+ caller is doing something it shouldn't be doing. */
+ SVN_ERR(get_bool(&bool_val, tmp_value, FALSE, section, option));
+ *valuep = bool_val ? svn_tristate_true : svn_tristate_false;
+ }
+
+ return SVN_NO_ERROR;
+}
int
svn_config_enumerate_sections(svn_config_t *cfg,