Rev 1267: Support client strings. in file:///data/jelmer/bzr-svn/0.4-ra-cext/
Jelmer Vernooij
jelmer at samba.org
Sun Jun 22 07:14:39 BST 2008
At file:///data/jelmer/bzr-svn/0.4-ra-cext/
------------------------------------------------------------
revno: 1267
revision-id: jelmer at samba.org-20080622061438-xanmlmwhq1wd35fg
parent: jelmer at samba.org-20080622060420-2642ifct4wqkibog
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4-ra-cext
timestamp: Sun 2008-06-22 08:14:38 +0200
message:
Support client strings.
modified:
ra.c ra.pyx-20080313140933-qybkqaxe3m4mcll7-1
transport.py transport.py-20060406231150-b3472d06b3a0818d
=== modified file 'ra.c'
--- a/ra.c 2008-06-22 06:04:20 +0000
+++ b/ra.c 2008-06-22 06:14:38 +0000
@@ -476,6 +476,7 @@
PyObject *progress_func;
AuthObject *auth;
bool busy;
+ PyObject *client_string_func;
} RemoteAccessObject;
static void ra_done_handler(void *_ra)
@@ -505,6 +506,26 @@
return false;
}
+static svn_error_t *py_get_client_string(void *baton, const char **name, apr_pool_t *pool)
+{
+ RemoteAccessObject *self = (RemoteAccessObject *)baton;
+ PyObject *ret;
+
+ if (self->client_string_func == Py_None) {
+ *name = NULL;
+ return NULL;
+ }
+
+ ret = PyObject_CallFunction(self->client_string_func, "");
+
+ if (ret == NULL)
+ return py_svn_error();
+
+ *name = apr_pstrdup(pool, PyString_AsString(ret));
+
+ return NULL;
+}
+
static svn_error_t *py_open_tmp_file(apr_file_t **fp, void *callback,
apr_pool_t *pool)
{
@@ -517,17 +538,19 @@
static PyObject *ra_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
- char *kwnames[] = { "url", "progress_cb", "auth", "config", NULL };
+ char *kwnames[] = { "url", "progress_cb", "auth", "config", "client_string_func", NULL };
char *url;
PyObject *progress_cb = Py_None;
AuthObject *auth = (AuthObject *)Py_None;
PyObject *config = Py_None;
+ PyObject *client_string_func = Py_None;
RemoteAccessObject *ret;
apr_hash_t *config_hash;
svn_ra_callbacks2_t *callbacks2;
svn_auth_baton_t *auth_baton;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|OOO", kwnames, &url, &progress_cb, (PyObject **)&auth, &config))
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|OOOO", kwnames, &url, &progress_cb,
+ (PyObject **)&auth, &config, &client_string_func))
return NULL;
ret = PyObject_New(RemoteAccessObject, &RemoteAccess_Type);
@@ -554,11 +577,17 @@
return NULL;
}
+ ret->client_string_func = client_string_func;
+ Py_INCREF(client_string_func);
callbacks2->progress_func = py_progress_func;
callbacks2->auth_baton = auth_baton;
callbacks2->open_tmp_file = py_open_tmp_file;
ret->progress_func = progress_cb;
callbacks2->progress_baton = (void *)ret->progress_func;
+#if SVN_VER_MAJOR >= 1 && SVN_VER_MINOR >= 5
+ callbacks2->get_client_string = py_get_client_string;
+#endif
+ Py_INCREF(config);
config_hash = config_hash_from_object(config, ret->pool);
if (config_hash == NULL) {
apr_pool_destroy(ret->pool);
=== modified file 'transport.py'
--- a/transport.py 2008-06-22 04:51:45 +0000
+++ b/transport.py 2008-06-22 06:14:38 +0000
@@ -81,7 +81,8 @@
try:
mutter('opening SVN RA connection to %r' % url)
ret = ra.RemoteAccess(url.encode('utf8'),
- auth=create_auth_baton(url))
+ auth=create_auth_baton(url),
+ client_string_func=get_client_string)
# FIXME: Callbacks
except SubversionException, (_, num):
if num in (ERR_RA_SVN_REPOS_NOT_FOUND,):
More information about the bazaar-commits
mailing list