On the 'master-passphrase' branch: Clean up the cleanup of auth stores, and move away from a hardcoded master passphrase via the addition of a prompting callback.
* subversion/include/svn_cmdline.h, * subversion/libsvn_subr/prompt.c (svn_cmdline_auth_master_passphrase_prompt): New function.
* subversion/libsvn_subr/auth_store.c (svn_auth__store_t): Add 'pool' member. (svn_auth__store_create): Initialize new 'pool' struct member. (cleanup_auth_store_close): New. (svn_auth__store_open): Register the cleanup_auth_store_close() pool cleanup handler with the auth store pool. (svn_auth__store_close): Don't require that the store be open, but only attempt to really close it if it is.
* subversion/libsvn_subr/cmdline.c (fetch_nonsecret_secret, cleanup_auth_store_close): Remove as unused. (open_auth_store): Add 'pb' parameter, passed as the baton for the new svn_cmdline_auth_master_passphrase_prompt, which itself replaces fetch_nonsecret_secret as the master passphrase fetch callback. Also, don't bother registering a pool cleanup function for the auth store.
On the 'master-passphrase' branch: Consult the 'use-master-password' runtime configuration parameter to decide whether to use an encrypted store or the old config-file-based system. For now, use a fixed master password for the encryption.
Incredibly, this mess actually works. If I flip the use-master-password feature on in my runtime config, I can authenticate against my typical array of Subversion servers with the auth cache stuff really working, except that instead of reading from and writing to my existing auth cache files, it's using my hacked-up encrypted store.
* subversion/libsvn_subr/cmdline.c (fetch_nonsecret_secret): New callback implement function. (cleanup_auth_store_close): New pool cleanup handler. (get_old_auth_providers): Remove, re-merging the contents of this function back into... (svn_cmdline_create_auth_baton): ...this function. Also, open the desired auth store, caching the object in the auth baton parameters.