You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2014/03/12 18:18:26 UTC

svn commit: r1576824 [5/7] - in /subversion/branches/fsfs-lock-many: ./ build/generator/ build/generator/templates/ subversion/bindings/ctypes-python/test/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subversion/javahl/t...

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/ssl_server_trust_providers.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/ssl_server_trust_providers.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/ssl_server_trust_providers.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/ssl_server_trust_providers.c Wed Mar 12 17:18:20 2014
@@ -24,7 +24,6 @@
 
 #include <apr_pools.h>
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_auth.h"
 #include "svn_error.h"
@@ -75,13 +74,57 @@ ssl_server_trust_file_first_credentials(
       if (failstr)
         SVN_ERR(svn_cstring_atoui(&last_failures, failstr->data));
 
-      /* If the cert is trusted and there are no new failures, we
-       * accept it by clearing all failures. */
       if (trusted_cert &&
-          svn_string_compare(this_cert, trusted_cert) &&
-          (*failures & ~last_failures) == 0)
+          svn_string_compare(this_cert, trusted_cert))
         {
-          *failures = 0;
+          svn_boolean_t save_cert = FALSE;
+
+          /* If the cert is trusted and there are no new failures, we
+           * accept it by clearing all failures. */
+          if ((*failures & ~last_failures) == 0)
+            {
+              *failures = 0;
+            }
+
+          /* If the on-disk cert info is lacking new-in-1.9 human-readable
+             info, add the info now and save the cert. */
+          if (!svn_hash_gets(creds_hash, SVN_CONFIG_AUTHN_HOSTNAME_KEY))
+            {
+              svn_hash_sets(creds_hash, SVN_CONFIG_AUTHN_HOSTNAME_KEY,
+                            svn_string_create(cert_info->hostname, pool));
+              save_cert = TRUE;
+            }
+          if (!svn_hash_gets(creds_hash, SVN_CONFIG_AUTHN_FINGERPRINT_KEY))
+            {
+              svn_hash_sets(creds_hash, SVN_CONFIG_AUTHN_FINGERPRINT_KEY,
+                            svn_string_create(cert_info->fingerprint, pool));
+              save_cert = TRUE;
+            }
+          if (!svn_hash_gets(creds_hash, SVN_CONFIG_AUTHN_VALID_FROM_KEY))
+            {
+              svn_hash_sets(creds_hash, SVN_CONFIG_AUTHN_VALID_FROM_KEY,
+                            svn_string_create(cert_info->valid_from, pool));
+              save_cert = TRUE;
+            }
+          if (!svn_hash_gets(creds_hash, SVN_CONFIG_AUTHN_VALID_UNTIL_KEY))
+            {
+              svn_hash_sets(creds_hash, SVN_CONFIG_AUTHN_VALID_UNTIL_KEY,
+                            svn_string_create(cert_info->valid_until, pool));
+              save_cert = TRUE;
+            }
+          if (!svn_hash_gets(creds_hash, SVN_CONFIG_AUTHN_ISSUER_DN_KEY))
+            {
+              svn_hash_sets(creds_hash, SVN_CONFIG_AUTHN_ISSUER_DN_KEY,
+                            svn_string_create(cert_info->issuer_dname, pool));
+              save_cert = TRUE;
+            }
+
+          if (save_cert)
+            SVN_ERR(svn_config_write_auth_data(creds_hash,
+                                               SVN_AUTH_CRED_SSL_SERVER_TRUST,
+                                               realmstring,
+                                               config_dir,
+                                               pool));
         }
     }
 
