> -----Original Message-----
> From: cmpil...@apache.org [mailto:cmpil...@apache.org]
> Sent: maandag 20 augustus 2012 17:19
> To: comm...@subversion.apache.org
> Subject: svn commit: r1375052 -
> /subversion/trunk/subversion/libsvn_subr/auth.c
> 
> Author: cmpilato
> Date: Mon Aug 20 15:19:06 2012
> New Revision: 1375052
> 
> URL: http://svn.apache.org/viewvc?rev=1375052&view=rev
> Log:
> Minor code simplifications.  No logical changes.
> 
> * subversion/libsvn_subr/auth.c
>   (SVN__MAYBE_ADD_PROVIDER): New macro.
>   (svn_auth_get_platform_specific_client_providers): Avoid logic
>     branch by recognizing that svn_config_get() returns the default
>     value when the passed-in config object is NULL.  Also, replace a
>     bunch of "if-provider-isn't-NULL-then-add-the-array" logic with
>     SVN__MAYBE_ADD_PROVIDER() macro calls.
> 
> Modified:
>     subversion/trunk/subversion/libsvn_subr/auth.c
> 
> Modified: subversion/trunk/subversion/libsvn_subr/auth.c
> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/aut
> h.c?rev=1375052&r1=1375051&r2=1375052&view=diff
> ==========================================================
> ====================
> --- subversion/trunk/subversion/libsvn_subr/auth.c (original)
> +++ subversion/trunk/subversion/libsvn_subr/auth.c Mon Aug 20 15:19:06
> 2012
> @@ -523,34 +523,29 @@ svn_auth_get_platform_specific_client_pr
>    apr_array_header_t *password_stores;
>    int i;
> 
> +#define SVN__MAYBE_ADD_PROVIDER(list, p) \
> +  { if (p) APR_ARRAY_PUSH(list, svn_auth_provider_object_t *) = p; }
> +
>  #define SVN__DEFAULT_AUTH_PROVIDER_LIST \
>           "gnome-keyring,kwallet,keychain,gpg-agent,windows-cryptoapi"
> 
> -  if (config)
> -    {
> -      svn_config_get
> -        (config,
> -         &password_stores_config_option,
> -         SVN_CONFIG_SECTION_AUTH,
> -         SVN_CONFIG_OPTION_PASSWORD_STORES,
> -         SVN__DEFAULT_AUTH_PROVIDER_LIST);
> -    }
> -  else
> -    {
> -      password_stores_config_option =
> SVN__DEFAULT_AUTH_PROVIDER_LIST;
> -    }
> -
>    *providers = apr_array_make(pool, 12, sizeof(svn_auth_provider_object_t
> *));
> 
> -  password_stores
> -    = svn_cstring_split(password_stores_config_option, " ,", TRUE, pool);
> +  /* Fetch the configured list of password stores, and split them into
> +     an array. */
> +  svn_config_get(config,
> +                 &password_stores_config_option,
> +                 SVN_CONFIG_SECTION_AUTH,
> +                 SVN_CONFIG_OPTION_PASSWORD_STORES,
> +                 SVN__DEFAULT_AUTH_PROVIDER_LIST);
> +  password_stores = svn_cstring_split(password_stores_config_option,
> +                                      " ,", TRUE, pool);
> 
>    for (i = 0; i < password_stores->nelts; i++)
>      {
>        const char *password_store = APR_ARRAY_IDX(password_stores, i,
>                                                   const char *);
> 
> -
>        /* GNOME Keyring */
>        if (apr_strnatcmp(password_store, "gnome-keyring") == 0)
>          {
> @@ -558,104 +553,68 @@ svn_auth_get_platform_specific_client_pr
>                                                            "gnome_keyring",
>                                                            "simple",
>                                                            pool));
> -
> -          if (provider)
> -            APR_ARRAY_PUSH(*providers, svn_auth_provider_object_t *) =
> provider;
> +          SVN__MAYBE_ADD_PROVIDER(*providers, provider);
> 
>            SVN_ERR(svn_auth_get_platform_specific_provider(&provider,
>                                                            "gnome_keyring",
>                                                            
> "ssl_client_cert_pw",
>                                                            pool));
> -
> -          if (provider)
> -            APR_ARRAY_PUSH(*providers, svn_auth_provider_object_t *) =
> provider;
> -
> -          continue;
> +          SVN__MAYBE_ADD_PROVIDER(*providers, provider);
>          }
> -
>        /* GPG-AGENT */
> -      if (apr_strnatcmp(password_store, "gpg-agent") == 0)
> +      else if (apr_strnatcmp(password_store, "gpg-agent") == 0)
>          {
>            SVN_ERR(svn_auth_get_platform_specific_provider(&provider,
>                                                            "gpg_agent",
>                                                            "simple",
>                                                            pool));
> -
> -          if (provider)
> -            APR_ARRAY_PUSH(*providers, svn_auth_provider_object_t *) =
> provider;
> -
> -          continue;
> +          SVN__MAYBE_ADD_PROVIDER(*providers, provider);
>          }
> -
>        /* KWallet */
> -      if (apr_strnatcmp(password_store, "kwallet") == 0)
> +      else if (apr_strnatcmp(password_store, "kwallet") == 0)
>          {
>            SVN_ERR(svn_auth_get_platform_specific_provider(&provider,
>                                                            "kwallet",
>                                                            "simple",
>                                                            pool));
> -
> -          if (provider)
> -            APR_ARRAY_PUSH(*providers, svn_auth_provider_object_t *) =
> provider;
> +          SVN__MAYBE_ADD_PROVIDER(*providers, provider);
> 
>            SVN_ERR(svn_auth_get_platform_specific_provider(&provider,
>                                                            "kwallet",
>                                                            
> "ssl_client_cert_pw",
>                                                            pool));
> -          if (provider)
> -            APR_ARRAY_PUSH(*providers, svn_auth_provider_object_t *) =
> provider;
> -
> -          continue;
> +          SVN__MAYBE_ADD_PROVIDER(*providers, provider);
>          }
> -
>        /* Keychain */
> -      if (apr_strnatcmp(password_store, "keychain") == 0)
> +      else if (apr_strnatcmp(password_store, "keychain") == 0)
>          {
>            SVN_ERR(svn_auth_get_platform_specific_provider(&provider,
>                                                            "keychain",
>                                                            "simple",
>                                                            pool));
> -
> -          if (provider)
> -            APR_ARRAY_PUSH(*providers, svn_auth_provider_object_t *) =
> provider;
> +          SVN__MAYBE_ADD_PROVIDER(*providers, provider);
> 
>            SVN_ERR(svn_auth_get_platform_specific_provider(&provider,
>                                                            "keychain",
>                                                            
> "ssl_client_cert_pw",
>                                                            pool));
> -
> -          if (provider)
> -            APR_ARRAY_PUSH(*providers, svn_auth_provider_object_t *) =
> provider;
> -
> -          continue;
> +          SVN__MAYBE_ADD_PROVIDER(*providers, provider);
>          }
> -
>        /* Windows */
> -      if (apr_strnatcmp(password_store, "windows-cryptoapi") == 0)
> +      else if (apr_strnatcmp(password_store, "windows-cryptoapi") == 0)
>          {
>            SVN_ERR(svn_auth_get_platform_specific_provider(&provider,
>                                                            "windows",
>                                                            "simple",
>                                                            pool));
> -
> -          if (provider)
> -            APR_ARRAY_PUSH(*providers, svn_auth_provider_object_t *) =
> provider;
> +          SVN__MAYBE_ADD_PROVIDER(*providers, provider);
> 
>            SVN_ERR(svn_auth_get_platform_specific_provider(&provider,
>                                                            "windows",
>                                                            
> "ssl_client_cert_pw",
>                                                            pool));
> -
> -          if (provider)
> -            APR_ARRAY_PUSH(*providers, svn_auth_provider_object_t *) =
> provider;
> -
> -          continue;
> +          SVN__MAYBE_ADD_PROVIDER(*providers, provider);
>          }
> -
> -      return svn_error_createf(SVN_ERR_BAD_CONFIG_VALUE, NULL,
> -                               _("Invalid config: unknown password store "
> -                                 "'%s'"),
> -                               password_store);

Your log message says no 'logical changes', while this seems to remove the 
error for unknown password stores?

        Bert

>      }
> 
>    return SVN_NO_ERROR;
> 


Reply via email to