subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rhuij...@apache.org
Subject svn commit: r1561424 - in /subversion/trunk/subversion: bindings/javahl/native/ include/ libsvn_ra_svn/ svnserve/ tests/libsvn_ra/
Date Sat, 25 Jan 2014 23:22:36 GMT
Author: rhuijben
Date: Sat Jan 25 23:22:35 2014
New Revision: 1561424

URL: http://svn.apache.org/r1561424
Log:
Revert r1561387 waiting for brane to expose the same callbacks in a better way

Modified:
    subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp
    subversion/trunk/subversion/bindings/javahl/native/OperationContext.h
    subversion/trunk/subversion/include/svn_ra.h
    subversion/trunk/subversion/include/svn_ra_svn.h
    subversion/trunk/subversion/libsvn_ra_svn/client.c
    subversion/trunk/subversion/libsvn_ra_svn/deprecated.c
    subversion/trunk/subversion/libsvn_ra_svn/marshal.c
    subversion/trunk/subversion/libsvn_ra_svn/ra_svn.h
    subversion/trunk/subversion/libsvn_ra_svn/streams.c
    subversion/trunk/subversion/svnserve/serve.c
    subversion/trunk/subversion/svnserve/svnserve.c
    subversion/trunk/subversion/tests/libsvn_ra/ra-test.c

Modified: subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp?rev=1561424&r1=1561423&r2=1561424&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp Sat Jan 25 23:22:35
2014
@@ -572,7 +572,7 @@ OperationContext::checkTunnel(void *tunn
 }
 
 svn_error_t *
