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,


Reply via email to