@@ -124,6 +167,16 @@ ssl_server_trust_file_save_credentials(s
   svn_hash_sets(creds_hash, SVN_CONFIG_AUTHN_FAILURES_KEY,
                 svn_string_createf(pool, "%lu",
                                    (unsigned long)creds->accepted_failures));
+  svn_hash_sets(creds_hash, SVN_CONFIG_AUTHN_HOSTNAME_KEY,
+                svn_string_create(cert_info->hostname, pool));
+  svn_hash_sets(creds_hash, SVN_CONFIG_AUTHN_FINGERPRINT_KEY,
+                svn_string_create(cert_info->fingerprint, pool));
+  svn_hash_sets(creds_hash, SVN_CONFIG_AUTHN_VALID_FROM_KEY,
+                svn_string_create(cert_info->valid_from, pool));
+  svn_hash_sets(creds_hash, SVN_CONFIG_AUTHN_VALID_UNTIL_KEY,
+                svn_string_create(cert_info->valid_until, pool));
+  svn_hash_sets(creds_hash, SVN_CONFIG_AUTHN_ISSUER_DN_KEY,
+                svn_string_create(cert_info->issuer_dname, pool));
 
   SVN_ERR(svn_config_write_auth_data(creds_hash,
                                      SVN_AUTH_CRED_SSL_SERVER_TRUST,

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/subst.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/subst.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/subst.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/subst.c Wed Mar 12 17:18:20 2014
@@ -33,7 +33,6 @@
 #include <apr_file_io.h>
 #include <apr_strings.h>
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_cmdline.h"
 #include "svn_types.h"
@@ -48,6 +47,8 @@
 #include "svn_pools.h"
 #include "private/svn_io_private.h"
 
+#include "svn_private_config.h"
+
 #include "private/svn_string_private.h"
 #include "private/svn_eol_private.h"
 
@@ -1854,7 +1855,7 @@ read_handler_special(void *baton, char *
     return svn_stream_read_full(btn->read_stream, buffer, len);
   else
     return svn_error_createf(APR_ENOENT, NULL,
-                             "Can't read special file: File '%s' not found",
+                             _("Can't read special file: File '%s' not found"),
                              svn_dirent_local_style(btn->path, btn->pool));
 }
 

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/temp_serializer.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/temp_serializer.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/temp_serializer.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/temp_serializer.c Wed Mar 12 17:18:20 2014
@@ -312,7 +312,7 @@ svn_temp_serializer__add_string(svn_temp
 
   /* Store the offset at which the string data that will the appended.
    * Write 0 for NULL pointers. Strings don't need special alignment. */
-  store_current_end_pointer(context, (const void **)s);
+  store_current_end_pointer(context, (const void *const *)s);
 
   /* append the string data */
   if (string)

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/types.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/types.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/types.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/types.c Wed Mar 12 17:18:20 2014
@@ -24,12 +24,12 @@
 #include <apr_pools.h>
 #include <apr_uuid.h>
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_types.h"
 #include "svn_error.h"
 #include "svn_string.h"
 #include "svn_props.h"
+#include "svn_private_config.h"
 
 #include "private/svn_dep_compat.h"
 #include "private/svn_string_private.h"

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/username_providers.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/username_providers.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/username_providers.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/username_providers.c Wed Mar 12 17:18:20 2014
@@ -28,8 +28,6 @@
 /*** Includes. ***/
 
 #include <apr_pools.h>
-
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_auth.h"
 #include "svn_error.h"

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/utf.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/utf.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/utf.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/utf.c Wed Mar 12 17:18:20 2014
@@ -32,13 +32,13 @@
 #include <apr_xlate.h>
 #include <apr_atomic.h>
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_string.h"
 #include "svn_error.h"
 #include "svn_pools.h"
 #include "svn_ctype.h"
 #include "svn_utf.h"
+#include "svn_private_config.h"
 #include "win32_xlate.h"
 
 #include "private/svn_utf_private.h"

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/utf8proc.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/utf8proc.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/utf8proc.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/utf8proc.c Wed Mar 12 17:18:20 2014
@@ -31,7 +31,11 @@
 #define UNUSED(x) ((void)(x))
 
 #define UTF8PROC_INLINE
+/* Somehow utf8proc thinks it is nice to use strlen as an argument name,
+   while this function is already defined via apr.h */
+#define strlen svn__strlen_var
 #include "utf8proc/utf8proc.c"
+#undef strlen
 
 
 const char *svn_utf__utf8proc_version(void)

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_subr/win32_crypto.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_subr/win32_crypto.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_subr/win32_crypto.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_subr/win32_crypto.c Wed Mar 12 17:18:20 2014
@@ -32,8 +32,6 @@ typedef int win32_crypto__dummy;
 
 #include <apr_pools.h>
 #include <apr_base64.h>
-
-#include "svn_private_config.h"
 #include "svn_auth.h"
 #include "svn_error.h"
 #include "svn_hash.h"
@@ -45,6 +43,8 @@ typedef int win32_crypto__dummy;
 #include "auth.h"
 #include "private/svn_auth_private.h"
 
+#include "svn_private_config.h"
+
 #include <wincrypt.h>
 
 

Propchange: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Mar 12 17:18:20 2014
@@ -9,3 +9,5 @@ Release
 libsvn_wc.def
 wc-checks.h
 wc-queries.h
+libsvn_wc.pc.in
+libsvn_wc.pc

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/adm_crawler.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/adm_crawler.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/adm_crawler.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/adm_crawler.c Wed Mar 12 17:18:20 2014
@@ -30,7 +30,6 @@
 #include <apr_file_io.h>
 #include <apr_hash.h>
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_types.h"
 #include "svn_pools.h"
@@ -48,6 +47,8 @@
 #include "workqueue.h"
 #include "conflicts.h"
 
+#include "svn_private_config.h"
+
 
 /* Helper for report_revisions_and_depths().
 

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/adm_files.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/adm_files.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/adm_files.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/adm_files.c Wed Mar 12 17:18:20 2014
@@ -32,7 +32,6 @@
 #include <apr_file_io.h>
 #include <apr_strings.h>
 
-#include "svn_private_config.h"
 #include "svn_types.h"
 #include "svn_error.h"
 #include "svn_io.h"
@@ -45,6 +44,7 @@
 #include "entries.h"
 #include "lock.h"
 
+#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 
 

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/conflicts.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/conflicts.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/conflicts.c Wed Mar 12 17:18:20 2014
@@ -32,7 +32,6 @@
 #include <apr_hash.h>
 #include <apr_errno.h>
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_types.h"
 #include "svn_pools.h"
@@ -53,6 +52,8 @@
 #include "private/svn_skel.h"
 #include "private/svn_string_private.h"
 
+#include "svn_private_config.h"
+
 /* --------------------------------------------------------------------
  * Conflict skel management
  */

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/copy.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/copy.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/copy.c Wed Mar 12 17:18:20 2014
@@ -28,8 +28,6 @@
 /*** Includes. ***/
 
 #include <string.h>
-
-#include "svn_private_config.h"
 #include "svn_pools.h"
 #include "svn_error.h"
 #include "svn_dirent_uri.h"
@@ -41,6 +39,7 @@
 #include "props.h"
 #include "conflicts.h"
 
+#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 
 

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/deprecated.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/deprecated.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/deprecated.c Wed Mar 12 17:18:20 2014
@@ -28,7 +28,6 @@
 
 #include <apr_md5.h>
 
-#include "svn_private_config.h"
 #include "svn_wc.h"
 #include "svn_subst.h"
 #include "svn_pools.h"
@@ -48,6 +47,8 @@
 #include "translate.h"
 #include "workqueue.h"
 
+#include "svn_private_config.h"
+
 /* baton for traversal_info_update */
 struct traversal_info_update_baton
 {
@@ -4787,15 +4788,6 @@ svn_wc_read_kind(svn_node_kind_t *kind,
                             TRUE /* show_deleted */,
                             show_hidden,
                             scratch_pool));
-
-  /*if (db_kind == svn_node_dir)
-    *kind = svn_node_dir;
-  else if (db_kind == svn_node_file || db_kind == svn_node_symlink)
-    *kind = svn_node_file;
-  else
-    *kind = svn_node_none;*/
-
-  return SVN_NO_ERROR;
 }
 
 svn_wc_conflict_description2_t *

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/diff_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/diff_editor.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/diff_editor.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/diff_editor.c Wed Mar 12 17:18:20 2014
@@ -57,7 +57,6 @@
 
 #include <assert.h>
 
-#include "svn_private_config.h"
 #include "svn_error.h"
 #include "svn_pools.h"
 #include "svn_dirent_uri.h"
@@ -77,6 +76,8 @@
 #include "translate.h"
 #include "diff.h"
 
+#include "svn_private_config.h"
+
 /*-------------------------------------------------------------------------*/
 
 

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/diff_local.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/diff_local.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/diff_local.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/diff_local.c Wed Mar 12 17:18:20 2014
@@ -31,7 +31,6 @@
 
 #include <apr_hash.h>
 
-#include "svn_private_config.h"
 #include "svn_error.h"
 #include "svn_pools.h"
 #include "svn_dirent_uri.h"
@@ -46,6 +45,8 @@
 #include "props.h"
 #include "diff.h"
 
+#include "svn_private_config.h"
+
 /*-------------------------------------------------------------------------*/
 
 /* Baton containing the state of a directory

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/entries.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/entries.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/entries.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/entries.c Wed Mar 12 17:18:20 2014
@@ -26,7 +26,6 @@
 
 #include <apr_strings.h>
 
-#include "svn_private_config.h"
 #include "svn_error.h"
 #include "svn_types.h"
 #include "svn_time.h"
@@ -46,6 +45,7 @@
 #include "wc_db.h"
 #include "wc-queries.h"  /* for STMT_*  */
 
+#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 #include "private/svn_sqlite.h"
 

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/externals.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/externals.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/externals.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/externals.c Wed Mar 12 17:18:20 2014
@@ -32,7 +32,6 @@
 #include <apr_general.h>
 #include <apr_uri.h>
 
-#include "svn_private_config.h"
 #include "svn_dirent_uri.h"
 #include "svn_path.h"
 #include "svn_error.h"
@@ -54,6 +53,8 @@
 #include "translate.h"
 #include "workqueue.h"
 #include "conflicts.h"
+
+#include "svn_private_config.h"
 
 /** Externals **/
 

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/info.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/info.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/info.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/info.c Wed Mar 12 17:18:20 2014
@@ -21,7 +21,6 @@
  * @endcopyright
  */
 
-#include "svn_private_config.h"
 #include "svn_dirent_uri.h"
 #include "svn_hash.h"
 #include "svn_path.h"
@@ -30,6 +29,7 @@
 
 #include "wc.h"
 
+#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 
 

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/lock.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/lock.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/lock.c Wed Mar 12 17:18:20 2014
@@ -26,7 +26,6 @@
 #include <apr_pools.h>
 #include <apr_time.h>
 
-#include "svn_private_config.h"
 #include "svn_pools.h"
 #include "svn_dirent_uri.h"
 #include "svn_path.h"
@@ -40,6 +39,7 @@
 #include "props.h"
 #include "wc_db.h"
 
+#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 
 

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/node.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/node.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/node.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/node.c Wed Mar 12 17:18:20 2014
@@ -38,7 +38,6 @@
 #include <apr_pools.h>
 #include <apr_time.h>
 
-#include "svn_private_config.h"
 #include "svn_pools.h"
 #include "svn_dirent_uri.h"
 #include "svn_path.h"
@@ -50,6 +49,7 @@
 #include "entries.h"
 #include "wc_db.h"
 
+#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 
 
@@ -744,133 +744,6 @@ svn_wc__node_get_pre_ng_status_data(svn_
 }
 
 svn_error_t *
-svn_wc__internal_node_get_schedule(svn_wc_schedule_t *schedule,
-                                   svn_boolean_t *copied,
-                                   svn_wc__db_t *db,
-                                   const char *local_abspath,
-                                   apr_pool_t *scratch_pool)
-{
-  svn_wc__db_status_t status;
-  svn_boolean_t op_root;
-  svn_boolean_t have_base;
-  svn_boolean_t have_work;
-  svn_boolean_t have_more_work;
-  const char *copyfrom_relpath;
-
-  if (schedule)
-    *schedule = svn_wc_schedule_normal;
-  if (copied)
-    *copied = FALSE;
-
-  SVN_ERR(svn_wc__db_read_info(&status, NULL, NULL, NULL, NULL, NULL, NULL,
-                               NULL, NULL, NULL, NULL, NULL, &copyfrom_relpath,
-                               NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                               &op_root, NULL, NULL,
-                               &have_base, &have_more_work, &have_work,
-                               db, local_abspath, scratch_pool, scratch_pool));
-
-  switch (status)
-    {
-      case svn_wc__db_status_not_present:
-      case svn_wc__db_status_server_excluded:
-      case svn_wc__db_status_excluded:
-        /* We used status normal in the entries world. */
-        if (schedule)
-          *schedule = svn_wc_schedule_normal;
-        break;
-      case svn_wc__db_status_normal:
-      case svn_wc__db_status_incomplete:
-        break;
-
-      case svn_wc__db_status_deleted:
-        {
-          if (schedule)
-            *schedule = svn_wc_schedule_delete;
-
-          if (!copied)
-            break;
-
-          if (have_more_work || !have_base)
-            *copied = TRUE;
-          else
-            {
-              const char *work_del_abspath;
-
-              /* Find out details of our deletion.  */
-              SVN_ERR(svn_wc__db_scan_deletion(NULL, NULL,
-                                               &work_del_abspath, NULL,
-                                               db, local_abspath,
-                                               scratch_pool, scratch_pool));
-
-              if (work_del_abspath)
-                *copied = TRUE; /* Working deletion */
-            }
-          break;
-        }
-      case svn_wc__db_status_added:
-        {
-          if (!op_root)
-            {
-              if (copied)
-                *copied = TRUE;
-
-              if (schedule)
-                *schedule = svn_wc_schedule_normal;
-
-              break;
-            }
-
-          if (copied)
-            *copied = (copyfrom_relpath != NULL);
-
-          if (schedule)
-            *schedule = svn_wc_schedule_add;
-          else
-            break;
-
-          /* Check for replaced */
-          if (have_base || have_more_work)
-            {
-              svn_wc__db_status_t below_working;
-              SVN_ERR(svn_wc__db_info_below_working(&have_base, &have_work,
-                                                    &below_working,
-                                                    db, local_abspath,
-                                                    scratch_pool));
-
-              /* If the node is not present or deleted (read: not present
-                 in working), then the node is not a replacement */
-              if (below_working != svn_wc__db_status_not_present
-                  && below_working != svn_wc__db_status_deleted)
-                {
-                  *schedule = svn_wc_schedule_replace;
-                  break;
-                }
-            }
-          break;
-        }
-      default:
-        SVN_ERR_MALFUNCTION();
-    }
-
-  return SVN_NO_ERROR;
-}
-
-svn_error_t *
-svn_wc__node_get_schedule(svn_wc_schedule_t *schedule,
-                          svn_boolean_t *copied,
-                          svn_wc_context_t *wc_ctx,
-                          const char *local_abspath,
-                          apr_pool_t *scratch_pool)
-{
-  return svn_error_trace(
-           svn_wc__internal_node_get_schedule(schedule,
-                                              copied,
-                                              wc_ctx->db,
-                                              local_abspath,
-                                              scratch_pool));
-}
-
-svn_error_t *
 svn_wc__node_clear_dav_cache_recursive(svn_wc_context_t *wc_ctx,
                                        const char *local_abspath,
                                        apr_pool_t *scratch_pool)

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/old-and-busted.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/old-and-busted.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/old-and-busted.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/old-and-busted.c Wed Mar 12 17:18:20 2014
@@ -23,7 +23,6 @@
 
 
 
-#include "svn_private_config.h"
 #include "svn_time.h"
 #include "svn_xml.h"
 #include "svn_dirent_uri.h"
@@ -38,6 +37,7 @@
 #include "lock.h"
 
 #include "private/svn_wc_private.h"
+#include "svn_private_config.h"
 
 
 /* Within the (old) entries file, boolean values have a specific string

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/props.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/props.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/props.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/props.c Wed Mar 12 17:18:20 2014
@@ -33,7 +33,6 @@
 #include <apr_strings.h>
 #include <apr_general.h>
 
-#include "svn_private_config.h"
 #include "svn_types.h"
 #include "svn_string.h"
 #include "svn_pools.h"
@@ -61,6 +60,8 @@
 #include "workqueue.h"
 #include "conflicts.h"
 
+#include "svn_private_config.h"
+
 /* Forward declaration.  */
 static svn_error_t *
 prop_conflict_from_skel(const svn_string_t **conflict_desc,

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/revert.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/revert.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/revert.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/revert.c Wed Mar 12 17:18:20 2014
@@ -29,7 +29,6 @@
 #include <apr_pools.h>
 #include <apr_tables.h>
 
-#include "svn_private_config.h"
 #include "svn_types.h"
 #include "svn_pools.h"
 #include "svn_string.h"
@@ -44,6 +43,7 @@
 #include "adm_files.h"
 #include "workqueue.h"
 
+#include "svn_private_config.h"
 #include "private/svn_io_private.h"
 #include "private/svn_wc_private.h"
 

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/status.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/status.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/status.c Wed Mar 12 17:18:20 2014
@@ -30,7 +30,6 @@
 #include <apr_file_io.h>
 #include <apr_hash.h>
 
-#include "svn_private_config.h"
 #include "svn_pools.h"
 #include "svn_types.h"
 #include "svn_delta.h"
@@ -44,6 +43,8 @@
 #include "svn_hash.h"
 #include "svn_sorts.h"
 
+#include "svn_private_config.h"
+
 #include "wc.h"
 #include "props.h"
 #include "entries.h"
@@ -92,7 +93,6 @@ struct edit_baton
 
   /* The DB handle for managing the working copy state.  */
   svn_wc__db_t *db;
-  svn_wc_context_t *wc_ctx;
 
   /* The overall depth of this edit (a dir baton may override this).
    *
@@ -386,10 +386,6 @@ assemble_status(svn_wc_status3_t **statu
   enum svn_wc_status_kind prop_status = svn_wc_status_none;
 
 
-  if (!info)
-    SVN_ERR(svn_wc__db_read_single_info(&info, db, local_abspath,
-                                        result_pool, scratch_pool));
-
   if (!info->repos_relpath || !parent_repos_relpath)
     switched_p = FALSE;
   else
@@ -1136,11 +1132,16 @@ one_child_status(const struct walk_statu
    * look up the kinds in the conflict ... just show all. */
   if (! conflicted)
     {
-      /* Selected node, but not found */
-      if (dirent == NULL)
-        return SVN_NO_ERROR;
+      /* We have a node, but its not visible in the WC. It can be a marker
+         node (not present, (server) excluded), *or* it can be the explictly
+         passed target of the status walk operation that doesn't exist.
+
+         We only report the node when the caller explicitly as
+      */
+      if (dirent == NULL && strcmp(wb->target_abspath, local_abspath) != 0)
+        return SVN_NO_ERROR; /* Marker node */
 
-      if (depth == svn_depth_files && dirent->kind == svn_node_dir)
+      if (depth == svn_depth_files && dirent && dirent->kind == svn_node_dir)
         return SVN_NO_ERROR;
 
       if (svn_wc_is_adm_dir(svn_dirent_basename(local_abspath, NULL),
@@ -2402,18 +2403,18 @@ close_edit(void *edit_baton,
   if (eb->root_opened)
     return SVN_NO_ERROR;
 
-  SVN_ERR(svn_wc_walk_status(eb->wc_ctx,
-                             eb->target_abspath,
-                             eb->default_depth,
-                             eb->get_all,
-                             eb->no_ignore,
-                             FALSE,
-                             eb->ignores,
-                             eb->status_func,
-                             eb->status_baton,
-                             eb->cancel_func,
-                             eb->cancel_baton,
-                             pool));
+  SVN_ERR(svn_wc__internal_walk_status(eb->db,
+                                       eb->target_abspath,
+                                       eb->default_depth,
+                                       eb->get_all,
+                                       eb->no_ignore,
+                                       FALSE,
+                                       eb->ignores,
+                                       eb->status_func,
+                                       eb->status_baton,
+                                       eb->cancel_func,
+                                       eb->cancel_baton,
+                                       pool));
 
   return SVN_NO_ERROR;
 }
@@ -2456,7 +2457,6 @@ svn_wc__get_status_editor(const svn_delt
   eb->default_depth     = depth;
   eb->target_revision   = edit_revision;
   eb->db                = wc_ctx->db;
-  eb->wc_ctx            = wc_ctx;
   eb->get_all           = get_all;
   eb->no_ignore         = no_ignore;
   eb->status_func       = status_func;
@@ -2772,23 +2772,17 @@ internal_status(svn_wc_status3_t **statu
                 apr_pool_t *scratch_pool)
 {
   const svn_io_dirent2_t *dirent;
-  svn_node_kind_t node_kind;
   const char *parent_repos_relpath;
   const char *parent_repos_root_url;
   const char *parent_repos_uuid;
-  svn_wc__db_status_t node_status;
-  svn_boolean_t conflicted;
+  const struct svn_wc__db_info_t *info;
   svn_boolean_t is_root = FALSE;
   svn_error_t *err;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
-  err = svn_wc__db_read_info(&node_status, &node_kind, NULL, NULL, NULL, NULL,
-                             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                             NULL, NULL, NULL, NULL, NULL, NULL, &conflicted,
-                             NULL, NULL, NULL, NULL, NULL, NULL,
-                             db, local_abspath,
-                             scratch_pool, scratch_pool);
+  err = svn_wc__db_read_single_info(&info, db, local_abspath,
+                                    scratch_pool, scratch_pool);
 
   if (err)
     {
@@ -2796,10 +2790,7 @@ internal_status(svn_wc_status3_t **statu
         return svn_error_trace(err);
 
       svn_error_clear(err);
-      node_kind = svn_node_unknown;
-      /* Ensure conflicted is always set, but don't hide tree conflicts
-         on 'hidden' nodes. */
-      conflicted = FALSE;
+      info = NULL;
 
       SVN_ERR(svn_io_stat_dirent2(&dirent, local_abspath, FALSE, TRUE,
                                   scratch_pool, scratch_pool));
@@ -2808,18 +2799,15 @@ internal_status(svn_wc_status3_t **statu
     SVN_ERR(stat_wc_dirent_case_sensitive(&dirent, db, local_abspath,
                                           scratch_pool, scratch_pool));
 
-  if (node_kind != svn_node_unknown
-      && (node_status == svn_wc__db_status_not_present
-          || node_status == svn_wc__db_status_server_excluded
-          || node_status == svn_wc__db_status_excluded))
-    {
-      node_kind = svn_node_unknown;
-    }
-
-  if (node_kind == svn_node_unknown)
+  if (!info
+      || info->kind == svn_node_unknown
+      || info->status == svn_wc__db_status_not_present
+      || info->status == svn_wc__db_status_server_excluded
+      || info->status == svn_wc__db_status_excluded)
     return svn_error_trace(assemble_unversioned(status,
                                                 db, local_abspath,
-                                                dirent, conflicted,
+                                                dirent,
+                                                info ? info->conflicted : FALSE,
                                                 FALSE /* is_ignored */,
                                                 result_pool, scratch_pool));
 
@@ -2828,30 +2816,22 @@ internal_status(svn_wc_status3_t **statu
   else
     SVN_ERR(svn_wc__db_is_wcroot(&is_root, db, local_abspath, scratch_pool));
 
+  /* Even though passing parent_repos_* is not required, assemble_status needs
+     these values to determine if a node is switched */
   if (!is_root)
     {
-      svn_wc__db_status_t parent_status;
       const char *parent_abspath = svn_dirent_dirname(local_abspath,
                                                       scratch_pool);
 
-      err = svn_wc__db_read_info(&parent_status, NULL, NULL,
-                                 &parent_repos_relpath, &parent_repos_root_url,
-                                 &parent_repos_uuid, NULL, NULL, NULL,
-                                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                                 NULL, NULL, NULL, NULL,
-                                 db, parent_abspath,
-                                 result_pool, scratch_pool);
-
-      if (err && (err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND
-                  || SVN_WC__ERR_IS_NOT_CURRENT_WC(err)))
-        {
-          svn_error_clear(err);
-          parent_repos_root_url = NULL;
-          parent_repos_relpath = NULL;
-          parent_repos_uuid = NULL;
-        }
-      else SVN_ERR(err);
+      SVN_ERR(svn_wc__db_read_info(NULL, NULL, NULL,
+                                   &parent_repos_relpath,
+                                   &parent_repos_root_url,
+                                   &parent_repos_uuid, NULL, NULL, NULL,
+                                   NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+                                   NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+                                   NULL, NULL, NULL, NULL,
+                                   db, parent_abspath,
+                                   result_pool, scratch_pool));
     }
   else
     {
@@ -2864,7 +2844,7 @@ internal_status(svn_wc_status3_t **statu
                                          parent_repos_root_url,
                                          parent_repos_relpath,
                                          parent_repos_uuid,
-                                         NULL,
+                                         info,
                                          dirent,
                                          TRUE /* get_all */,
                                          FALSE,

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/update_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/update_editor.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/update_editor.c Wed Mar 12 17:18:20 2014
@@ -32,7 +32,6 @@
 #include <apr_tables.h>
 #include <apr_strings.h>
 
-#include "svn_private_config.h"
 #include "svn_types.h"
 #include "svn_pools.h"
 #include "svn_hash.h"
@@ -41,6 +40,7 @@
 #include "svn_path.h"
 #include "svn_error.h"
 #include "svn_io.h"
+#include "svn_private_config.h"
 #include "svn_time.h"
 
 #include "wc.h"
@@ -3914,13 +3914,13 @@ svn_wc__perform_file_merge(svn_skel_t **
   const char *merge_left;
   svn_boolean_t delete_left = FALSE;
   const char *path_ext = "";
-  const char *new_text_base_tmp_abspath;
+  const char *new_pristine_abspath;
   enum svn_wc_merge_outcome_t merge_outcome = svn_wc_merge_unchanged;
   svn_skel_t *work_item;
 
   *work_items = NULL;
 
-  SVN_ERR(svn_wc__db_pristine_get_path(&new_text_base_tmp_abspath,
+  SVN_ERR(svn_wc__db_pristine_get_path(&new_pristine_abspath,
                                        db, wri_abspath, new_checksum,
                                        scratch_pool, scratch_pool));
 
@@ -3973,7 +3973,7 @@ svn_wc__perform_file_merge(svn_skel_t **
                                  &merge_outcome,
                                  db,
                                  merge_left,
-                                 new_text_base_tmp_abspath,
+                                 new_pristine_abspath,
                                  local_abspath,
                                  wri_abspath,
                                  oldrev_str, newrev_str, mine_str,

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/upgrade.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/upgrade.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/upgrade.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/upgrade.c Wed Mar 12 17:18:20 2014
@@ -23,7 +23,6 @@
 
 #include <apr_pools.h>
 
-#include "svn_private_config.h"
 #include "svn_types.h"
 #include "svn_pools.h"
 #include "svn_dirent_uri.h"
@@ -39,6 +38,7 @@
 #include "wc-queries.h"  /* for STMT_*  */
 #include "workqueue.h"
 
+#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 #include "private/svn_sqlite.h"
 #include "private/svn_token.h"

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc.h?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc.h (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc.h Wed Mar 12 17:18:20 2014
@@ -608,14 +608,6 @@ svn_wc__internal_remove_from_revision_co
                                               void *cancel_baton,
                                               apr_pool_t *scratch_pool);
 
-/* Library-internal version of svn_wc__node_get_schedule(). */
-svn_error_t *
-svn_wc__internal_node_get_schedule(svn_wc_schedule_t *schedule,
-                                   svn_boolean_t *copied,
-                                   svn_wc__db_t *db,
-                                   const char *local_abspath,
-                                   apr_pool_t *scratch_pool);
-
 /* Internal version of svn_wc__node_get_origin() */
 svn_error_t *
 svn_wc__internal_get_origin(svn_boolean_t *is_copy,

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db.c Wed Mar 12 17:18:20 2014
@@ -7403,7 +7403,7 @@ db_op_set_base_depth(svn_wc__db_wcroot_t
 
   if (affected_rows == 0)
     return svn_error_createf(SVN_ERR_WC_PATH_NOT_FOUND, NULL,
-                             "The node '%s' is not a committed directory",
+                             _("The node '%s' is not a committed directory"),
                              path_for_error_message(wcroot, local_relpath,
                                                     scratch_pool));
 
@@ -8691,7 +8691,7 @@ read_info(svn_wc__db_status_t *status,
   if (err && err->apr_err != SVN_ERR_WC_PATH_NOT_FOUND)
     err = svn_error_quick_wrap(err,
                                apr_psprintf(scratch_pool,
-                                            "Error reading node '%s'",
+                                            _("Error reading node '%s'"),
                                             local_relpath));
 
   SVN_ERR(svn_error_compose_create(err, svn_sqlite__reset(stmt_info)));

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db_update_move.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db_update_move.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db_update_move.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db_update_move.c Wed Mar 12 17:18:20 2014
@@ -78,7 +78,6 @@
 
 #include <assert.h>
 
-#include "svn_private_config.h"
 #include "svn_checksum.h"
 #include "svn_dirent_uri.h"
 #include "svn_error.h"

Modified: subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db_wcroot.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db_wcroot.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db_wcroot.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/libsvn_wc/wc_db_wcroot.c Wed Mar 12 17:18:20 2014
@@ -25,7 +25,6 @@
 
 #include <assert.h>
 
-#include "svn_private_config.h"
 #include "svn_dirent_uri.h"
 #include "svn_hash.h"
 #include "svn_path.h"
@@ -36,6 +35,8 @@
 #include "wc_db_private.h"
 #include "wc-queries.h"
 
+#include "svn_private_config.h"
+
 /* ### Same values as wc_db.c */
 #define SDB_FILE  "wc.db"
 #define UNKNOWN_WC_ID ((apr_int64_t) -1)

Modified: subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/reports/replay.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/reports/replay.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/reports/replay.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/reports/replay.c Wed Mar 12 17:18:20 2014
@@ -108,7 +108,7 @@ add_file_or_directory(const char *file_o
 
   SVN_ERR(maybe_close_textdelta(eb));
 
-  *added_baton = (void *)eb;
+  *added_baton = eb;
 
   if (! copyfrom_path)
     SVN_ERR(dav_svn__brigade_printf(eb->bb, eb->output,
@@ -135,7 +135,7 @@ open_file_or_directory(const char *file_
 {
   const char *qname = apr_xml_quote_string(pool, path, 1);
   SVN_ERR(maybe_close_textdelta(eb));
-  *opened_baton = (void *)eb;
+  *opened_baton = eb;
   return dav_svn__brigade_printf(eb->bb, eb->output,
                                  "<S:open-%s name=\"%s\" rev=\"%ld\"/>"
                                  DEBUG_CR,

Modified: subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/repos.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/repos.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/repos.c Wed Mar 12 17:18:20 2014
@@ -53,7 +53,6 @@
 #include "mod_dav_svn.h"
 #include "svn_ra.h"  /* for SVN_RA_CAPABILITY_* */
 #include "svn_dirent_uri.h"
-
 #include "private/svn_log.h"
 #include "private/svn_fspath.h"
 #include "private/svn_repos_private.h"

Modified: subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/version.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/version.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/version.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/mod_dav_svn/version.c Wed Mar 12 17:18:20 2014
@@ -39,7 +39,6 @@
 #include "svn_dav.h"
 #include "svn_base64.h"
 #include "svn_version.h"
-
 #include "private/svn_repos_private.h"
 #include "private/svn_subr_private.h"
 #include "private/svn_dav_protocol.h"

Modified: subversion/branches/fsfs-lock-many/subversion/svn/auth-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/auth-cmd.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/auth-cmd.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/auth-cmd.c Wed Mar 12 17:18:20 2014
@@ -30,19 +30,6 @@
 
 #include "svn_private_config.h"
 
-#ifdef SVN_HAVE_SERF
-#include <serf.h>
-
-/* Don't enable SSL cert pretty-printing on Windows yet because of a
-   known issue in serf. See serf's r2314. Once this fix is part of a
-   serf release, we'll want a SERF_VERSION_AT_LEAST() check here. */
-#ifndef WIN32
-#define SVN_AUTH_PRETTY_PRINT_SSL_CERTS
-#endif
-#else /* !SVN_HAVE_SERF */
-#undef SVN_AUTH_PRETTY_PRINT_SSL_CERTS
-#endif
-
 #include "svn_private_config.h"
 #include "svn_pools.h"
 #include "svn_error.h"
@@ -65,246 +52,6 @@
 #define SEP_STRING \
   "------------------------------------------------------------------------\n"
 
-#ifdef SVN_AUTH_PRETTY_PRINT_SSL_CERTS
-/* Because APR hash order is unstable we use a token map of keys
- * to ensure values are always presented in the same order. */
-typedef enum svnauth__cert_info_keys {
-  svnauth__cert_key_cn,
-  svnauth__cert_key_e,
-  svnauth__cert_key_ou,
-  svnauth__cert_key_o,
-  svnauth__cert_key_l,
-  svnauth__cert_key_st,
-  svnauth__cert_key_c,
-  svnauth__cert_key_sha1,
-  svnauth__cert_key_not_before,
-  svnauth__cert_key_not_after,
-} svnauth__cert_info_keys;
-
-static svn_token_map_t cert_info_key_map[] = {
-    { "CN",         svnauth__cert_key_cn },
-    { "E",          svnauth__cert_key_e },
-    { "OU",         svnauth__cert_key_ou },
-    { "O",          svnauth__cert_key_o },
-    { "L",          svnauth__cert_key_l },
-    { "ST",         svnauth__cert_key_st },
-    { "C",          svnauth__cert_key_c },
-    { "sha1",       svnauth__cert_key_sha1 },
-    { "notBefore",  svnauth__cert_key_not_before },
-    { "notAfter",   svnauth__cert_key_not_after }
-};
-
-/* Show information stored in CERT_INFO.
- * Assume all hash table keys occur in the above key map. */
-static svn_error_t *
-show_cert_info(apr_hash_t *cert_info,
-               apr_pool_t *scratch_pool)
-{
-  int i;
-
-  for (i = 0; i < sizeof(cert_info_key_map) / sizeof(svn_token_map_t); i++)
-    {
-      const char *key = cert_info_key_map[i].str;
-      const char *value = svn_hash_gets(cert_info, key);
-
-      if (value)
-        {
-          int token;
-
-          token = svn_token__from_word(cert_info_key_map, key);
-          switch (token)
-            {
-              case svnauth__cert_key_cn:
-                SVN_ERR(svn_cmdline_printf(scratch_pool,
-                                           _("  Common Name: %s\n"), value));
-                break;
-              case svnauth__cert_key_e:
-                SVN_ERR(svn_cmdline_printf(scratch_pool,
-                                           _("  Email Address: %s\n"), value));
-                break;
-              case svnauth__cert_key_o:
-                SVN_ERR(svn_cmdline_printf(scratch_pool,
-                                           _("  Organization Name: %s\n"),
-                                           value));
-                break;
-              case svnauth__cert_key_ou:
-                SVN_ERR(svn_cmdline_printf(scratch_pool,
-                                           _("  Organizational Unit: %s\n"),
-                                           value));
-                break;
-              case svnauth__cert_key_l:
-                SVN_ERR(svn_cmdline_printf(scratch_pool,
-                                           _("  Locality: %s\n"), value));
-                break;
-              case svnauth__cert_key_st:
-                SVN_ERR(svn_cmdline_printf(scratch_pool,
-                                           _("  State or Province: %s\n"),
-                                           value));
-                break;
-              case svnauth__cert_key_c:
-                SVN_ERR(svn_cmdline_printf(scratch_pool,
-                                           _("  Country: %s\n"), value));
-                break;
-              case svnauth__cert_key_sha1:
-                SVN_ERR(svn_cmdline_printf(scratch_pool,
-                                           _("  SHA1 Fingerprint: %s\n"),
-                                           value));
-                break;
-              case svnauth__cert_key_not_before:
-                SVN_ERR(svn_cmdline_printf(scratch_pool,
-                                           _("  Valid as of: %s\n"), value));
-                break;
-              case svnauth__cert_key_not_after:
-                SVN_ERR(svn_cmdline_printf(scratch_pool,
-                                           _("  Valid until: %s\n"), value));
-                break;
-              case SVN_TOKEN_UNKNOWN:
-              default:
-#ifdef SVN_DEBUG
-                SVN_ERR_MALFUNCTION();
-#endif
-                break;
-            }
-        }
-    }
-
-  return SVN_NO_ERROR;
-}
-
-#define MAX_CERT_LINE_LEN 78
-
-/* Break ASCII_CERT into lines of at most MAX_CERT_LINE_LEN characters.
- * Otherwise, OpenSSL won't parse it due to the way it is invoked by serf. */
-static const char *
-split_ascii_cert(const char *ascii_cert,
-                 apr_pool_t *result_pool)
-{
-  apr_array_header_t *lines;
-  int i;
-  apr_size_t cert_len, nlines;
-  const char *p;
-  svn_stringbuf_t *line;
-
-  p = ascii_cert;
-  cert_len = strlen(ascii_cert);
-  nlines = cert_len / MAX_CERT_LINE_LEN;
-  lines = apr_array_make(result_pool, 22, sizeof(const char *));
-  for (i = 0; i < nlines; i++)
-    {
-      line = svn_stringbuf_create_ensure(MAX_CERT_LINE_LEN, result_pool);
-      svn_stringbuf_appendbytes(line, p, MAX_CERT_LINE_LEN);
-      p += MAX_CERT_LINE_LEN;
-      APR_ARRAY_PUSH(lines, const char *) = line->data;
-    }
-  if (*p)
-    {
-      line = svn_stringbuf_create_ensure(MAX_CERT_LINE_LEN, result_pool);
-      while (*p)
-        svn_stringbuf_appendbyte(line, *p++);
-      APR_ARRAY_PUSH(lines, const char *) = line->data;
-    }
-
-  return svn_cstring_join(lines, "\n", result_pool);
-}
-
-static svn_error_t *
-load_cert(serf_ssl_certificate_t **cert,
-          const char *ascii_cert,
-          apr_pool_t *result_pool,
-          apr_pool_t *scratch_pool)
-{
-  apr_file_t *pem_file;
-  const char *pem_path;
-  const char *pem;
-  apr_size_t pem_len;
-  apr_size_t written;
-  apr_status_t status;
-
-  SVN_ERR(svn_io_open_unique_file3(&pem_file, &pem_path, NULL,
-                                   svn_io_file_del_on_pool_cleanup,
-                                   scratch_pool, scratch_pool));
-  pem = apr_psprintf(scratch_pool, "%s%s%s",
-                     "-----BEGIN CERTIFICATE-----\n",
-                     split_ascii_cert(ascii_cert, scratch_pool),
-                     "-----END CERTIFICATE-----\n");
-  pem_len = strlen(pem);
-  SVN_ERR(svn_io_file_write_full(pem_file, pem, pem_len, &written,
-                                 scratch_pool));
-  if (written != pem_len)
-    {
-      SVN_ERR(svn_cmdline_printf(scratch_pool,
-                                 _("Base64-encoded certificate: %s\n"),
-                                 ascii_cert));
-      return SVN_NO_ERROR;
-    }
-  SVN_ERR(svn_io_file_flush_to_disk(pem_file, scratch_pool));
-
-  status = serf_ssl_load_cert_file(cert, pem_path, result_pool);
-  if (status)
-    {
-      svn_error_t *err;
-      
-      err = svn_error_wrap_apr(status, _("serf error: %s"),
-                               serf_error_string(status));
-      svn_handle_warning2(stderr, err, "svn: ");
-      svn_error_clear(err);
-
-      *cert = NULL;
-      return SVN_NO_ERROR;
-    }
-
-  return SVN_NO_ERROR;
-}
-#endif
-
-/* Display the base64-encoded DER certificate ASCII_CERT. */
-static svn_error_t *
-show_ascii_cert(const char *ascii_cert,
-                apr_pool_t *scratch_pool)
-{
-#ifdef SVN_AUTH_PRETTY_PRINT_SSL_CERTS
-  serf_ssl_certificate_t *cert;
-  apr_hash_t *cert_info;
-
-  SVN_ERR(load_cert(&cert, ascii_cert, scratch_pool, scratch_pool));
-
-  if (cert == NULL)
-    {
-      SVN_ERR(svn_cmdline_printf(scratch_pool,
-                                 _("Base64-encoded certificate: %s\n"),
-                                 ascii_cert));
-      return SVN_NO_ERROR;
-    }
-
-  cert_info = serf_ssl_cert_issuer(cert, scratch_pool);
-  if (cert_info && apr_hash_count(cert_info) > 0)
-    {
-      SVN_ERR(svn_cmdline_printf(scratch_pool, _("Certificate issuer:\n")));
-      SVN_ERR(show_cert_info(cert_info, scratch_pool));
-    }
-
-  cert_info = serf_ssl_cert_subject(cert, scratch_pool);
-  if (cert_info && apr_hash_count(cert_info) > 0)
-    {
-      SVN_ERR(svn_cmdline_printf(scratch_pool, _("Certificate subject:\n")));
-      SVN_ERR(show_cert_info(cert_info, scratch_pool));
-    }
-
-  cert_info = serf_ssl_cert_certificate(cert, scratch_pool);
-  if (cert_info && apr_hash_count(cert_info) > 0)
-    {
-      SVN_ERR(svn_cmdline_printf(scratch_pool, _("Certificate validity:\n")));
-      SVN_ERR(show_cert_info(cert_info, scratch_pool));
-    }
-#else
-  SVN_ERR(svn_cmdline_printf(scratch_pool,
-                             _("Base64-encoded certificate: %s\n"),
-                             ascii_cert));
-#endif /* SVN_AUTH_PRETTY_PRINT_SSL_CERTS */
-
-  return SVN_NO_ERROR;
-}
-                
 static svn_error_t *
 show_cert_failures(const char *failure_string,
                    apr_pool_t *scratch_pool)
@@ -357,85 +104,12 @@ struct walk_credentials_baton_t
 
 static svn_boolean_t
 match_pattern(const char *pattern, const char *value,
-              apr_pool_t *scratch_pool)
+              svn_boolean_t caseblind, apr_pool_t *scratch_pool)
 {
   const char *p = apr_psprintf(scratch_pool, "*%s*", pattern);
+  int flags = (caseblind ? APR_FNM_CASE_BLIND : 0);
 
-  return (apr_fnmatch(p, value, 0) == APR_SUCCESS);
-}
-
-#ifdef SVN_AUTH_PRETTY_PRINT_SSL_CERTS
-static svn_error_t *
-match_cert_info(svn_boolean_t *match,
-                const char *pattern,
-                apr_hash_t *cert_info,
-                apr_pool_t *scratch_pool)
-{
-  int i;
-  apr_pool_t *iterpool;
-
-  *match = FALSE;
-  iterpool = svn_pool_create(scratch_pool);
-  for (i = 0; i < sizeof(cert_info_key_map) / sizeof(svn_token_map_t); i++)
-    {
-      const char *key = cert_info_key_map[i].str;
-      const char *value = svn_hash_gets(cert_info, key);
-
-      svn_pool_clear(iterpool);
-      if (value)
-        *match = match_pattern(pattern, value, iterpool);
-      if (*match)
-        break;
-    }
-  svn_pool_destroy(iterpool);
-
-  return SVN_NO_ERROR;
-}
-#endif
-
-
-static svn_error_t *
-match_ascii_cert(svn_boolean_t *match,
-                 const char *pattern,
-                 const char *ascii_cert,
-                 apr_pool_t *scratch_pool)
-{
-#ifdef SVN_AUTH_PRETTY_PRINT_SSL_CERTS
-  serf_ssl_certificate_t *cert;
-  apr_hash_t *cert_info;
-
-  *match = FALSE;
-
-  SVN_ERR(load_cert(&cert, ascii_cert, scratch_pool, scratch_pool));
-
-  cert_info = serf_ssl_cert_issuer(cert, scratch_pool);
-  if (cert_info && apr_hash_count(cert_info) > 0)
-    {
-      SVN_ERR(match_cert_info(match, pattern, cert_info, scratch_pool));
-      if (*match)
-        return SVN_NO_ERROR;
-    }
-
-  cert_info = serf_ssl_cert_subject(cert, scratch_pool);
-  if (cert_info && apr_hash_count(cert_info) > 0)
-    {
-      SVN_ERR(match_cert_info(match, pattern, cert_info, scratch_pool));
-      if (*match)
-        return SVN_NO_ERROR;
-    }
-
-  cert_info = serf_ssl_cert_certificate(cert, scratch_pool);
-  if (cert_info && apr_hash_count(cert_info) > 0)
-    {
-      SVN_ERR(match_cert_info(match, pattern, cert_info, scratch_pool));
-      if (*match)
-        return SVN_NO_ERROR;
-    }
-#else
-  *match = FALSE;
-#endif
-
-  return SVN_NO_ERROR;
+  return (apr_fnmatch(p, value, flags) == APR_SUCCESS);
 }
 
 static svn_error_t *
@@ -456,9 +130,9 @@ match_credential(svn_boolean_t *match,
       const char *pattern = APR_ARRAY_IDX(patterns, i, const char *);
       int j;
 
-      *match = match_pattern(pattern, cred_kind, iterpool);
+      *match = match_pattern(pattern, cred_kind, FALSE, iterpool);
       if (!*match)
-        *match = match_pattern(pattern, realmstring, iterpool);
+        *match = match_pattern(pattern, realmstring, FALSE, iterpool);
       if (!*match)
         {
           svn_pool_clear(iterpool);
@@ -475,10 +149,12 @@ match_credential(svn_boolean_t *match,
                   strcmp(key, SVN_CONFIG_AUTHN_PASSPHRASE_KEY) == 0)
                 continue; /* don't match secrets */
               else if (strcmp(key, SVN_CONFIG_AUTHN_ASCII_CERT_KEY) == 0)
-                SVN_ERR(match_ascii_cert(match, pattern, value->data,
-                                         iterpool));
+                continue; /* don't match base64 data */
+              else if (strcmp(key, SVN_CONFIG_AUTHN_HOSTNAME_KEY) == 0 ||
+                       strcmp(key, SVN_CONFIG_AUTHN_FINGERPRINT_KEY) == 0)
+                *match = match_pattern(pattern, value->data, TRUE, iterpool);
               else
-                *match = match_pattern(pattern, value->data, iterpool);
+                *match = match_pattern(pattern, value->data, FALSE, iterpool);
 
               if (*match)
                 break;
@@ -542,7 +218,20 @@ list_credential(const char *cred_kind,
       else if (strcmp(key, SVN_CONFIG_AUTHN_USERNAME_KEY) == 0)
         SVN_ERR(svn_cmdline_printf(iterpool, _("Username: %s\n"), value->data));
       else if (strcmp(key, SVN_CONFIG_AUTHN_ASCII_CERT_KEY) == 0)
-        SVN_ERR(show_ascii_cert(value->data, iterpool));
+        continue; /* don't show data which is not human-readable */
+      else if (strcmp(key, SVN_CONFIG_AUTHN_HOSTNAME_KEY) == 0)
+        SVN_ERR(svn_cmdline_printf(iterpool, _("Hostname: %s\n"), value->data));
+      else if (strcmp(key, SVN_CONFIG_AUTHN_VALID_FROM_KEY) == 0)
+        SVN_ERR(svn_cmdline_printf(iterpool, _("Valid from: %s\n"),
+                                   value->data));
+      else if (strcmp(key, SVN_CONFIG_AUTHN_VALID_UNTIL_KEY) == 0)
+        SVN_ERR(svn_cmdline_printf(iterpool, _("Valid until: %s\n"),
+                                   value->data));
+      else if (strcmp(key, SVN_CONFIG_AUTHN_ISSUER_DN_KEY) == 0)
+        SVN_ERR(svn_cmdline_printf(iterpool, _("Issuer: %s\n"), value->data));
+      else if (strcmp(key, SVN_CONFIG_AUTHN_FINGERPRINT_KEY) == 0)
+        SVN_ERR(svn_cmdline_printf(iterpool, _("Fingerprint: %s\n"),
+                                   value->data));
       else if (strcmp(key, SVN_CONFIG_AUTHN_FAILURES_KEY) == 0)
         SVN_ERR(show_cert_failures(value->data, iterpool));
       else

Modified: subversion/branches/fsfs-lock-many/subversion/svn/cl-conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/cl-conflicts.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/cl-conflicts.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/cl-conflicts.c Wed Mar 12 17:18:20 2014
@@ -21,7 +21,6 @@
  * ====================================================================
  */
 
-#include "svn_private_config.h"
 #include "cl-conflicts.h"
 #include "svn_hash.h"
 #include "svn_xml.h"
@@ -31,6 +30,9 @@
 
 #include "cl.h"
 
+#include "svn_private_config.h"
+
+
 /* A map for svn_wc_conflict_action_t values to XML strings */
 static const svn_token_map_t map_conflict_action_xml[] =
 {

Modified: subversion/branches/fsfs-lock-many/subversion/svn/commit-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/commit-cmd.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/commit-cmd.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/commit-cmd.c Wed Mar 12 17:18:20 2014
@@ -29,7 +29,6 @@
 
 #include <apr_general.h>
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_error.h"
 #include "svn_error_codes.h"
@@ -41,6 +40,8 @@
 #include "svn_config.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
+
 
 
 /* Wrapper notify_func2 function and baton for warning about

Modified: subversion/branches/fsfs-lock-many/subversion/svn/conflict-callbacks.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/conflict-callbacks.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/conflict-callbacks.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/conflict-callbacks.c Wed Mar 12 17:18:20 2014
@@ -27,7 +27,6 @@
 #define APR_WANT_STRFUNC
 #include <apr_want.h>
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_cmdline.h"
 #include "svn_client.h"
@@ -42,6 +41,8 @@
 
 #include "private/svn_cmdline_private.h"
 
+#include "svn_private_config.h"
+
 #define ARRAY_LEN(ary) ((sizeof (ary)) / (sizeof ((ary)[0])))
 
 
@@ -325,22 +326,14 @@ open_editor(svn_boolean_t *performed_edi
     {
       err = svn_cmdline__edit_file_externally(merged_file, b->editor_cmd,
                                               b->config, pool);
-      if (err && (err->apr_err == SVN_ERR_CL_NO_EXTERNAL_EDITOR))
-        {
-          svn_error_t *root_err = svn_error_root_cause(err);
-
-          SVN_ERR(svn_cmdline_fprintf(stderr, pool, "%s\n",
-                                      root_err->message ? root_err->message :
-                                      _("No editor found.")));
-          svn_error_clear(err);
-        }
-      else if (err && (err->apr_err == SVN_ERR_EXTERNAL_PROGRAM))
+      if (err && (err->apr_err == SVN_ERR_CL_NO_EXTERNAL_EDITOR ||
+                  err->apr_err == SVN_ERR_EXTERNAL_PROGRAM))
         {
-          svn_error_t *root_err = svn_error_root_cause(err);
+          char buf[1024];
+          const char *message;
 
-          SVN_ERR(svn_cmdline_fprintf(stderr, pool, "%s\n",
-                                      root_err->message ? root_err->message :
-                                      _("Error running editor.")));
+          message = svn_err_best_message(err, buf, sizeof(buf));
+          SVN_ERR(svn_cmdline_fprintf(stderr, pool, "%s\n", message));
           svn_error_clear(err);
         }
       else if (err)
@@ -821,12 +814,24 @@ handle_text_conflict(svn_wc_conflict_res
           err = launch_resolver(&performed_edit, desc, b, iterpool);
           if (err)
             {
-              if (err->apr_err == SVN_ERR_CL_NO_EXTERNAL_MERGE_TOOL ||
-                  err->apr_err == SVN_ERR_EXTERNAL_PROGRAM)
+              if (err->apr_err == SVN_ERR_CL_NO_EXTERNAL_MERGE_TOOL)
                 {
                   /* Try the internal merge tool. */
                   svn_error_clear(err);
                 }
+              else if (err->apr_err == SVN_ERR_EXTERNAL_PROGRAM)
+                {
+                  char buf[1024];
+                  const char *message;
+
+                  message = svn_err_best_message(err, buf, sizeof(buf));
+                  SVN_ERR(svn_cmdline_fprintf(stderr, iterpool,
+                                              "%s\n", message));
+                  SVN_ERR(svn_cmdline_fputs(_("Falling back to internal "
+                                              "merge tool.\n"), stderr,
+                                              iterpool));
+                  svn_error_clear(err);
+                }
               else
                 return svn_error_trace(err);
             }
@@ -873,22 +878,16 @@ handle_text_conflict(svn_wc_conflict_res
               desc->my_abspath && desc->merged_file)
             {
               svn_error_t *err;
+              char buf[1024];
+              const char *message;
 
               err = launch_resolver(&performed_edit, desc, b, iterpool);
-              if (err && err->apr_err == SVN_ERR_CL_NO_EXTERNAL_MERGE_TOOL)
-                {
-                  SVN_ERR(svn_cmdline_fprintf(stderr, iterpool, "%s\n",
-                                              err->message ? err->message :
-                                              _("No merge tool found, "
-                                                "try '(m) merge' instead.\n")));
-                  svn_error_clear(err);
-                }
-              else if (err && err->apr_err == SVN_ERR_EXTERNAL_PROGRAM)
+              if (err && (err->apr_err == SVN_ERR_CL_NO_EXTERNAL_MERGE_TOOL ||
+                          err->apr_err == SVN_ERR_EXTERNAL_PROGRAM))
                 {
+                  message = svn_err_best_message(err, buf, sizeof(buf));
                   SVN_ERR(svn_cmdline_fprintf(stderr, iterpool, "%s\n",
-                                              err->message ? err->message :
-                                         _("Error running merge tool, "
-                                           "try '(m) merge' instead.")));
+                                              message));
                   svn_error_clear(err);
                 }
               else if (err)
@@ -1220,21 +1219,15 @@ conflict_func_interactive(svn_wc_conflic
           err = svn_cmdline__edit_file_externally(desc->merged_file,
                                                   b->editor_cmd, b->config,
                                                   scratch_pool);
-          if (err && (err->apr_err == SVN_ERR_CL_NO_EXTERNAL_EDITOR))
-            {
-              SVN_ERR(svn_cmdline_fprintf(stderr, scratch_pool, "%s\n",
-                                          err->message ? err->message :
-                                          _("No editor found;"
-                                            " leaving all conflicts.")));
-              svn_error_clear(err);
-              b->external_failed = TRUE;
-            }
-          else if (err && (err->apr_err == SVN_ERR_EXTERNAL_PROGRAM))
+          if (err && (err->apr_err == SVN_ERR_CL_NO_EXTERNAL_EDITOR ||
+                      err->apr_err == SVN_ERR_EXTERNAL_PROGRAM))
             {
+              char buf[1024];
+              const char *message;
+
+              message = svn_err_best_message(err, buf, sizeof(buf));
               SVN_ERR(svn_cmdline_fprintf(stderr, scratch_pool, "%s\n",
-                                          err->message ? err->message :
-                                          _("Error running editor;"
-                                            " leaving all conflicts.")));
+                                          message));
               svn_error_clear(err);
               b->external_failed = TRUE;
             }
@@ -1265,21 +1258,15 @@ conflict_func_interactive(svn_wc_conflic
                                               b->config,
                                               &remains_in_conflict,
                                               scratch_pool);
-          if (err && err->apr_err == SVN_ERR_CL_NO_EXTERNAL_MERGE_TOOL)
-            {
-              SVN_ERR(svn_cmdline_fprintf(stderr, scratch_pool, "%s\n",
-                                          err->message ? err->message :
-                                          _("No merge tool found;"
-                                            " leaving all conflicts.")));
-              b->external_failed = TRUE;
-              return svn_error_trace(err);
-            }
-          else if (err && err->apr_err == SVN_ERR_EXTERNAL_PROGRAM)
+          if (err && (err->apr_err == SVN_ERR_CL_NO_EXTERNAL_MERGE_TOOL ||
+                      err->apr_err == SVN_ERR_EXTERNAL_PROGRAM))
             {
+              char buf[1024];
+              const char *message;
+
+              message = svn_err_best_message(err, buf, sizeof(buf));
               SVN_ERR(svn_cmdline_fprintf(stderr, scratch_pool, "%s\n",
-                                          err->message ? err->message :
-                                          _("Error running merge tool;"
-                                            " leaving all conflicts.")));
+                                          message));
               b->external_failed = TRUE;
               return svn_error_trace(err);
             }

Modified: subversion/branches/fsfs-lock-many/subversion/svn/diff-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/diff-cmd.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/diff-cmd.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/diff-cmd.c Wed Mar 12 17:18:20 2014
@@ -27,7 +27,6 @@
 
 /*** Includes. ***/
 
-#include "svn_private_config.h"
 #include "svn_pools.h"
 #include "svn_client.h"
 #include "svn_string.h"
@@ -41,6 +40,8 @@
 #include "svn_hash.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
+
 
 /*** Code. ***/
 

Modified: subversion/branches/fsfs-lock-many/subversion/svn/help-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/help-cmd.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/help-cmd.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/help-cmd.c Wed Mar 12 17:18:20 2014
@@ -27,7 +27,6 @@
 
 /*** Includes. ***/
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_string.h"
 #include "svn_config.h"
@@ -35,6 +34,8 @@
 #include "svn_error.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
+
 
 /*** Code. ***/
 

Modified: subversion/branches/fsfs-lock-many/subversion/svn/notify.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/notify.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/notify.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/notify.c Wed Mar 12 17:18:20 2014
@@ -31,7 +31,6 @@
 #define APR_WANT_STRFUNC
 #include <apr_want.h>
 
-#include "svn_private_config.h"
 #include "svn_cmdline.h"
 #include "svn_pools.h"
 #include "svn_dirent_uri.h"
@@ -42,6 +41,8 @@
 #include "private/svn_subr_private.h"
 #include "private/svn_dep_compat.h"
 
+#include "svn_private_config.h"
+
 
 /* Baton for notify and friends. */
 struct notify_baton
@@ -301,20 +302,20 @@ notify(void *baton, const svn_wc_notify_
       nb->received_some_change = TRUE;
       if (n->err && n->err->message)
         {
-          if ((err = svn_cmdline_printf(pool, "Removed external '%s': %s\n",
+          if ((err = svn_cmdline_printf(pool, _("Removed external '%s': %s\n"),
               path_local, n->err->message)))
             goto print_error;
         }
       else
         {
-          if ((err = svn_cmdline_printf(pool, "Removed external '%s'\n",
+          if ((err = svn_cmdline_printf(pool, _("Removed external '%s'\n"),
                                         path_local)))
             goto print_error;
         }
       break;
 
     case svn_wc_notify_left_local_modifications:
-      if ((err = svn_cmdline_printf(pool, "Left local modifications as '%s'\n",
+      if ((err = svn_cmdline_printf(pool, _("Left local modifications as '%s'\n"),
                                         path_local)))
         goto print_error;
       break;

Modified: subversion/branches/fsfs-lock-many/subversion/svn/propedit-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/propedit-cmd.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/propedit-cmd.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/propedit-cmd.c Wed Mar 12 17:18:20 2014
@@ -27,7 +27,6 @@
 
 /*** Includes. ***/
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_cmdline.h"
 #include "svn_wc.h"
@@ -42,6 +41,7 @@
 #include "cl.h"
 
 #include "private/svn_cmdline_private.h"
+#include "svn_private_config.h"
 
 
 /*** Code. ***/

Modified: subversion/branches/fsfs-lock-many/subversion/svn/propget-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/propget-cmd.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/propget-cmd.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/propget-cmd.c Wed Mar 12 17:18:20 2014
@@ -27,7 +27,6 @@
 
 /*** Includes. ***/
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_cmdline.h"
 #include "svn_pools.h"
@@ -46,6 +45,8 @@
 
 #include "private/svn_cmdline_private.h"
 #include "private/svn_sorts_private.h"
+#include "svn_private_config.h"
+
 
 /*** Code. ***/
 

Modified: subversion/branches/fsfs-lock-many/subversion/svn/props.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/props.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/props.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/props.c Wed Mar 12 17:18:20 2014
@@ -30,8 +30,6 @@
 #include <stdlib.h>
 
 #include <apr_hash.h>
-
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_cmdline.h"
 #include "svn_string.h"
@@ -48,6 +46,7 @@
 #include "private/svn_string_private.h"
 #include "private/svn_cmdline_private.h"
 
+#include "svn_private_config.h"
 
 
 svn_error_t *

Modified: subversion/branches/fsfs-lock-many/subversion/svn/status-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/status-cmd.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/status-cmd.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/status-cmd.c Wed Mar 12 17:18:20 2014
@@ -27,7 +27,6 @@
 
 /*** Includes. ***/
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_string.h"
 #include "svn_wc.h"
@@ -41,6 +40,7 @@
 #include "svn_cmdline.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 
 

Modified: subversion/branches/fsfs-lock-many/subversion/svn/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/status.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/status.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/status.c Wed Mar 12 17:18:20 2014
@@ -26,8 +26,6 @@
 
 
 /*** Includes. ***/
-
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_cmdline.h"
 #include "svn_wc.h"
@@ -35,6 +33,7 @@
 #include "svn_xml.h"
 #include "svn_time.h"
 #include "cl.h"
+#include "svn_private_config.h"
 #include "cl-conflicts.h"
 #include "private/svn_wc_private.h"
 

Modified: subversion/branches/fsfs-lock-many/subversion/svn/svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/svn.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/svn.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/svn.c Wed Mar 12 17:18:20 2014
@@ -35,7 +35,6 @@
 #include <apr_general.h>
 #include <apr_signal.h>
 
-#include "svn_private_config.h"
 #include "svn_cmdline.h"
 #include "svn_pools.h"
 #include "svn_wc.h"
@@ -58,6 +57,8 @@
 #include "private/svn_opt_private.h"
 #include "private/svn_cmdline_private.h"
 
+#include "svn_private_config.h"
+
 
 /*** Option Processing ***/
 

Modified: subversion/branches/fsfs-lock-many/subversion/svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svn/util.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svn/util.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svn/util.c Wed Mar 12 17:18:20 2014
@@ -41,7 +41,6 @@
 #include <apr_general.h>
 #include <apr_lib.h>
 
-#include "svn_private_config.h"
 #include "svn_pools.h"
 #include "svn_error.h"
 #include "svn_ctype.h"
@@ -59,6 +58,7 @@
 #include "svn_xml.h"
 #include "svn_time.h"
 #include "svn_props.h"
+#include "svn_private_config.h"
 #include "cl.h"
 
 #include "private/svn_token.h"
@@ -164,9 +164,9 @@ svn_cl__merge_file_externally(const char
      * is OK to continue with the merge.
      * Any other exit code means there was a real problem. */
     if (exitcode != 0 && exitcode != 1)
-      return svn_error_createf
-        (SVN_ERR_EXTERNAL_PROGRAM, NULL,
-         _("The external merge tool exited with exit code %d"), exitcode);
+      return svn_error_createf(SVN_ERR_EXTERNAL_PROGRAM, NULL,
+        _("The external merge tool '%s' exited with exit code %d."),
+        merge_tool, exitcode);
     else if (remains_in_conflict)
       *remains_in_conflict = exitcode == 1;
   }

Modified: subversion/branches/fsfs-lock-many/subversion/svnadmin/svnadmin.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svnadmin/svnadmin.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svnadmin/svnadmin.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svnadmin/svnadmin.c Wed Mar 12 17:18:20 2014
@@ -25,7 +25,6 @@
 #include <apr_file_io.h>
 #include <apr_signal.h>
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_pools.h"
 #include "svn_cmdline.h"
@@ -50,6 +49,8 @@
 #include "private/svn_sorts_private.h"
 #include "private/svn_subr_private.h"
 
+#include "svn_private_config.h"
+
 
 /*** Code. ***/
 
@@ -543,7 +544,7 @@ struct svnadmin_opt_state
   enum svn_repos_load_uuid uuid_action;             /* --ignore-uuid,
                                                        --force-uuid */
   apr_uint64_t memory_cache_size;                   /* --memory-cache-size M */
-  const char *parent_dir;
+  const char *parent_dir;                           /* --parent-dir */
   svn_stringbuf_t *filedata;                        /* --file */
 
   const char *config_dir;    /* Overriding Configuration Directory */

Modified: subversion/branches/fsfs-lock-many/subversion/svnlook/svnlook.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svnlook/svnlook.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svnlook/svnlook.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svnlook/svnlook.c Wed Mar 12 17:18:20 2014
@@ -34,7 +34,6 @@
 #define APR_WANT_STRFUNC
 #include <apr_want.h>
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_cmdline.h"
 #include "svn_types.h"
@@ -61,6 +60,8 @@
 #include "private/svn_io_private.h"
 #include "private/svn_sorts_private.h"
 
+#include "svn_private_config.h"
+
 
 /*** Some convenience macros and types. ***/
 

Modified: subversion/branches/fsfs-lock-many/subversion/svnrdump/dump_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svnrdump/dump_editor.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svnrdump/dump_editor.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svnrdump/dump_editor.c Wed Mar 12 17:18:20 2014
@@ -22,7 +22,6 @@
  * ====================================================================
  */
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_pools.h"
 #include "svn_repos.h"

Modified: subversion/branches/fsfs-lock-many/subversion/svnrdump/svnrdump.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svnrdump/svnrdump.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svnrdump/svnrdump.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svnrdump/svnrdump.c Wed Mar 12 17:18:20 2014
@@ -25,7 +25,6 @@
 #include <apr_signal.h>
 #include <apr_uri.h>
 
-#include "svn_private_config.h"
 #include "svn_pools.h"
 #include "svn_cmdline.h"
 #include "svn_client.h"
@@ -34,6 +33,7 @@
 #include "svn_repos.h"
 #include "svn_path.h"
 #include "svn_utf.h"
+#include "svn_private_config.h"
 #include "svn_string.h"
 #include "svn_props.h"
 
@@ -42,6 +42,7 @@
 #include "private/svn_cmdline_private.h"
 #include "private/svn_ra_private.h"
 
+
 
 /*** Cancellation ***/
 

Modified: subversion/branches/fsfs-lock-many/subversion/svnrdump/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svnrdump/util.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svnrdump/util.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svnrdump/util.c Wed Mar 12 17:18:20 2014
@@ -21,7 +21,6 @@
  * ====================================================================
  */
 
-#include "svn_private_config.h"
 #include "svn_error.h"
 #include "svn_pools.h"
 #include "svn_string.h"

Modified: subversion/branches/fsfs-lock-many/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svnserve/serve.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svnserve/serve.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svnserve/serve.c Wed Mar 12 17:18:20 2014
@@ -33,8 +33,8 @@
 #include <apr_lib.h>
 #include <apr_strings.h>
 
-#include "svn_private_config.h"
 #include "svn_compat.h"
+#include "svn_private_config.h"  /* For SVN_PATH_LOCAL_SEPARATOR */
 #include "svn_hash.h"
 #include "svn_types.h"
 #include "svn_string.h"

Modified: subversion/branches/fsfs-lock-many/subversion/svnserve/svnserve.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svnserve/svnserve.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svnserve/svnserve.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svnserve/svnserve.c Wed Mar 12 17:18:20 2014
@@ -534,7 +534,7 @@ static svn_root_pools__t *connection_poo
 static apr_thread_pool_t *threads;
 
 /* Very simple load determination callback for serve_interruptable:
-   With less than have the threads in THREADS in use, we can afford to
+   With less than half the threads in THREADS in use, we can afford to
    wait in the socket read() function.  Otherwise, poll them round-robin. */
 static svn_boolean_t
 is_busy(connection_t *connection)

Modified: subversion/branches/fsfs-lock-many/subversion/svnsync/svnsync.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svnsync/svnsync.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svnsync/svnsync.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svnsync/svnsync.c Wed Mar 12 17:18:20 2014
@@ -19,7 +19,6 @@
  * ====================================================================
  */
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_cmdline.h"
 #include "svn_config.h"
@@ -42,6 +41,8 @@
 
 #include "sync.h"
 
+#include "svn_private_config.h"
+
 #include <apr_signal.h>
 #include <apr_uuid.h>
 

Modified: subversion/branches/fsfs-lock-many/subversion/svnsync/sync.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/svnsync/sync.c?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/svnsync/sync.c (original)
+++ subversion/branches/fsfs-lock-many/subversion/svnsync/sync.c Wed Mar 12 17:18:20 2014
@@ -19,7 +19,6 @@
  * ====================================================================
  */
 
-#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_cmdline.h"
 #include "svn_config.h"
@@ -37,6 +36,8 @@
 
 #include "sync.h"
 
+#include "svn_private_config.h"
+
 #include <apr_network_io.h>
 #include <apr_signal.h>
 #include <apr_uuid.h>

Modified: subversion/branches/fsfs-lock-many/subversion/tests/cmdline/authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-lock-many/subversion/tests/cmdline/authz_tests.py?rev=1576824&r1=1576823&r2=1576824&view=diff
==============================================================================
--- subversion/branches/fsfs-lock-many/subversion/tests/cmdline/authz_tests.py (original)
+++ subversion/branches/fsfs-lock-many/subversion/tests/cmdline/authz_tests.py Wed Mar 12 17:18:20 2014
@@ -1263,7 +1263,7 @@ def wc_delete(sbox):
 
   expected_err = ".*svn: E155035: .*excluded by server*"
   svntest.actions.run_and_verify_svn(None, None, expected_err,
-                                     'rm', sbox.ospath('A/B/E'))
+                                     'rm', sbox.ospath('A/B/E'), '--force')
   svntest.actions.run_and_verify_svn(None, None, expected_err,
                                      'rm', sbox.ospath('A'))