You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2014/03/09 11:08:53 UTC

svn commit: r1575685 [2/13] - in /subversion/branches/fsfs-ucsnorm: ./ build/ build/ac-macros/ build/generator/ build/generator/templates/ contrib/cgi/ contrib/client-side/emacs/ contrib/client-side/svn2cl/ contrib/hook-scripts/ contrib/server-side/svn...

Modified: subversion/branches/fsfs-ucsnorm/notes/assurance.txt
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/notes/assurance.txt?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/notes/assurance.txt (original)
+++ subversion/branches/fsfs-ucsnorm/notes/assurance.txt Sun Mar  9 10:08:46 2014
@@ -18,7 +18,7 @@ _secure_ features.
 You may have access control, but what if the code implementing this
 access control was written poorly, and contains a buffer overflow?  2
 hours ago you worried about who could read or write to a document in
-your repository. Now you discover that an attacker can execute arbitary
+your repository. Now you discover that an attacker can execute arbitrary
 code as the userid your service is running as. This is not ideal. 
 
 Hence, we distinquish between "security features" and assurance. Brian

Modified: subversion/branches/fsfs-ucsnorm/notes/commit-access-templates/pmc-member.tmpl
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/notes/commit-access-templates/pmc-member.tmpl?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/notes/commit-access-templates/pmc-member.tmpl (original)
+++ subversion/branches/fsfs-ucsnorm/notes/commit-access-templates/pmc-member.tmpl Sun Mar  9 10:08:46 2014
@@ -34,7 +34,7 @@ before access to this protected part of 
 takes too long, please let us know on the private mailing list.
 
 While PMC membership comes with full commit privileges to the Subversion
-repository, we trust you use your judgement in determining what areas
+repository, we trust you use your judgment in determining what areas
 of the repository you are qualified to commit to.  Until you feel comfortable
 in the code base, you should still post patches for review before committing.
 Commit access just means that you can rely on your own judgment to decide

Modified: subversion/branches/fsfs-ucsnorm/notes/fs-improvements.txt
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/notes/fs-improvements.txt?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/notes/fs-improvements.txt (original)
+++ subversion/branches/fsfs-ucsnorm/notes/fs-improvements.txt Sun Mar  9 10:08:46 2014
@@ -171,7 +171,7 @@ it's quite possible that a higher copyID
 revision history before a lower one.
 
 The one thing we can know is that a lower copyID can never be a
-branchwise descendent of a lower copyID, since the lower one must have
+branchwise descendant of a lower copyID, since the lower one must have
 been committed before any of its descendants txns were started, of
 course.  I'm not sure this minimal inference will ever be useful, but
 anyway it's all we've got.  Anyway, right now, we only ever need ask

Modified: subversion/branches/fsfs-ucsnorm/notes/knobs
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/notes/knobs?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/notes/knobs (original)
+++ subversion/branches/fsfs-ucsnorm/notes/knobs Sun Mar  9 10:08:46 2014
@@ -5,7 +5,7 @@
 2 Condensed list of defines and environment variables
 3 Defines tweaking SVN defaults
 4 Defines enabling or disabling features
-5 Defines controling debug support
+5 Defines controlling debug support
 6 Defines that affect unit tests
 7 Environment variables
 
@@ -18,13 +18,14 @@ In particular, interface naming rules do
 SVN_* identifiers are not part of the public API unless declared
 as public in some public header file.
 
-The SVN source code boasts a number of enviroment variable or C pre-
+The SVN source code boasts a number of environment variable or C pre-
 processor enabled tweaks that are mainly aimed at developer support.
 If you introduce new ones, please document them here.
 
 Macros documented in the configure-generated ../subversion/svn_private_config.h
 file are not repeated here.
 
+
 2 Defines and Environment Variables
 ===================================
 
@@ -53,6 +54,7 @@ SVN_FS_FS_DELTIFY_PROPS
 SVN_SQLITE_MIN_VERSION_NUMBER
 SVN_SQLITE_MIN_VERSION
 SVN_SERF_NO_LOGGING
+SVN_ALLOW_SHORT_INTS
 
 2.3 Debugging Support
 
@@ -276,8 +278,20 @@ SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2
   Default:   SQLITE_VERSION
   Suggested: not defined (to use default)
 
+4.11 SVN_ALLOW_SHORT_INTS
+
+  Scope:     global
+  Purpose:   Disables the size check for the 'int' type.  We assume ints to
+             be large enough (32 bits) to index various container objects.
+             16 ints will break that assumption.  Defining this option will
+             allow SVN to be compiled even if the size check would fail for
+             some reason.
+  Range:     definedness
+  Default:   not defined
+  Suggested: not defined (to ensure correct behaviour)
+
 
-5 Defines controling debug support
+5 Defines controlling debug support
 ==================================
 
 5.1 SVN_DBG_QUIET

Modified: subversion/branches/fsfs-ucsnorm/notes/merge-tracking/func-spec.html
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/notes/merge-tracking/func-spec.html?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/notes/merge-tracking/func-spec.html (original)
+++ subversion/branches/fsfs-ucsnorm/notes/merge-tracking/func-spec.html Sun Mar  9 10:08:46 2014
@@ -546,9 +546,9 @@ information.  The new functionality adde
 
   <p>The <code>--verbose</code> switch will output the log information
   for the merged revisions in place of the information for the revision
-  in which the merge occured.  Each of the original message(s) will have an
+  in which the merge occurred.  Each of the original message(s) will have an
   additional line indicating that it is the result of a merge, and which
-  revision the merge occured in.</p>
+  revision the merge occurred in.</p>
 
   <p>For instance, if Alice was the original author of r12, Bob was the
   orginial author of r14, and Chuck merged them both r12 and r14 as part

Modified: subversion/branches/fsfs-ucsnorm/notes/merge-tracking/summit-survey.html
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/notes/merge-tracking/summit-survey.html?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/notes/merge-tracking/summit-survey.html (original)
+++ subversion/branches/fsfs-ucsnorm/notes/merge-tracking/summit-survey.html Sun Mar  9 10:08:46 2014
@@ -361,7 +361,7 @@ strategy.</p>
 <div class="answer"><p>Our branch strategy is minimize branches and their
 associated overhead.  We create branches only when we have a past tag
 that needs work or if we really need it for parallel development.
-Branches are a sometimes neccessary evil.  People always have a
+Branches are a sometimes necessary evil.  People always have a
 tendency to make a mess with them.  If anything, the most important
 part of merge tracking is to protect people from themselves.  Warn
 them when they're about to double merge or do something eqally

Modified: subversion/branches/fsfs-ucsnorm/notes/wc-ng/design
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/notes/wc-ng/design?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/notes/wc-ng/design (original)
+++ subversion/branches/fsfs-ucsnorm/notes/wc-ng/design Sun Mar  9 10:08:46 2014
@@ -869,9 +869,9 @@ base-presence: *
 working-presence: excluded
 base-presence: *
   A new, excluded BASE_NODE is constructed, and the WORKING_NODE is
-  removed. Any BASE_NODE rows which appear to be descendents of this
+  removed. Any BASE_NODE rows which appear to be descendants of this
   (used-to-be-directory) node are removed. There should be no
-  descendents in the WORKING_NODE table.
+  descendants in the WORKING_NODE table.
   
   ### what information do we keep for excluded nodes?
   ### note: at this point, there is no user command to exclude
@@ -945,10 +945,10 @@ base-presence: *
       handled as a separate action (via recursion).
 
     not-present
-      This row in WORKING_NODE is removed, along with descendent
+      This row in WORKING_NODE is removed, along with descendant
       nodes. The directory will not list this node in its (new) set of
       children. Any BASE_NODE row at this path is also removed, along
-      with any descendent nodes.
+      with any descendant nodes.
 
     base-deleted
       No action taken. This node will be removed when it is handled
@@ -958,9 +958,9 @@ base-presence: *
 working-presence: excluded
 base-presence: *
   A new, excluded BASE_NODE is constructed, and the WORKING_NODE is
-  removed. Any BASE_NODE rows which appear to be descendents of this
+  removed. Any BASE_NODE rows which appear to be descendants of this
   (used-to-be-directory) node are removed. There should be no
-  descendents in the WORKING_NODE table.
+  descendants in the WORKING_NODE table.
 
   ### what information do we keep for excluded nodes?
 

Modified: subversion/branches/fsfs-ucsnorm/notes/wc-ng/locking
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/notes/wc-ng/locking?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/notes/wc-ng/locking (original)
+++ subversion/branches/fsfs-ucsnorm/notes/wc-ng/locking Sun Mar  9 10:08:46 2014
@@ -113,7 +113,7 @@ operation to the first class of operatio
 Lock Overlapping
 ----------------
 As in wc-1, locks may not overlap.  For instance, a process which acquires
