Author: cmpilato
Date: Fri Apr 5 18:37:24 2013
New Revision: 1465089
URL: http://svn.apache.org/r1465089
Log:
Fix svn_auth_cleanup_walk()'s SWIG-Python manifestation.
* subversion/bindings/swig/core.i
Add typemap for svn_auth_cleanup_func_t/baton pair.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h,
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
(svn_swig_py_auth_cleanup_func): New function.
Modified:
subversion/trunk/subversion/bindings/swig/core.i
subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
Modified: subversion/trunk/subversion/bindings/swig/core.i
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/core.i?rev=1465089&r1=1465088&r2=1465089&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/core.i (original)
+++ subversion/trunk/subversion/bindings/swig/core.i Fri Apr 5 18:37:24 2013
@@ -705,6 +705,15 @@ svn_swig_pl_set_current_pool (apr_pool_t
%authprompt_callback_typemap(ssl_client_cert_pw)
%authprompt_callback_typemap(gnome_keyring_unlock)
+#ifdef SWIGPYTHON
+/* pl and rb aren't yet implemented */
+%callback_typemap_maybenull(svn_auth_cleanup_func_t cleanup_func,
+ void *cleanup_baton,
+ svn_swig_py_auth_cleanup_func,
+ svn_swig_pl_auth_cleanup_func,
+ svn_swig_rb_auth_cleanup_func)
+#endif
+
/* -----------------------------------------------------------------------
* For all the various functions that set a callback baton create a reference
* for the baton (which in this case is an SV pointing to the callback)
Modified:
subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1465089&r1=1465088&r2=1465089&view=diff
==============================================================================
---
subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
(original)
+++
subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
Fri Apr 5 18:37:24 2013
@@ -3284,6 +3284,57 @@ svn_swig_py_auth_ssl_client_cert_pw_prom
return err;
}
+svn_error_t *
+svn_swig_py_auth_cleanup_func(svn_boolean_t *delete_cred,
+ void *cleanup_baton,
+ const char *cred_kind,
+ const char *realmstring,
+ const char *provider,
+ apr_pool_t *scratch_pool)
+{
+ PyObject *function = cleanup_baton;
+ PyObject *result;
+ PyObject *py_scratch_pool;
+ svn_error_t *err = SVN_NO_ERROR;
+
+ *delete_cred = FALSE;
+
+ if (function == NULL || function == Py_None)
+ return SVN_NO_ERROR;
+
+ svn_swig_py_acquire_py_lock();
+
+ py_scratch_pool = make_ob_pool(scratch_pool);
+ if (py_scratch_pool == NULL)
+ {
+ err = callback_exception_error();
+ goto finished;
+ }
+
+ if ((result = PyObject_CallFunction(function,
+ (char *)"sssO",
+ cred_kind, realmstring,
+ provider, py_scratch_pool)) == NULL)
+ {
+ err = callback_exception_error();
+ }
+ else
+ {
+ if (PyInt_Check(result))
+ *delete_cred = PyInt_AsLong(result) ? TRUE : FALSE;
+ else if (PyLong_Check(result))
+ *delete_cred = PyLong_AsLong(result) ? TRUE : FALSE;
+ else
+ err = callback_bad_return_error("Not an integer");
+ Py_DECREF(result);
+ }
+ Py_DECREF(py_scratch_pool);
+
+finished:
+ svn_swig_py_release_py_lock();
+ return err;
+}
+
/* svn_ra_callbacks_t */
static svn_error_t *
ra_callbacks_open_tmp_file(apr_file_t **fp,
Modified:
subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h?rev=1465089&r1=1465088&r2=1465089&view=diff
==============================================================================
---
subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
(original)
+++
subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
Fri Apr 5 18:37:24 2013
@@ -501,6 +501,15 @@ svn_error_t *svn_swig_py_auth_ssl_client
svn_boolean_t may_save,
apr_pool_t *pool);
+/* auth cleanup callback */
+SVN_SWIG_SWIGUTIL_EXPORT
+svn_error_t *svn_swig_py_auth_cleanup_func(svn_boolean_t *delete_cred,
+ void *cleanup_baton,
+ const char *cred_kind,
+ const char *realmstring,
+ const char *provider,
+ apr_pool_t *scratch_pool);
+
SVN_SWIG_SWIGUTIL_EXPORT
void
svn_swig_py_setup_ra_callbacks(svn_ra_callbacks2_t **callbacks,