Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c view on Meta::CPAN
svn_swig_py_acquire_py_lock();
py_callback = PyObject_GetAttrString(callbacks, (char *)callback);
if (py_callback == NULL)
{
err = callback_exception_error();
goto finished;
}
else if (py_callback == Py_None)
{
goto finished;
}
if ((py_value = PyString_FromStringAndSize(value->data, value->len)) == NULL)
{
err = callback_exception_error();
goto finished;
}
if ((result = PyObject_CallFunction(py_callback,
(char *)"ssOO&", path, name, py_value,
make_ob_pool, pool)) == NULL)
{
err = callback_exception_error();
}
Py_XDECREF(result);
finished:
Py_XDECREF(py_callback);
svn_swig_py_release_py_lock();
return err;
}
/* svn_ra_callbacks_t */
static svn_error_t *
ra_callbacks_set_wc_prop(void *baton,
const char *path,
const char *name,
const svn_string_t *value,
apr_pool_t *pool)
{
return ra_callbacks_push_or_set_wc_prop("set_wc_prop", baton, path,
name, value, pool);
}
/* svn_ra_callbacks_t */
static svn_error_t *
ra_callbacks_push_wc_prop(void *baton,
const char *path,
const char *name,
const svn_string_t *value,
apr_pool_t *pool)
{
return ra_callbacks_push_or_set_wc_prop("push_wc_prop", baton, path,
name, value, pool);
}
/* svn_ra_callbacks_t */
static svn_error_t *
ra_callbacks_invalidate_wc_props(void *baton,
const char *path,
const char *name,
apr_pool_t *pool)
{
PyObject *callbacks = (PyObject *)baton;
PyObject *py_callback, *result;
svn_error_t *err = SVN_NO_ERROR;
svn_swig_py_acquire_py_lock();
py_callback = PyObject_GetAttrString(callbacks,
(char *)"invalidate_wc_props");
if (py_callback == NULL)
{
err = callback_exception_error();
goto finished;
}
else if (py_callback == Py_None)
{
goto finished;
}
if ((result = PyObject_CallFunction(py_callback,
(char *)"ssO&", path, name,
make_ob_pool, pool)) == NULL)
{
err = callback_exception_error();
}
Py_XDECREF(result);
finished:
Py_XDECREF(py_callback);
svn_swig_py_release_py_lock();
return err;
}
/* svn_ra_callbacks_t */
static void
ra_callbacks_progress_func(apr_off_t progress,
apr_off_t total,
void *baton,
apr_pool_t *pool)
{
PyObject *callbacks = (PyObject *)baton;
PyObject *py_callback, *py_progress, *py_total, *result;
py_progress = py_total = NULL;
svn_swig_py_acquire_py_lock();
py_callback = PyObject_GetAttrString(callbacks,
(char *)"progress_func");
if (py_callback == NULL)
{
/* Ouch, no way to pass on exceptions! */
/* err = callback_exception_error(); */
goto finished;
}
else if (py_callback == Py_None)
{
goto finished;
}
/* Create PyLongs for progress and total up-front, rather than
passing them directly, so we don't have to worry about the size
(if apr_off_t is 4 bytes, we'd better use the l specifier; if 8
bytes, better use L...) */
if ((py_progress = PyLong_FromLongLong(progress)) == NULL)
{
/* Ouch, no way to pass on exceptions! */
/* err = callback_exception_error(); */
goto finished;
src/subversion/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c view on Meta::CPAN
else if (py_callback == Py_None)
{
goto finished;
}
if ((result = PyObject_CallFunction(py_callback,
(char *)"O&",
make_ob_pool, pool)) == NULL)
{
err = callback_exception_error();
}
else if (result != Py_None)
{
if ((*name = PyString_AsString(result)) == NULL)
{
err = callback_exception_error();
}
}
Py_XDECREF(result);
finished:
Py_XDECREF(py_callback);
svn_swig_py_release_py_lock();
return err;
}
void
svn_swig_py_setup_ra_callbacks(svn_ra_callbacks2_t **callbacks,
void **baton,
PyObject *py_callbacks,
apr_pool_t *pool)
{
svn_error_t *err = svn_ra_create_callbacks(callbacks, pool);
PyObject *py_auth_baton;
if (err)
{
svn_swig_py_svn_exception(err);
return;
}
(*callbacks)->open_tmp_file = ra_callbacks_open_tmp_file;
py_auth_baton = PyObject_GetAttrString(py_callbacks, (char *)"auth_baton");
if (svn_swig_ConvertPtrString(py_auth_baton,
(void **)&((*callbacks)->auth_baton),
"svn_auth_baton_t *"))
{
err = type_conversion_error("svn_auth_baton_t *");
svn_swig_py_svn_exception(err);
Py_XDECREF(py_auth_baton);
return;
}
Py_XDECREF(py_auth_baton);
(*callbacks)->get_wc_prop = ra_callbacks_get_wc_prop;
(*callbacks)->set_wc_prop = ra_callbacks_set_wc_prop;
(*callbacks)->push_wc_prop = ra_callbacks_push_wc_prop;
(*callbacks)->invalidate_wc_props = ra_callbacks_invalidate_wc_props;
(*callbacks)->progress_func = ra_callbacks_progress_func;
(*callbacks)->progress_baton = py_callbacks;
(*callbacks)->cancel_func = ra_callbacks_cancel_func;
(*callbacks)->get_client_string = ra_callbacks_get_client_string;
*baton = py_callbacks;
}
svn_error_t *svn_swig_py_commit_callback2(const svn_commit_info_t *commit_info,
void *baton,
apr_pool_t *pool)
{
PyObject *receiver = baton;
PyObject *result;
svn_error_t *err = SVN_NO_ERROR;
if ((receiver == NULL) || (receiver == Py_None))
return SVN_NO_ERROR;
svn_swig_py_acquire_py_lock();
if ((result = PyObject_CallFunction(receiver,
(char *)"O&O&",
make_ob_commit_info, commit_info,
make_ob_pool, pool)) == NULL)
{
err = callback_exception_error();
}
else
{
if (result != Py_None)
err = callback_bad_return_error("Not None");
Py_DECREF(result);
}
svn_swig_py_release_py_lock();
return err;
}
svn_error_t *svn_swig_py_commit_callback(svn_revnum_t new_revision,
const char *date,
const char *author,
void *baton)
{
PyObject *receiver = baton;
PyObject *result;
svn_error_t *err = SVN_NO_ERROR;
if ((receiver == NULL) || (receiver == Py_None))
return SVN_NO_ERROR;
svn_swig_py_acquire_py_lock();
if ((result = PyObject_CallFunction(receiver,
(char *)"lss",
new_revision, date, author)) == NULL)
{
err = callback_exception_error();
}
( run in 2.347 seconds using v1.01-cache-2.11-cpan-5735350b133 )