-OperationContext::openTunnel(svn_stream_t **request, svn_stream_t **response,
+OperationContext::openTunnel(apr_file_t **request, apr_file_t **response,
                              void **tunnel_context, void *tunnel_baton,
                              const char *tunnel_name, const char *user,
                              const char *hostname, int port,
@@ -587,8 +587,8 @@ OperationContext::openTunnel(svn_stream_
     }
 
   *tunnel_context = tc;
-  *request = svn_stream_from_aprfile2(tc->request_out, FALSE, pool);
-  *response = svn_stream_from_aprfile2(tc->response_in, FALSE, pool);
+  *request = tc->request_out;
+  *response = tc->response_in;
 
   JNIEnv *env = JNIUtil::getEnv();
 

Modified: subversion/trunk/subversion/bindings/javahl/native/OperationContext.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/OperationContext.h?rev=1561424&r1=1561423&r2=1561424&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/OperationContext.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/OperationContext.h Sat Jan 25 23:22:35
2014
@@ -69,7 +69,7 @@ class OperationContext
       void *tunnel_baton, const char *tunnel_name);
 
   static svn_error_t *openTunnel(
-      svn_stream_t **request, svn_stream_t **response,
+      apr_file_t **request, apr_file_t **response,
       void **tunnel_context, void *tunnel_baton,
       const char *tunnel_name, const char *user,
       const char *hostname, int port,

Modified: subversion/trunk/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_ra.h?rev=1561424&r1=1561423&r2=1561424&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_ra.h (original)
+++ subversion/trunk/subversion/include/svn_ra.h Sat Jan 25 23:22:35 2014
@@ -290,7 +290,7 @@ typedef svn_boolean_t (*svn_ra_check_tun
  * @a port, open a tunnel to the server and return its file handles,
  * which are owned by @a pool, in @a request and @a response.
  *
- * @a request and @a response represent the standard input and output,
+ * @a request and @a response are the standard input and output,
  * respectively, of the process on the other end of the tunnel.
  *
  * @a tunnel_context will be passed on to the close-unnel callback.
@@ -300,7 +300,7 @@ typedef svn_boolean_t (*svn_ra_check_tun
  * @since New in 1.9.
  */
 typedef svn_error_t *(*svn_ra_open_tunnel_func_t)(
-    svn_stream_t **request, svn_stream_t **response,
+    apr_file_t **request, apr_file_t **response,
     void **tunnel_context, void *tunnel_baton,
     const char *tunnel_name, const char *user,
     const char *hostname, int port,

Modified: subversion/trunk/subversion/include/svn_ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_ra_svn.h?rev=1561424&r1=1561423&r2=1561424&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_ra_svn.h (original)
+++ subversion/trunk/subversion/include/svn_ra_svn.h Sat Jan 25 23:22:35 2014
@@ -165,9 +165,9 @@ typedef struct svn_ra_svn_item_t
 typedef svn_error_t *(*svn_ra_svn_edit_callback)(void *baton);
 
 /** Initialize a connection structure for the given socket or
- * input/output streams.
+ * input/output files.
  *
- * Either @a sock or @a in_stream/@a out_stream must be set, not both.
+ * Either @a sock or @a in_file/@a out_file must be set, not both.
  * @a compression_level specifies the desired network data compression
  * level (zlib) from 0 (no compression) to 9 (best but slowest).
  *
@@ -184,30 +184,10 @@ typedef svn_error_t *(*svn_ra_svn_edit_c
  * It defines the number of bytes that must have been sent since the last
  * check before the next check will be made.
  *
- * @note If @a in_stream and @a out_stream specify wrapped apr_files via
- * svn_stream_from_apr_file2() the backing apr file will be used directly
- * instead of the stream api, to allow polling and other optimized behavior.
- *
  * Allocate the result in @a pool.
  *
- * @since New in 1.9
- */
-svn_ra_svn_conn_t *svn_ra_svn_create_conn4(apr_socket_t *sock,
-                                           svn_stream_t *in_stream,
-                                           svn_stream_t *out_stream,
-                                           int compression_level,
-                                           apr_size_t zero_copy_limit,
-                                           apr_size_t error_check_interval,
-                                           apr_pool_t *result_pool);
-
-
-/** Similar to svn_ra_svn_create_conn4() but only supports apr_file_t handles
- * instead of the more generic streams.
- *
  * @since New in 1.8
- * @deprecated Provided for backward compatibility with the 1.8 API.
  */
-SVN_DEPRECATED
 svn_ra_svn_conn_t *svn_ra_svn_create_conn3(apr_socket_t *sock,
                                            apr_file_t *in_file,
                                            apr_file_t *out_file,

Modified: subversion/trunk/subversion/libsvn_ra_svn/client.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/client.c?rev=1561424&r1=1561423&r2=1561424&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/client.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/client.c Sat Jan 25 23:22:35 2014
@@ -451,17 +451,13 @@ static void handle_child_process_error(a
 {
   svn_ra_svn_conn_t *conn;
   apr_file_t *in_file, *out_file;
-  svn_stream_t *in_stream, *out_stream;
   svn_error_t *err;
 
   if (apr_file_open_stdin(&in_file, pool)
       || apr_file_open_stdout(&out_file, pool))
     return;
 
-  in_stream = svn_stream_from_aprfile2(in_file, FALSE, pool);
-  out_stream = svn_stream_from_aprfile2(out_file, FALSE, pool);
-
-  conn = svn_ra_svn_create_conn4(NULL, in_stream, out_stream,
+  conn = svn_ra_svn_create_conn3(NULL, in_file, out_file,
                                  SVN_DELTA_COMPRESSION_LEVEL_DEFAULT, 0,
                                  0, pool);
   err = svn_error_wrap_apr(status, _("Error in child process: %s"), desc);
@@ -532,11 +528,7 @@ static svn_error_t *make_tunnel(const ch
   apr_file_inherit_unset(proc->out);
 
   /* Guard against dotfile output to stdout on the server. */
-  *conn = svn_ra_svn_create_conn4(NULL,
-                                  svn_stream_from_aprfile2(proc->out, FALSE,
-                                                           pool),
-                                  svn_stream_from_aprfile2(proc->in, FALSE,
-                                                           pool),
+  *conn = svn_ra_svn_create_conn3(NULL, proc->out, proc->in,
                                   SVN_DELTA_COMPRESSION_LEVEL_DEFAULT,
                                   0, 0, pool);
   err = svn_ra_svn__skip_leading_garbage(*conn, pool);
@@ -644,8 +636,8 @@ static svn_error_t *open_session(svn_ra_
       else
         {
           void *tunnel_context;
-          svn_stream_t *request;
-          svn_stream_t *response;
+          apr_file_t *request;
+          apr_file_t *response;
           SVN_ERR(callbacks->open_tunnel_func(
                       &request, &response, &tunnel_context,
                       callbacks->tunnel_baton, tunnel_name,
@@ -665,7 +657,7 @@ static svn_error_t *open_session(svn_ra_
                                         apr_pool_cleanup_null);
             }
 
-          conn = svn_ra_svn_create_conn4(NULL, response, request,
+          conn = svn_ra_svn_create_conn3(NULL, response, request,
                                          SVN_DELTA_COMPRESSION_LEVEL_DEFAULT,
                                          0, 0, pool);
           SVN_ERR(svn_ra_svn__skip_leading_garbage(conn, pool));
@@ -674,7 +666,7 @@ static svn_error_t *open_session(svn_ra_
   else
     {
       SVN_ERR(make_connection(uri->hostname, uri->port, &sock, pool));
-      conn = svn_ra_svn_create_conn4(sock, NULL, NULL,
+      conn = svn_ra_svn_create_conn3(sock, NULL, NULL,
                                      SVN_DELTA_COMPRESSION_LEVEL_DEFAULT,
                                      0, 0, pool);
     }

Modified: subversion/trunk/subversion/libsvn_ra_svn/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/deprecated.c?rev=1561424&r1=1561423&r2=1561424&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/deprecated.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/deprecated.c Sat Jan 25 23:22:35 2014
@@ -21,10 +21,6 @@
  * ====================================================================
  */
 
-/* We define this here to remove any further warnings about the usage of
-   deprecated functions in this file. */
-#define SVN_DEPRECATED
-
 #include "svn_ra_svn.h"
 
 #include "private/svn_ra_svn_private.h"
@@ -239,27 +235,6 @@ svn_ra_svn_write_cmd_failure(svn_ra_svn_
 
 /* From marshal.c */
 svn_ra_svn_conn_t *
-svn_ra_svn_create_conn3(apr_socket_t *sock,
-                        apr_file_t *in_file,
-                        apr_file_t *out_file,
-                        int compression_level,
-                        apr_size_t zero_copy_limit,
-                        apr_size_t error_check_interval,
-                        apr_pool_t *pool)
-{
-  svn_stream_t *in_stream = NULL;
-  svn_stream_t *out_stream = NULL;
-
-  if (in_file)
-    in_stream = svn_stream_from_aprfile2(in_file, FALSE, pool);
-  if (out_file)
-    out_stream = svn_stream_from_aprfile2(out_file, FALSE, pool);
-
-  return svn_ra_svn_create_conn4(sock, in_stream, out_stream,
-                                 compression_level, 0, 0, pool);
-}
-
-svn_ra_svn_conn_t *
 svn_ra_svn_create_conn2(apr_socket_t *sock,
                         apr_file_t *in_file,
                         apr_file_t *out_file,

Modified: subversion/trunk/subversion/libsvn_ra_svn/marshal.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/marshal.c?rev=1561424&r1=1561423&r2=1561424&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/marshal.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/marshal.c Sat Jan 25 23:22:35 2014
@@ -80,20 +80,19 @@ get_timeout(svn_ra_svn_conn_t *conn)
 
 /* --- CONNECTION INITIALIZATION --- */
 
-svn_ra_svn_conn_t *svn_ra_svn_create_conn4(apr_socket_t *sock,
-                                           svn_stream_t *in_stream,
-                                           svn_stream_t *out_stream,
+svn_ra_svn_conn_t *svn_ra_svn_create_conn3(apr_socket_t *sock,
+                                           apr_file_t *in_file,
+                                           apr_file_t *out_file,
                                            int compression_level,
                                            apr_size_t zero_copy_limit,
                                            apr_size_t error_check_interval,
-                                           apr_pool_t *result_pool)
+                                           apr_pool_t *pool)
 {
   svn_ra_svn_conn_t *conn;
-  void *mem = apr_palloc(result_pool, sizeof(*conn) + SVN_RA_SVN__PAGE_SIZE);
+  void *mem = apr_palloc(pool, sizeof(*conn) + SVN_RA_SVN__PAGE_SIZE);
   conn = (void*)APR_ALIGN((apr_uintptr_t)mem, SVN_RA_SVN__PAGE_SIZE);
 
-  assert((sock && !in_stream && !out_stream)
-         || (!sock && in_stream && out_stream));
+  assert((sock && !in_file && !out_file) || (!sock && in_file &&
out_file));
 #ifdef SVN_HAVE_SASL
   conn->sock = sock;
   conn->encrypted = FALSE;
@@ -107,15 +106,15 @@ svn_ra_svn_conn_t *svn_ra_svn_create_con
   conn->may_check_for_error = error_check_interval == 0;
   conn->block_handler = NULL;
   conn->block_baton = NULL;
-  conn->capabilities = apr_hash_make(result_pool);
+  conn->capabilities = apr_hash_make(pool);
   conn->compression_level = compression_level;
   conn->zero_copy_limit = zero_copy_limit;
-  conn->pool = result_pool;
+  conn->pool = pool;
 
   if (sock != NULL)
     {
       apr_sockaddr_t *sa;
-      conn->stream = svn_ra_svn__stream_from_sock(sock, result_pool);
+      conn->stream = svn_ra_svn__stream_from_sock(sock, pool);
       if (!(apr_socket_addr_get(&sa, APR_REMOTE, sock) == APR_SUCCESS
             && apr_sockaddr_ip_get(&conn->remote_ip, sa) == APR_SUCCESS))
         conn->remote_ip = NULL;
@@ -123,8 +122,7 @@ svn_ra_svn_conn_t *svn_ra_svn_create_con
     }
   else
     {
-      conn->stream = svn_ra_svn__stream_from_streams(in_stream, out_stream,
-                                                     result_pool);
+      conn->stream = svn_ra_svn__stream_from_files(in_file, out_file, pool);
       conn->remote_ip = NULL;
     }
 

Modified: subversion/trunk/subversion/libsvn_ra_svn/ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/ra_svn.h?rev=1561424&r1=1561423&r2=1561424&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/ra_svn.h (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/ra_svn.h Sat Jan 25 23:22:35 2014
@@ -176,12 +176,6 @@ svn_ra_svn__stream_t *svn_ra_svn__stream
                                                     apr_file_t *out_file,
                                                     apr_pool_t *pool);
 
-/* Returns a stream that reads from IN_STREAM and writes to OUT_STREAM. */
-svn_ra_svn__stream_t *svn_ra_svn__stream_from_streams(svn_stream_t *in_stream,
-                                                      svn_stream_t *out_stream,
-                                                      apr_pool_t *result_pool);
-
-
 /* Create an svn_ra_svn__stream_t using READ_CB, WRITE_CB, TIMEOUT_CB,
  * PENDING_CB, and BATON.
  */

Modified: subversion/trunk/subversion/libsvn_ra_svn/streams.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/streams.c?rev=1561424&r1=1561423&r2=1561424&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/streams.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/streams.c Sat Jan 25 23:22:35 2014
@@ -31,9 +31,6 @@
 #include "svn_error.h"
 #include "svn_pools.h"
 #include "svn_io.h"
-
-#include "private/svn_io_private.h"
-
 #include "svn_private_config.h"
 
 #include "ra_svn.h"
@@ -209,75 +206,6 @@ svn_ra_svn__stream_from_sock(apr_socket_
                                    pool);
 }
 
-/* Functions to implement a svn_stream_t backed svn_ra_svn__stream_t. */
-typedef struct stream_baton_t
-{
-  svn_stream_t *in_stream;
-  svn_stream_t *out_stream;
-} stream_baton_t;
-
-/* Implements svn_read_fn_t */
-static svn_error_t *
-stream_read_cb(void *baton,
-               char *buffer,
-               apr_size_t *len)
-{
-  stream_baton_t *sb = baton;
-
-  return svn_error_trace(svn_stream_read(sb->in_stream, buffer, len));
-}
-
-/* Implements svn_write_fn_t*/
-static svn_error_t *
-stream_write_cb(void *baton,
-                const char *buffer,
-                apr_size_t *len)
-{
-  stream_baton_t *sb = baton;
-
-  return svn_error_trace(svn_stream_write(sb->out_stream, buffer, len));
-}
-
-/* Implements ra_svn_timeout_fn_t */
-static void
-stream_timeout_cb(void *baton,
-                  apr_interval_time_t interval)
-{
-}
-
-/* Implements ra_svn_pending_fn_t */
-static svn_boolean_t
-stream_pending_cb(void *baton)
-{
-  return FALSE; /* ### Currently unused?
-                       Should we read and cache one byte? Other ideas? */
-}
-
-svn_ra_svn__stream_t *
-svn_ra_svn__stream_from_streams(svn_stream_t *in_stream,
-                                svn_stream_t *out_stream,
-                                apr_pool_t *result_pool)
-{
-  svn_ra_svn__stream_t *r;
-  stream_baton_t *sb;
-  apr_file_t *in_file = svn_stream__aprfile(in_stream);
-  apr_file_t *out_file = svn_stream__aprfile(out_stream);
-
-  /* Use optimized behavior for the very common dual file handle scenario */
-  if (in_file && out_file)
-    return svn_ra_svn__stream_from_files(in_file, out_file, result_pool);
-
-  sb = apr_pcalloc(result_pool, sizeof(*sb));
-  r = svn_ra_svn__stream_create(sb, stream_read_cb, stream_write_cb,
-                                stream_timeout_cb, stream_pending_cb,
-                                result_pool);
-
-  if (in_stream == out_stream)
-    r->stream = in_stream; /* No need to have another layer of indirection */
-
-  return r;
-}
-
 svn_ra_svn__stream_t *
 svn_ra_svn__stream_create(void *baton,
                           svn_read_fn_t read_cb,

Modified: subversion/trunk/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnserve/serve.c?rev=1561424&r1=1561423&r2=1561424&view=diff
==============================================================================
--- subversion/trunk/subversion/svnserve/serve.c (original)
+++ subversion/trunk/subversion/svnserve/serve.c Sat Jan 25 23:22:35 2014
@@ -3877,7 +3877,7 @@ serve_interruptable(svn_boolean_t *termi
 
       /* create the connection, configure ports etc. */
       connection->conn
-        = svn_ra_svn_create_conn4(connection->usock, NULL, NULL,
+        = svn_ra_svn_create_conn3(connection->usock, NULL, NULL,
                                   connection->params->compression_level,
                                   connection->params->zero_copy_limit,
                                   connection->params->error_check_interval,

Modified: subversion/trunk/subversion/svnserve/svnserve.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnserve/svnserve.c?rev=1561424&r1=1561423&r2=1561424&view=diff
==============================================================================
--- subversion/trunk/subversion/svnserve/svnserve.c (original)
+++ subversion/trunk/subversion/svnserve/svnserve.c Sat Jan 25 23:22:35 2014
@@ -660,6 +660,7 @@ sub_main(int *exit_code, int argc, const
   enum run_mode run_mode = run_mode_unspecified;
   svn_boolean_t foreground = FALSE;
   apr_socket_t *sock;
+  apr_file_t *in_file, *out_file;
   apr_sockaddr_t *sa;
   svn_error_t *err;
   apr_getopt_t *os;
@@ -667,9 +668,7 @@ sub_main(int *exit_code, int argc, const
   serve_params_t params;
   const char *arg;
   apr_status_t status;
-#ifndef WIN32
   apr_proc_t proc;
-#endif
 #if APR_HAS_THREADS && !HAVE_THREADPOOLS
   apr_threadattr_t *tattr;
   apr_thread_t *tid;
@@ -1010,21 +1009,27 @@ sub_main(int *exit_code, int argc, const
     {
       apr_pool_t *connection_pool;
       svn_ra_svn_conn_t *conn;
-      svn_stream_t *stdin_stream;
-      svn_stream_t *stdout_stream;
 
       params.tunnel = (run_mode == run_mode_tunnel);
       apr_pool_cleanup_register(pool, pool, apr_pool_cleanup_null,
                                 redirect_stdout);
+      status = apr_file_open_stdin(&in_file, pool);
+      if (status)
+        {
+          return svn_error_wrap_apr(status, _("Can't open stdin"));
+        }
 
-      SVN_ERR(svn_stream_for_stdin(&stdin_stream, pool));
-      SVN_ERR(svn_stream_for_stdout(&stdout_stream, pool));
+      status = apr_file_open_stdout(&out_file, pool);
+      if (status)
+        {
+          return svn_error_wrap_apr(status, _("Can't open stdout"));
+        }
 
       /* Use a subpool for the connection to ensure that if SASL is used
        * the pool cleanup handlers that call sasl_dispose() (connection_pool)
        * and sasl_done() (pool) are run in the right order. See issue #3664. */
       connection_pool = svn_pool_create(pool);
-      conn = svn_ra_svn_create_conn4(NULL, stdin_stream, stdout_stream,
+      conn = svn_ra_svn_create_conn3(NULL, in_file, out_file,
                                      params.compression_level,
                                      params.zero_copy_limit,
                                      params.error_check_interval,

Modified: subversion/trunk/subversion/tests/libsvn_ra/ra-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_ra/ra-test.c?rev=1561424&r1=1561423&r2=1561424&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_ra/ra-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_ra/ra-test.c Sat Jan 25 23:22:35 2014
@@ -109,7 +109,7 @@ check_tunnel(void *tunnel_baton, const c
 }
 
 static svn_error_t *
-open_tunnel(svn_stream_t **request, svn_stream_t **response,
+open_tunnel(apr_file_t **request, apr_file_t **response,
             void **tunnel_context, void *tunnel_baton,
             const char *tunnel_name, const char *user,
             const char *hostname, int port,
@@ -158,8 +158,8 @@ open_tunnel(svn_stream_t **request, svn_
   apr_file_inherit_unset(proc->in);
   apr_file_inherit_unset(proc->out);
 
-  *request = svn_stream_from_aprfile2(proc->in, FALSE, pool);
-  *response = svn_stream_from_aprfile2(proc->out, FALSE, pool);
+  *request = proc->in;
+  *response = proc->out;
   open_tunnel_context = *tunnel_context = &kind;
   ++tunnel_open_count;
   return SVN_NO_ERROR;



Mime
View raw message