2008-05-26 18:29:18 David Glasser napisaĆ(a):
> On Sat, May 24, 2008 at 1:22 PM, <arfrever_at_tigris.org> wrote:
> > Author: arfrever
> > Date: Sat May 24 13:22:10 2008
> > New Revision: 31428
> >
> > Log:
> > Implement the 'password-stores' config option.
> >
> > * subversion/include/svn_config.h
> > (SVN_CONFIG_OPTION_PASSWORD_STORES): Define.
> >
> > * subversion/libsvn_subr/config_file.c
> > (svn_config_ensure): Update the default 'config' file.
> >
> > * subversion/libsvn_subr/cmdline.c
> > (svn_cmdline_setup_auth_baton): Use the 'password-stores' option
> > to determine order of dynamically loaded auth simple providers.
> >
> > Modified:
> > trunk/subversion/include/svn_config.h
> > trunk/subversion/libsvn_subr/cmdline.c
> > trunk/subversion/libsvn_subr/config_file.c
> >
> > Modified: trunk/subversion/include/svn_config.h
> > URL: http://svn.collab.net/viewvc/svn/trunk/subversion/include/svn_config.h?pathrev=31428&r1=31427&r2=31428
> > ==============================================================================
> > --- trunk/subversion/include/svn_config.h Sat May 24 10:07:45 2008 (r31427)
> > +++ trunk/subversion/include/svn_config.h Sat May 24 13:22:10 2008 (r31428)
> > @@ -80,8 +80,9 @@ typedef struct svn_config_t svn_config_t
> >
> > #define SVN_CONFIG_CATEGORY_CONFIG "config"
> > #define SVN_CONFIG_SECTION_AUTH "auth"
> > -/* The "auth" section has been deprecated.
> > - * Its options have been moved to SVN_CONFIG_CATEGORY_SERVERS. */
> > +#define SVN_CONFIG_OPTION_PASSWORD_STORES "password-stores"
> > +/* The majority of options of the "auth" section
> > + * has been moved to SVN_CONFIG_CATEGORY_SERVERS. */
> > #define SVN_CONFIG_SECTION_HELPERS "helpers"
> > #define SVN_CONFIG_OPTION_EDITOR_CMD "editor-cmd"
> > #define SVN_CONFIG_OPTION_DIFF_CMD "diff-cmd"
> >
> > Modified: trunk/subversion/libsvn_subr/cmdline.c
> > URL: http://svn.collab.net/viewvc/svn/trunk/subversion/libsvn_subr/cmdline.c?pathrev=31428&r1=31427&r2=31428
> > ==============================================================================
> > --- trunk/subversion/libsvn_subr/cmdline.c Sat May 24 10:07:45 2008 (r31427)
> > +++ trunk/subversion/libsvn_subr/cmdline.c Sat May 24 13:22:10 2008 (r31428)
> > @@ -435,17 +435,45 @@ svn_cmdline_setup_auth_baton(svn_auth_ba
> > svn_auth_get_keychain_simple_provider(&provider, pool);
> > APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
> > #endif
> > +#if defined(SVN_HAVE_GNOME_KEYRING) || defined(SVN_HAVE_KWALLET)
> > + const char *password_stores_config_option;
> > + svn_config_get(cfg,
> > + &password_stores_config_option,
> > + SVN_CONFIG_SECTION_AUTH,
> > + SVN_CONFIG_OPTION_PASSWORD_STORES,
> > + "gnome-keyring,kwallet");
> > +
> > + apr_array_header_t *password_stores
> > + = svn_cstring_split(password_stores_config_option, " ,", TRUE, pool);
> > +
> > + int i;
> > + for (i = 0; i < password_stores->nelts; i++)
> > + {
> > + const char *password_store = APR_ARRAY_IDX(password_stores, i,
> > + const char *);
> > #ifdef SVN_HAVE_GNOME_KEYRING
> > - if (get_auth_simple_provider(&provider, "gnome_keyring", pool))
> > - {
> > - APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
> > - }
> > + if (apr_strnatcmp(password_store, "gnome-keyring") == 0)
> > + {
> > + if (get_auth_simple_provider(&provider, "gnome_keyring", pool))
> > + {
> > + APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
> > + }
> > + continue;
> > + }
> > #endif
> > #ifdef SVN_HAVE_KWALLET
> > - if (get_auth_simple_provider(&provider, "kwallet", pool))
> > - {
> > - APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
> > + if (apr_strnatcmp(password_store, "kwallet") == 0)
> > + {
> > + if (get_auth_simple_provider(&provider, "kwallet", pool))
> > + {
> > + APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
> > + }
> > + continue;
> > + }
> > +#endif
> > + /* TODO: Error. */
> > }
> > +// SVN_ERR(add_dynamically_loaded_auth_simple_providers_to_array(&providers, cfg, pool));
> > #endif
> > if (non_interactive == FALSE)
> > {
> >
> > Modified: trunk/subversion/libsvn_subr/config_file.c
> > URL: http://svn.collab.net/viewvc/svn/trunk/subversion/libsvn_subr/config_file.c?pathrev=31428&r1=31427&r2=31428
> > ==============================================================================
> > --- trunk/subversion/libsvn_subr/config_file.c Sat May 24 10:07:45 2008 (r31427)
> > +++ trunk/subversion/libsvn_subr/config_file.c Sat May 24 13:22:10 2008 (r31428)
> > @@ -902,8 +902,10 @@ svn_config_ensure(const char *config_dir
> > "" NL
> > "### Section for authentication and authorization customizations." NL
> > "[auth]" NL
> > + "### Password stores used by Subversion:" NL
> > + "# password-stores = gnome-keyring,kwallet" NL
>
> This needs better documentation. For example, you should probably
> explain that it *only* covers these two libraries (and not Keychain,
> Windows thingy, etc...)
Fixed in r31515.
--
Arfrever Frehtes Taifersar Arahesis
Received on 2008-05-29 21:31:15 CEST