-a depth-infinity lock for /A/B will encounter an error if it attemps to
+a depth-infinity lock for /A/B will encounter an error if it attempts to
 later acquire a lock for /A/B/C, even though it already owns the logical
 lock for that path.  In this way wc-ng can ensure the explicit lock for a
 given logical lock is stored in one location.  This location will be the

Modified: subversion/branches/fsfs-ucsnorm/notes/wc-ng/nodes
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/notes/wc-ng/nodes?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/notes/wc-ng/nodes (original)
+++ subversion/branches/fsfs-ucsnorm/notes/wc-ng/nodes Sun Mar  9 10:08:46 2014
@@ -204,14 +204,14 @@ become an op_depth layer of their own.
   commit rules to act on revision-number changes within this flat tree.
 
   GJS: correct. Consider a root of the subtree at r10, and a
-  descendent is at r12. We cannot create one layer at r10, and another
-  at r12 because we do not have the descendent@r10 to place into the
+  descendant is at r12. We cannot create one layer at r10, and another
+  at r12 because we do not have the descendant@r10 to place into the
   first layer. Thus, we need to use a single op_depth layer for this
   operation. At commit time, one copy will be me for the subtree from
-  r10, a deletion will be made for the descendent, and then another
-  copy performed for the r12 descendent.
+  r10, a deletion will be made for the descendant, and then another
+  copy performed for the r12 descendant.
 
