static svn_error_t * svn_ra_local__has_capability(svn_ra_session_t *session, svn_boolean_t *has, const char *capability, apr_pool_t *pool) { svn_ra_local__session_baton_t *sess = session->priv; if (strcmp(capability, SVN_RA_CAPABILITY_DEPTH) == 0 || strcmp(capability, SVN_RA_CAPABILITY_LOG_REVPROPS) == 0 || strcmp(capability, SVN_RA_CAPABILITY_PARTIAL_REPLAY) == 0 || strcmp(capability, SVN_RA_CAPABILITY_COMMIT_REVPROPS) == 0) { *has = TRUE; } else if (strcmp(capability, SVN_RA_CAPABILITY_MERGEINFO) == 0) { /* With mergeinfo, the code's capabilities may not reflect the repository's, so inquire further. */ SVN_ERR(svn_repos_has_capability(sess->repos, has, SVN_REPOS_CAPABILITY_MERGEINFO, pool)); } else /* Don't know any other capabilities, so error. */ { return svn_error_createf (SVN_ERR_UNKNOWN_CAPABILITY, NULL, _("Don't know anything about capability '%s'"), capability); } return SVN_NO_ERROR; }
static PyObject *repos_has_capability(RepositoryObject *self, PyObject *args) { #if ONLY_SINCE_SVN(1, 5) char *name; svn_boolean_t has; apr_pool_t *temp_pool; if (!PyArg_ParseTuple(args, "s", &name)) return NULL; temp_pool = Pool(NULL); if (temp_pool == NULL) return NULL; RUN_SVN_WITH_POOL(temp_pool, svn_repos_has_capability(self->repos, &has, name, temp_pool)); apr_pool_destroy(temp_pool); return PyBool_FromLong(has); #else PyErr_SetString(PyExc_NotImplementedError, "has_capability is only supported in Subversion >= 1.5"); return NULL; #endif }