Index: php_svn.h
===================================================================
RCS file: /repository/pecl/svn/php_svn.h,v
retrieving revision 1.13
diff -u -u -r1.13 php_svn.h
--- php_svn.h	12 Dec 2007 03:39:11 -0000	1.13
+++ php_svn.h	5 Jan 2008 16:17:42 -0000
@@ -52,6 +52,8 @@
 PHP_FUNCTION(svn_client_version);
 PHP_FUNCTION(svn_diff);
 PHP_FUNCTION(svn_cleanup);
+PHP_FUNCTION(svn_revert);
+PHP_FUNCTION(svn_resolved);
 
 PHP_FUNCTION(svn_commit);
 PHP_FUNCTION(svn_add);
@@ -97,8 +99,6 @@
 
 PHP_FUNCTION(svn_blame);
 PHP_FUNCTION(svn_merge);
-PHP_FUNCTION(svn_revert);
-PHP_FUNCTION(svn_resolved);
 
 PHP_FUNCTION(svn_move);
 PHP_FUNCTION(svn_propset);
Index: svn.c
===================================================================
RCS file: /repository/pecl/svn/svn.c,v
retrieving revision 1.31
diff -u -u -r1.31 svn.c
--- svn.c	12 Dec 2007 03:39:11 -0000	1.31
+++ svn.c	5 Jan 2008 16:17:56 -0000
@@ -114,6 +114,8 @@
 	PHP_FE(svn_client_version, NULL)
 	PHP_FE(svn_diff, NULL)
 	PHP_FE(svn_cleanup, NULL)
+	PHP_FE(svn_revert, NULL)
+	PHP_FE(svn_resolved, NULL)
 	PHP_FE(svn_commit, NULL)
 	PHP_FE(svn_add, NULL)
 	PHP_FE(svn_status, NULL)
@@ -1061,6 +1063,91 @@
 }
 /* }}} */
 
+/* {{{ proto bool svn_revert(string path[, bool recursive = false]) */
+PHP_FUNCTION(svn_revert)
+{
+    const char *path = NULL, *utf8_path = NULL;
+    long pathlen;
+    zend_bool recursive = 0;
+    svn_error_t *err;
+    apr_array_header_t *targets;
+    apr_pool_t *subpool;
+
+    if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s|b", &path, &pathlen, &recursive) ) {
+        RETURN_FALSE;
+    }
+
+    init_svn_client(TSRMLS_C);
+    subpool = svn_pool_create(SVN_G(pool));
+    if (!subpool) {
+        RETURN_FALSE;
+    }
+    RETVAL_FALSE;
+
+    svn_utf_cstring_to_utf8 (&utf8_path, path, subpool);
+
+    targets = apr_array_make (subpool, 1, sizeof(char *));
+
+    APR_ARRAY_PUSH(targets, const char *) = svn_path_canonicalize(utf8_path, subpool);
+
+    err = svn_client_revert(
+            targets,
+            recursive,
+            SVN_G(ctx),
+            subpool);
+
+    if (err) {
+        php_svn_handle_error(err TSRMLS_CC);
+        RETVAL_FALSE;
+    } else {
+        RETVAL_TRUE;
+    }
+
+    svn_pool_destroy(subpool);
+}
+/* }}} */
+
+/* {{{ proto bool svn_resolved(string path[, bool recursive = false]) */
+PHP_FUNCTION(svn_resolved)
+{
+    const char *path = NULL, *utf8_path = NULL, *target = NULL;
+    long pathlen;
+    zend_bool recursive = 0;
+    svn_error_t *err;
+    apr_pool_t *subpool;
+
+    if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s|b", &path, &pathlen, &recursive) ) {
+        RETURN_FALSE;
+    }
+
+    init_svn_client(TSRMLS_C);
+    subpool = svn_pool_create(SVN_G(pool));
+    if (!subpool) {
+        RETURN_FALSE;
+    }
+    RETVAL_FALSE;
+
+    svn_utf_cstring_to_utf8 (&utf8_path, path, subpool);
+
+    path = svn_path_canonicalize(utf8_path, subpool);
+	
+    err = svn_client_resolved(
+            path,
+            recursive,
+            SVN_G(ctx),
+            subpool);
+
+    if (err) {
+        php_svn_handle_error(err TSRMLS_CC);
+        RETVAL_FALSE;
+    } else {
+        RETVAL_TRUE;
+    }
+
+    svn_pool_destroy(subpool);
+}
+/* }}} */
+
 static int replicate_hash(void *pDest, int num_args, va_list args, zend_hash_key *key)
 {
 	zval **val = (zval **)pDest;