-### GJS: in the above scenario, we do not know if the descendent
+### GJS: in the above scenario, we do not know if the descendant
   existed in r10, so the deletion may not be necessary (and could even
   throw an error!). I do not recall if our copy's destination is
   allowed to exist (ie. we have implied overwrite semantics in the

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/ctypes-python/csvn/core/__init__.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/ctypes-python/csvn/core/__init__.py?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/ctypes-python/csvn/core/__init__.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/ctypes-python/csvn/core/__init__.py Sun Mar  9 10:08:46 2014
@@ -107,7 +107,7 @@ class Pool(object):
       # Make sure that the parent object is valid
       self._parent_pool.assert_valid()
 
-      # Refer to self using a weakrefrence so that we don't
+      # Refer to self using a weakreference so that we don't
       # create a reference cycle
       weakself = weakref.ref(self)
 

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/ctypes-python/examples/example.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/ctypes-python/examples/example.py?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/ctypes-python/examples/example.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/ctypes-python/examples/example.py Sun Mar  9 10:08:46 2014
@@ -101,7 +101,7 @@ txn.mkdir("blahdir/dj/a/b/c/d/e/f")
 txn.mkdir("blahdir/dj/a/b/c/d/e/f/g")
 txn.upload("blahdir/dj/a/b/c/d/e/f/g/h.txt", "/tmp/contents.txt")
 
-rev = txn.commit("create blahdir and descendents")
+rev = txn.commit("create blahdir and descendants")
 print("Committed revision %d" % rev)
 
 def ignore(path, kind):

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/ctypes-python/test/wc.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/ctypes-python/test/wc.py?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/ctypes-python/test/wc.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/ctypes-python/test/wc.py Sun Mar  9 10:08:46 2014
@@ -168,7 +168,7 @@ class WCTestCase(unittest.TestCase):
         path = "%s/branches/0.x/README.txt" % wc_location
         diffstring="""Index: """+path+"""
 ===================================================================
---- """+path+"""\t(revision 0)
+--- """+path+"""\t(nonexistent)
 +++ """+path+"""\t(revision 5)
 @@ -0,0 +1,9 @@
 +This repository is for test purposes only. Any resemblance to any other

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/InputStream.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/InputStream.cpp?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/InputStream.cpp (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/InputStream.cpp Sun Mar  9 10:08:46 2014
@@ -54,8 +54,8 @@ svn_stream_t *InputStream::getStream(con
   // Create a stream with this as the baton and set the read and
   // close functions.
   svn_stream_t *ret = svn_stream_create(this, pool.getPool());
-  svn_stream_set_read2(ret, NULL /* only full read support */,
-                       InputStream::read);
+  svn_stream_set_read2(ret, InputStream::read,
+                       NULL /* only partial read support */);
   svn_stream_set_close(ret, InputStream::close);
   return ret;
 }
@@ -69,6 +69,9 @@ svn_stream_t *InputStream::getStream(con
  */
 svn_error_t *InputStream::read(void *baton, char *buffer, apr_size_t *len)
 {
+  if (0 == *len)
+    return SVN_NO_ERROR;
+
   JNIEnv *env = JNIUtil::getEnv();
   // An object of our class is passed in as the baton.
   InputStream *that = static_cast<InputStream *>(baton);

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.cpp?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.cpp (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/JNIUtil.cpp Sun Mar  9 10:08:46 2014
@@ -206,7 +206,7 @@ bool JNIUtil::JNIGlobalInit(JNIEnv *env)
 #ifdef WIN32
   {
     WCHAR ucs2_path[MAX_PATH];
-    char *utf8_path;
+    const char *utf8_path;
     const char *internal_path;
     svn_error_t *err;
     apr_pool_t *pool = svn_pool_create(g_pool);

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/NativeStream.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/NativeStream.cpp?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/NativeStream.cpp (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/NativeStream.cpp Sun Mar  9 10:08:46 2014
@@ -87,10 +87,10 @@ jint NativeInputStream::read(::Java::Env
 {
   apr_size_t len = 1;
   char byte;
-  SVN_JAVAHL_CHECK(env, svn_stream_read(m_stream, &byte, &len));
+  SVN_JAVAHL_CHECK(env, svn_stream_read_full(m_stream, &byte, &len));
   if (len == 0)
     return -1;                  // EOF
-  if (len != 1)
+  if (len == 1)
     return jint(byte & 0xff);
   ::Java::IOException(env).raise(_("Read from native stream failed"));
   return -1;
@@ -106,7 +106,12 @@ jint NativeInputStream::read(::Java::Env
     ::Java::NullPointerException(env).raise();
 
   apr_size_t len = length;
-  SVN_JAVAHL_CHECK(env, svn_stream_read(m_stream, dst.data() + offset, &len));
+  if (svn_stream_supports_partial_read(m_stream))
+    SVN_JAVAHL_CHECK(env, svn_stream_read2(m_stream,
+                                           dst.data() + offset, &len));
+  else
+    SVN_JAVAHL_CHECK(env, svn_stream_read_full(m_stream,
+                                               dst.data() + offset, &len));
   if (len == 0)
     return -1;                  // EOF
   if (len <= length)

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.cpp?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.cpp (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/OperationContext.cpp Sun Mar  9 10:08:46 2014
@@ -492,21 +492,11 @@ public:
       response_out(NULL),
       jclosecb(NULL)
     {
-#if APR_VERSION_AT_LEAST(1, 3, 0)
       status = apr_file_pipe_create_ex(&request_in, &request_out,
                                        APR_FULL_BLOCK, pool);
       if (!status)
         status = apr_file_pipe_create_ex(&response_in, &response_out,
                                          APR_FULL_BLOCK, pool);
-#else
-      // XXX APR compatibility note:
-      // Versions of APR before 1.3 do not have the extended pipe
-      // API. Just create a default pipe and just hope that it returns
-      // a blocking handle.
-      status = apr_file_pipe_create(&request_in, &request_out, pool);
-      if (!status)
-        status = apr_file_pipe_create(&response_in, &response_out, pool);
-#endif
     }
 
   ~TunnelContext()

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/SVNClient.cpp?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/SVNClient.cpp Sun Mar  9 10:08:46 2014
@@ -337,21 +337,18 @@ void SVNClient::remove(Targets &targets,
                                    ctx, subPool.getPool()), );
 }
 
-void SVNClient::revert(const char *path, svn_depth_t depth,
+void SVNClient::revert(StringArray &paths, svn_depth_t depth,
                        StringArray &changelists)
 {
     SVN::Pool subPool(pool);
 
-    SVN_JNI_NULL_PTR_EX(path, "path", );
-
     svn_client_ctx_t *ctx = context.getContext(NULL, subPool);
     if (ctx == NULL)
         return;
 
-    Targets target(path, subPool);
-    const apr_array_header_t *targets = target.array(subPool);
-    SVN_JNI_ERR(target.error_occurred(), );
-    SVN_JNI_ERR(svn_client_revert2(targets, depth,
+    Targets targets(paths, subPool);
+    SVN_JNI_ERR(targets.error_occurred(), );
+    SVN_JNI_ERR(svn_client_revert2(targets.array(subPool), depth,
                                    changelists.array(subPool), ctx,
                                    subPool.getPool()), );
 }

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/SVNClient.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/SVNClient.h Sun Mar  9 10:08:46 2014
@@ -148,7 +148,7 @@ class SVNClient :public SVNBase
                     bool allowUnverObstructions);
   void add(const char *path, svn_depth_t depth, bool force,
            bool no_ignore, bool no_autoprops, bool add_parents);
-  void revert(const char *path, svn_depth_t depth, StringArray &changelists);
+  void revert(StringArray &paths, svn_depth_t depth, StringArray &changelists);
   void remove(Targets &targets, CommitMessage *message, bool force,
               bool keep_local, PropertyTable &revprops,
               CommitCallback *callback);

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/jniwrapper/jni_io_stream.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/jniwrapper/jni_io_stream.cpp?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/jniwrapper/jni_io_stream.cpp (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/jniwrapper/jni_io_stream.cpp Sun Mar  9 10:08:46 2014
@@ -70,9 +70,17 @@ svn_error_t* stream_seek(void* baton, co
 
 svn_error_t* stream_read(void* baton, char* buffer, apr_size_t* len)
 {
+  if (0 == *len)
+    return SVN_NO_ERROR;
+
+  jint length = jint(*len);
   InputStream* const self = static_cast<InputStream*>(baton);
   SVN_JAVAHL_CATCH(self->get_env(), SVN_ERR_BASE,
-                   *len = self->read(buffer, jint(*len)));
+                   length = self->read(buffer, length));
+  if (length < 0)
+    *len = 0;
+  else
+    *len = length;
   return SVN_NO_ERROR;
 }
 
@@ -200,8 +208,8 @@ InputStream::get_global_stream(Env env, 
   std::auto_ptr<GlobalObject> baton(new GlobalObject(env, jstream));
 
   svn_stream_t* const stream = svn_stream_create(baton.get(), pool.getPool());
-  svn_stream_set_read2(stream, NULL /* only full read support */,
-                       global_stream_read);
+  svn_stream_set_read2(stream, global_stream_read,
+                       NULL /* only partial read support */);
   svn_stream_set_skip(stream, global_stream_skip);
   svn_stream_set_close(stream, global_stream_close_input);
   if (has_mark)
@@ -224,8 +232,8 @@ svn_stream_t* InputStream::get_stream(co
   const bool has_mark = mark_supported();
 
   svn_stream_t* const stream = svn_stream_create(this, pool.getPool());
-  svn_stream_set_read2(stream, NULL /* only full read support */,
-                       stream_read);
+  svn_stream_set_read2(stream, stream_read,
+                       NULL /* only partial read support */);
   svn_stream_set_skip(stream, stream_skip);
   svn_stream_set_close(stream, stream_close_input);
   if (has_mark)
@@ -236,6 +244,17 @@ svn_stream_t* InputStream::get_stream(co
   return stream;
 }
 
+jint InputStream::read(void* data, jint length)
+{
+  ByteArray array(m_env, length);
+  const jint size = read(array);
+  if (size > 0)
+    {
+      ByteArray::Contents contents(array);
+      ::memcpy(static_cast<char*>(data), contents.data(), size);
+    }
+  return size;
+}
 
 // Class Java::OutputStream
 

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp Sun Mar  9 10:08:46 2014
@@ -122,14 +122,7 @@ public:
   /**
    * Helper method to read data into a native buffer.
    */
-  jint read(void* data, jint length, jint offset = 0)
-    {
-      ByteArray array(m_env, length);
-      const jint size = read(array);
-      ByteArray::Contents contents(array);
-      ::memcpy(static_cast<char*>(data) + offset, contents.data(), size);
-      return size;
-    }
+  jint read(void* data, jint length);
 
   /**
    * Implements @c InputStream.skip(long)

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Sun Mar  9 10:08:46 2014
@@ -410,7 +410,7 @@ Java_org_apache_subversion_javahl_SVNCli
 
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_revert
-(JNIEnv *env, jobject jthis, jstring jpath, jobject jdepth,
+(JNIEnv *env, jobject jthis, jobject jpaths, jobject jdepth,
  jobject jchangelists)
 {
   JNIEntry(SVNClient, revert);
@@ -420,7 +420,9 @@ Java_org_apache_subversion_javahl_SVNCli
       JNIUtil::throwError(_("bad C++ this"));
       return;
     }
-  JNIStringHolder path(jpath);
+
+  SVN_JNI_NULL_PTR_EX(jpaths, "paths", );
+  StringArray paths(jpaths);
   if (JNIUtil::isExceptionThrown())
     return;
 
@@ -428,7 +430,7 @@ Java_org_apache_subversion_javahl_SVNCli
   if (JNIUtil::isExceptionThrown())
     return;
 
-  cl->revert(path, EnumMapper::toDepth(jdepth), changelists);
+  cl->revert(paths, EnumMapper::toDepth(jdepth), changelists);
 }
 
 JNIEXPORT void JNICALL

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java Sun Mar  9 10:08:46 2014
@@ -42,7 +42,7 @@ public class ConflictResult
     private String mergedPath;
 
     /**
-     * Create a new conflict result instace.
+     * Create a new conflict result instance.
      */
     public ConflictResult(Choice choice, String mergedPath)
     {

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Sun Mar  9 10:08:46 2014
@@ -221,6 +221,17 @@ public interface ISVNClient
             throws ClientException;
 
     /**
+     * Reverts set of files or directories to a pristine state.
+     * @param path      A set of paths to revert.
+     * @param depth     the depth to recurse into subdirectories
+     * @param changelists changelists to filter by
+     * @throws ClientException
+     * @since 1.9
+     */
+    void revert(Set<String> paths, Depth depth, Collection<String> changelists)
+            throws ClientException;
+
+    /**
      * Reverts a file to a pristine state.
      * @param path      path of the file.
      * @param depth     the depth to recurse into subdirectories
@@ -1011,9 +1022,9 @@ public interface ISVNClient
      * #diffSummarize(String, Revision, String, Revision, Depth,
      * Collection, boolean, DiffSummaryCallback)}, using
      * <code>path</code> for both of that method's targets.
-     * @param startRevision Beginning of range for comparsion of
+     * @param startRevision Beginning of range for comparison of
      * <code>target</code>.
-     * @param endRevision End of range for comparsion of
+     * @param endRevision End of range for comparison of
      * <code>target</code>.
      * @param depth how deep to recurse.
      * @param changelists  if non-null, filter paths using changelists

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Sun Mar  9 10:08:46 2014
@@ -32,6 +32,7 @@ import java.io.FileNotFoundException;
 import java.io.ByteArrayOutputStream;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Set;
 import java.util.List;
 import java.util.Map;
@@ -52,7 +53,7 @@ public class SVNClient implements ISVNCl
     }
 
     /**
-     * Standard empty contructor, builds just the native peer.
+     * Standard empty constructor, builds just the native peer.
      */
     public SVNClient()
     {
@@ -175,10 +176,17 @@ public class SVNClient implements ISVNCl
                               CommitMessageCallback handler, CommitCallback callback)
             throws ClientException;
 
-    public native void revert(String path, Depth depth,
+    public native void revert(Set<String> paths, Depth depth,
                               Collection<String> changelists)
             throws ClientException;
 
+    public void revert(String path, Depth depth,
+                       Collection<String> changelists)
+            throws ClientException
+    {
+        revert(Collections.singleton(path), depth, changelists);
+    }
+
     public native void add(String path, Depth depth, boolean force,
                            boolean noIgnores, boolean noAutoProps,
                            boolean addParents)

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java Sun Mar  9 10:08:46 2014
@@ -47,7 +47,7 @@ public class SVNRepos implements ISVNRep
     }
 
     /**
-     * Standard empty contructor, builds just the native peer.
+     * Standard empty constructor, builds just the native peer.
      */
     public SVNRepos()
     {

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java Sun Mar  9 10:08:46 2014
@@ -84,7 +84,7 @@ public class ConflictResult
     private String mergedPath;
 
     /**
-     * Create a new conflict result instace.
+     * Create a new conflict result instance.
      */
     public ConflictResult(int choice, String mergedPath)
     {

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java Sun Mar  9 10:08:46 2014
@@ -138,7 +138,7 @@ public class PropertyData
     }
 
     /**
-     * this contructor is used when building a thin wrapper around other
+     * this constructor is used when building a thin wrapper around other
      * property retrieval methods
      * @param p     the path of the item owning this property
      * @param n     the name of the property

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java Sun Mar  9 10:08:46 2014
@@ -38,7 +38,7 @@ public class SVNAdmin
     private org.apache.subversion.javahl.SVNRepos aSVNAdmin;
 
     /**
-     * Standard empty contructor, builds just the native peer.
+     * Standard empty constructor, builds just the native peer.
      */
     public SVNAdmin()
     {

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java Sun Mar  9 10:08:46 2014
@@ -47,7 +47,7 @@ public class SVNClient implements SVNCli
     private org.apache.subversion.javahl.SVNClient aSVNClient;
 
     /**
-     * Standard empty contructor, builds just the native peer.
+     * Standard empty constructor, builds just the native peer.
      */
     public SVNClient()
     {

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java Sun Mar  9 10:08:46 2014
@@ -1330,9 +1330,9 @@ public interface SVNClientInterface
      * #diffSummarize(String, Revision, String, Revision, int,
      * boolean, DiffSummaryReceiver)}, using <code>path</code> for
      * both of that method's targets.
-     * @param startRevision Beginning of range for comparsion of
+     * @param startRevision Beginning of range for comparison of
      * <code>target</code>.
-     * @param endRevision End of range for comparsion of
+     * @param endRevision End of range for comparison of
      * <code>target</code>.
      * @param depth how deep to recurse.
      * @param changelists  if non-null, filter paths using changelists

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Sun Mar  9 10:08:46 2014
@@ -1832,7 +1832,7 @@ public class BasicTests extends SVNTests
         // check the status of the working copy
         thisTest.checkStatus();
 
-        // confirm that the file are realy deleted
+        // confirm that the file are really deleted
         assertFalse("failed to remove text modified file",
                 new File(thisTest.getWorkingCopy(), "A/D/G/rho").exists());
         assertFalse("failed to remove prop modified file",
@@ -1860,7 +1860,7 @@ public class BasicTests extends SVNTests
 
         try
         {
-            // delete non-existant file foo
+            // delete non-existent file foo
             Set<String> paths = new HashSet<String>(1);
             paths.add(file.getAbsolutePath());
             client.remove(paths, true, false, null, null, null);
@@ -3043,7 +3043,7 @@ public class BasicTests extends SVNTests
                         thisTest.getUrl().toString(), diffOutput.getPath(),
                         Depth.infinity, null, true, true, false, false);
 
-            fail("This test should fail becaus the relativeToDir parameter " +
+            fail("This test should fail because the relativeToDir parameter " +
                  "does not work with URLs");
         }
         catch (Exception ignored)

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java Sun Mar  9 10:08:46 2014
@@ -1630,7 +1630,7 @@ public class BasicTests extends SVNTests
         // check the status of the working copy
         thisTest.checkStatus();
 
-        // confirm that the file are realy deleted
+        // confirm that the file are really deleted
         assertFalse("failed to remove text modified file",
                 new File(thisTest.getWorkingCopy(), "A/D/G/rho").exists());
         assertFalse("failed to remove prop modified file",
@@ -1656,7 +1656,7 @@ public class BasicTests extends SVNTests
 
         try
         {
-            // delete non-existant file foo
+            // delete non-existent file foo
             client.remove(new String[] {file.getAbsolutePath()}, null, true);
             fail("missing exception");
         }
@@ -2644,7 +2644,7 @@ public class BasicTests extends SVNTests
                         thisTest.getUrl(), diffOutput.getPath(),
                         Depth.infinity, null, true, true, false);
 
-            fail("This test should fail becaus the relativeToDir parameter " +
+            fail("This test should fail because the relativeToDir parameter " +
                  "does not work with URLs");
         }
         catch (Exception ignored)

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/include/proxy_apr.swg
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/include/proxy_apr.swg?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/include/proxy_apr.swg (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/include/proxy_apr.swg Sun Mar  9 10:08:46 2014
@@ -185,7 +185,7 @@ struct apr_pool_t {
           # Make sure that the parent object is valid
           self._parent_pool.assert_valid()
 
-          # Refer to self using a weakrefrence so that we don't
+          # Refer to self using a weakreference so that we don't
           # create a reference cycle
           weakself = weakref.ref(self)
 

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/perl/native/Client.pm
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/perl/native/Client.pm?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/perl/native/Client.pm (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/perl/native/Client.pm Sun Mar  9 10:08:46 2014
@@ -760,7 +760,7 @@ object.
 Else, create the directories on disk, and attempt to schedule them for addition.
 In this case returns undef.
 
-If $make_parents is TRUE, create any non-existant parent directories also.
+If $make_parents is TRUE, create any non-existent parent directories also.
 
 If not undef, $revprop_hash is a reference to a hash table holding additional
 custom revision properites (property names mapped to strings) to be set on the
@@ -970,7 +970,7 @@ $path, $status, $pool
 
 $path is the pathname of the file or directory which status is being
 reported.  $status is a svn_wc_status2_t object.  $pool is an apr_pool_t
-object which is cleaned beteween invocations to the callback.
+object which is cleaned between invocations to the callback.
 
 The return of the status_func subroutine can be a svn_error_t object created by
 SVN::Error::create in order to propagate an error up.

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/perl/native/t/3client.t
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/perl/native/t/3client.t?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/perl/native/t/3client.t (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/perl/native/t/3client.t Sun Mar  9 10:08:46 2014
@@ -1236,7 +1236,7 @@ SKIP: {
   my $result = SVN::Core::auth_set_gnome_keyring_unlock_prompt_func(
                    $ctx->auth(), $callback);
   # TEST
-  is(${$result}, $callback, 'auth_set_gnome_keyring_unlock_prompt_func result equals paramter');
+  is(${$result}, $callback, 'auth_set_gnome_keyring_unlock_prompt_func result equals parameter');
 }
 
 END {

Modified: subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Sun Mar  9 10:08:46 2014
@@ -1550,7 +1550,7 @@ static item_baton *make_baton(apr_pool_t
   /* Note: We steal the caller's reference to 'baton'. Also, to avoid
      memory leaks, we borrow the caller's reference to 'editor'. In this
      case, borrowing the reference to 'editor' is safe because the contents
-     of an item_baton struct are only used by functino calls which operate on
+     of an item_baton struct are only used by function calls which operate on
      the editor itself. */
   newb->editor = editor;
   newb->baton = baton;

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_atomic.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_atomic.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_atomic.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_atomic.h Sun Mar  9 10:08:46 2014
@@ -46,39 +46,19 @@ extern "C" {
  */
 
 /** The type used by all the other atomic operations. */
-#if APR_VERSION_AT_LEAST(1, 0, 0)
 #define svn_atomic_t apr_uint32_t
-#else
-#define svn_atomic_t apr_atomic_t
-#endif
 
 /** Atomically read an #svn_atomic_t from memory. */
-#if APR_VERSION_AT_LEAST(1, 0, 0)
 #define svn_atomic_read(mem) apr_atomic_read32((mem))
-#else
-#define svn_atomic_read(mem) apr_atomic_read((mem))
-#endif
 
 /** Atomically set an #svn_atomic_t in memory. */
-#if APR_VERSION_AT_LEAST(1, 0, 0)
 #define svn_atomic_set(mem, val) apr_atomic_set32((mem), (val))
-#else
-#define svn_atomic_set(mem, val) apr_atomic_set((mem), (val))
-#endif
 
 /** Atomically increment an #svn_atomic_t. */
-#if APR_VERSION_AT_LEAST(1, 0, 0)
 #define svn_atomic_inc(mem) apr_atomic_inc32(mem)
-#else
-#define svn_atomic_inc(mem) apr_atomic_inc(mem)
-#endif
 
 /** Atomically decrement an #svn_atomic_t. */
-#if APR_VERSION_AT_LEAST(1, 0, 0)
 #define svn_atomic_dec(mem) apr_atomic_dec32(mem)
-#else
-#define svn_atomic_dec(mem) apr_atomic_dec(mem)
-#endif
 
 /**
  * Atomic compare-and-swap.
@@ -91,13 +71,8 @@ extern "C" {
  *       that on some platforms, the CAS function is implemented in a
  *       way that is incompatible with the other atomic operations.
  */
-#if APR_VERSION_AT_LEAST(1, 0, 0)
 #define svn_atomic_cas(mem, with, cmp) \
     apr_atomic_cas32((mem), (with), (cmp))
-#else
-#define svn_atomic_cas(mem, with, cmp) \
-    apr_atomic_cas((mem), (with), (cmp))
-#endif
 /** @} */
 
 /**

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_cache.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_cache.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_cache.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_cache.h Sun Mar  9 10:08:46 2014
@@ -317,14 +317,14 @@ svn_cache__membuffer_cache_create(svn_me
 
 /**
  * Data in this priority class has a good chance to remain in cache unless
- * there is more data in this class than the cache's capcity.  Use of this
+ * there is more data in this class than the cache's capacity.  Use of this
  * as the default for all information that is costly to fetch from disk.
  */
 #define SVN_CACHE__MEMBUFFER_DEFAULT_PRIORITY 1000
 
 /**
  * Data in this priority class will be removed as soon as the cache starts
- * filling up.  Use of this for ephemeral data that can easisly be acquired
+ * filling up.  Use of this for ephemeral data that can easily be acquired
  * again from other sources.
  */
 #define SVN_CACHE__MEMBUFFER_LOW_PRIORITY      100

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_client_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_client_private.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_client_private.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_client_private.h Sun Mar  9 10:08:46 2014
@@ -33,6 +33,8 @@
 #include "svn_client.h"
 #include "svn_types.h"
 
+#include "private/svn_diff_tree.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
@@ -234,20 +236,6 @@ svn_client__wc_node_get_origin(svn_clien
                                apr_pool_t *result_pool,
                                apr_pool_t *scratch_pool);
 
-/* Produce a diff with depth DEPTH between two files or two directories at
- * LOCAL_ABSPATH1 and LOCAL_ABSPATH2, using the provided diff callbacks to
- * show changes in files. The files and directories involved may be part of
- * a working copy or they may be unversioned. For versioned files, show
- * property changes, too. */
-svn_error_t *
-svn_client__arbitrary_nodes_diff(const char *local_abspath1,
-                                 const char *local_abspath2,
-                                 svn_depth_t depth,
-                                 const svn_wc_diff_callbacks4_t *callbacks,
-                                 void *callback_baton,
-                                 svn_client_ctx_t *ctx,
-                                 apr_pool_t *scratch_pool);
-
 /* Copy the file or directory on URL in some repository to DST_ABSPATH,
  * copying node information and properties. Resolve URL using PEG_REV and
  * REVISION.

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_delta_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_delta_private.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_delta_private.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_delta_private.h Sun Mar  9 10:08:46 2014
@@ -101,16 +101,6 @@ svn_delta__delta_from_editor(const svn_d
                              struct svn_delta__extra_baton *exb,
                              apr_pool_t *pool);
 
-/**
- * Similar to #svn_txdelta_read_svndiff_window but only returns the window
- * header information, i.e. does not decode the window contents.
- */
-svn_error_t *
-svn_txdelta__read_svndiff_window_sizes(svn_txdelta_window_t **window,
-                                       svn_stream_t *stream,
-                                       int svndiff_version,
-                                       apr_pool_t *pool);
-
 
 #ifdef __cplusplus
 }

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_dep_compat.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_dep_compat.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_dep_compat.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_dep_compat.h Sun Mar  9 10:08:46 2014
@@ -35,69 +35,16 @@ extern "C" {
 #endif /* __cplusplus */
 
 /**
- * Check at compile time if the APR version is at least a certain
- * level.
- * @param major The major version component of the version checked
- * for (e.g., the "1" of "1.3.0").
- * @param minor The minor version component of the version checked
- * for (e.g., the "3" of "1.3.0").
- * @param patch The patch level component of the version checked
- * for (e.g., the "0" of "1.3.0").
+ * We assume that 'int' and 'unsigned' are at least 32 bits wide.
+ * This also implies that long (rev numbers) is 32 bits or wider.
  *
- * @since New in 1.5.
- */
-#ifndef APR_VERSION_AT_LEAST /* Introduced in APR 1.3.0 */
-#define APR_VERSION_AT_LEAST(major,minor,patch)                  \
-(((major) < APR_MAJOR_VERSION)                                       \
- || ((major) == APR_MAJOR_VERSION && (minor) < APR_MINOR_VERSION)    \
- || ((major) == APR_MAJOR_VERSION && (minor) == APR_MINOR_VERSION && \
-     (patch) <= APR_PATCH_VERSION))
-#endif /* APR_VERSION_AT_LEAST */
-
-/**
- * If we don't have a recent enough APR, emulate the behavior of the
- * apr_array_clear() API.
+ * @since New in 1.9.
  */
-#if !APR_VERSION_AT_LEAST(1,3,0)
-#define apr_array_clear(arr)         (arr)->nelts = 0
-#endif
-
-#if !APR_VERSION_AT_LEAST(1,3,0)
-/* Equivalent to the apr_hash_clear() function in APR >= 1.3.0.  Used to
- * implement the 'apr_hash_clear' macro if the version of APR that
- * we build against does not provide the apr_hash_clear() function. */
-void svn_hash__clear(struct apr_hash_t *ht);
-
-/**
- * If we don't have a recent enough APR, emulate the behavior of the
- * apr_hash_clear() API.
- */
-#define apr_hash_clear(ht)           svn_hash__clear(ht)
-#endif
-
-#if !APR_VERSION_AT_LEAST(1,0,0)
-#define APR_UINT64_C(val) UINT64_C(val)
-#define APR_FPROT_OS_DEFAULT APR_OS_DEFAULT
-#endif
-
-#if !APR_VERSION_AT_LEAST(1,3,0)
-#define APR_UINT16_MAX  0xFFFFU
-#define APR_INT16_MAX   0x7FFF
-#define APR_INT16_MIN   (-APR_INT16_MAX-1)
-#define APR_UINT32_MAX 0xFFFFFFFFU
-#define APR_INT32_MAX  0x7FFFFFFF
-#define APR_INT32_MIN (-APR_INT32_MAX-1)
-#define APR_UINT64_MAX APR_UINT64_C(0xFFFFFFFFFFFFFFFF)
-#define APR_INT64_MAX   APR_INT64_C(0x7FFFFFFFFFFFFFFF)
-#define APR_INT64_MIN (-APR_INT64_MAX-1)
-#define APR_SIZE_MAX (~(apr_size_t)0)
-
-#if APR_SIZEOF_VOIDP == 8
-typedef apr_uint64_t apr_uintptr_t;
-#else
-typedef apr_uint32_t apr_uintptr_t;
+#if    defined(APR_HAVE_LIMITS_H) \
+    && !defined(SVN_ALLOW_SHORT_INTS) \
+    && (INT_MAX < 0x7FFFFFFFl)
+#error int is shorter than 32 bits and may break Subversion. Define SVN_ALLOW_SHORT_INTS to skip this check.
 #endif
-#endif /* !APR_VERSION_AT_LEAST(1,3,0) */
 
 /**
  * Work around a platform dependency issue. apr_thread_rwlock_trywrlock()

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_diff_tree.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_diff_tree.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_diff_tree.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_diff_tree.h Sun Mar  9 10:08:46 2014
@@ -319,7 +319,7 @@ svn_diff__tree_processor_filter_create(c
                                        apr_pool_t *result_pool);
 
 /**
- * Create a new svn_diff_tree_processor_t instace with all function setup
+ * Create a new svn_diff_tree_processor_t instance with all function setup
  * to call into processor with all adds with copyfrom information transformed
  * to simple node changes.
  *

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_fs_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_fs_private.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_fs_private.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_fs_private.h Sun Mar  9 10:08:46 2014
@@ -179,6 +179,23 @@ svn_fs__editor_commit(svn_revnum_t *revi
                       apr_pool_t *scratch_pool);
 
 
+/** Set @a *mergeinfo to the mergeinfo for @a path in @a root.
+ *
+ * If there is no mergeinfo, set @a *mergeinfo to NULL.
+ *
+ * See svn_fs_get_mergeinfo2() but for the meanings of @a inherit and
+ * @a adjust_inheritable_mergeinfo and other details.
+ */
+svn_error_t *
+svn_fs__get_mergeinfo_for_path(svn_mergeinfo_t *mergeinfo,
+                               svn_fs_root_t *root,
+                               const char *path,
+                               svn_mergeinfo_inheritance_t inherit,
+                               svn_boolean_t adjust_inherited_mergeinfo,
+                               apr_pool_t *result_pool,
+                               apr_pool_t *scratch_pool);
+
+
 /** @} */
 
 

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_fs_util.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_fs_util.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_fs_util.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_fs_util.h Sun Mar  9 10:08:46 2014
@@ -221,6 +221,15 @@ svn_fs__compatible_version(svn_version_t
                            apr_hash_t *config,
                            apr_pool_t *pool);
 
+/* Compare the property lists A and B using POOL for temporary allocations.
+   Return true iff both lists contain the same properties with the same
+   values.  A and B may be NULL in which case they will be equal to and
+   empty list. */
+svn_boolean_t
+svn_fs__prop_lists_equal(apr_hash_t *a,
+                         apr_hash_t *b,
+                         apr_pool_t *pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_io_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_io_private.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_io_private.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_io_private.h Sun Mar  9 10:08:46 2014
@@ -106,7 +106,7 @@ apr_file_t *
 svn_stream__aprfile(svn_stream_t *stream);
 
 /* Creates as *INSTALL_STREAM a stream that once completed can be installed
-   using Windows checkouts much slower then Unix.
+   using Windows checkouts much slower than Unix.
 
    While writing the stream is temporarily stored in TMP_ABSPATH.
  */

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_magic.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_magic.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_magic.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_magic.h Sun Mar  9 10:08:46 2014
@@ -30,14 +30,16 @@
 /* An opaque struct that wraps a libmagic cookie. */
 typedef struct svn_magic__cookie_t svn_magic__cookie_t;
 
-/* This routine initialises libmagic.
+/* This routine initialises libmagic.  CONFIG is a config hash and
+ * may be NULL.
  * Upon success a new *MAGIC_COOKIE is allocated in RESULT_POOL.
  * On failure *MAGIC_COOKIE is set to NULL.
  * All resources used by libmagic are freed by a cleanup handler
  * installed on RESULT_POOL, i.e. *MAGIC_COOKIE becomes invalid when
  * the pool is cleared! */
-void
+svn_error_t *
 svn_magic__init(svn_magic__cookie_t **magic_cookie,
+                apr_hash_t *config,
                 apr_pool_t *result_pool);
 
 /* Detect the mime-type of the file at LOCAL_ABSPATH using MAGIC_COOKIE.

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_mergeinfo_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_mergeinfo_private.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_mergeinfo_private.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_mergeinfo_private.h Sun Mar  9 10:08:46 2014
@@ -98,13 +98,13 @@ svn_mergeinfo__equals(svn_boolean_t *is_
                       svn_boolean_t consider_inheritance,
                       apr_pool_t *pool);
 
-/* Examine MERGEINFO, removing all paths from the hash which map to
-   empty rangelists.  POOL is used only to allocate the apr_hash_index_t
-   iterator.  Returns TRUE if any paths were removed and FALSE if none were
+/* Remove all paths from MERGEINFO which map to empty rangelists.
+
+   Return TRUE if any paths were removed and FALSE if none were
    removed or MERGEINFO is NULL. */
 svn_boolean_t
 svn_mergeinfo__remove_empty_rangelists(svn_mergeinfo_t mergeinfo,
-                                       apr_pool_t *pool);
+                                       apr_pool_t *scratch_pool);
 
 /* Make a shallow (ie, mergeinfos are not duped, or altered at all;
    keys share storage) copy of IN_CATALOG in *OUT_CATALOG, removing

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_ra_svn_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_ra_svn_private.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_ra_svn_private.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_ra_svn_private.h Sun Mar  9 10:08:46 2014
@@ -257,7 +257,7 @@ svn_ra_svn__read_cmd_response(svn_ra_svn
                               const char *fmt, ...);
 
 /** Check the receive buffer and socket of @a conn whether there is some
- * unprocessed incomming data without waiting for new data to come in.
+ * unprocessed incoming data without waiting for new data to come in.
  * If data is found, set @a *has_command to TRUE.  If the connection does
  * not contain any more data and has been closed, set @a *terminated to
  * TRUE.

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_string_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_string_private.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_string_private.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_string_private.h Sun Mar  9 10:08:46 2014
@@ -131,11 +131,6 @@ svn_membuf__nzero(svn_membuf_t *membuf, 
 svn_string_t *
 svn_stringbuf__morph_into_string(svn_stringbuf_t *strbuf);
 
-/** Like apr_strtoff but provided here for backward compatibility
- *  with APR 0.9 */
-apr_status_t
-svn__strtoff(apr_off_t *offset, const char *buf, char **end, int base);
-
 /** Like strtoul but with a fixed base of 10 and without overflow checks.
  * This allows the compiler to generate massively faster (4x on 64bit LINUX)
  * code.  Overflow checks may be added on the caller side where you might
@@ -164,16 +159,16 @@ apr_size_t
 svn__i64toa(char * dest, apr_int64_t number);
 
 /** Returns a decimal string for @a number allocated in @a pool.  Put in
- * the @a seperator at each third place.
+ * the @a separator at each third place.
  */
 char *
-svn__ui64toa_sep(apr_uint64_t number, char seperator, apr_pool_t *pool);
+svn__ui64toa_sep(apr_uint64_t number, char separator, apr_pool_t *pool);
 
 /** Returns a decimal string for @a number allocated in @a pool.  Put in
- * the @a seperator at each third place.
+ * the @a separator at each third place.
  */
 char *
-svn__i64toa_sep(apr_int64_t number, char seperator, apr_pool_t *pool);
+svn__i64toa_sep(apr_int64_t number, char separator, apr_pool_t *pool);
 
 
 /** Writes the @a number as base36-encoded string into @a dest. The latter

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_wc_private.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/private/svn_wc_private.h Sun Mar  9 10:08:46 2014
@@ -1559,7 +1559,7 @@ svn_wc__get_switch_editor(const svn_delt
  * Diffs will be reported as valid relpaths, with @a anchor_abspath being
  * the root ("").
  *
- * @a callbacks/@a callback_baton is the callback table to use.
+ * @a diff_processor will retrieve the diff report.
  *
  * If @a depth is #svn_depth_empty, just diff exactly @a target or
  * @a anchor_path if @a target is empty.  If #svn_depth_files then do the same
@@ -1630,14 +1630,11 @@ svn_wc__get_diff_editor(const svn_delta_
                         const char *target,
                         svn_depth_t depth,
                         svn_boolean_t ignore_ancestry,
-                        svn_boolean_t show_copies_as_adds,
-                        svn_boolean_t use_git_diff_format,
                         svn_boolean_t use_text_base,
                         svn_boolean_t reverse_order,
                         svn_boolean_t server_performs_filtering,
                         const apr_array_header_t *changelist_filter,
-                        const svn_wc_diff_callbacks4_t *callbacks,
-                        void *callback_baton,
+                        const svn_diff_tree_processor_t *diff_processor,
                         svn_cancel_func_t cancel_func,
                         void *cancel_baton,
                         apr_pool_t *result_pool,
@@ -1842,6 +1839,29 @@ svn_wc__acquire_write_lock_for_resolve(c
                                        const char *local_abspath,
                                        apr_pool_t *result_pool,
                                        apr_pool_t *scratch_pool);
+
+/* The implemementation of svn_wc_diff6(), but reporting to a diff processor
+ *
+ * If ROOT_RELPATH is not NULL, set *ROOT_RELPATH to the target of the diff
+ * within the diff namespace. ("" or a single path component).
+ *
+ * If ROOT_IS_FILE is NOT NULL set it 
+ * the first processor call. (The anchor is LOCAL_ABSPATH or an ancestor of it)
+ */
+svn_error_t *
+svn_wc__diff7(const char **root_relpath,
+              svn_boolean_t *root_is_dir,
+              svn_wc_context_t *wc_ctx,
+              const char *local_abspath,
+              svn_depth_t depth,
+              svn_boolean_t ignore_ancestry,
+              const apr_array_header_t *changelist_filter,
+              const svn_diff_tree_processor_t *diff_processor,
+              svn_cancel_func_t cancel_func,
+              void *cancel_baton,
+              apr_pool_t *result_pool,
+              apr_pool_t *scratch_pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/svn_client.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/svn_client.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/svn_client.h Sun Mar  9 10:08:46 2014
@@ -2671,8 +2671,8 @@ svn_client_status(svn_revnum_t *result_r
  * #svn_opt_revision_unspecified, it defaults to #svn_opt_revision_head
  * for URLs or #svn_opt_revision_working for WC paths.
  *
- * If @a limit is non-zero only invoke @a receiver on the first @a limit
- * logs.
+ * If @a limit is greater than zero only invoke @a receiver on the first
+ * @a limit logs.
  *
  * If @a discover_changed_paths is set, then the @c changed_paths and @c
  * changed_paths2 fields in the @c log_entry argument to @a receiver will be

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/svn_config.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/svn_config.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/svn_config.h Sun Mar  9 10:08:46 2014
@@ -131,6 +131,8 @@ typedef struct svn_config_t svn_config_t
 /** @deprecated Not used by Subversion since 2003/r847039 (well before 1.0) */
 #define SVN_CONFIG_OPTION_TEMPLATE_ROOT             "template-root"
 #define SVN_CONFIG_OPTION_ENABLE_AUTO_PROPS         "enable-auto-props"
+/** @since New in 1.9. */
+#define SVN_CONFIG_OPTION_ENABLE_MAGIC_FILE         "enable-magic-file"
 #define SVN_CONFIG_OPTION_NO_UNLOCK                 "no-unlock"
 #define SVN_CONFIG_OPTION_MIMETYPES_FILE            "mime-types-file"
 #define SVN_CONFIG_OPTION_PRESERVED_CF_EXTS         "preserved-conflict-file-exts"
@@ -669,11 +671,92 @@ svn_config_ensure(const char *config_dir
  */
 
 
-/** A hash-key pointing to a realmstring.  Every file containing
- * authentication data should have this key.
+/**
+ * Attributes of authentication credentials.
+ *
+ * The values of these keys are C strings.
+ *
+ * @note Some of these hash keys were also used in versions < 1.9 but were
+ *       not part of the public API (except #SVN_CONFIG_REALMSTRING_KEY which
+ *       has been present since 1.0).
+ *
+ * @defgroup cached_authentication_data_attributes
+ * @{
+ */
+
+/** A hash-key pointing to a realmstring.  This attribute is mandatory.
+ *
+ * @since New in 1.0.
  */
 #define SVN_CONFIG_REALMSTRING_KEY  "svn:realmstring"
 
+/** A hash-key for usernames.
+ * @since New in 1.9.
+ */
+#define SVN_CONFIG_AUTHN_USERNAME_KEY           "username"
+
+/** A hash-key for passwords.
+ * The password may be in plaintext or encrypted form, depending on
+ * the authentication provider.
+ * @since New in 1.9.
+ */
+#define SVN_CONFIG_AUTHN_PASSWORD_KEY           "password"
+
+/** A hash-key for passphrases,
+ * such as SSL client ceritifcate passphrases. The passphrase may be in
+ * plaintext or encrypted form, depending on the authentication provider.
+ * @since New in 1.9.
+ */
+#define SVN_CONFIG_AUTHN_PASSPHRASE_KEY         "passphrase"
+
+/** A hash-key for the type of a password or passphrase.  The type
+ * indicates which provider owns the credential.
+ * @since New in 1.9.
+ */
+#define SVN_CONFIG_AUTHN_PASSTYPE_KEY           "passtype"
+
+/** A hash-key for SSL certificates.   The value is the base64-encoded DER form
+ * certificate.
+ * @since New in 1.9.
+ * @note The value is not human readable.
+ */
+#define SVN_CONFIG_AUTHN_ASCII_CERT_KEY         "ascii_cert"
+
+/** A hash-key for recorded SSL certificate verification
+ * failures.  Failures encoded as an ASCII integer containing any of the
+ * SVN_AUTH_SSL_* SSL server certificate failure bits defined in svn_auth.h.
+ * @since New in 1.9.
+ */
+#define SVN_CONFIG_AUTHN_FAILURES_KEY           "failures"
+
+/** A hash-key for a hostname, such as hostnames in SSL certificates.
+ * @since New in 1.9.
+ */
+#define SVN_CONFIG_AUTHN_HOSTNAME_KEY           "hostname"
+
+/** A hash-key for a fingerprint, such as fingerprints in SSL certificates.
+ * @since New in 1.9.
+ */
+#define SVN_CONFIG_AUTHN_FINGERPRINT_KEY        "fingerprint"
+
+/** A hash-key for a valid-from date, such as dates in SSL certificates.
+ * @since New in 1.9.
+ */
+#define SVN_CONFIG_AUTHN_VALID_FROM_KEY         "valid_from"
+
+/** A hash-key for a valid-to date, such as dates in SSL certificates.
+ * @since New in 1.9.
+ */
+#define SVN_CONFIG_AUTHN_VALID_UNTIL_KEY        "valid_until"
+
+/** A hash-key for an issuer distinguished name, such as issuer names
+ * in SSL certificates.
+ * @since New in 1.9.
+ */
+#define SVN_CONFIG_AUTHN_ISSUER_DN_KEY        "issuer_dn"
+
+/** @} */
+
 /** Use @a cred_kind and @a realmstring to locate a file within the
  * ~/.subversion/auth/ area.  If the file exists, initialize @a *hash
  * and load the file contents into the hash, using @a pool.  If the
@@ -757,7 +840,7 @@ typedef svn_error_t *
  *
  * @note Removing credentials from the config-based disk store will
  * not purge them from any open svn_auth_baton_t instance.  Consider
- * using svn_auth_forget_credentials() -- from the @a cleanup_func,
+ * using svn_auth_forget_credentials() -- from the @a walk_func,
  * even -- for this purpose.
  *
  * @note Removing credentials from the config-based disk store will

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/svn_delta.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/svn_delta.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/svn_delta.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/svn_delta.h Sun Mar  9 10:08:46 2014
@@ -545,10 +545,26 @@ svn_txdelta_to_svndiff(svn_stream_t *out
 
 /** Return a writable generic stream which will parse svndiff-format
  * data into a text delta, invoking @a handler with @a handler_baton
- * whenever a new window is ready.  If @a error_on_early_close is @c
- * TRUE, attempting to close this stream before it has handled the entire
- * svndiff data set will result in #SVN_ERR_SVNDIFF_UNEXPECTED_END,
- * else this error condition will be ignored.
+ * whenever a new window is ready.
+ *
+ * When the caller closes this stream, this will signal completion to
+ * the window handler by invoking @a handler once more, passing zero for
+ * the @c window argument.
+ *
+ * If @a error_on_early_close is @c TRUE, then attempt to avoid
+ * signaling completion to the window handler if the delta was
+ * incomplete. Specifically, attempting to close the stream will be
+ * successful only if the data written to the stream consisted of one or
+ * more complete windows of svndiff data and no extra bytes. Otherwise,
+ * closing the stream will not signal completion to the window handler,
+ * and will return a #SVN_ERR_SVNDIFF_UNEXPECTED_END error. Note that if
+ * no data at all was written, the delta is considered incomplete.
+ *
+ * If @a error_on_early_close is @c FALSE, closing the stream will
+ * signal completion to the window handler, regardless of how much data
+ * was written, and discard any pending incomplete data.
+ *
+ * Allocate the stream in @a pool.
  */
 svn_stream_t *
 svn_txdelta_parse_svndiff(svn_txdelta_window_handler_t handler,

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/svn_diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/svn_diff.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/svn_diff.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/svn_diff.h Sun Mar  9 10:08:46 2014
@@ -407,7 +407,21 @@ typedef enum svn_diff_conflict_display_s
 
 /** Given a vtable of @a output_fns/@a output_baton for consuming
  * differences, output the differences in @a diff.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_diff_output2(svn_diff_t *diff,
+                 void *output_baton,
+                 const svn_diff_output_fns_t *output_fns,
+                 svn_cancel_func_t cancel_func,
+                 void *cancel_baton);
+
+/** Similar to svn_diff_output2(), but without cancel support.
+ *
+ * @deprecated Provided for backwards compatibility with the 1.8 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_diff_output(svn_diff_t *diff,
                 void *output_baton,
@@ -585,8 +599,6 @@ svn_diff_file_diff4(svn_diff_t **diff,
 /** A convenience function to produce unified diff output from the
  * diff generated by svn_diff_file_diff().
  *
- * @since New in 1.5.
- *
  * Output a @a diff between @a original_path and @a modified_path in unified
  * context diff format to @a output_stream.  Optionally supply
  * @a original_header and/or @a modified_header to be displayed in the header
@@ -599,8 +611,31 @@ svn_diff_file_diff4(svn_diff_t **diff,
  * @a relative_to_dir is not @c NULL but @a relative_to_dir is not a parent
  * path of the target, an error is returned. Finally, if @a relative_to_dir
  * is a URL, an error will be returned.
+ *
+ * @since New in 1.9.
  */
 svn_error_t *
+svn_diff_file_output_unified4(svn_stream_t *output_stream,
+                              svn_diff_t *diff,
+                              const char *original_path,
+                              const char *modified_path,
+                              const char *original_header,
+                              const char *modified_header,
+                              const char *header_encoding,
+                              const char *relative_to_dir,
+                              svn_boolean_t show_c_function,
+                              svn_cancel_func_t cancel_func,
+                              void *cancel_baton,
+                              apr_pool_t *scratch_pool);
+
+/** Similar to svn_diff_file_output_unified3(), but without cancel
+ * support.
+ *
+ * @since New in 1.5.
+ * @deprecated Provided for backwards compatibility with the 1.8 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
 svn_diff_file_output_unified3(svn_stream_t *output_stream,
                               svn_diff_t *diff,
                               const char *original_path,

Modified: subversion/branches/fsfs-ucsnorm/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/include/svn_fs.h?rev=1575685&r1=1575684&r2=1575685&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/include/svn_fs.h (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/include/svn_fs.h Sun Mar  9 10:08:46 2014
@@ -364,7 +364,7 @@ svn_fs_upgrade(const char *path,
 /**
  * Callback function type for progress notification.
  *
- * @a revision is the number of the revision currently begin processed,
+ * @a revision is the number of the revision currently being processed,
  * #SVN_INVALID_REVNUM if the current stage is not linked to any specific
  * revision. @a baton is the callback baton.
  *
@@ -798,19 +798,23 @@ svn_fs_access_add_lock_token(svn_fs_acce
 typedef enum svn_fs_node_relation_t
 {
   /** The nodes are not related.
-   * Nodes from different repositories are always unrelated. */
+   * Nodes from different repositories are always unrelated.
+   * #svn_fs_compare_ids would return the value -1 in this case.
+   */
   svn_fs_node_unrelated = 0,
 
-  /** They are the same physical node, i.e. there is no intermittent change.
-   * However, due to lazy copying, they may be intermittent parent copies.
+  /** They are the same physical node, i.e. there is no intervening change.
+   * However, due to lazy copying, there may be part of different parent
+   * copies.  #svn_fs_compare_ids would return the value 0 in this case.
    */
   svn_fs_node_same,
 
   /** The nodes have a common ancestor (which may be one of these nodes)
    * but are not the same.
+   * #svn_fs_compare_ids would return the value 1 in this case.
    */
-  svn_fs_node_common_anchestor
-  
+  svn_fs_node_common_ancestor
+
 } svn_fs_node_relation_t;
 
 /** An object representing a node-revision id.  */
@@ -819,6 +823,10 @@ typedef struct svn_fs_id_t svn_fs_id_t;
 
 /** Return -1, 0, or 1 if node revisions @a a and @a b are respectively
  * unrelated, equivalent, or otherwise related (part of the same node).
+ *
+ * @note Using FS ID based functions is now discouraged and may be fully
+ * deprecated in future releases.  New code should use #svn_fs_node_relation()
+ * and #svn_fs_node_relation_t instead.
  */
 int
 svn_fs_compare_ids(const svn_fs_id_t *a,
@@ -828,6 +836,10 @@ svn_fs_compare_ids(const svn_fs_id_t *a,
 
 /** Return TRUE if node revisions @a id1 and @a id2 are related (part of the
  * same node), else return FALSE.
+ *
+ * @note Using FS ID based functions is now discouraged and may be fully
+ * deprecated in future releases.  New code should use #svn_fs_node_relation()
+ * and #svn_fs_node_relation_t instead.
  */
 svn_boolean_t
 svn_fs_check_related(const svn_fs_id_t *id1,
@@ -1573,9 +1585,9 @@ svn_fs_node_id(const svn_fs_id_t **id_p,
  * arbitrary revision order and any of them may pertain to a transaction.
  * @a pool is used for temporary allocations.
  *
- * @note The current implementation considers paths from different svn_fs_t
- * as unrelated even if the underlying physical repository is the same.
- * 
+ * @note Paths from different svn_fs_t will be reported as unrelated even
+ * if the underlying physical repository is the same.
+ *
  * @since New in 1.9.
  */
 svn_error_t *
@@ -1670,10 +1682,42 @@ svn_fs_change_node_prop(svn_fs_root_t *r
 
 /** Determine if the properties of two path/root combinations are different.
  *
- * Set @a *changed_p to 1 if the properties at @a path1 under @a root1 differ
- * from those at @a path2 under @a root2, or set it to 0 if they are the
- * same.  Both paths must exist under their respective roots, and both
- * roots must be in the same filesystem.
+ * Set @a *different_p to #TRUE if the properties at @a path1 under @a root1
+ * differ from those at @a path2 under @a root2, or set it to #FALSE if they
+ * are the same.  Both paths must exist under their respective roots, and
+ * both roots must be in the same filesystem.
+ * Do any necessary temporary allocation in @a pool.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_fs_props_different(svn_boolean_t *different_p,
+                       svn_fs_root_t *root1,
+                       const char *path1,
+                       svn_fs_root_t *root2,
+                       const char *path2,
+                       apr_pool_t *pool);
+
+
+/** Determine if the properties of two path/root combinations are different.
+ * In contrast to #svn_fs_props_different, we only perform a quick test and
+ * allow for false positives.
+ *
+ * Set @a *changed_p to #TRUE if the properties at @a path1 under @a root1
+ * differ from those at @a path2 under @a root2, or set it to #FALSE if they
+ * are the same.  Both paths must exist under their respective roots, and
+ * both roots must be in the same filesystem.
+ * Do any necessary temporary allocation in @a pool.
+ *
+ * @note The behavior is implementation dependent in that the false
+ * positives reported may differ from release to release and backend to
+ * backend.  There is also no guarantee that there will be false positives
+ * at all.
+ *
+ * @note Prior to Subversion 1.9, this function would return false negatives
+ * as well for FSFS: If @a root1 and @a root2 were both transaction roots
+ * and the proplists of both paths had been changed in their respective
+ * transactions, @a changed_p would be set to #FALSE.
  */
 svn_error_t *
 svn_fs_props_changed(svn_boolean_t *changed_p,
@@ -1773,12 +1817,14 @@ svn_fs_closest_copy(svn_fs_root_t **root
  *
  * If @a adjust_inherited_mergeinfo is @c TRUE, then any inherited
  * mergeinfo returned in @a *catalog is normalized to represent the
- * inherited mergeinfo on the path which inherits it.  If
+ * inherited mergeinfo on the path which inherits it.  This adjusted
+ * mergeinfo is keyed by the path which inherits it.  If
  * @a adjust_inherited_mergeinfo is @c FALSE, then any inherited
  * mergeinfo is the raw explicit mergeinfo from the nearest parent
  * of the path with explicit mergeinfo, unadjusted for the path-wise
  * difference between the path and its parent.  This may include
- * non-inheritable mergeinfo.
+ * non-inheritable mergeinfo.  This unadjusted mergeinfo is keyed by
+ * the path at which it was found.
  *
  * If @a include_descendants is TRUE, then additionally return the
  * mergeinfo for any descendant of any element of @a paths which has
@@ -2209,11 +2255,8 @@ svn_fs_apply_textdelta(svn_txdelta_windo
  *
  * Do any necessary temporary allocation in @a pool.
  *
- * ### This is like svn_fs_apply_textdelta(), but takes the text
- * straight.  It is currently used only by the loader, see
- * libsvn_repos/load.c.  It should accept a checksum, of course, which
- * would come from an (optional) header in the dump file.  See
- * http://subversion.tigris.org/issues/show_bug.cgi?id=1102 for more.
+ * @note This is like svn_fs_apply_textdelta(), but takes the text
+ * straight.
  */
 svn_error_t *
 svn_fs_apply_text(svn_stream_t **contents_p,
@@ -2225,10 +2268,36 @@ svn_fs_apply_text(svn_stream_t **content
 
 /** Check if the contents of two root/path combos have changed.
  *
- * Set @a *changed_p to 1 if the contents at @a path1 under @a root1 differ
- * from those at @a path2 under @a root2, or set it to 0 if they are the
- * same.  Both paths must exist under their respective roots, and both
- * roots must be in the same filesystem.
+ * Set @a *different_p to #TRUE if the file contents at @a path1 under
+ * @a root1 differ from those at @a path2 under @a root2, or set it to
+ * #FALSE if they are the same.  Both paths must exist under their
+ * respective roots, and both roots must be in the same filesystem.
+ * Do any necessary temporary allocation in @a pool.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_fs_contents_different(svn_boolean_t *different_p,
+                          svn_fs_root_t *root1,
+                          const char *path1,
+                          svn_fs_root_t *root2,
+                          const char *path2,
+                          apr_pool_t *pool);
+
+/** Check if the contents of two root/path combos have changed.  In
+ * contrast to #svn_fs_contents_different, we only perform a quick test
+ * and allow for false positives.
+ *
+ * Set @a *changed_p to #TRUE if the file contents at @a path1 under
+ * @a root1 differ from those at @a path2 under @a root2, or set it to
+ * #FALSE if they are the same.  Both paths must exist under their
+ * respective roots, and both roots must be in the same filesystem.
+ * Do any necessary temporary allocation in @a pool.
+ *
+ * @note The behavior is implementation dependent in that the false
+ * positives reported may differ from release to release and backend to
+ * backend.  There is also no guarantee that there will be false positives
+ * at all.
  */
 svn_error_t *
 svn_fs_contents_changed(svn_boolean_t *changed_p,
@@ -2415,12 +2484,6 @@ svn_fs_set_uuid(svn_fs_t *fs,
                 apr_pool_t *pool);
 
 
-/* Non-historical properties.  */
-
-/* [[Yes, do tell.]] */
-
-
-
 /** @defgroup svn_fs_locks Filesystem locks
  * @{
  * @since New in 1.2. */