summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@jelmer.uk>2017-07-19 23:45:34 +0000
committerJelmer Vernooij <jelmer@jelmer.uk>2017-07-19 23:45:34 +0000
commit6b99d9ba1393b52f107eb6b20b5d4a113e23c0d9 (patch)
tree978d9f16590bcd046b08bffb858f9ba3fa3ec1b0
parent22244ef78079b0756211dcb3c7574e11e0ee69ca (diff)
parenta06e905cf3c29650eb14ee65ad68e98013318d13 (diff)
New upstream version 0.10.1
-rw-r--r--MANIFEST.in4
-rw-r--r--Makefile38
-rw-r--r--NEWS10
-rw-r--r--PKG-INFO4
-rw-r--r--README.md65
-rwxr-xr-xbin/subvertpy-fast-export52
-rw-r--r--man/subvertpy-fast-export.139
-rwxr-xr-xsetup.py2
-rw-r--r--subvertpy.cfg5
-rw-r--r--subvertpy/__init__.py2
-rw-r--r--subvertpy/_ra.c38
-rw-r--r--subvertpy/client.c639
-rw-r--r--subvertpy/editor.h12
-rw-r--r--subvertpy/ra.h2
-rw-r--r--subvertpy/repos.c11
-rw-r--r--subvertpy/util.c6
-rw-r--r--subvertpy/util.h84
-rw-r--r--subvertpy/wc.c64
18 files changed, 628 insertions, 449 deletions
diff --git a/MANIFEST.in b/MANIFEST.in
index 2a90e9c4..d7fcd217 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -3,3 +3,7 @@ include subvertpy/*.c
include subvertpy/*.h
include AUTHORS COPYING INSTALL NEWS TODO
include examples/*.py
+include README.md
+include Makefile
+include subvertpy.cfg
+include man/*.1
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..bad12947
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,38 @@
+PYTHON = python
+FLAKE8 ?= flake8
+PYDOCTOR = pydoctor
+PYDOCTOR_OPTIONS ?=
+SETUP = $(PYTHON) setup.py
+TESTRUNNER = unittest
+DEBUGGER ?=
+RUNTEST = PYTHONPATH=.:$(PYTHONPATH) $(DEBUGGER) $(PYTHON) -m $(TESTRUNNER) -v
+
+all: build build-inplace
+
+build::
+ $(SETUP) build
+
+build-inplace::
+ $(SETUP) build_ext --inplace
+
+install::
+ $(SETUP) install
+
+check:: build-inplace
+ $(RUNTEST) $(TEST_OPTIONS) subvertpy.tests.test_suite
+
+gdb-check::
+ $(MAKE) check DEBUGGER="gdb --args"
+
+check-one::
+ $(MAKE) check TEST_OPTIONS=-f
+
+clean::
+ $(SETUP) clean
+ rm -f subvertpy/*.so subvertpy/*.o subvertpy/*.pyc
+
+pydoctor:
+ $(PYDOCTOR) $(PYDOCTOR_OPTIONS) --introspect-c-modules -c subvertpy.cfg --make-html
+
+style:
+ $(FLAKE8) --exclude=build,.git,build-pypy,.tox
diff --git a/NEWS b/NEWS
index 19cffb57..1ebd49b4 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,12 @@
-0.10.0 UNRELEASED
+0.10.1 2017-07-19
+
+ BUG FIXES
+
+ * Bundle Makefile and subvertpy.cfg. (Jelmer Vernooij)
+
+ * Fix some endianness issues. (Jelmer Vernooij)
+
+0.10.0 2017-07-17
CHANGES
diff --git a/PKG-INFO b/PKG-INFO
index 49adea20..3fd6ebc0 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: subvertpy
-Version: 0.10.0
+Version: 0.10.1
Summary: Alternative Python bindings for Subversion
Home-page: https://jelmer.uk/subvertpy
Author: Jelmer Vernooij
Author-email: jelmer@jelmer.uk
License: LGPLv2.1 or later
-Download-URL: https://jelmer.uk/subvertpy/subvertpy-0.10.0.tar.gz
+Download-URL: https://jelmer.uk/subvertpy/subvertpy-0.10.1.tar.gz
Description:
Alternative Python bindings for Subversion. The goal is to have
complete, portable and "Pythonic" Python bindings.
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..8ba3da59
--- /dev/null
+++ b/README.md
@@ -0,0 +1,65 @@
+[![Build Status](https://travis-ci.org/jelmer/subvertpy.png?branch=master)](https://travis-ci.org/jelmer/subvertpy)
+
+Subvertpy
+=========
+
+Homepage: https://jelmer.uk/subvertpy/
+
+Python bindings for the Subversion version control system that are aimed to be
+complete, fast and feel native to Python programmers.
+
+Bindings are provided for the working copy, client, delta, remote access and
+repository APIs. A hookable server side implementation of the custom Subversion
+protocol (svn_ra) is also provided.
+
+Differences with similar packages
+---------------------------------
+subvertpy covers more of the APIs than python-svn. It provides a more
+"Pythonic" API than python-subversion, which wraps the Subversion C API pretty
+much directly. Neither provide a hookable server-side.
+
+Dependencies
+------------
+Subvertpy depends on Python 2.7 or 3.5, and Subversion 1.4 or later. It should
+work on Windows as well as most POSIX-based platforms (including Linux, BSDs
+and Mac OS X).
+
+Installation
+------------
+Standard distutils are used - use "setup.py build" to build and "setup.install"
+to install. On most platforms, setup will find the Python and Subversion
+development libraries by itself. On Windows you may have to set various
+environment variables, see the next section for details.
+
+Build instructions for Windows
+==============================
+
+* Install the SVN dev kit ZIP for Windows from
+ http://sourceforge.net/projects/win32svn/files/
+ E.g. svn-win32-1.4.6_dev.zip
+* Find the SVN binary ZIP file with the binaries for your dev kit.
+ E.g. svn-win32-1.4.6.zip
+ Unzip this in the *same directory* as the dev kit - README.txt will be
+ overwritten, but that is all. This is the default location the .ZIP file
+ will suggest (ie, the directory embedded in both .zip files are the same)
+* Set SVN_DEV to point at this directory.
+* Install BDB.
+ For Subversion 1.7.0 and later:
+ http://www.oracle.com/technetwork/database/berkeleydb/downloads/index-082944.html
+ download Berkeley DB 4.8.30.msi Windows installer and install it.
+ For Subversion 1.6.17 and earlier:
+ http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=688
+ download "db-4.4.20-win32.zip" or earlier version of BDB and extract it.
+* Set SVN_BDB to the installed directory or extracted directory.
+* Install SVN libintl.
+ http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=2627
+ Download svn-win32-libintl.zip.
+ extract it to the directory that you want.
+* Set SVN_LIBINTL to the extract dir.
+
+Development
+-----------
+If using GCC it might be useful to disable the deprecation warnings when
+compiling to see if there are any more serious warnings:
+
+make CFLAGS="-Wno-deprecated-declarations"
diff --git a/bin/subvertpy-fast-export b/bin/subvertpy-fast-export
index 913168cf..374c59fe 100755
--- a/bin/subvertpy-fast-export
+++ b/bin/subvertpy-fast-export
@@ -10,22 +10,24 @@
#
# Adapted for subvertpy by Jelmer Vernooij <jelmer@samba.org>
-trunk_path = '/trunk/'
-branches_path = '/branches/'
-tags_path = '/tags/'
-address = 'localhost'
-
from io import BytesIO
-import sys, os.path
+import sys
+import os.path
from optparse import OptionParser
import stat
from time import mktime, strptime
from subvertpy.repos import PATH_CHANGE_DELETE, Repository
+trunk_path = '/trunk/'
+branches_path = '/branches/'
+tags_path = '/tags/'
+address = 'localhost'
+
ct_short = ['M', 'A', 'D', 'R', 'X']
stdout = getattr(sys.stdout, 'buffer', sys.stdout)
+
def dump_file_blob(root, stream, stream_length):
stdout.write(("data %s\n" % stream_length).encode("ascii"))
stdout.flush()
@@ -189,28 +191,38 @@ if __name__ == '__main__':
dest='final_rev', metavar='FINAL_REV', type='int')
parser.add_option('-r', '--first-rev', help='First revision to import',
dest='first_rev', metavar='FIRST_REV', type='int')
- parser.add_option('-t', '--trunk-path', help="Path in repo to /trunk, may be `regex:/cvs/(trunk)/proj1/(.*)`\nFirst group is used as branchname, second to match files",
- dest='trunk_path', metavar='TRUNK_PATH')
- parser.add_option('-b', '--branches-path', help='Path in repo to /branches',
- dest='branches_path', metavar='BRANCHES_PATH')
- parser.add_option('-T', '--tags-path', help='Path in repo to /tags',
- dest='tags_path', metavar='TAGS_PATH')
- parser.add_option('-a', '--address', help='Domain to put on users for their mail address',
- dest='address', metavar='hostname', type='string')
- parser.add_option("--version", help="Print version and exit", action="store_true")
+ parser.add_option(
+ '-t', '--trunk-path',
+ help=(
+ "Path in repo to /trunk, may be `regex:/cvs/(trunk)/proj1/(.*)`\n"
+ "First group is used as branchname, second to match files"),
+ dest='trunk_path', metavar='TRUNK_PATH')
+ parser.add_option(
+ '-b', '--branches-path', help='Path in repo to /branches',
+ dest='branches_path', metavar='BRANCHES_PATH')
+ parser.add_option(
+ '-T', '--tags-path', help='Path in repo to /tags',
+ dest='tags_path', metavar='TAGS_PATH')
+ parser.add_option(
+ '-a', '--address',
+ help='Domain to put on users for their mail address',
+ dest='address', metavar='hostname', type='string')
+ parser.add_option(
+ "--version", help="Print version and exit",
+ action="store_true")
(options, args) = parser.parse_args()
if options.version:
import subvertpy
- print ".".join(str(x) for x in subvertpy.__version__)
+ print(".".join(str(x) for x in subvertpy.__version__))
sys.exit(0)
- if options.trunk_path != None:
+ if options.trunk_path is not None:
trunk_path = options.trunk_path
- if options.branches_path != None:
+ if options.branches_path is not None:
branches_path = options.branches_path
- if options.tags_path != None:
+ if options.tags_path is not None:
tags_path = options.tags_path
- if options.address != None:
+ if options.address is not None:
address = options.address
MATCHER = Matcher.getMatcher(trunk_path)
diff --git a/man/subvertpy-fast-export.1 b/man/subvertpy-fast-export.1
new file mode 100644
index 00000000..8a4308bd
--- /dev/null
+++ b/man/subvertpy-fast-export.1
@@ -0,0 +1,39 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.38.2.
+.TH SUBVERTPY-FAST-EXPORT "1" "October 2010" "subvertpy-fast-export" "subvertpy"
+.SH NAME
+subvertpy-fast-export \- generate fastexport stream from a Subversion repository
+.SH DESCRIPTION
+Generate fastexport stream from a Subversion repository.
+.SH SYNOPSIS
+.B subvertpy-fast-export
+[\fIoptions\fR] \fIREPOS_PATH\fR
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+show a help message and exit
+.TP
+\fB\-f\fR FINAL_REV, \fB\-\-final\-rev\fR=\fIFINAL_REV\fR
+Final revision to import
+.TP
+\fB\-r\fR FIRST_REV, \fB\-\-first\-rev\fR=\fIFIRST_REV\fR
+First revision to import
+.TP
+\fB\-t\fR TRUNK_PATH, \fB\-\-trunk\-path\fR=\fITRUNK_PATH\fR
+Path in repo to /trunk, may be
+`regex:/cvs/(trunk)/proj1/(.*)` First group is used as
+branchname, second to match files
+.TP
+\fB\-b\fR BRANCHES_PATH, \fB\-\-branches\-path\fR=\fIBRANCHES_PATH\fR
+Path in repo to /branches
+.TP
+\fB\-T\fR TAGS_PATH, \fB\-\-tags\-path\fR=\fITAGS_PATH\fR
+Path in repo to /tags
+.TP
+\fB\-a\fR hostname, \fB\-\-address\fR=\fIhostname\fR
+Domain to put on users for their mail address
+.TP
+\fB\-\-version\fR
+Print version and exit
+.SH "SEE ALSO"
+.UR https://jelmer.uk/subvertpy/
+.BR https://jelmer.uk/subvertpy/
diff --git a/setup.py b/setup.py
index 06540dd0..44b9ec9f 100755
--- a/setup.py
+++ b/setup.py
@@ -412,7 +412,7 @@ def subvertpy_modules():
]
-subvertpy_version = (0, 10, 0)
+subvertpy_version = (0, 10, 1)
subvertpy_version_string = ".".join(map(str, subvertpy_version))
diff --git a/subvertpy.cfg b/subvertpy.cfg
new file mode 100644
index 00000000..7886c024
--- /dev/null
+++ b/subvertpy.cfg
@@ -0,0 +1,5 @@
+packages: subvertpy
+docformat: restructuredtext
+projectname: subvertpy
+projecturl: https://jelmer.uk/subvertpy/
+htmloutput: apidocs
diff --git a/subvertpy/__init__.py b/subvertpy/__init__.py
index 592fb2e0..6b0762de 100644
--- a/subvertpy/__init__.py
+++ b/subvertpy/__init__.py
@@ -17,7 +17,7 @@
"""Python bindings for Subversion."""
__author__ = "Jelmer Vernooij <jelmer@jelmer.uk>"
-__version__ = (0, 10, 0)
+__version__ = (0, 10, 1)
NODE_DIR = 2
NODE_FILE = 1
diff --git a/subvertpy/_ra.c b/subvertpy/_ra.c
index 37763b67..4c14131a 100644
--- a/subvertpy/_ra.c
+++ b/subvertpy/_ra.c
@@ -100,7 +100,7 @@ static svn_error_t *py_lock_func (void *baton, const char *path, int do_lock,
Py_INCREF(py_ra_err);
}
py_lock = pyify_lock(lock);
- ret = PyObject_CallFunction((PyObject *)baton, "zbOO", path, do_lock,
+ ret = PyObject_CallFunction((PyObject *)baton, "zbOO", path, do_lock?true:false,
py_lock, py_ra_err);
Py_DECREF(py_lock);
Py_DECREF(py_ra_err);
@@ -390,7 +390,7 @@ static svn_error_t *py_file_rev_handler(void *baton, const char *path, svn_revnu
py_rev_props = prop_hash_to_dict(rev_props);
CB_CHECK_PYRETVAL(py_rev_props);
- ret = PyObject_CallFunction(fn, "slOb", path, rev, py_rev_props, result_of_merge);
+ ret = PyObject_CallFunction(fn, "slOi", path, rev, py_rev_props, result_of_merge);
Py_DECREF(py_rev_props);
CB_CHECK_PYRETVAL(ret);
@@ -940,7 +940,7 @@ static PyObject *ra_do_update(PyObject *self, PyObject *args)
apr_pool_t *temp_pool, *result_pool;
ReporterObject *ret;
RemoteAccessObject *ra = (RemoteAccessObject *)self;
- svn_boolean_t send_copyfrom_args = FALSE;
+ bool send_copyfrom_args = false;
if (!PyArg_ParseTuple(args, "lsbO|bb:do_update", &revision_to_update_to, &update_target, &recurse, &update_editor,
&send_copyfrom_args, &ignore_ancestry))
@@ -1981,7 +1981,7 @@ fail_busy:
#if ONLY_SINCE_SVN(1, 5)
static PyObject *range_to_tuple(svn_merge_range_t *range)
{
- return Py_BuildValue("(llb)", range->start, range->end, range->inheritable);
+ return Py_BuildValue("(llb)", range->start, range->end, range->inheritable?true:false);
}
static PyObject *merge_rangelist_to_list(apr_array_header_t *rangelist)
@@ -2059,7 +2059,7 @@ static PyObject *ra_mergeinfo(PyObject *self, PyObject *args)
svn_revnum_t revision = -1;
PyObject *paths;
svn_mergeinfo_inheritance_t inherit = svn_mergeinfo_explicit;
- svn_boolean_t include_descendants;
+ bool include_descendants;
if (!PyArg_ParseTuple(args, "O|lib:mergeinfo", &paths, &revision, &inherit, &include_descendants))
return NULL;
@@ -2175,7 +2175,7 @@ static PyObject *ra_get_file_revs(PyObject *self, PyObject *args)
PyObject *file_rev_handler;
apr_pool_t *temp_pool;
RemoteAccessObject *ra = (RemoteAccessObject *)self;
- svn_boolean_t include_merged_revisions = FALSE;
+ bool include_merged_revisions = false;
if (!PyArg_ParseTuple(args, "sllO|b:get_file_revs", &path, &start,
&end, &file_rev_handler, &include_merged_revisions))
@@ -2623,19 +2623,19 @@ static PyObject *credentials_iter_next(CredentialsIterObject *iterator)
if (!strcmp(iterator->cred_kind, SVN_AUTH_CRED_SIMPLE)) {
svn_auth_cred_simple_t *simple = iterator->credentials;
- ret = Py_BuildValue("(zzb)", simple->username, simple->password, simple->may_save);
+ ret = Py_BuildValue("(zzb)", simple->username, simple->password, simple->may_save?true:false);
} else if (!strcmp(iterator->cred_kind, SVN_AUTH_CRED_USERNAME)) {
svn_auth_cred_username_t *uname = iterator->credentials;
- ret = Py_BuildValue("(zb)", uname->username, uname->may_save);
+ ret = Py_BuildValue("(zb)", uname->username, uname->may_save?true:false);
} else if (!strcmp(iterator->cred_kind, SVN_AUTH_CRED_SSL_CLIENT_CERT)) {
svn_auth_cred_ssl_client_cert_t *ccert = iterator->credentials;
- ret = Py_BuildValue("(zb)", ccert->cert_file, ccert->may_save);
+ ret = Py_BuildValue("(zb)", ccert->cert_file, ccert->may_save?true:false);
} else if (!strcmp(iterator->cred_kind, SVN_AUTH_CRED_SSL_CLIENT_CERT_PW)) {
svn_auth_cred_ssl_client_cert_pw_t *ccert = iterator->credentials;
- ret = Py_BuildValue("(zb)", ccert->password, ccert->may_save);
+ ret = Py_BuildValue("(zb)", ccert->password, ccert->may_save?true:false);
} else if (!strcmp(iterator->cred_kind, SVN_AUTH_CRED_SSL_SERVER_TRUST)) {
svn_auth_cred_ssl_server_trust_t *ccert = iterator->credentials;
- ret = Py_BuildValue("(ib)", ccert->accepted_failures, ccert->may_save);
+ ret = Py_BuildValue("(ib)", ccert->accepted_failures, ccert->may_save?true:false);
} else {
PyErr_Format(PyExc_RuntimeError, "Unknown cred kind %s", iterator->cred_kind);
return NULL;
@@ -2762,7 +2762,7 @@ static svn_error_t *py_username_prompt(svn_auth_cred_username_t **cred, void *ba
PyObject *py_username, *py_may_save;
char *username;
PyGILState_STATE state = PyGILState_Ensure();
- ret = PyObject_CallFunction(fn, "sb", realm, may_save);
+ ret = PyObject_CallFunction(fn, "si", realm, may_save);
CB_CHECK_PYRETVAL(ret);
if (ret == Py_None) {
@@ -2834,7 +2834,7 @@ static svn_error_t *py_simple_prompt(svn_auth_cred_simple_t **cred, void *baton,
PyObject *py_may_save, *py_username, *py_password;
char *ret_username, *password;
PyGILState_STATE state = PyGILState_Ensure();
- ret = PyObject_CallFunction(fn, "ssb", realm, username, may_save);
+ ret = PyObject_CallFunction(fn, "ssi", realm, username, may_save);
CB_CHECK_PYRETVAL(ret);
if (!PyTuple_Check(ret)) {
PyErr_SetString(PyExc_TypeError, "expected tuple with simple credentials");
@@ -2919,7 +2919,7 @@ static svn_error_t *py_ssl_server_trust_prompt(svn_auth_cred_ssl_server_trust_t
CB_CHECK_PYRETVAL(py_cert);
- ret = PyObject_CallFunction(fn, "slOb", realm, failures, py_cert, may_save);
+ ret = PyObject_CallFunction(fn, "slOi", realm, failures, py_cert, may_save);
Py_DECREF(py_cert);
CB_CHECK_PYRETVAL(ret);
@@ -2929,7 +2929,7 @@ static svn_error_t *py_ssl_server_trust_prompt(svn_auth_cred_ssl_server_trust_t
return NULL;
}
- if (!PyArg_ParseTuple(ret, "ib", &accepted_failures, &may_save)) {
+ if (!PyArg_ParseTuple(ret, "ii", &accepted_failures, &may_save)) {
Py_DECREF(ret);
PyGILState_Release(state);
return py_svn_error();
@@ -2968,9 +2968,9 @@ static svn_error_t *py_ssl_client_cert_pw_prompt(svn_auth_cred_ssl_client_cert_p
{
PyObject *fn = (PyObject *)baton, *ret, *py_password;
PyGILState_STATE state = PyGILState_Ensure();
- ret = PyObject_CallFunction(fn, "sb", realm, may_save);
+ ret = PyObject_CallFunction(fn, "si", realm, may_save);
CB_CHECK_PYRETVAL(ret);
- if (!PyArg_ParseTuple(ret, "Ob", &py_password, &may_save)) {
+ if (!PyArg_ParseTuple(ret, "Oi", &py_password, &may_save)) {
goto fail;
}
@@ -2995,7 +2995,7 @@ static svn_error_t *py_ssl_client_cert_prompt(svn_auth_cred_ssl_client_cert_t **
PyObject *fn = (PyObject *)baton, *ret, *py_may_save, *py_cert_file;
PyGILState_STATE state = PyGILState_Ensure();
char *cert_file;
- ret = PyObject_CallFunction(fn, "sb", realm, may_save);
+ ret = PyObject_CallFunction(fn, "si", realm, may_save);
CB_CHECK_PYRETVAL(ret);
if (!PyTuple_Check(ret)) {
@@ -3108,7 +3108,7 @@ static svn_error_t *py_cb_get_simple_provider_prompt(svn_boolean_t *may_save_pla
PyGILState_Release(state);
return py_svn_error();
}
- *may_save_plaintext = PyObject_IsTrue(ret);
+ *may_save_plaintext = PyObject_IsTrue(ret)?TRUE:FALSE;
Py_DECREF(ret);
PyGILState_Release(state);
}
diff --git a/subvertpy/client.c b/subvertpy/client.c
index cbc5b580..04b9ae57 100644
--- a/subvertpy/client.c
+++ b/subvertpy/client.c
@@ -75,96 +75,96 @@ static int client_set_config(PyObject *self, PyObject *auth, void *closure);
static bool client_check_path(const char *path, apr_pool_t *scratch_pool)
{
- return svn_path_is_canonical(path, scratch_pool);
+ return svn_path_is_canonical(path, scratch_pool);
}
static bool client_path_list_to_apr_array(apr_pool_t *pool, PyObject *l, apr_array_header_t **ret)
{
- int i;
- const char *path;
- if (l == Py_None) {
- *ret = NULL;
- return true;
- }
- if (PyUnicode_Check(l) || PyBytes_Check(l)) {
- *ret = apr_array_make(pool, 1, sizeof(char *));
- path = py_object_to_svn_string(l, pool);
- if (path == NULL) {
- return false;
- }
- if (!client_check_path(path, pool)) {
- PyErr_SetString(PyExc_ValueError, "Expected canonical path or URL");
- return false;
- }
- APR_ARRAY_PUSH(*ret, const char *) = path;
- } else if (PyList_Check(l)) {
- *ret = apr_array_make(pool, PyList_Size(l), sizeof(char *));
- for (i = 0; i < PyList_GET_SIZE(l); i++) {
- PyObject *item = PyList_GET_ITEM(l, i);
- path = py_object_to_svn_string(item, pool);
- if (!client_check_path(path, pool)) {
- PyErr_SetString(PyExc_ValueError, "Expected canonical path or URL");
- return false;
- }
- APR_ARRAY_PUSH(*ret, const char *) = path;
- }
- } else {
- PyErr_Format(PyExc_TypeError, "Expected list of strings, got: %s",
- l->ob_type->tp_name);
- return false;
- }
+ int i;
+ const char *path;
+ if (l == Py_None) {
+ *ret = NULL;
+ return true;
+ }
+ if (PyUnicode_Check(l) || PyBytes_Check(l)) {
+ *ret = apr_array_make(pool, 1, sizeof(char *));
+ path = py_object_to_svn_string(l, pool);
+ if (path == NULL) {
+ return false;
+ }
+ if (!client_check_path(path, pool)) {
+ PyErr_SetString(PyExc_ValueError, "Expected canonical path or URL");
+ return false;
+ }
+ APR_ARRAY_PUSH(*ret, const char *) = path;
+ } else if (PyList_Check(l)) {
+ *ret = apr_array_make(pool, PyList_Size(l), sizeof(char *));
+ for (i = 0; i < PyList_GET_SIZE(l); i++) {
+ PyObject *item = PyList_GET_ITEM(l, i);
+ path = py_object_to_svn_string(item, pool);
+ if (!client_check_path(path, pool)) {
+ PyErr_SetString(PyExc_ValueError, "Expected canonical path or URL");
+ return false;
+ }
+ APR_ARRAY_PUSH(*ret, const char *) = path;
+ }
+ } else {
+ PyErr_Format(PyExc_TypeError, "Expected list of strings, got: %s",
+ l->ob_type->tp_name);
+ return false;
+ }
- return true;
+ return true;
}
static bool to_opt_revision(PyObject *arg, svn_opt_revision_t *ret)
{
- if (PyLong_Check(arg)) {
- ret->kind = svn_opt_revision_number;
- ret->value.number = PyLong_AsLong(arg);
- if (ret->value.number == -1 && PyErr_Occurred()) {
- return false;
- }
- return true;
+ if (PyLong_Check(arg)) {
+ ret->kind = svn_opt_revision_number;
+ ret->value.number = PyLong_AsLong(arg);
+ if (ret->value.number == -1 && PyErr_Occurred()) {
+ return false;
+ }
+ return true;
#if PY_MAJOR_VERSION < 3
- } else if (PyInt_Check(arg)) {
- ret->kind = svn_opt_revision_number;
- ret->value.number = PyInt_AsLong(arg);
- if (ret->value.number == -1 && PyErr_Occurred()) {
- return false;
- }
- return true;
+ } else if (PyInt_Check(arg)) {
+ ret->kind = svn_opt_revision_number;
+ ret->value.number = PyInt_AsLong(arg);
+ if (ret->value.number == -1 && PyErr_Occurred()) {
+ return false;
+ }
+ return true;
#endif
- } else if (arg == Py_None) {
- ret->kind = svn_opt_revision_unspecified;
- return true;
- } else if (PyUnicode_Check(arg) || PyBytes_Check(arg)) {
- char *text;
- if (PyUnicode_Check(arg)) {
- arg = PyUnicode_AsUTF8String(arg);
- } else {
- Py_INCREF(arg);
- }
+ } else if (arg == Py_None) {
+ ret->kind = svn_opt_revision_unspecified;
+ return true;
+ } else if (PyUnicode_Check(arg) || PyBytes_Check(arg)) {
+ char *text;
+ if (PyUnicode_Check(arg)) {
+ arg = PyUnicode_AsUTF8String(arg);
+ } else {
+ Py_INCREF(arg);
+ }
- text = PyBytes_AsString(arg);
- if (!strcmp(text, "HEAD")) {
- ret->kind = svn_opt_revision_head;
- Py_DECREF(arg);
- return true;
- } else if (!strcmp(text, "WORKING")) {
- ret->kind = svn_opt_revision_working;
- Py_DECREF(arg);
- return true;
- } else if (!strcmp(text, "BASE")) {
- ret->kind = svn_opt_revision_base;
- Py_DECREF(arg);
- return true;
- }
- Py_DECREF(arg);
- }
+ text = PyBytes_AsString(arg);
+ if (!strcmp(text, "HEAD")) {
+ ret->kind = svn_opt_revision_head;
+ Py_DECREF(arg);
+ return true;
+ } else if (!strcmp(text, "WORKING")) {
+ ret->kind = svn_opt_revision_working;
+ Py_DECREF(arg);
+ return true;
+ } else if (!strcmp(text, "BASE")) {
+ ret->kind = svn_opt_revision_base;
+ Py_DECREF(arg);
+ return true;
+ }
+ Py_DECREF(arg);
+ }
- PyErr_SetString(PyExc_ValueError, "Unable to parse revision");
- return false;
+ PyErr_SetString(PyExc_ValueError, "Unable to parse revision");
+ return false;
}
static PyObject *wrap_py_commit_items(const apr_array_header_t *commit_items)
@@ -215,68 +215,67 @@ static PyObject *wrap_py_commit_items(const apr_array_header_t *commit_items)
}
#if ONLY_SINCE_SVN(1, 8)
-static svn_error_t *proplist_receiver2(void *prop_list, const char *path,
- apr_hash_t *prop_hash,
- apr_array_header_t *inherited_props,
- apr_pool_t *scratch_pool)
+static svn_error_t *proplist_receiver2(
+ void *prop_list, const char *path, apr_hash_t *prop_hash,
+ apr_array_header_t *inherited_props, apr_pool_t *scratch_pool)
{
- PyGILState_STATE state = PyGILState_Ensure();
- PyObject *prop_dict;
- PyObject *value;
+ PyGILState_STATE state = PyGILState_Ensure();
+ PyObject *prop_dict;
+ PyObject *value;
- prop_dict = prop_hash_to_dict(prop_hash);
+ prop_dict = prop_hash_to_dict(prop_hash);
- if (prop_dict == NULL) {
- PyGILState_Release(state);
- return py_svn_error();
- }
+ if (prop_dict == NULL) {
+ PyGILState_Release(state);
+ return py_svn_error();
+ }
- value = Py_BuildValue("(sO)", path, prop_dict);
- if (value == NULL) {
- PyGILState_Release(state);
- return py_svn_error();
- }
+ value = Py_BuildValue("(sO)", path, prop_dict);
+ if (value == NULL) {
+ PyGILState_Release(state);
+ return py_svn_error();
+ }
- /* TODO(jelmer): Convert inherited_props */
+ /* TODO(jelmer): Convert inherited_props */
- if (PyList_Append(prop_list, value) != 0) {
- PyGILState_Release(state);
- return py_svn_error();
- }
+ if (PyList_Append(prop_list, value) != 0) {
+ PyGILState_Release(state);
+ return py_svn_error();
+ }
- PyGILState_Release(state);
+ PyGILState_Release(state);
- return NULL;
+ return NULL;
}
#elif ONLY_SINCE_SVN(1, 5)
static svn_error_t *proplist_receiver(void *prop_list, const char *path,
apr_hash_t *prop_hash, apr_pool_t *pool)
{
- PyGILState_STATE state = PyGILState_Ensure();
- PyObject *prop_dict;
- PyObject *value;
+ PyGILState_STATE state = PyGILState_Ensure();
+ PyObject *prop_dict;
+ PyObject *value;
- prop_dict = prop_hash_to_dict(prop_hash);
+ prop_dict = prop_hash_to_dict(prop_hash);
- if (prop_dict == NULL) {
- PyGILState_Release(state);
- return py_svn_error();
- }
+ if (prop_dict == NULL) {
+ PyGILState_Release(state);
+ return py_svn_error();
+ }
- value = Py_BuildValue("(sO)", path, prop_dict);
- if (value == NULL) {
- PyGILState_Release(state);
- return py_svn_error();
- }
+ value = Py_BuildValue("(sO)", path, prop_dict);
+ if (value == NULL) {
+ PyGILState_Release(state);
+ return py_svn_error();
+ }
- if (PyList_Append(prop_list, value) != 0) {
- PyGILState_Release(state);
- return py_svn_error();
- }
+ if (PyList_Append(prop_list, value) != 0) {
+ PyGILState_Release(state);
+ return py_svn_error();
+ }
- PyGILState_Release(state);
+ PyGILState_Release(state);
- return NULL;
+ return NULL;
}
#endif
@@ -288,30 +287,30 @@ static svn_error_t *list_receiver2(void *dict, const char *path,
const char *external_target,
apr_pool_t *pool)
{
- PyGILState_STATE state = PyGILState_Ensure();
- PyObject *value;
+ PyGILState_STATE state = PyGILState_Ensure();
+ PyObject *value;
- value = py_dirent(dirent, SVN_DIRENT_ALL);
- if (value == NULL) {
- PyGILState_Release(state);
- return py_svn_error();
- }
+ value = py_dirent(dirent, SVN_DIRENT_ALL);
+ if (value == NULL) {
+ PyGILState_Release(state);
+ return py_svn_error();
+ }
- if (external_parent_url != NULL || external_target != NULL) {
- value = Py_BuildValue("(Nzz)", value, external_parent_url, external_target);
- }
+ if (external_parent_url != NULL || external_target != NULL) {
+ value = Py_BuildValue("(Nzz)", value, external_parent_url, external_target);
+ }
- if (PyDict_SetItemString(dict, path, value) != 0) {
- Py_DECREF(value);
- PyGILState_Release(state);
- return py_svn_error();
- }
+ if (PyDict_SetItemString(dict, path, value) != 0) {
+ Py_DECREF(value);
+ PyGILState_Release(state);
+ return py_svn_error();
+ }
- Py_DECREF(value);
+ Py_DECREF(value);
- PyGILState_Release(state);
+ PyGILState_Release(state);
- return NULL;
+ return NULL;
}
#else
static svn_error_t *list_receiver(void *dict, const char *path,
@@ -319,26 +318,26 @@ static svn_error_t *list_receiver(void *dict, const char *path,
const svn_lock_t *lock, const char *abs_path,
apr_pool_t *pool)
{
- PyGILState_STATE state = PyGILState_Ensure();
- PyObject *value;
+ PyGILState_STATE state = PyGILState_Ensure();
+ PyObject *value;
- value = py_dirent(dirent, SVN_DIRENT_ALL);
- if (value == NULL) {
- PyGILState_Release(state);
- return py_svn_error();
- }
+ value = py_dirent(dirent, SVN_DIRENT_ALL);
+ if (value == NULL) {
+ PyGILState_Release(state);
+ return py_svn_error();
+ }
- if (PyDict_SetItemString(dict, path, value) != 0) {
- Py_DECREF(value);
- PyGILState_Release(state);
- return py_svn_error();
- }
+ if (PyDict_SetItemString(dict, path, value) != 0) {
+ Py_DECREF(value);
+ PyGILState_Release(state);
+ return py_svn_error();
+ }
- Py_DECREF(value);
+ Py_DECREF(value);
- PyGILState_Release(state);
+ PyGILState_Release(state);
- return NULL;
+ return NULL;
}
#endif
@@ -448,63 +447,63 @@ static PyObject *py_commit_info_tuple(svn_commit_info_t *ci)
}
typedef struct {
- PyObject_VAR_HEAD
- svn_client_ctx_t *client;
- apr_pool_t *pool;
- PyObject *callbacks;
- PyObject *py_auth;
- PyObject *py_config;
+ PyObject_VAR_HEAD
+ svn_client_ctx_t *client;
+ apr_pool_t *pool;
+ PyObject *callbacks;
+ PyObject *py_auth;
+ PyObject *py_config;
} ClientObject;
static PyObject *client_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
- ClientObject *ret;
- PyObject *config = Py_None, *auth = Py_None, *log_msg_func = Py_None;
- char *kwnames[] = { "config", "auth", "log_msg_func", NULL };
- svn_error_t *err;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OOO", kwnames,
- &config, &auth, &log_msg_func))
- return NULL;
+ ClientObject *ret;
+ PyObject *config = Py_None, *auth = Py_None, *log_msg_func = Py_None;
+ char *kwnames[] = { "config", "auth", "log_msg_func", NULL };
+ svn_error_t *err;
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OOO", kwnames,
+ &config, &auth, &log_msg_func))
+ return NULL;
- ret = PyObject_New(ClientObject, &Client_Type);
- if (ret == NULL)
- return NULL;
+ ret = PyObject_New(ClientObject, &Client_Type);
+ if (ret == NULL)
+ return NULL;
- ret->pool = Pool(NULL);
- if (ret->pool == NULL) {
- Py_DECREF(ret);
- return NULL;
- }
+ ret->pool = Pool(NULL);
+ if (ret->pool == NULL) {
+ Py_DECREF(ret);
+ return NULL;
+ }
#if ONLY_SINCE_SVN(1, 8)
- err = svn_client_create_context2(&ret->client, NULL, ret->pool);
+ err = svn_client_create_context2(&ret->client, NULL, ret->pool);
#else
- err = svn_client_create_context(&ret->client, ret->pool);
+ err = svn_client_create_context(&ret->client, ret->pool);
#endif
- if (err != NULL) {
- handle_svn_error(err);
- svn_error_clear(err);
- apr_pool_destroy(ret->pool);
- PyObject_Del(ret);
- return NULL;
- }
+ if (err != NULL) {
+ handle_svn_error(err);
+ svn_error_clear(err);
+ apr_pool_destroy(ret->pool);
+ PyObject_Del(ret);
+ return NULL;
+ }
- ret->py_auth = NULL;
- ret->py_config = NULL;
- ret->client->notify_func2 = NULL;
- ret->client->notify_baton2 = NULL;
- ret->client->cancel_func = py_cancel_check;
- ret->client->cancel_baton = NULL;
- if (log_msg_func != Py_None) {
- ret->client->log_msg_func2 = py_log_msg_func2;
- } else {
- ret->client->log_msg_func2 = NULL;
- }
- Py_INCREF(log_msg_func);
- ret->client->log_msg_baton2 = (void *)log_msg_func;
- client_set_config((PyObject *)ret, config, NULL);
- client_set_auth((PyObject *)ret, auth, NULL);
- return (PyObject *)ret;
+ ret->py_auth = NULL;
+ ret->py_config = NULL;
+ ret->client->notify_func2 = NULL;
+ ret->client->notify_baton2 = NULL;
+ ret->client->cancel_func = py_cancel_check;
+ ret->client->cancel_baton = NULL;
+ if (log_msg_func != Py_None) {
+ ret->client->log_msg_func2 = py_log_msg_func2;
+ } else {
+ ret->client->log_msg_func2 = NULL;
+ }
+ Py_INCREF(log_msg_func);
+ ret->client->log_msg_baton2 = (void *)log_msg_func;
+ client_set_config((PyObject *)ret, config, NULL);
+ client_set_auth((PyObject *)ret, auth, NULL);
+ return (PyObject *)ret;
}
static void client_dealloc(PyObject *self)
@@ -556,20 +555,20 @@ static PyObject *client_get_notify_func(PyObject *self, void *closure)
static int client_set_notify_func(PyObject *self, PyObject *func, void *closure)
{
- ClientObject *client = (ClientObject *)self;
+ ClientObject *client = (ClientObject *)self;
- if (client->client->notify_baton2 != NULL) {
- Py_DECREF((PyObject *)client->client->notify_baton2);
- }
- if (func == Py_None) {
- client->client->notify_func2 = NULL;
- client->client->notify_baton2 = Py_None;
- } else {
- client->client->notify_func2 = py_wc_notify_func;
- client->client->notify_baton2 = (void *)func;
- }
- Py_INCREF(func);
- return 0;
+ if (client->client->notify_baton2 != NULL) {
+ Py_DECREF((PyObject *)client->client->notify_baton2);
+ }
+ if (func == Py_None) {
+ client->client->notify_func2 = NULL;
+ client->client->notify_baton2 = Py_None;
+ } else {
+ client->client->notify_func2 = py_wc_notify_func;
+ client->client->notify_baton2 = (void *)func;
+ }
+ Py_INCREF(func);
+ return 0;
}
static int client_set_auth(PyObject *self, PyObject *auth, void *closure)
@@ -601,31 +600,30 @@ static int client_set_auth(PyObject *self, PyObject *auth, void *closure)
static int client_set_config(PyObject *self, PyObject *config, void *closure)
{
- ClientObject *client = (ClientObject *)self;
+ ClientObject *client = (ClientObject *)self;
- Py_XDECREF(client->py_config);
+ Py_XDECREF(client->py_config);
- client->client->config = config_hash_from_object(config, client->pool);
+ client->client->config = config_hash_from_object(config, client->pool);
- if (client->client->config == NULL) {
- client->py_config = NULL;
- return -1;
- }
+ if (client->client->config == NULL) {
+ client->py_config = NULL;
+ return -1;
+ }
- client->py_config = config;
- Py_INCREF(config);
+ client->py_config = config;
+ Py_INCREF(config);
- return 0;
+ return 0;
}
-
static PyObject *client_add(PyObject *self, PyObject *args, PyObject *kwargs)
{
char *path;
ClientObject *client = (ClientObject *)self;
bool recursive=true, force=false, no_ignore=false;
bool add_parents = false;
- bool no_autoprops = false;
+ bool no_autoprops = false;
apr_pool_t *temp_pool;
char *kwnames[] = { "path", "recursive", "force", "no_ignore",
"add_parents", "no_autoprops", NULL };
@@ -643,11 +641,11 @@ static PyObject *client_add(PyObject *self, PyObject *args, PyObject *kwargs)
#endif
#if ONLY_BEFORE_SVN(1, 8)
- if (no_autoprops) {
- PyErr_SetString(PyExc_NotImplementedError,
- "Subversion < 1.8 does not support no_autoprops");
- return NULL;
- }
+ if (no_autoprops) {
+ PyErr_SetString(PyExc_NotImplementedError,
+ "Subversion < 1.8 does not support no_autoprops");
+ return NULL;
+ }
#endif
temp_pool = Pool(NULL);
@@ -682,37 +680,44 @@ static PyObject *client_checkout(PyObject *self, PyObject *args, PyObject *kwarg
char *kwnames[] = { "url", "path", "rev", "peg_rev", "recurse", "ignore_externals", "allow_unver_obstructions", NULL };
svn_revnum_t result_rev;
svn_opt_revision_t c_peg_rev, c_rev;
- const char *path;
- const char *url;
- PyObject *py_url = NULL, *py_path;
- apr_pool_t *temp_pool;
- PyObject *peg_rev=Py_None, *rev=Py_None;
- bool recurse=true, ignore_externals=false, allow_unver_obstructions=false;
+ const char *path;
+ const char *url;
+ PyObject *py_url = NULL, *py_path;
+ apr_pool_t *temp_pool;
+ PyObject *peg_rev=Py_None, *rev=Py_None;
+ bool recurse=true, ignore_externals=false, allow_unver_obstructions=false;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO|OObbb", kwnames, &py_url, &py_path, &rev, &peg_rev, &recurse, &ignore_externals, &allow_unver_obstructions))
- return NULL;
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO|OObbb", kwnames,
+ &py_url, &py_path, &rev, &peg_rev,
+ &recurse, &ignore_externals,
+ &allow_unver_obstructions)) {
+ return NULL;
+ }
- if (!to_opt_revision(peg_rev, &c_peg_rev))
- return NULL;
- if (!to_opt_revision(rev, &c_rev))
- return NULL;
+ if (!to_opt_revision(peg_rev, &c_peg_rev)) {
+ return NULL;
+ }
- temp_pool = Pool(NULL);
- if (temp_pool == NULL) {
- return NULL;
- }
+ if (!to_opt_revision(rev, &c_rev)) {
+ return NULL;
+ }
- url = py_object_to_svn_uri(py_url, temp_pool);
- if (url == NULL) {
- apr_pool_destroy(temp_pool);
- return NULL;
- }
+ temp_pool = Pool(NULL);
+ if (temp_pool == NULL) {
+ return NULL;
+ }
- path = py_object_to_svn_dirent(py_path, temp_pool);
- if (path == NULL) {
- apr_pool_destroy(temp_pool);
- return NULL;
- }
+ url = py_object_to_svn_uri(py_url, temp_pool);
+ if (url == NULL) {
+ apr_pool_destroy(temp_pool);
+ return NULL;
+ }
+
+ path = py_object_to_svn_dirent(py_path, temp_pool);
+ if (path == NULL) {
+ apr_pool_destroy(temp_pool);
+ return NULL;
+ }
#if ONLY_SINCE_SVN(1, 5)
RUN_SVN_WITH_POOL(temp_pool, svn_client_checkout3(&result_rev, url,
@@ -720,14 +725,14 @@ static PyObject *client_checkout(PyObject *self, PyObject *args, PyObject *kwarg
&c_peg_rev, &c_rev, recurse?svn_depth_infinity:svn_depth_files,
ignore_externals, allow_unver_obstructions, client->client, temp_pool));
#else
- if (allow_unver_obstructions) {
- PyErr_SetString(PyExc_NotImplementedError,
+ if (allow_unver_obstructions) {
+ PyErr_SetString(PyExc_NotImplementedError,
"allow_unver_obstructions not supported when built against svn<1.5");
- apr_pool_destroy(temp_pool);
- return NULL;
- }
+ apr_pool_destroy(temp_pool);
+ return NULL;
+ }
- RUN_SVN_WITH_POOL(temp_pool, svn_client_checkout2(&result_rev, url,
+ RUN_SVN_WITH_POOL(temp_pool, svn_client_checkout2(&result_rev, url,
path,
&c_peg_rev, &c_rev, recurse,
ignore_externals, client->client, temp_pool));
@@ -738,52 +743,52 @@ static PyObject *client_checkout(PyObject *self, PyObject *args, PyObject *kwarg
static PyObject *client_commit(PyObject *self, PyObject *args, PyObject *kwargs)
{
- PyObject *targets;
- ClientObject *client = (ClientObject *)self;
- bool recurse=true, keep_locks=true;
- apr_pool_t *temp_pool;
- svn_commit_info_t *commit_info = NULL;
- PyObject *ret;
- apr_array_header_t *apr_targets;
- PyObject *revprops = Py_None;
- char *kwnames[] = { "targets", "recurse", "keep_locks", "revprops", NULL };
+ PyObject *targets;
+ ClientObject *client = (ClientObject *)self;
+ bool recurse=true, keep_locks=true;
+ apr_pool_t *temp_pool;
+ svn_commit_info_t *commit_info = NULL;
+ PyObject *ret;
+ apr_array_header_t *apr_targets;
+ PyObject *revprops = Py_None;
+ char *kwnames[] = { "targets", "recurse", "keep_locks", "revprops", NULL };
#if ONLY_SINCE_SVN(1, 5)
- apr_hash_t *hash_revprops;
+ apr_hash_t *hash_revprops;
#endif
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|bbO", kwnames, &targets, &recurse, &keep_locks, &revprops))
- return NULL;
- temp_pool = Pool(NULL);
- if (temp_pool == NULL) {
- return NULL;
- }
- if (!client_path_list_to_apr_array(temp_pool, targets, &apr_targets)) {
- apr_pool_destroy(temp_pool);
- return NULL;
- }
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|bbO", kwnames, &targets, &recurse, &keep_locks, &revprops))
+ return NULL;
+ temp_pool = Pool(NULL);
+ if (temp_pool == NULL) {
+ return NULL;
+ }
+ if (!client_path_list_to_apr_array(temp_pool, targets, &apr_targets)) {
+ apr_pool_destroy(temp_pool);
+ return NULL;
+ }
- if (revprops != Py_None && !PyDict_Check(revprops)) {
- apr_pool_destroy(temp_pool);
- PyErr_SetString(PyExc_TypeError, "Expected dictionary with revision properties");
- return NULL;
- }
+ if (revprops != Py_None && !PyDict_Check(revprops)) {
+ apr_pool_destroy(temp_pool);
+ PyErr_SetString(PyExc_TypeError, "Expected dictionary with revision properties");
+ return NULL;
+ }
#if ONLY_SINCE_SVN(1, 5)
- if (revprops != Py_None) {
- hash_revprops = prop_dict_to_hash(temp_pool, revprops);
- if (hash_revprops == NULL) {
- apr_pool_destroy(temp_pool);
- return NULL;
- }
- } else {
- hash_revprops = NULL;
- }
+ if (revprops != Py_None) {
+ hash_revprops = prop_dict_to_hash(temp_pool, revprops);
+ if (hash_revprops == NULL) {
+ apr_pool_destroy(temp_pool);
+ return NULL;
+ }
+ } else {
+ hash_revprops = NULL;
+ }
- /* FIXME: Support keep_changelist and changelists */
- RUN_SVN_WITH_POOL(temp_pool, svn_client_commit4(&commit_info,
- apr_targets, recurse?svn_depth_infinity:svn_depth_files,
- keep_locks, false, NULL, hash_revprops,
- client->client, temp_pool));
+ /* FIXME: Support keep_changelist and changelists */
+ RUN_SVN_WITH_POOL(temp_pool, svn_client_commit4(&commit_info,
+ apr_targets, recurse?svn_depth_infinity:svn_depth_files,
+ keep_locks, false, NULL, hash_revprops,
+ client->client, temp_pool));
#else
if (revprops != Py_None && PyDict_Size(revprops) > 0) {
PyErr_SetString(PyExc_NotImplementedError,
@@ -986,7 +991,7 @@ static PyObject *client_delete(PyObject *self, PyObject *args)
static PyObject *client_mkdir(PyObject *self, PyObject *args)
{
PyObject *paths, *revprops = NULL;
- svn_boolean_t make_parents=FALSE;
+ bool make_parents = false;
apr_pool_t *temp_pool;
svn_commit_info_t *commit_info = NULL;
PyObject *ret;
@@ -1024,7 +1029,7 @@ static PyObject *client_mkdir(PyObject *self, PyObject *args)
RUN_SVN_WITH_POOL(temp_pool, svn_client_mkdir3(&commit_info,
apr_paths,
- make_parents, hash_revprops, client->client, temp_pool));
+ make_parents?TRUE:FALSE, hash_revprops, client->client, temp_pool));
#else
if (make_parents) {
PyErr_SetString(PyExc_ValueError,
@@ -1410,8 +1415,8 @@ static PyObject *client_update(PyObject *self, PyObject *args, PyObject *kwargs)
PyObject *ret;
int i = 0;
ClientObject *client = (ClientObject *)self;
- svn_boolean_t allow_unver_obstructions = FALSE,
- depth_is_sticky = FALSE;
+ bool allow_unver_obstructions = false,
+ depth_is_sticky = false;
char *kwnames[] =
{ "path", "revision", "recurse", "ignore_externals", "depth_is_sticky",
"allow_unver_obstructions", NULL };
@@ -1433,7 +1438,7 @@ static PyObject *client_update(PyObject *self, PyObject *args, PyObject *kwargs)
#if ONLY_SINCE_SVN(1, 5)
RUN_SVN_WITH_POOL(temp_pool, svn_client_update3(&result_revs,
apr_paths, &c_rev, recurse?svn_depth_infinity:svn_depth_files,
- depth_is_sticky, ignore_externals, allow_unver_obstructions,
+ depth_is_sticky?TRUE:FALSE, ignore_externals, allow_unver_obstructions?TRUE:FALSE,
client->client, temp_pool));
#else
RUN_SVN_WITH_POOL(temp_pool, svn_client_update2(&result_revs,
@@ -1653,8 +1658,8 @@ static PyObject *client_log(PyObject *self, PyObject *args, PyObject *kwargs)
PyObject *callback, *paths, *start_rev = Py_None, *end_rev = Py_None,
*peg_revision = Py_None, *revprops = NULL;
int limit = 0;
- svn_boolean_t discover_changed_paths = FALSE, strict_node_history = FALSE,
- include_merged_revisions = FALSE;
+ bool discover_changed_paths = false, strict_node_history = false,
+ include_merged_revisions = false;
apr_array_header_t *apr_paths, *apr_revprops = NULL;
svn_opt_revision_t c_peg_rev, c_start_rev, c_end_rev;
#if ONLY_SINCE_SVN(1, 6)
@@ -1719,24 +1724,24 @@ static PyObject *client_log(PyObject *self, PyObject *args, PyObject *kwargs)
APR_ARRAY_PUSH(revision_ranges, svn_opt_revision_range_t *) = &revision_range;
RUN_SVN_WITH_POOL(temp_pool, svn_client_log5(apr_paths, &c_peg_rev,
- revision_ranges, limit, discover_changed_paths,
- strict_node_history, include_merged_revisions, apr_revprops,
+ revision_ranges, limit, discover_changed_paths?TRUE:FALSE,
+ strict_node_history?TRUE:FALSE, include_merged_revisions?TRUE:FALSE, apr_revprops,
py_svn_log_entry_receiver, (void*)callback,
client->client, temp_pool));
#elif ONLY_SINCE_SVN(1, 5)
RUN_SVN_WITH_POOL(temp_pool, svn_client_log4(apr_paths, &c_peg_rev,
- &c_start_rev, &c_end_rev, limit, discover_changed_paths,
- strict_node_history, include_merged_revisions, apr_revprops,
+ &c_start_rev, &c_end_rev, limit, discover_changed_paths?TRUE:FALSE,
+ strict_node_history?TRUE:FALSE, include_merged_revisions?TRUE:FALSE, apr_revprops,
py_svn_log_entry_receiver, (void*)callback,
client->client, temp_pool));
#elif ONLY_SINCE_SVN(1, 4)
RUN_SVN_WITH_POOL(temp_pool, svn_client_log3(apr_paths, &c_peg_rev,
- &c_start_rev, &c_end_rev, limit, discover_changed_paths,
- strict_node_history, py_svn_log_wrapper,
+ &c_start_rev, &c_end_rev, limit, discover_changed_paths?TRUE:FALSE,
+ strict_node_history?TRUE:FALSE, py_svn_log_wrapper,
(void*)callback, client->client, temp_pool));
#else
RUN_SVN_WITH_POOL(temp_pool, svn_client_log2(apr_paths, &c_start_rev,
- &c_end_rev, limit, discover_changed_paths, strict_node_history,
+ &c_end_rev, limit, discover_changed_paths?TRUE:FALSE, strict_node_history?TRUE:FALSE,
py_svn_log_wrapper, (void*)callback,
client->client, temp_pool));
#endif
@@ -1757,7 +1762,7 @@ static PyObject *client_info(PyObject *self, PyObject *args, PyObject *kwargs)
const char *path;
int depth = svn_depth_empty;
- svn_boolean_t fetch_excluded = FALSE, fetch_actual_only = FALSE;
+ bool fetch_excluded = false, fetch_actual_only = false;
PyObject *revision = Py_None, *peg_revision = Py_None;
svn_opt_revision_t c_peg_rev, c_rev;
PyObject *entry_dict;
@@ -1798,8 +1803,8 @@ static PyObject *client_info(PyObject *self, PyObject *args, PyObject *kwargs)
Py_BEGIN_ALLOW_THREADS;
#if ONLY_SINCE_SVN(1, 7)
/* FIXME: Support changelists */
- err = svn_client_info3(path, &c_peg_rev, &c_rev, depth, fetch_excluded,
- fetch_actual_only, NULL,
+ err = svn_client_info3(path, &c_peg_rev, &c_rev, depth, fetch_excluded?TRUE:FALSE,
+ fetch_actual_only?TRUE:FALSE, NULL,
info_receiver,
entry_dict,
client->client, temp_pool);
diff --git a/subvertpy/editor.h b/subvertpy/editor.h
index 88f72dd1..a6407910 100644
--- a/subvertpy/editor.h
+++ b/subvertpy/editor.h
@@ -29,7 +29,11 @@ extern PyTypeObject FileEditor_Type;
extern PyTypeObject Editor_Type;
extern PyTypeObject TxDeltaWindowHandler_Type;
struct EditorObject;
-PyObject *new_editor_object(struct EditorObject *parent, const svn_delta_editor_t *editor, void *baton, apr_pool_t *pool, PyTypeObject *type, void (*done_cb) (void *baton), void *done_baton, PyObject *commit_callback);
+PyObject *new_editor_object(
+ struct EditorObject *parent, const
+ svn_delta_editor_t *editor, void *baton, apr_pool_t
+ *pool, PyTypeObject *type, void (*done_cb) (void *baton),
+ void *done_baton, PyObject *commit_callback);
#define DirectoryEditor_Check(op) PyObject_TypeCheck(op, &DirectoryEditor_Type)
#define FileEditor_Check(op) PyObject_TypeCheck(op, &FileEditor_Type)
@@ -37,9 +41,9 @@ PyObject *new_editor_object(struct EditorObject *parent, const svn_delta_editor_
#define TxDeltaWindowHandler_Check(op) PyObject_TypeCheck(op, &TxDeltaWindowHandler_Type)
typedef struct {
- PyObject_HEAD
- svn_txdelta_window_handler_t txdelta_handler;
- void *txdelta_baton;
+ PyObject_HEAD
+ svn_txdelta_window_handler_t txdelta_handler;
+ void *txdelta_baton;
} TxDeltaWindowHandlerObject;
svn_error_t *py_txdelta_window_handler(svn_txdelta_window_t *window, void *baton);
diff --git a/subvertpy/ra.h b/subvertpy/ra.h
index 4a148c67..9919459b 100644
--- a/subvertpy/ra.h
+++ b/subvertpy/ra.h
@@ -21,7 +21,7 @@
#define _BZR_SVN_RA_H_
typedef struct {
- PyObject_HEAD
+ PyObject_HEAD
svn_auth_baton_t *auth_baton;
apr_pool_t *pool;
PyObject *providers;
diff --git a/subvertpy/repos.c b/subvertpy/repos.c
index e54cbfbf..e6a41c15 100644
--- a/subvertpy/repos.c
+++ b/subvertpy/repos.c
@@ -386,7 +386,7 @@ static PyObject *repos_delete(PyObject *self, PyObject *args)
static PyObject *repos_hotcopy(RepositoryObject *self, PyObject *args)
{
char *src_path, *dest_path;
- svn_boolean_t clean_logs = FALSE;
+ bool clean_logs = false;
apr_pool_t *temp_pool;
if (!PyArg_ParseTuple(args, "ss|b", &src_path, &dest_path, &clean_logs))
@@ -397,7 +397,7 @@ static PyObject *repos_hotcopy(RepositoryObject *self, PyObject *args)
return NULL;
RUN_SVN_WITH_POOL(temp_pool,
- svn_repos_hotcopy(src_path, dest_path, clean_logs, temp_pool));
+ svn_repos_hotcopy(src_path, dest_path, clean_logs?TRUE:FALSE, temp_pool));
apr_pool_destroy(temp_pool);
@@ -807,7 +807,7 @@ static PyObject *fs_node_file_proplist(FileSystemRootObject *self, PyObject *arg
static PyObject *fs_root_file_checksum(FileSystemRootObject *self, PyObject *args)
{
apr_pool_t *temp_pool;
- svn_boolean_t force = FALSE;
+ bool force = false;
char *path;
#if ONLY_SINCE_SVN(1, 6)
svn_checksum_kind_t kind;
@@ -826,9 +826,8 @@ static PyObject *fs_root_file_checksum(FileSystemRootObject *self, PyObject *arg
if (temp_pool == NULL)
return NULL;
#if ONLY_SINCE_SVN(1, 6)
- RUN_SVN_WITH_POOL(temp_pool, svn_fs_file_checksum(&checksum, kind,
- self->root,
- path, force, temp_pool));
+ RUN_SVN_WITH_POOL(temp_pool, svn_fs_file_checksum(
+ &checksum, kind, self->root, path, force?TRUE:FALSE, temp_pool));
cstr = svn_checksum_to_cstring(checksum, temp_pool);
if (cstr == NULL) {
ret = Py_None;
diff --git a/subvertpy/util.c b/subvertpy/util.c
index 4e9a1ea4..49c68899 100644
--- a/subvertpy/util.c
+++ b/subvertpy/util.c
@@ -958,7 +958,7 @@ static PyObject *stream_init(PyTypeObject *type, PyObject *args, PyObject *kwarg
if (ret->pool == NULL)
return NULL;
ret->stream = svn_stream_empty(ret->pool);
- ret->closed = FALSE;
+ ret->closed = false;
return (PyObject *)ret;
}
@@ -967,7 +967,7 @@ static PyObject *stream_close(StreamObject *self)
{
if (!self->closed) {
svn_stream_close(self->stream);
- self->closed = TRUE;
+ self->closed = true;
}
Py_RETURN_NONE;
}
@@ -1032,7 +1032,7 @@ static PyObject *stream_read_full(StreamObject *self, PyObject *args)
self->stream,
temp_pool,
temp_pool));
- self->closed = TRUE;
+ self->closed = true;
ret = PyBytes_FromStringAndSize(result->data, result->len);
apr_pool_destroy(temp_pool);
return ret;
diff --git a/subvertpy/util.h b/subvertpy/util.h
index cf4a42f0..bbbcf9b3 100644
--- a/subvertpy/util.h
+++ b/subvertpy/util.h
@@ -45,39 +45,38 @@ bool string_list_to_apr_array(apr_pool_t *pool, PyObject *l, apr_array_header_t
bool relpath_list_to_apr_array(apr_pool_t *pool, PyObject *l, apr_array_header_t **);
PyObject *prop_hash_to_dict(apr_hash_t *props);
apr_hash_t *prop_dict_to_hash(apr_pool_t *pool, PyObject *py_props);
-svn_error_t *py_svn_log_wrapper(void *baton, apr_hash_t *changed_paths,
- long revision, const char *author,
- const char *date, const char *message,
- apr_pool_t *pool);
+svn_error_t *py_svn_log_wrapper(
+ void *baton, apr_hash_t *changed_paths, long revision, const char *author,
+ const char *date, const char *message, apr_pool_t *pool);
svn_error_t *py_svn_error(void);
void PyErr_SetSubversionException(svn_error_t *error);
PyTypeObject *PyErr_GetSubversionExceptionTypeObject(void);
#define RUN_SVN(cmd) { \
- svn_error_t *err; \
- PyThreadState *_save; \
- _save = PyEval_SaveThread(); \
- err = (cmd); \
- PyEval_RestoreThread(_save); \
- if (err != NULL) { \
- handle_svn_error(err); \
- svn_error_clear(err); \
- return NULL; \
- } \
+ svn_error_t *err; \
+ PyThreadState *_save; \
+ _save = PyEval_SaveThread(); \
+ err = (cmd); \
+ PyEval_RestoreThread(_save); \
+ if (err != NULL) { \
+ handle_svn_error(err); \
+ svn_error_clear(err); \
+ return NULL; \
+ } \
}
#define RUN_SVN_WITH_POOL(pool, cmd) { \
- svn_error_t *err; \
- PyThreadState *_save; \
- _save = PyEval_SaveThread(); \
- err = (cmd); \
- PyEval_RestoreThread(_save); \
- if (err != NULL) { \
- handle_svn_error(err); \
- svn_error_clear(err); \
- apr_pool_destroy(pool); \
- return NULL; \
- } \
+ svn_error_t *err; \
+ PyThreadState *_save; \
+ _save = PyEval_SaveThread(); \
+ err = (cmd); \
+ PyEval_RestoreThread(_save); \
+ if (err != NULL) { \
+ handle_svn_error(err); \
+ svn_error_clear(err); \
+ apr_pool_destroy(pool); \
+ return NULL; \
+ } \
}
PyObject *wrap_lock(svn_lock_t *lock);
@@ -89,9 +88,10 @@ void PyErr_SetAprStatus(apr_status_t status);
PyObject *py_dirent(const svn_dirent_t *dirent, int dirent_fields);
PyObject *PyOS_tmpfile(void);
PyObject *pyify_changed_paths(apr_hash_t *changed_paths, bool node_kind, apr_pool_t *pool);
-bool pyify_log_message(apr_hash_t *changed_paths, const char *author,
- const char *date, const char *message, bool node_kind,
- apr_pool_t *pool, PyObject **py_changed_paths, PyObject **revprops);
+bool pyify_log_message(
+ apr_hash_t *changed_paths, const char *author,
+ const char *date, const char *message, bool node_kind,
+ apr_pool_t *pool, PyObject **py_changed_paths, PyObject **revprops);
#if ONLY_SINCE_SVN(1, 6)
PyObject *pyify_changed_paths2(apr_hash_t *changed_paths2, apr_pool_t *pool);
#endif
@@ -106,19 +106,19 @@ svn_error_t *py_svn_log_entry_receiver(void *baton, svn_log_entry_t *log_entry,
#endif
#define CB_CHECK_PYRETVAL(ret) \
- if (ret == NULL) { \
- PyGILState_Release(state); \
- return py_svn_error(); \
- }
+ if (ret == NULL) { \
+ PyGILState_Release(state); \
+ return py_svn_error(); \
+ }
#if SVN_VER_MINOR < 5
typedef enum svn_depth_t {
- svn_depth_unknown = -2,
- svn_depth_exclude = -1,
- svn_depth_empty = 0,
- svn_depth_files = 1,
- svn_depth_immediates = 2,
- svn_depth_infinity = 3
+ svn_depth_unknown = -2,
+ svn_depth_exclude = -1,
+ svn_depth_empty = 0,
+ svn_depth_files = 1,
+ svn_depth_immediates = 2,
+ svn_depth_infinity = 3
} svn_depth_t;
#endif
@@ -129,10 +129,10 @@ typedef struct {
} ConfigObject;
typedef struct {
- PyObject_HEAD
- svn_stream_t *stream;
- apr_pool_t *pool;
- svn_boolean_t closed;
+ PyObject_HEAD
+ svn_stream_t *stream;
+ apr_pool_t *pool;
+ bool closed;
} StreamObject;
extern PyTypeObject Stream_Type;
diff --git a/subvertpy/wc.c b/subvertpy/wc.c
index 704ff28c..7a635b25 100644
--- a/subvertpy/wc.c
+++ b/subvertpy/wc.c
@@ -1074,8 +1074,8 @@ static PyObject *adm_crawl_revisions(PyObject *self, PyObject *args, PyObject *k
apr_pool_t *temp_pool;
AdmObject *admobj = (AdmObject *)self;
svn_wc_traversal_info_t *traversal_info;
- svn_boolean_t depth_compatibility_trick = FALSE;
- svn_boolean_t honor_depth_exclude = FALSE;
+ bool depth_compatibility_trick = false;
+ bool honor_depth_exclude = false;
char *kwnames[] = { "path", "reporter", "restore_files", "recurse", "use_commit_times", "notify_func", "depth_compatibility_trick", "honor_depth_exclude,", NULL };
PyObject *py_path;
@@ -1101,8 +1101,8 @@ static PyObject *adm_crawl_revisions(PyObject *self, PyObject *args, PyObject *k
RUN_SVN_WITH_POOL(temp_pool, svn_wc_crawl_revisions4(path, admobj->adm,
&py_ra_reporter, (void *)reporter,
restore_files, recurse?svn_depth_infinity:svn_depth_files,
- honor_depth_exclude,
- depth_compatibility_trick, use_commit_times,
+ honor_depth_exclude?TRUE:FALSE,
+ depth_compatibility_trick?TRUE:FALSE, use_commit_times,
py_wc_notify_func, (void *)notify_func,
traversal_info, temp_pool));
#elif ONLY_SINCE_SVN(1, 5)
@@ -1143,8 +1143,8 @@ static PyObject *adm_get_update_editor(PyObject *self, PyObject *args)
apr_pool_t *pool;
svn_revnum_t *latest_revnum;
svn_error_t *err;
- svn_boolean_t allow_unver_obstructions = FALSE;
- svn_boolean_t depth_is_sticky = FALSE;
+ bool allow_unver_obstructions = false;
+ bool depth_is_sticky = false;
if (!PyArg_ParseTuple(args, "s|bbOzbb", &target, &use_commit_times,
&recurse, &notify_func, &diff3_cmd, &depth_is_sticky,
@@ -1164,7 +1164,7 @@ static PyObject *adm_get_update_editor(PyObject *self, PyObject *args)
/* FIXME: Support conflict func */
err = svn_wc_get_update_editor3(latest_revnum, admobj->adm, target,
use_commit_times, recurse?svn_depth_infinity:svn_depth_files,
- depth_is_sticky, allow_unver_obstructions,
+ depth_is_sticky?TRUE:FALSE, allow_unver_obstructions?TRUE:FALSE,
py_wc_notify_func, (void *)notify_func,
py_cancel_check, NULL,
NULL, NULL, NULL, NULL,
@@ -1283,7 +1283,7 @@ static PyObject *adm_process_committed(PyObject *self, PyObject *args, PyObject
AdmObject *admobj = (AdmObject *)self;
apr_pool_t *temp_pool;
int digest_len;
- svn_boolean_t remove_changelist = FALSE;
+ bool remove_changelist = false;
char *kwnames[] = { "path", "recurse", "new_revnum", "rev_date", "rev_author",
"wcprop_changes", "remove_lock", "digest", "remove_changelist", NULL };
@@ -1317,7 +1317,7 @@ static PyObject *adm_process_committed(PyObject *self, PyObject *args, PyObject
RUN_SVN_WITH_POOL(temp_pool, svn_wc_process_committed4(
path, admobj->adm, recurse, new_revnum,
rev_date, rev_author, wcprop_changes,
- remove_lock, remove_changelist, digest, temp_pool));
+ remove_lock, remove_changelist?TRUE:FALSE, digest, temp_pool));
#else
if (remove_changelist) {
PyErr_SetString(PyExc_NotImplementedError, "remove_changelist only supported in svn < 1.6");
@@ -1540,7 +1540,7 @@ static PyObject *mark_missing_deleted(PyObject *self, PyObject *args)
static PyObject *remove_from_revision_control(PyObject *self, PyObject *args)
{
char *name;
- svn_boolean_t destroy_wf = FALSE, instant_error = FALSE;
+ bool destroy_wf = false, instant_error = false;
AdmObject *admobj = (AdmObject *)self;
apr_pool_t *temp_pool;
@@ -1555,7 +1555,7 @@ static PyObject *remove_from_revision_control(PyObject *self, PyObject *args)
RUN_SVN_WITH_POOL(temp_pool,
svn_wc_remove_from_revision_control(admobj->adm, name,
- destroy_wf, instant_error, py_cancel_check, NULL, temp_pool));
+ destroy_wf?TRUE:FALSE, instant_error?TRUE:FALSE, py_cancel_check, NULL, temp_pool));
apr_pool_destroy(temp_pool);
@@ -1609,7 +1609,7 @@ static PyObject *relocate(PyObject *self, PyObject *args)
char *from, *to;
AdmObject *admobj = (AdmObject *)self;
apr_pool_t *temp_pool;
- svn_boolean_t recurse = TRUE;
+ bool recurse = true;
PyObject *py_validator = Py_None, *py_path;
if (!PyArg_ParseTuple(args, "Oss|bO:relocate", &py_path, &from, &to, &recurse,
@@ -1630,9 +1630,9 @@ static PyObject *relocate(PyObject *self, PyObject *args)
}
#if ONLY_SINCE_SVN(1, 6)
- RUN_SVN_WITH_POOL(temp_pool, svn_wc_relocate3(path, admobj->adm, from, to, recurse, wc_validator3, py_validator, temp_pool));
+ RUN_SVN_WITH_POOL(temp_pool, svn_wc_relocate3(path, admobj->adm, from, to, recurse?TRUE:FALSE, wc_validator3, py_validator, temp_pool));
#else
- RUN_SVN_WITH_POOL(temp_pool, svn_wc_relocate2(path, admobj->adm, from, to, recurse, wc_validator2, py_validator, temp_pool));
+ RUN_SVN_WITH_POOL(temp_pool, svn_wc_relocate2(path, admobj->adm, from, to, recurse?TRUE:FALSE, wc_validator2, py_validator, temp_pool));
#endif
apr_pool_destroy(temp_pool);
@@ -1714,7 +1714,7 @@ static PyObject *translated_stream(PyObject *self, PyObject *args)
static PyObject *adm_text_modified(PyObject *self, PyObject *args)
{
const char *path;
- svn_boolean_t force_comparison = FALSE;
+ bool force_comparison = false;
apr_pool_t *temp_pool;
svn_boolean_t ret;
AdmObject *admobj = (AdmObject *)self;
@@ -1737,7 +1737,7 @@ static PyObject *adm_text_modified(PyObject *self, PyObject *args)
}
RUN_SVN_WITH_POOL(temp_pool,
- svn_wc_text_modified_p(&ret, path, force_comparison, admobj->adm,
+ svn_wc_text_modified_p(&ret, path, force_comparison?TRUE:FALSE, admobj->adm,
temp_pool));
apr_pool_destroy(temp_pool);
@@ -1883,7 +1883,7 @@ static PyObject *transmit_text_deltas(PyObject *self, PyObject *args)
{
const char *path;
const char *tempfile;
- svn_boolean_t fulltext;
+ bool fulltext;
PyObject *editor_obj, *py_digest, *py_path;
unsigned char digest[APR_MD5_DIGESTSIZE];
apr_pool_t *temp_pool;
@@ -1910,7 +1910,7 @@ static PyObject *transmit_text_deltas(PyObject *self, PyObject *args)
RUN_SVN_WITH_POOL(temp_pool,
svn_wc_transmit_text_deltas2(&tempfile, digest,
- path, admobj->adm, fulltext,
+ path, admobj->adm, fulltext?TRUE:FALSE,
&py_editor, editor_obj, temp_pool));
py_digest = PyBytes_FromStringAndSize((char *)digest, APR_MD5_DIGESTSIZE);
@@ -2046,7 +2046,7 @@ static PyObject *probe_try(PyObject *self, PyObject *args)
AdmObject *admobj = (AdmObject *)self, *ret;
apr_pool_t *pool;
int levels_to_lock = -1;
- svn_boolean_t writelock = FALSE;
+ bool writelock = false;
PyObject *py_path;
if (!PyArg_ParseTuple(args, "O|bi", &py_path, &writelock, &levels_to_lock))
@@ -2088,7 +2088,7 @@ static PyObject *resolved_conflict(PyObject *self, PyObject *args)
{
AdmObject *admobj = (AdmObject *)self;
apr_pool_t *temp_pool;
- svn_boolean_t resolve_props, resolve_tree, resolve_text;
+ bool resolve_props, resolve_tree, resolve_text;
int depth;
#if ONLY_SINCE_SVN(1, 5)
svn_wc_conflict_choice_t conflict_choice;
@@ -2119,8 +2119,8 @@ static PyObject *resolved_conflict(PyObject *self, PyObject *args)
#if ONLY_SINCE_SVN(1, 6)
RUN_SVN_WITH_POOL(temp_pool,
- svn_wc_resolved_conflict4(path, admobj->adm, resolve_text,
- resolve_props, resolve_tree, depth,
+ svn_wc_resolved_conflict4(path, admobj->adm, resolve_text?TRUE:FALSE,
+ resolve_props?TRUE:FALSE, resolve_tree?TRUE:FALSE, depth,
conflict_choice, py_wc_notify_func,
(void *)notify_func, py_cancel_check,
NULL, temp_pool));
@@ -2132,8 +2132,8 @@ static PyObject *resolved_conflict(PyObject *self, PyObject *args)
return NULL;
} else {
RUN_SVN_WITH_POOL(temp_pool,
- svn_wc_resolved_conflict3(path, admobj->adm, resolve_text,
- resolve_props, depth,
+ svn_wc_resolved_conflict3(path, admobj->adm, resolve_text?TRUE:FALSE,
+ resolve_props?TRUE:FALSE, depth,
conflict_choice, py_wc_notify_func,
(void *)notify_func, py_cancel_check,
NULL, temp_pool));
@@ -2156,8 +2156,8 @@ static PyObject *resolved_conflict(PyObject *self, PyObject *args)
return NULL;
} else {
RUN_SVN_WITH_POOL(temp_pool,
- svn_wc_resolved_conflict2(path, admobj->adm, resolve_text,
- resolve_props,
+ svn_wc_resolved_conflict2(path, admobj->adm, resolve_text?TRUE:FALSE,
+ resolve_props?TRUE:FALSE,
(depth == svn_depth_infinity),
py_wc_notify_func,
(void *)notify_func, py_cancel_check,
@@ -2431,9 +2431,9 @@ static PyObject *committed_queue_queue(CommittedQueueObject *self, PyObject *arg
char *path;
AdmObject *admobj;
PyObject *py_wcprop_changes = Py_None;
- svn_boolean_t remove_lock = FALSE, remove_changelist = FALSE;
+ bool remove_lock = false, remove_changelist = false;
char *md5_digest = NULL, *sha1_digest = NULL;
- svn_boolean_t recurse = FALSE;
+ bool recurse = false;
apr_pool_t *temp_pool;
apr_array_header_t *wcprop_changes;
int md5_digest_len, sha1_digest_len;
@@ -2501,14 +2501,14 @@ static PyObject *committed_queue_queue(CommittedQueueObject *self, PyObject *arg
svn_checksum_p = NULL;
}
RUN_SVN_WITH_POOL(temp_pool,
- svn_wc_queue_committed2(self->queue, path, admobj->adm, recurse,
- wcprop_changes, remove_lock, remove_changelist,
+ svn_wc_queue_committed2(self->queue, path, admobj->adm, recurse?TRUE:FALSE,
+ wcprop_changes, remove_lock?TRUE:FALSE, remove_changelist?TRUE:FALSE,
svn_checksum_p, temp_pool));
}
#else
RUN_SVN_WITH_POOL(temp_pool,
- svn_wc_queue_committed(&self->queue, path, admobj->adm, recurse,
- wcprop_changes, remove_lock, remove_changelist,
+ svn_wc_queue_committed(&self->queue, path, admobj->adm, recurse?TRUE:FALSE,
+ wcprop_changes, remove_lock?TRUE:FALSE, remove_changelist?TRUE:FALSE,
(unsigned char *)md5_digest, temp_pool));
#endif