You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2011/01/06 20:15:49 UTC

svn commit: r1056015 [5/8] - in /subversion/branches/performance: ./ build/ build/ac-macros/ build/generator/ contrib/client-side/svnmerge/ contrib/server-side/ contrib/server-side/mod_dontdothat/ contrib/server-side/svnstsw/src/ notes/commit-access-te...

Modified: subversion/branches/performance/subversion/libsvn_subr/cache-inprocess.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/cache-inprocess.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/cache-inprocess.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/cache-inprocess.c Thu Jan  6 19:15:40 2011
@@ -32,7 +32,7 @@
 #include "cache.h"
 
 /* The (internal) cache object. */
-typedef struct {
+typedef struct inprocess_cache_t {
   /* Maps from a key (of size CACHE->KLEN) to a struct cache_entry. */
   apr_hash_t *hash;
   apr_ssize_t klen;

Modified: subversion/branches/performance/subversion/libsvn_subr/cache-memcache.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/cache-memcache.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/cache-memcache.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/cache-memcache.c Thu Jan  6 19:15:40 2011
@@ -44,7 +44,7 @@
 */
 
 /* The (internal) cache object. */
-typedef struct {
+typedef struct memcache_t {
   /* The memcached server set we're using. */
   apr_memcache_t *memcache;
 

Modified: subversion/branches/performance/subversion/libsvn_subr/cache.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/cache.h?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/cache.h (original)
+++ subversion/branches/performance/subversion/libsvn_subr/cache.h Thu Jan  6 19:15:40 2011
@@ -30,7 +30,7 @@
 extern "C" {
 #endif /* __cplusplus */
 
-typedef struct {
+typedef struct svn_cache__vtable_t {
   svn_error_t *(*get)(void **value,
                       svn_boolean_t *found,
                       void *cache_implementation,

Modified: subversion/branches/performance/subversion/libsvn_subr/date.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/date.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/date.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/date.c Thu Jan  6 19:15:40 2011
@@ -42,7 +42,7 @@ enum rule_action {
 };
 
 /* How to handle a particular character in a template */
-typedef struct
+typedef struct rule
 {
   char key;                /* The template char that this rule matches */
   const char *valid;       /* String of valid chars for this rule */
@@ -53,7 +53,7 @@ typedef struct
 } rule;
 
 /* The parsed values, before localtime/gmt processing */
-typedef struct
+typedef struct match_state
 {
   apr_time_exp_t base;
   apr_int32_t offhours;

Modified: subversion/branches/performance/subversion/libsvn_subr/dirent_uri.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/dirent_uri.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/dirent_uri.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/dirent_uri.c Thu Jan  6 19:15:40 2011
@@ -57,7 +57,7 @@
 #endif
 
 /* Path type definition. Used only by internal functions. */
-typedef enum {
+typedef enum path_type_t {
   type_uri,
   type_dirent,
   type_relpath
@@ -1925,10 +1925,10 @@ svn_uri_is_canonical(const char *uri, ap
 
               /* Can't usesvn_ctype_isxdigit() because lower case letters are
                  not in our canonical format */
-              if (((*(ptr+1) < '0' || *(ptr+1) > '9')) 
+              if (((*(ptr+1) < '0' || *(ptr+1) > '9'))
                   && (*(ptr+1) < 'A' || *(ptr+1) > 'F'))
                 return FALSE;
-              else if (((*(ptr+2) < '0' || *(ptr+2) > '9')) 
+              else if (((*(ptr+2) < '0' || *(ptr+2) > '9'))
                   && (*(ptr+2) < 'A' || *(ptr+2) > 'F'))
                 return FALSE;
 

Modified: subversion/branches/performance/subversion/libsvn_subr/eol.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/eol.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/eol.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/eol.c Thu Jan  6 19:15:40 2011
@@ -29,14 +29,68 @@
 #include "svn_io.h"
 #include "private/svn_eol_private.h"
 
+/* Machine-word-sized masks used in svn_eol__find_eol_start.
+ */
+#if APR_SIZEOF_VOIDP == 8
+#  define LOWER_7BITS_SET 0x7f7f7f7f7f7f7f7f
+#  define BIT_7_SET       0x8080808080808080
+#  define R_MASK          0x0a0a0a0a0a0a0a0a
+#  define N_MASK          0x0d0d0d0d0d0d0d0d
+#else
+#  define LOWER_7BITS_SET 0x7f7f7f7f
+#  define BIT_7_SET       0x80808080
+#  define R_MASK          0x0a0a0a0a
+#  define N_MASK          0x0d0d0d0d
+#endif
+
 char *
 svn_eol__find_eol_start(char *buf, apr_size_t len)
 {
+#if !SVN_UNALIGNED_ACCESS_IS_OK
+
+  /* On some systems, we need to make sure that buf is properly aligned
+   * for chunky data access. This overhead is still justified because
+   * only lines tend to be tens of chars long.
+   */
+  for (; (len > 0) && ((apr_size_t)buf) & (sizeof(apr_size_t)-1)
+       ; ++buf, --len)
+  {
+    if (*buf == '\n' || *buf == '\r')
+      return buf;
+  }
+
+#endif
+
+  /* Scan the input one machine word at a time. */
+  for (; len > sizeof(apr_size_t)
+       ; buf += sizeof(apr_size_t), len -= sizeof(apr_size_t))
+  {
+    /* This is a variant of the well-known strlen test: */
+    apr_size_t chunk = *(const apr_size_t *)buf;
+
+    /* A byte in R_TEST is \0, iff it was \r in *BUF.
+     * Similarly, N_TEST is an indicator for \n. */
+    apr_size_t r_test = chunk ^ R_MASK;
+    apr_size_t n_test = chunk ^ N_MASK;
+
+    /* A byte in R_TEST can by < 0x80, iff it has been \0 before 
+     * (i.e. \r in *BUF). Dito for N_TEST. */
+    r_test |= (r_test & LOWER_7BITS_SET) + LOWER_7BITS_SET;
+    n_test |= (n_test & LOWER_7BITS_SET) + LOWER_7BITS_SET;
+
+    /* Check whether at least one of the words contains a byte <0x80
+     * (if one is detected, there was a \r or \n in CHUNK). */
+    if ((r_test & n_test & BIT_7_SET) != BIT_7_SET)
+      break;
+  }
+
+  /* The remaining odd bytes will be examined the naive way: */
   for (; len > 0; ++buf, --len)
     {
       if (*buf == '\n' || *buf == '\r')
         return buf;
     }
+
   return NULL;
 }
 

Modified: subversion/branches/performance/subversion/libsvn_subr/error.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/error.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/error.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/error.c Thu Jan  6 19:15:40 2011
@@ -376,7 +376,14 @@ svn_error_purge_tracing(svn_error_t *err
 
       /* The link must be a real link in the error chain, otherwise an
          error chain with trace only links would map into SVN_NO_ERROR. */
-      SVN_ERR_ASSERT(err);
+      if (! err)
+        return svn_error_create(
+                 SVN_ERR_ASSERTION_ONLY_TRACING_LINKS, 
+                 svn_error_compose_create(
+                   svn_error__malfunction(TRUE, __FILE__, __LINE__,
+                                          NULL /* ### say something? */),
+                   err),
+                 NULL);
 
       /* Copy the current error except for its child error pointer
          into the new error.  Share any message and source filename
@@ -580,7 +587,7 @@ svn_err_best_message(svn_error_t *err, c
 
 /* svn_strerror() and helpers */
 
-typedef struct {
+typedef struct err_defn {
   svn_errno_t errcode;
   const char *errdesc;
 } err_defn;

Modified: subversion/branches/performance/subversion/libsvn_subr/io.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/io.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/io.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/io.c Thu Jan  6 19:15:40 2011
@@ -334,7 +334,7 @@ svn_io_open_uniquely_named(apr_file_t **
   unsigned int i;
   struct temp_file_cleanup_s *baton = NULL;
 
-  /* At the beginning, we don't know whether unique_path will need 
+  /* At the beginning, we don't know whether unique_path will need
      UTF8 conversion */
   svn_boolean_t needs_utf8_conversion = TRUE;
 
@@ -819,9 +819,9 @@ file_perms_set(const char *fname, apr_fi
     return SVN_NO_ERROR;
 }
 
-/* Set permissions PERMS on the FILE. This is a cheaper variant of the 
+/* Set permissions PERMS on the FILE. This is a cheaper variant of the
  * file_perms_set wrapper() function because no locale-dependent string
- * conversion is required. 
+ * conversion is required.
  */
 static svn_error_t *
 file_perms_set2(apr_file_t* file, apr_fileperms_t perms)
@@ -2138,7 +2138,7 @@ svn_io_stat_dirent(const svn_io_dirent2_
                     | APR_FINFO_SIZE | APR_FINFO_MTIME,
                     scratch_pool);
 
-  if (err && ignore_enoent && 
+  if (err && ignore_enoent &&
       (APR_STATUS_IS_ENOENT(err->apr_err)
        || SVN__APR_STATUS_IS_ENOTDIR(err->apr_err)))
     {
@@ -3276,7 +3276,7 @@ svn_io_dir_remove_nonrecursive(const cha
         if (APR_STATUS_IS_ENOTEMPTY(empty_status))
           retry = FALSE;
       }
-    
+
     if (retry)
       {
         WIN32_RETRY_LOOP(status, apr_dir_remove(dirname_apr, pool));
@@ -3717,7 +3717,7 @@ temp_file_create(apr_file_t **new_file,
   if (status)
     return svn_error_wrap_apr(status, _("Can't create temporary file from "
                               "template '%s'"), templ);
-  
+
   /* Translate the returned path back to utf-8 before returning it */
   return svn_error_return(svn_path_cstring_to_utf8(new_file_name,
                                                    templ_apr,
@@ -3733,7 +3733,7 @@ temp_file_create(apr_file_t **new_file,
 
   /* Offset by some time value and a unique request nr to make the number
      +- unique for both this process and on the computer */
-  int baseNr = (GetTickCount() << 11) + 7 * svn_atomic_inc(&tempname_counter) 
+  int baseNr = (GetTickCount() << 11) + 7 * svn_atomic_inc(&tempname_counter)
                + GetCurrentProcessId();
   int i;
 

Modified: subversion/branches/performance/subversion/libsvn_subr/iter.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/iter.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/iter.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/iter.c Thu Jan  6 19:15:40 2011
@@ -53,7 +53,7 @@ int hash_do_callback(void *baton,
                      const void *value)
 {
   struct hash_do_baton *hdb = baton;
-  
+
   svn_pool_clear(hdb->iterpool);
   hdb->err = (*hdb->func)(hdb->baton, key, klen, (void *)value, hdb->iterpool);
 

Modified: subversion/branches/performance/subversion/libsvn_subr/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/lock.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/lock.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/lock.c Thu Jan  6 19:15:40 2011
@@ -47,7 +47,7 @@ svn_lock_dup(const svn_lock_t *lock, apr
 
   if (lock == NULL)
     return NULL;
-  
+
   new_l = apr_palloc(pool, sizeof(*new_l));
   *new_l = *lock;
 

Modified: subversion/branches/performance/subversion/libsvn_subr/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/mergeinfo.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/mergeinfo.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/mergeinfo.c Thu Jan  6 19:15:40 2011
@@ -126,7 +126,7 @@ parse_pathname(const char **input,
   (SVN_IS_VALID_REVNUM((range)->start) && ((range)->start < (range)->end))
 
 /* Ways in which two svn_merge_range_t can intersect or adjoin, if at all. */
-typedef enum
+typedef enum intersection_type_t
 {
   /* Ranges don't intersect and don't adjoin. */
   svn__no_intersection,
@@ -2114,7 +2114,7 @@ svn_mergeinfo__adjust_mergeinfo_rangelis
                 APR_ARRAY_IDX(rangelist, i, svn_merge_range_t *);
 
               if (range->start + offset > 0 && range->end + offset > 0)
-                {                  
+                {
                   if (range->start + offset < 0)
                     range->start = 0;
                   else

Modified: subversion/branches/performance/subversion/libsvn_subr/opt.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/opt.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/opt.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/opt.c Thu Jan  6 19:15:40 2011
@@ -1048,7 +1048,7 @@ svn_opt__print_version_info(const char *
   SVN_ERR(svn_cmdline_printf(pool, _("%s, version %s\n"
                                      "   compiled %s, %s\n\n"), pgm_name,
                              SVN_VERSION, __DATE__, __TIME__));
-  SVN_ERR(svn_cmdline_fputs(_("Copyright (C) 2010 The Apache Software Foundation.\n"
+  SVN_ERR(svn_cmdline_fputs(_("Copyright (C) 2011 The Apache Software Foundation.\n"
                               "This software consists of"
                               " contributions made by many people;\n"
                               "see the NOTICE file for more information.\n"

Modified: subversion/branches/performance/subversion/libsvn_subr/simple_providers.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/simple_providers.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/simple_providers.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/simple_providers.c Thu Jan  6 19:15:40 2011
@@ -49,7 +49,7 @@
 #define AUTHN_PASSTYPE_KEY            "passtype"
 
 /* Baton type for the simple provider. */
-typedef struct
+typedef struct simple_provider_baton_t
 {
   svn_auth_plaintext_prompt_func_t plaintext_prompt_func;
   void *prompt_baton;
@@ -541,7 +541,7 @@ svn_auth_get_simple_provider2
 /*-----------------------------------------------------------------------*/
 
 /* Baton type for username/password prompting. */
-typedef struct
+typedef struct simple_prompt_provider_baton_t
 {
   svn_auth_simple_prompt_func_t prompt_func;
   void *prompt_baton;
@@ -552,7 +552,7 @@ typedef struct
 
 
 /* Iteration baton type for username/password prompting. */
-typedef struct
+typedef struct simple_prompt_iter_baton_t
 {
   /* how many times we've reprompted */
   int retries;

Modified: subversion/branches/performance/subversion/libsvn_subr/ssl_client_cert_providers.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/ssl_client_cert_providers.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/ssl_client_cert_providers.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/ssl_client_cert_providers.c Thu Jan  6 19:15:40 2011
@@ -105,7 +105,7 @@ void svn_auth_get_ssl_client_cert_file_p
 
 /* Baton type for prompting to send client ssl creds.
    There is no iteration baton type. */
-typedef struct
+typedef struct ssl_client_cert_prompt_provider_baton_t
 {
   svn_auth_ssl_client_cert_prompt_func_t prompt_func;
   void *prompt_baton;
@@ -115,7 +115,7 @@ typedef struct
 } ssl_client_cert_prompt_provider_baton_t;
 
 /* Iteration baton. */
-typedef struct
+typedef struct ssl_client_cert_prompt_iter_baton_t
 {
   /* The original provider baton */
   ssl_client_cert_prompt_provider_baton_t *pb;

Modified: subversion/branches/performance/subversion/libsvn_subr/ssl_client_cert_pw_providers.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/ssl_client_cert_pw_providers.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/ssl_client_cert_pw_providers.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/ssl_client_cert_pw_providers.c Thu Jan  6 19:15:40 2011
@@ -49,7 +49,7 @@
 #define AUTHN_PASSTYPE_KEY              "passtype"
 
 /* Baton type for the ssl client cert passphrase provider. */
-typedef struct
+typedef struct ssl_client_cert_pw_file_provider_baton_t
 {
   svn_auth_plaintext_passphrase_prompt_func_t plaintext_passphrase_prompt_func;
   void *prompt_baton;
@@ -405,7 +405,7 @@ svn_auth_get_ssl_client_cert_pw_file_pro
 
 /* Baton type for client passphrase prompting.
    There is no iteration baton type. */
-typedef struct
+typedef struct ssl_client_cert_pw_prompt_provider_baton_t
 {
   svn_auth_ssl_client_cert_pw_prompt_func_t prompt_func;
   void *prompt_baton;
@@ -415,7 +415,7 @@ typedef struct
 } ssl_client_cert_pw_prompt_provider_baton_t;
 
 /* Iteration baton. */
-typedef struct
+typedef struct ssl_client_cert_pw_prompt_iter_baton_t
 {
   /* The original provider baton */
   ssl_client_cert_pw_prompt_provider_baton_t *pb;

Modified: subversion/branches/performance/subversion/libsvn_subr/ssl_server_trust_providers.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/ssl_server_trust_providers.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/ssl_server_trust_providers.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/ssl_server_trust_providers.c Thu Jan  6 19:15:40 2011
@@ -182,7 +182,7 @@ svn_auth_get_ssl_server_trust_file_provi
 
 /* Baton type for prompting to verify server ssl creds.
    There is no iteration baton type. */
-typedef struct
+typedef struct ssl_server_trust_prompt_provider_baton_t
 {
   svn_auth_ssl_server_trust_prompt_func_t prompt_func;
   void *prompt_baton;

Modified: subversion/branches/performance/subversion/libsvn_subr/stream.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/stream.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/stream.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/stream.c Thu Jan  6 19:15:40 2011
@@ -1720,7 +1720,7 @@ struct stringbuf_stream_baton
 
 /* svn_stream_mark_t for streams backed by stringbufs. */
 struct stringbuf_stream_mark {
-    apr_size_t pos; 
+    apr_size_t pos;
 };
 
 static svn_error_t *
@@ -1824,7 +1824,7 @@ struct string_stream_baton
 
 /* svn_stream_mark_t for streams backed by stringbufs. */
 struct string_stream_mark {
-    apr_size_t pos; 
+    apr_size_t pos;
 };
 
 static svn_error_t *

Modified: subversion/branches/performance/subversion/libsvn_subr/subst.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/subst.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/subst.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/subst.c Thu Jan  6 19:15:40 2011
@@ -905,7 +905,7 @@ eol_unchanged(struct translation_baton *
               const char *buf)
 {
   /* If the first byte doesn't match, the whole EOL won't.
-   * This does also handle the (certainly invalid) case that 
+   * This does also handle the (certainly invalid) case that
    * eol_str would be an empty string.
    */
   if (buf[0] != b->eol_str[0])
@@ -915,7 +915,7 @@ eol_unchanged(struct translation_baton *
   if (b->eol_str_len == 2)
     return buf[1] == b->eol_str[1];
 
-  /* The first char matches the required 1-byte EOL. 
+  /* The first char matches the required 1-byte EOL.
    * But maybe, buf[] contains a 2-byte EOL?
    * In that case, the second byte will be interesting
    * and not be another EOL of its own.
@@ -1036,9 +1036,9 @@ translate_chunk(svn_stream_t *dst,
           /* translate_newline will modify the baton for src_format_len==0
              or may return an error if b->repair is FALSE.  In all other
              cases, we can skip the newline translation as long as source
-             EOL format and actual EOL format match.  If there is a 
-             mismatch, translate_newline will be called regardless of 
-             nl_translation_skippable. 
+             EOL format and actual EOL format match.  If there is a
+             mismatch, translate_newline will be called regardless of
+             nl_translation_skippable.
            */
           if (b->nl_translation_skippable == svn_tristate_unknown &&
               b->src_format_len > 0)
@@ -1047,14 +1047,14 @@ translate_chunk(svn_stream_t *dst,
               if (b->eol_str_len == b->src_format_len &&
                   strncmp(b->eol_str, b->src_format, b->eol_str_len) == 0)
                 b->nl_translation_skippable = svn_tristate_true;
-              else if (b->repair) 
+              else if (b->repair)
                 b->nl_translation_skippable = svn_tristate_true;
               else
                 b->nl_translation_skippable = svn_tristate_false;
             }
 
           /* We're in the boring state; look for interesting characters.
-             Offset len such that it will become 0 in the first iteration. 
+             Offset len such that it will become 0 in the first iteration.
            */
           len = 0 - b->eol_str_len;
 
@@ -1081,7 +1081,7 @@ translate_chunk(svn_stream_t *dst,
                   len += 4;
                 }
 
-               /* Found an interesting char or EOF in the next 4 bytes. 
+               /* Found an interesting char or EOF in the next 4 bytes.
                   Find its exact position. */
                while ((p + len) < end && !interesting[(unsigned char)p[len]])
                  ++len;
@@ -1302,7 +1302,7 @@ translated_stream_close(void *baton)
 
 
 /* svn_stream_mark_t for translation streams. */
-typedef struct
+typedef struct mark_translated_t
 {
   /* Saved translation state. */
   struct translated_stream_baton saved_baton;
@@ -1317,7 +1317,7 @@ translated_stream_mark(void *baton, svn_
 {
   mark_translated_t *mt;
   struct translated_stream_baton *b = baton;
-  
+
   mt = apr_palloc(pool, sizeof(*mt));
   SVN_ERR(svn_stream_mark(b->stream, &mt->mark, pool));
 
@@ -1352,13 +1352,13 @@ translated_stream_seek(void *baton, svn_
                                 b->iterpool));
 
       SVN_ERR(svn_stream_seek(b->stream, mt->mark));
-    
+
       /* Restore translation state, avoiding new allocations. */
       *b->in_baton = *mt->saved_baton.in_baton;
       *b->out_baton = *mt->saved_baton.out_baton;
       b->written = mt->saved_baton.written;
       svn_stringbuf_setempty(b->readbuf);
-      svn_stringbuf_appendbytes(b->readbuf, mt->saved_baton.readbuf->data, 
+      svn_stringbuf_appendbytes(b->readbuf, mt->saved_baton.readbuf->data,
                                 mt->saved_baton.readbuf->len);
       b->readbuf_off = mt->saved_baton.readbuf_off;
       memcpy(b->buf, mt->saved_baton.buf, SVN__TRANSLATION_BUF_SIZE);

Modified: subversion/branches/performance/subversion/libsvn_subr/svn_string.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/svn_string.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/svn_string.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/svn_string.c Thu Jan  6 19:15:40 2011
@@ -409,8 +409,8 @@ svn_stringbuf_ensure(svn_stringbuf_t *st
 }
 
 
-/* WARNING - Optimized code ahead! 
- * This function has been hand-tuned for performance. Please read 
+/* WARNING - Optimized code ahead!
+ * This function has been hand-tuned for performance. Please read
  * the comments below before modifying the code.
  */
 void
@@ -428,7 +428,7 @@ svn_stringbuf_appendbyte(svn_stringbuf_t
       /* The following read does not depend this write, so we
        * can issue the write first to minimize register pressure:
        * The value of old_len+1 is no longer needed; on most processors,
-       * dest[old_len+1] will be calculated implicitly as part of 
+       * dest[old_len+1] will be calculated implicitly as part of
        * the addressing scheme.
        */
       str->len = old_len+1;
@@ -446,7 +446,7 @@ svn_stringbuf_appendbyte(svn_stringbuf_t
        *
        * Including the "byte" fetch, all operations so far could be
        * issued at once and be scheduled at the CPU's descression.
-       * Most likely, no-one will soon depend on the data that will be 
+       * Most likely, no-one will soon depend on the data that will be
        * written in this function. So, no stalls there, either.
        */
       dest[old_len] = byte;

Modified: subversion/branches/performance/subversion/libsvn_subr/username_providers.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/username_providers.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/username_providers.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/username_providers.c Thu Jan  6 19:15:40 2011
@@ -165,7 +165,7 @@ svn_auth_get_username_provider(svn_auth_
 /*-----------------------------------------------------------------------*/
 
 /* Baton type for username-only prompting. */
-typedef struct
+typedef struct username_prompt_provider_baton_t
 {
   svn_auth_username_prompt_func_t prompt_func;
   void *prompt_baton;
@@ -176,7 +176,7 @@ typedef struct
 
 
 /* Iteration baton type for username-only prompting. */
-typedef struct
+typedef struct username_prompt_iter_baton_t
 {
   /* how many times we've reprompted */
   int retries;

Modified: subversion/branches/performance/subversion/libsvn_subr/win32_crashrpt.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_subr/win32_crashrpt.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_subr/win32_crashrpt.c (original)
+++ subversion/branches/performance/subversion/libsvn_subr/win32_crashrpt.c Thu Jan  6 19:15:40 2011
@@ -375,7 +375,7 @@ format_value(char *value_str, DWORD64 mo
 
 /* Internal structure used to pass some data to the enumerate symbols
  * callback */
-typedef struct {
+typedef struct symbols_baton_t {
   STACKFRAME64 *stack_frame;
   FILE *log_file;
   int nr_of_frame;

Modified: subversion/branches/performance/subversion/libsvn_wc/adm_crawler.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/adm_crawler.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/adm_crawler.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/adm_crawler.c Thu Jan  6 19:15:40 2011
@@ -476,7 +476,7 @@ report_revisions_and_depths(svn_wc__db_t
               const char *file_ext_str;
 
               this_switched = TRUE;
-             
+
               /* This could be a file external!  We need to know
                  that. */
               SVN_ERR(svn_wc__db_temp_get_file_external(&file_ext_str, db,

Modified: subversion/branches/performance/subversion/libsvn_wc/adm_ops.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/adm_ops.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/adm_ops.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/adm_ops.c Thu Jan  6 19:15:40 2011
@@ -74,7 +74,7 @@ struct svn_wc_committed_queue_t
   svn_boolean_t have_recursive;
 };
 
-typedef struct
+typedef struct committed_queue_item_t
 {
   const char *local_abspath;
   svn_boolean_t recurse;
@@ -1108,7 +1108,7 @@ svn_wc_add4(svn_wc_context_t *wc_ctx,
         {
           /* This code should never be used, as it doesn't install proper
              pristine and/or properties. But it was not an error in the old
-             version of this function. 
+             version of this function.
 
              ===> Use svn_wc_add_repos_file4() directly! */
           svn_stream_t *content = svn_stream_empty(scratch_pool);
@@ -1869,7 +1869,7 @@ svn_wc__internal_remove_from_revision_co
 
           entry_abspath = svn_dirent_join(local_abspath, entry_name, iterpool);
 
-          /* ### where did the adm_missing and depth_exclude test go?!? 
+          /* ### where did the adm_missing and depth_exclude test go?!?
 
              ### BH: depth exclude is handled by hidden and missing is ok
                      for this temp_op. */

Modified: subversion/branches/performance/subversion/libsvn_wc/ambient_depth_filter_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/ambient_depth_filter_editor.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/ambient_depth_filter_editor.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/ambient_depth_filter_editor.c Thu Jan  6 19:15:40 2011
@@ -301,7 +301,7 @@ make_file_baton(struct file_baton **f_p,
          depth==empty.  So if the parent doesn't
          already have an entry for the file, then the parent
          doesn't want to hear about the file at all. */
-      
+
       if (hidden || kind == svn_wc__db_kind_unknown)
         {
           f->ambiently_excluded = TRUE;

Modified: subversion/branches/performance/subversion/libsvn_wc/conflicts.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/conflicts.h?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/conflicts.h (original)
+++ subversion/branches/performance/subversion/libsvn_wc/conflicts.h Thu Jan  6 19:15:40 2011
@@ -58,10 +58,10 @@ svn_wc__conflict_skel_new(apr_pool_t *re
 
 /* Set 'update' as the conflicting operation in CONFLICT_SKEL.
    Allocate data stored in the skel in RESULT_POOL.
- 
+
    BASE_REVISION is the revision the node was at before the update.
    TARGET_REVISION is the revision being updated to.
- 
+
    Do temporary allocations in SCRATCH_POOL. */
 svn_error_t *
 svn_wc__conflict_skel_set_op_update(svn_skel_t *conflict_skel,
@@ -92,7 +92,7 @@ svn_wc__conflict_skel_set_op_switch(svn_
    Allocate data stored in the skel in RESULT_POOL.
 
    REPOS_UUID is the UUID of the repository accessed via REPOS_ROOT_URL.
-  
+
    LEFT_REPOS_RELPATH and RIGHT_REPOS_RELPATH paths to the merge-left
    and merge-right merge sources, relative to REPOS_URL
 

Modified: subversion/branches/performance/subversion/libsvn_wc/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/copy.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/copy.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/copy.c Thu Jan  6 19:15:40 2011
@@ -114,7 +114,7 @@ copy_to_tmpdir(const char **dst_abspath,
                              scratch_pool));
   else
     SVN_ERR(svn_io_copy_link(src_abspath, *dst_abspath, scratch_pool));
-    
+
 
   return SVN_NO_ERROR;
 }
@@ -461,7 +461,7 @@ svn_wc_copy3(svn_wc_context_t *wc_ctx,
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(src_abspath));
   SVN_ERR_ASSERT(svn_dirent_is_absolute(dst_abspath));
-  
+
   dstdir_abspath = svn_dirent_dirname(dst_abspath, scratch_pool);
 
   /* Ensure DSTDIR_ABSPATH belongs to the same repository as SRC_ABSPATH;

Modified: subversion/branches/performance/subversion/libsvn_wc/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/deprecated.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/deprecated.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/deprecated.c Thu Jan  6 19:15:40 2011
@@ -3637,7 +3637,7 @@ svn_wc_copy2(const char *src,
   SVN_ERR(svn_wc_copy3(wc_ctx,
                        src_abspath,
                        dst_abspath,
-                       FALSE /* metadata_only */, 
+                       FALSE /* metadata_only */,
                        cancel_func, cancel_baton,
                        notify_func, notify_baton,
                        pool));

Modified: subversion/branches/performance/subversion/libsvn_wc/entries.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/entries.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/entries.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/entries.c Thu Jan  6 19:15:40 2011
@@ -52,7 +52,7 @@
 
 /* Temporary structures which mirror the tables in wc-metadata.sql.
    For detailed descriptions of each field, see that file. */
-typedef struct {
+typedef struct db_base_node_t {
   apr_int64_t wc_id;
   const char *local_relpath;
   apr_int64_t repos_id;
@@ -71,7 +71,7 @@ typedef struct {
   apr_hash_t *properties;
 } db_base_node_t;
 
-typedef struct {
+typedef struct db_working_node_t {
   apr_int64_t wc_id;
   const char *local_relpath;
   apr_int64_t op_depth;
@@ -93,7 +93,7 @@ typedef struct {
   apr_hash_t *properties;
 } db_working_node_t;
 
-typedef struct {
+typedef struct db_actual_node_t {
   apr_int64_t wc_id;
   const char *local_relpath;
   const char *parent_relpath;
@@ -540,8 +540,8 @@ read_one_entry(const svn_wc_entry_t **ne
         entry->copied = TRUE;
 
       /* If there is still a directory on-disk we keep it, if not it is
-         already deleted. Simple, isn't it? 
-         
+         already deleted. Simple, isn't it?
+
          Before single-db we had to keep the administative area alive until
          after the commit really deletes it. Setting keep alive stopped the
          commit processing from deleting the directory. We don't delete it
@@ -625,7 +625,7 @@ read_one_entry(const svn_wc_entry_t **ne
                                            entry_abspath,
                                            result_pool, scratch_pool));
 
-          /* In wc.db we want to keep the valid revision of the not-present 
+          /* In wc.db we want to keep the valid revision of the not-present
              BASE_REV, but when we used entries we set the revision to 0
              when adding a new node over a not present base node. */
           if (work_status == svn_wc__db_status_added
@@ -1992,7 +1992,14 @@ write_entry(struct write_baton **entry_n
 
       /* The revert_base checksum isn't available in the entry structure,
          so the caller provides it. */
-      below_working_node->checksum = text_base_info->revert_base.sha1_checksum;
+
+      /* text_base_info is NULL for files scheduled to be added. */
+      below_working_node->checksum = NULL;
+      if (text_base_info)
+        {
+          below_working_node->checksum =
+             text_base_info->revert_base.sha1_checksum;
+        }
       below_working_node->translated_size = 0;
       below_working_node->changed_rev = SVN_INVALID_REVNUM;
       below_working_node->changed_date = 0;
@@ -2025,12 +2032,16 @@ write_entry(struct write_baton **entry_n
         working_node->checksum = NULL;
       else
         {
-          working_node->checksum = text_base_info->normal_base.sha1_checksum;
+          working_node->checksum = NULL;
+          /* text_base_info is NULL for files scheduled to be added. */
+          if (text_base_info)
+            working_node->checksum = text_base_info->normal_base.sha1_checksum;
+         
 
           /* If an MD5 checksum is present in the entry, we can verify that
            * it matches the MD5 of the base file we found earlier. */
 #ifdef SVN_DEBUG
-          if (entry->checksum)
+          if (entry->checksum && text_base_info)
           {
             svn_checksum_t *md5_checksum;
             SVN_ERR(svn_checksum_parse_hex(&md5_checksum, svn_checksum_md5,

Modified: subversion/branches/performance/subversion/libsvn_wc/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/lock.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/lock.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/lock.c Thu Jan  6 19:15:40 2011
@@ -162,19 +162,19 @@ svn_wc__internal_check_wc(int *wc_format
                 return SVN_NO_ERROR;
               }
           }
-      
+
         err = svn_wc__db_read_info(&db_status, &db_kind, NULL, NULL, NULL,
                                    NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                                    NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                                    NULL, NULL, NULL, NULL, NULL,
                                    db, local_abspath,
                                    scratch_pool, scratch_pool);
-      
+
         if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
           {
             svn_error_clear(err);
             *wc_format = 0;
-            return SVN_NO_ERROR; 
+            return SVN_NO_ERROR;
           }
         else
           SVN_ERR(err);

Modified: subversion/branches/performance/subversion/libsvn_wc/lock.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/lock.h?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/lock.h (original)
+++ subversion/branches/performance/subversion/libsvn_wc/lock.h Thu Jan  6 19:15:40 2011
@@ -59,7 +59,7 @@ svn_wc__adm_retrieve_internal2(svn_wc__d
 /* ### this is probably bunk. but I dunna want to trace backwards-compat
    ### users of svn_wc_check_wc(). probably gonna be rewritten for wc-ng
    ### in any case.
-   
+
    If CHECK_PATH is TRUE, a not-existing directory is not a working copy */
 svn_error_t *
 svn_wc__internal_check_wc(int *wc_format,

Modified: subversion/branches/performance/subversion/libsvn_wc/node.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/node.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/node.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/node.c Thu Jan  6 19:15:40 2011
@@ -421,7 +421,7 @@ svn_wc__node_get_url(const char **url,
                             result_pool, scratch_pool));
 }
 
-/* ### This is essentially a copy-paste of svn_wc__internal_get_url(). 
+/* ### This is essentially a copy-paste of svn_wc__internal_get_url().
  * ### If we decide to keep this one, then it should be rewritten to avoid
  * ### code duplication.*/
 svn_error_t *
@@ -980,11 +980,11 @@ svn_wc__node_get_base_rev(svn_revnum_t *
 
 svn_error_t *
 svn_wc__node_get_working_rev_info(svn_revnum_t *revision,
-                                  svn_revnum_t *changed_rev, 
-                                  apr_time_t *changed_date, 
+                                  svn_revnum_t *changed_rev,
+                                  apr_time_t *changed_date,
                                   const char **changed_author,
-                                  svn_wc_context_t *wc_ctx, 
-                                  const char *local_abspath, 
+                                  svn_wc_context_t *wc_ctx,
+                                  const char *local_abspath,
                                   apr_pool_t *scratch_pool,
                                   apr_pool_t *result_pool)
 {
@@ -1016,7 +1016,7 @@ svn_wc__node_get_working_rev_info(svn_re
                                        NULL, changed_rev, changed_date,
                                        changed_author, NULL, NULL, NULL,
                                        NULL, NULL, NULL, NULL, NULL, NULL,
-                                       NULL, NULL, NULL, NULL, 
+                                       NULL, NULL, NULL, NULL,
                                        NULL, NULL, wc_ctx->db, work_del_abspath,
                                        result_pool, scratch_pool));
         }
@@ -1169,7 +1169,7 @@ svn_wc__node_get_lock_info(const char **
     *lock_comment = lock ? lock->comment : NULL;
   if (lock_date)
     *lock_date = lock ? lock->date : 0;
-      
+
   return SVN_NO_ERROR;
 }
 

Modified: subversion/branches/performance/subversion/libsvn_wc/props.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/props.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/props.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/props.c Thu Jan  6 19:15:40 2011
@@ -480,7 +480,7 @@ generate_conflict_message(const char *pr
                                       "value '%s',\nbut property with value "
                                       "'%s' is locally deleted."),
                                     propname, incoming_base->data,
-                                    original->data);          
+                                    original->data);
         }
 
       /* We were trying to delete INCOMING_BASE but our ORIGINAL is
@@ -535,7 +535,7 @@ generate_conflict_message(const char *pr
                                 "added with value '%s'."),
                               propname, incoming_base->data, incoming->data,
                               mine->data);
-  
+
   return svn_string_createf(result_pool,
                             _("Trying to change property '%s' from '%s' to "
                               "'%s',\nbut the property does not exist."),

Modified: subversion/branches/performance/subversion/libsvn_wc/relocate.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/relocate.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/relocate.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/relocate.c Thu Jan  6 19:15:40 2011
@@ -136,7 +136,7 @@ svn_wc_relocate4(svn_wc_context_t *wc_ct
                              _("Invalid source URL prefix: '%s' (does not "
                                "overlap target's URL '%s')"),
                              from, old_url);
-  
+
   if (old_url_len == from_len)
     new_url = to;
   else

Modified: subversion/branches/performance/subversion/libsvn_wc/revision_status.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/revision_status.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/revision_status.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/revision_status.c Thu Jan  6 19:15:40 2011
@@ -59,12 +59,12 @@ analyze_status(const char *local_abspath
   struct walk_baton *wb = baton;
   svn_revnum_t changed_rev;
   svn_revnum_t revision;
-  svn_revnum_t item_rev; 
+  svn_revnum_t item_rev;
   svn_depth_t depth;
   svn_wc__db_status_t status;
 
-  SVN_ERR(svn_wc__db_read_info(&status, NULL, &revision, NULL, 
-                               NULL, NULL, &changed_rev, 
+  SVN_ERR(svn_wc__db_read_info(&status, NULL, &revision, NULL,
+                               NULL, NULL, &changed_rev,
                                NULL, NULL, NULL, &depth, NULL, NULL, NULL,
                                NULL, NULL, NULL, NULL, NULL, NULL,
                                NULL, NULL, NULL, NULL, wb->db,
@@ -73,7 +73,7 @@ analyze_status(const char *local_abspath
   /* We need the excluded and absent paths when checking for sparse
    * checkouts. But only for that. To collect those we're walking all the
    * hidden nodes. */
-  if (status == svn_wc__db_status_excluded 
+  if (status == svn_wc__db_status_excluded
       || status == svn_wc__db_status_absent)
     {
       wb->result->sparse_checkout = TRUE;
@@ -86,7 +86,7 @@ analyze_status(const char *local_abspath
   else if (status == svn_wc__db_status_added
            || status == svn_wc__db_status_deleted)
     {
-      wb->result->modified = TRUE; 
+      wb->result->modified = TRUE;
     }
 
   if (! wb->result->switched)
@@ -135,10 +135,10 @@ analyze_status(const char *local_abspath
                                                FALSE,
                                                TRUE,
                                                scratch_pool));
-      wb->result->modified |= text_mod; 
+      wb->result->modified |= text_mod;
     }
 
-  wb->result->sparse_checkout |= (depth != svn_depth_infinity 
+  wb->result->sparse_checkout |= (depth != svn_depth_infinity
                                   && depth != svn_depth_unknown);
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/performance/subversion/libsvn_wc/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/status.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/status.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/status.c Thu Jan  6 19:15:40 2011
@@ -187,7 +187,7 @@ struct dir_baton
   /* out-of-date info corresponding to ood_* fields in svn_wc_status3_t. */
   svn_node_kind_t ood_kind;
   svn_revnum_t ood_changed_rev;
-  apr_time_t ood_changed_date;  
+  apr_time_t ood_changed_date;
   const char *ood_changed_author;
 };
 
@@ -243,7 +243,7 @@ read_info(const struct svn_wc__db_info_t
           apr_pool_t *result_pool,
           apr_pool_t *scratch_pool)
 {
-  struct svn_wc__db_info_t *mutable 
+  struct svn_wc__db_info_t *mutable
     = apr_palloc(scratch_pool, sizeof(struct svn_wc__db_info_t));
 
   SVN_ERR(svn_wc__db_read_info(&mutable->status, &mutable->kind,
@@ -560,7 +560,7 @@ assemble_status(svn_wc_status3_t **statu
                                             db, local_abspath, scratch_pool));
 
       if (!text_conflicted && !prop_conflicted && !tree_conflicted)
-        conflicted = FALSE; 
+        conflicted = FALSE;
     }
 
   if (node_status == svn_wc_status_normal)
@@ -586,7 +586,7 @@ assemble_status(svn_wc_status3_t **statu
 
   if (node_status == svn_wc_status_normal)
     node_status = text_status;
-  
+
   if (node_status == svn_wc_status_normal
       && prop_status != svn_wc_status_none)
     node_status = prop_status;
@@ -599,7 +599,7 @@ assemble_status(svn_wc_status3_t **statu
          || (node_status == svn_wc_status_normal))
 
         && (! switched_p)
-        && (! info->lock) 
+        && (! info->lock)
         && (! repos_lock)
         && (! info->changelist)
         && (! conflicted))
@@ -2530,8 +2530,8 @@ internal_status(svn_wc_status3_t **statu
       else if (err)
         return svn_error_return(err);
 
-      if (!err 
-          && parent_repos_relpath == NULL 
+      if (!err
+          && parent_repos_relpath == NULL
           && parent_status != svn_wc__db_status_added
           && parent_status != svn_wc__db_status_deleted)
         SVN_ERR(svn_wc__db_scan_base_repos(&parent_repos_relpath,

Modified: subversion/branches/performance/subversion/libsvn_wc/update_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/update_editor.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/update_editor.c Thu Jan  6 19:15:40 2011
@@ -275,9 +275,6 @@ struct dir_baton
   /* Set if updates to this directory are skipped */
   svn_boolean_t skip_this;
 
-  /* Set if updates to all descendants of this directory are skipped */
-  svn_boolean_t skip_descendants;
-
   /* Set if there was a previous notification for this directory */
   svn_boolean_t already_notified;
 
@@ -935,7 +932,7 @@ struct file_baton
 
   /* The last-changed-date of the file.  This is actually a property
      that comes through as an 'entry prop', and will be used to set
-     the working file's timestamp if it's added. 
+     the working file's timestamp if it's added.
 
      Will be NULL unless eb->use_commit_times is TRUE. */
   const char *last_changed_date;
@@ -1081,8 +1078,6 @@ static svn_error_t *
 accumulate_last_change(svn_revnum_t *changed_rev,
                        apr_time_t *changed_date,
                        const char **changed_author,
-                       svn_wc__db_t *db,
-                       const char *local_abspath,
                        const apr_array_header_t *entry_props,
                        apr_pool_t *scratch_pool,
                        apr_pool_t *result_pool)
@@ -1214,7 +1209,6 @@ open_root(void *edit_baton,
   if (already_conflicted)
     {
       db->skip_this = TRUE;
-      db->skip_descendants = TRUE;
       db->already_notified = TRUE;
       db->bump_info->skipped = TRUE;
 
@@ -1947,7 +1941,7 @@ do_entry_deletion(struct edit_baton *eb,
     }
 
     /* Receive the remote removal of excluded/absent/not present node.
-       Do not notify. 
+       Do not notify.
 
        ### This is wrong if svn_wc__db_status_excluded refers to a
            working node replacing the base node.  */
@@ -2024,7 +2018,7 @@ do_entry_deletion(struct edit_baton *eb,
           /* The item was locally replaced with something else. We should
            * remove the BASE node below the new working node, which turns
            * the replacement in an addition. */
-           
+
            /* Fall through to the normal "delete" code path. */
         }
       else
@@ -2084,13 +2078,8 @@ delete_entry(const char *path,
 
   local_abspath = svn_dirent_join(pb->local_abspath, base, pool);
 
-  if (pb->skip_descendants)
-    {
-      if (!pb->skip_this)
-        SVN_ERR(remember_skipped_tree(pb->edit_baton, local_abspath));
-
-      return SVN_NO_ERROR;
-    }
+  if (pb->skip_this)
+    return SVN_NO_ERROR;
 
   SVN_ERR(check_path_under_root(pb->local_abspath, base, pool));
 
@@ -2128,13 +2117,9 @@ add_directory(const char *path,
   SVN_ERR(make_dir_baton(&db, path, eb, pb, TRUE, pool));
   *child_baton = db;
 
-  if (pb->skip_descendants)
+  if (pb->skip_this)
     {
-      if (!pb->skip_this)
-        SVN_ERR(remember_skipped_tree(eb, db->local_abspath));
-
       db->skip_this = TRUE;
-      db->skip_descendants = TRUE;
       db->already_notified = TRUE;
 
       return SVN_NO_ERROR;
@@ -2231,7 +2216,6 @@ add_directory(const char *path,
       SVN_ERR(remember_skipped_tree(eb, db->local_abspath));
 
       db->skip_this = TRUE;
-      db->skip_descendants = TRUE;
       db->already_notified = TRUE;
 
       /* ### TODO: Also print victim_path in the skip msg. */
@@ -2416,7 +2400,6 @@ add_directory(const char *path,
       SVN_ERR(remember_skipped_tree(eb, db->local_abspath));
 
       db->skip_this = TRUE;
-      db->skip_descendants = TRUE;
       db->already_notified = TRUE;
 
       do_notification(eb, db->local_abspath, svn_node_unknown,
@@ -2486,13 +2469,9 @@ open_directory(const char *path,
   /* We should have a write lock on every directory touched.  */
   SVN_ERR(svn_wc__write_check(eb->db, db->local_abspath, pool));
 
-  if (pb->skip_descendants)
+  if (pb->skip_this)
     {
-      if (!pb->skip_this)
-        SVN_ERR(remember_skipped_tree(eb, db->local_abspath));
-
       db->skip_this = TRUE;
-      db->skip_descendants = TRUE;
       db->already_notified = TRUE;
 
       db->bump_info->skipped = TRUE;
@@ -2529,7 +2508,6 @@ open_directory(const char *path,
       SVN_ERR(remember_skipped_tree(eb, db->local_abspath));
 
       db->skip_this = TRUE;
-      db->skip_descendants = TRUE;
       db->already_notified = TRUE;
 
       do_notification(eb, db->local_abspath, svn_node_unknown,
@@ -2566,7 +2544,6 @@ open_directory(const char *path,
           tree_conflict->reason != svn_wc_conflict_reason_replaced)
         {
           SVN_ERR(remember_skipped_tree(eb, db->local_abspath));
-          db->skip_descendants = TRUE;
           db->skip_this = TRUE;
 
           return SVN_NO_ERROR;
@@ -2797,7 +2774,7 @@ close_directory(void *dir_baton,
       SVN_ERR(accumulate_last_change(&new_changed_rev,
                                      &new_changed_date,
                                      &new_changed_author,
-                                     eb->db, db->local_abspath, entry_props,
+                                     entry_props,
                                      pool, pool));
     }
 
@@ -3035,14 +3012,10 @@ add_file(const char *path,
   SVN_ERR(make_file_baton(&fb, pb, path, TRUE, pool));
   *file_baton = fb;
 
-  if (pb->skip_descendants)
+  if (pb->skip_this)
     {
-      if (!pb->skip_this)
-        SVN_ERR(remember_skipped_tree(eb, fb->local_abspath));
-
       fb->skip_this = TRUE;
       fb->already_notified = TRUE;
-
       return SVN_NO_ERROR;
     }
 
@@ -3322,14 +3295,10 @@ open_file(const char *path,
   SVN_ERR(make_file_baton(&fb, pb, path, FALSE, pool));
   *file_baton = fb;
 
-  if (pb->skip_descendants)
+  if (pb->skip_this)
     {
-      if (!pb->skip_this)
-        SVN_ERR(remember_skipped_tree(eb, fb->local_abspath));
-
       fb->skip_this = TRUE;
       fb->already_notified = TRUE;
-
       return SVN_NO_ERROR;
     }
 
@@ -4099,7 +4068,6 @@ close_file(void *file_baton,
   SVN_ERR(accumulate_last_change(&new_changed_rev,
                                  &new_changed_date,
                                  &new_changed_author,
-                                 eb->db, fb->local_abspath,
                                  entry_props,
                                  pool, pool));
 
@@ -5550,7 +5518,6 @@ svn_wc_add_repos_file4(svn_wc_context_t 
     SVN_ERR(accumulate_last_change(&changed_rev,
                                    &changed_date,
                                    &changed_author,
-                                   db, local_abspath,
                                    entry_props, pool, pool));
   }
 

Modified: subversion/branches/performance/subversion/libsvn_wc/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/util.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/util.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/util.c Thu Jan  6 19:15:40 2011
@@ -642,7 +642,7 @@ svn_wc__status2_from_3(svn_wc_status2_t 
   if (old_status->versioned
       && old_status->conflicted
       && old_status->node_status != svn_wc_status_obstructed
-      && (old_status->kind == svn_node_file 
+      && (old_status->kind == svn_node_file
           || old_status->node_status != svn_wc_status_missing))
     {
       svn_boolean_t text_conflict_p, prop_conflict_p;

Modified: subversion/branches/performance/subversion/libsvn_wc/wc-metadata.sql
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/wc-metadata.sql?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/wc-metadata.sql (original)
+++ subversion/branches/performance/subversion/libsvn_wc/wc-metadata.sql Thu Jan  6 19:15:40 2011
@@ -492,9 +492,9 @@ INSERT INTO NODES (
        changed_revision, changed_date, changed_author,
        checksum, properties, translated_size, last_mod_time,
        dav_cache, symlink_target, file_external )
-SELECT wc_id, local_relpath, 0 AS op_depth, parent_relpath,
+SELECT wc_id, local_relpath, 0 /*op_depth*/, parent_relpath,
        repos_id, repos_relpath, revnum,
-       presence, depth, NULL AS moved_here, NULL AS moved_to, kind,
+       presence, depth, NULL /*moved_here*/, NULL /*moved_to*/, kind,
        changed_rev, changed_date, changed_author,
        checksum, properties, translated_size, last_mod_time,
        dav_cache, symlink_target, file_external
@@ -506,12 +506,12 @@ INSERT INTO NODES (
        changed_revision, changed_date, changed_author,
        checksum, properties, translated_size, last_mod_time,
        dav_cache, symlink_target, file_external )
-SELECT wc_id, local_relpath, 2 AS op_depth, parent_relpath,
+SELECT wc_id, local_relpath, 2 /*op_depth*/, parent_relpath,
        copyfrom_repos_id, copyfrom_repos_path, copyfrom_revnum,
-       presence, depth, NULL AS moved_here, NULL AS moved_to, kind,
+       presence, depth, NULL /*moved_here*/, NULL /*moved_to*/, kind,
        changed_rev, changed_date, changed_author,
        checksum, properties, translated_size, last_mod_time,
-       NULL AS dav_cache, symlink_target, NULL AS file_external
+       NULL /*dav_cache*/, symlink_target, NULL /*file_external*/
 FROM WORKING_NODE;
 
 DROP TABLE BASE_NODE;

Modified: subversion/branches/performance/subversion/libsvn_wc/wc-queries.sql
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/wc-queries.sql?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/branches/performance/subversion/libsvn_wc/wc-queries.sql Thu Jan  6 19:15:40 2011
@@ -516,7 +516,7 @@ INSERT OR REPLACE INTO nodes (
     wc_id, local_relpath, op_depth, parent_relpath, presence, kind, checksum,
     changed_revision, changed_date, changed_author, depth, symlink_target,
     translated_size, last_mod_time, properties)
-SELECT wc_id, local_relpath, ?3 AS op_depth, parent_relpath, ?4 AS presence,
+SELECT wc_id, local_relpath, ?3 /*op_depth*/, parent_relpath, ?4 /*presence*/,
        kind, checksum, changed_revision, changed_date, changed_author, depth,
        symlink_target, translated_size, last_mod_time, properties
 FROM nodes
@@ -527,7 +527,7 @@ INSERT OR REPLACE INTO nodes (
     wc_id, local_relpath, op_depth, parent_relpath, presence, kind, checksum,
     changed_revision, changed_date, changed_author, depth, symlink_target,
     translated_size, last_mod_time, properties)
-SELECT wc_id, local_relpath, ?3 AS op_depth, parent_relpath, ?4 AS presence,
+SELECT wc_id, local_relpath, ?3 /*op_depth*/, parent_relpath, ?4 /*presence*/,
        kind, checksum, changed_revision, changed_date, changed_author, depth,
        symlink_target, translated_size, last_mod_time, properties
 FROM nodes
@@ -541,7 +541,7 @@ INSERT INTO nodes (
     revision, presence, depth, kind, changed_revision, changed_date,
     changed_author, checksum, properties, translated_size, last_mod_time,
     symlink_target )
-SELECT wc_id, local_relpath, ?3 AS op_depth, parent_relpath, repos_id,
+SELECT wc_id, local_relpath, ?3 /*op_depth*/, parent_relpath, repos_id,
     repos_path, revision, presence, depth, kind, changed_revision,
     changed_date, changed_author, checksum, properties, translated_size,
     last_mod_time, symlink_target
@@ -554,8 +554,8 @@ INSERT INTO nodes (
     revision, presence, depth, kind, changed_revision, changed_date,
     changed_author, checksum, properties, translated_size, last_mod_time,
     symlink_target )
-SELECT wc_id, local_relpath, ?3 AS op_depth, parent_relpath, repos_id,
-    repos_path, revision, ?4 AS presence, depth, kind, changed_revision,
+SELECT wc_id, local_relpath, ?3 /*op_depth*/, parent_relpath, repos_id,
+    repos_path, revision, ?4 /*presence*/, depth, kind, changed_revision,
     changed_date, changed_author, checksum, properties, translated_size,
     last_mod_time, symlink_target
 FROM nodes
@@ -607,8 +607,8 @@ INSERT OR REPLACE INTO nodes (
     repos_path, revision, presence, depth, kind, changed_revision,
     changed_date, changed_author, checksum, properties, translated_size,
     last_mod_time, symlink_target )
-SELECT wc_id, ?3 AS local_relpath, ?4 AS op_depth, ?5 AS parent_relpath,
-    ?6 AS repos_id, ?7 AS repos_path, ?8 AS revision, ?9 AS presence, depth,
+SELECT wc_id, ?3 /*local_relpath*/, ?4 /*op_depth*/, ?5 /*parent_relpath*/,
+    ?6 /*repos_id*/, ?7 /*repos_path*/, ?8 /*revision*/, ?9 /*presence*/, depth,
     kind, changed_revision, changed_date, changed_author, checksum, properties,
     translated_size, last_mod_time, symlink_target
 FROM nodes
@@ -620,8 +620,8 @@ INSERT OR REPLACE INTO nodes (
     revision, presence, depth, kind, changed_revision, changed_date,
     changed_author, checksum, properties, translated_size, last_mod_time,
     symlink_target )
-SELECT wc_id, ?3 AS local_relpath, ?4 AS op_depth, ?5 AS parent_relpath,
-    ?6 AS repos_id, ?7 AS repos_path, ?8 AS revision, ?9 AS presence, depth,
+SELECT wc_id, ?3 /*local_relpath*/, ?4 /*op_depth*/, ?5 /*parent_relpath*/,
+    ?6 /*repos_id*/, ?7 /*repos_path*/, ?8 /*revision*/, ?9 /*presence*/, depth,
     kind, changed_revision, changed_date, changed_author, checksum, properties,
     translated_size, last_mod_time, symlink_target
 FROM nodes
@@ -634,7 +634,7 @@ INSERT OR REPLACE INTO actual_node (
      wc_id, local_relpath, parent_relpath, properties,
      conflict_old, conflict_new, conflict_working,
      prop_reject, changelist, text_mod, tree_conflict_data )
-SELECT wc_id, ?3 AS local_relpath, ?4 AS parent_relpath, properties,
+SELECT wc_id, ?3 /*local_relpath*/, ?4 /*parent_relpath*/, properties,
      conflict_old, conflict_new, conflict_working,
      prop_reject, changelist, text_mod, tree_conflict_data
 FROM actual_node

Modified: subversion/branches/performance/subversion/libsvn_wc/wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/wc.h?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/wc.h (original)
+++ subversion/branches/performance/subversion/libsvn_wc/wc.h Thu Jan  6 19:15:40 2011
@@ -122,7 +122,7 @@ extern "C" {
  * the working copy.
  *
  * The change from 19 to 20 introduces NODES and drops BASE_NODE and
- * WORKING_NODE, op_depth is always 0 or 2. 
+ * WORKING_NODE, op_depth is always 0 or 2.
  *
  * The change from 20 to 21 moved tree conflict storage from the
  * parent to the conflicted node.

Modified: subversion/branches/performance/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/wc_db.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/wc_db.c Thu Jan  6 19:15:40 2011
@@ -170,7 +170,7 @@ typedef struct insert_base_baton_t {
 } insert_base_baton_t;
 
 
-typedef struct {
+typedef struct insert_working_baton_t {
   /* common to all insertions into WORKING (including NODE_DATA) */
   svn_wc__db_status_t presence;
   svn_wc__db_kind_t kind;
@@ -723,7 +723,7 @@ blank_ibb(insert_base_baton_t *pibb)
 
               0         1         2         3         4
               normal
-   A          normal          
+   A          normal
    A/B        normal              normal
    A/B/C                          not-pres  normal
    A/B/C/D                                            normal
@@ -733,7 +733,7 @@ blank_ibb(insert_base_baton_t *pibb)
 
    Now an update that adds base nodes for A/B/C, A/B/C/D and A/B/C/D/E
    must extend the A/B deletion:
-   
+
               0         1         2         3         4
               normal
    A          normal
@@ -2489,10 +2489,10 @@ svn_wc__db_pristine_get_sha1(const svn_c
 }
 
 
-/* Delete the pristine text referenced by SHA1_CHECKSUM in the database
- * referenced by PDH. */
+/* Delete the pristine text referenced by SHA1_CHECKSUM from the pristine
+ * store of WCROOT.  Delete both the database row and the file on disk. */
 static svn_error_t *
-pristine_remove(svn_wc__db_pdh_t *pdh,
+pristine_remove(svn_wc__db_wcroot_t *wcroot,
                 const svn_checksum_t *sha1_checksum,
                 apr_pool_t *scratch_pool)
 {
@@ -2500,13 +2500,13 @@ pristine_remove(svn_wc__db_pdh_t *pdh,
   const char *pristine_abspath;
 
   /* Remove the DB row. */
-  SVN_ERR(svn_sqlite__get_statement(&stmt, pdh->wcroot->sdb,
+  SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
                                     STMT_DELETE_PRISTINE));
   SVN_ERR(svn_sqlite__bind_checksum(stmt, 1, sha1_checksum, scratch_pool));
   SVN_ERR(svn_sqlite__update(NULL, stmt));
 
   /* Remove the file */
-  SVN_ERR(get_pristine_fname(&pristine_abspath, pdh->wcroot->abspath,
+  SVN_ERR(get_pristine_fname(&pristine_abspath, wcroot->abspath,
                              sha1_checksum, TRUE /* create_subdir */,
                              scratch_pool, scratch_pool));
   SVN_ERR(svn_io_remove_file2(pristine_abspath, TRUE /* ignore_enoent */,
@@ -2577,31 +2577,21 @@ svn_wc__db_pristine_remove(svn_wc__db_t 
   /* If not referenced, remove the PRISTINE table row and the file. */
   if (! is_referenced)
     {
-      SVN_ERR(pristine_remove(pdh, sha1_checksum, scratch_pool));
+      SVN_ERR(pristine_remove(pdh->wcroot, sha1_checksum, scratch_pool));
     }
 
   return SVN_NO_ERROR;
 }
 
 
-svn_error_t *
-svn_wc__db_pristine_cleanup(svn_wc__db_t *db,
-                            const char *wri_abspath,
-                            apr_pool_t *scratch_pool)
+static svn_error_t *
+pristine_cleanup_wcroot(svn_wc__db_wcroot_t *wcroot,
+                        apr_pool_t *scratch_pool)
 {
-  svn_wc__db_pdh_t *pdh;
-  const char *local_relpath;
   svn_sqlite__stmt_t *stmt;
 
-  SVN_ERR_ASSERT(svn_dirent_is_absolute(wri_abspath));
-
-  SVN_ERR(svn_wc__db_pdh_parse_local_abspath(&pdh, &local_relpath, db,
-                              wri_abspath, svn_sqlite__mode_readonly,
-                              scratch_pool, scratch_pool));
-  VERIFY_USABLE_PDH(pdh);
-
   /* Find each unreferenced pristine in the DB and remove it. */
-  SVN_ERR(svn_sqlite__get_statement(&stmt, pdh->wcroot->sdb,
+  SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
                                     STMT_SELECT_UNREFERENCED_PRISTINES));
   while (1)
     {
@@ -2614,7 +2604,7 @@ svn_wc__db_pristine_cleanup(svn_wc__db_t
 
       SVN_ERR(svn_sqlite__column_checksum(&sha1_checksum, stmt, 0,
                                           scratch_pool));
-      SVN_ERR(pristine_remove(pdh, sha1_checksum, scratch_pool));
+      SVN_ERR(pristine_remove(wcroot, sha1_checksum, scratch_pool));
     }
   SVN_ERR(svn_sqlite__reset(stmt));
 
@@ -2623,6 +2613,27 @@ svn_wc__db_pristine_cleanup(svn_wc__db_t
 
 
 svn_error_t *
+svn_wc__db_pristine_cleanup(svn_wc__db_t *db,
+                            const char *wri_abspath,
+                            apr_pool_t *scratch_pool)
+{
+  svn_wc__db_pdh_t *pdh;
+  const char *local_relpath;
+
+  SVN_ERR_ASSERT(svn_dirent_is_absolute(wri_abspath));
+
+  SVN_ERR(svn_wc__db_pdh_parse_local_abspath(&pdh, &local_relpath, db,
+                              wri_abspath, svn_sqlite__mode_readonly,
+                              scratch_pool, scratch_pool));
+  VERIFY_USABLE_PDH(pdh);
+
+  SVN_ERR(pristine_cleanup_wcroot(pdh->wcroot, scratch_pool));
+
+  return SVN_NO_ERROR;
+}
+
+
+svn_error_t *
 svn_wc__db_pristine_check(svn_boolean_t *present,
                           svn_wc__db_t *db,
                           const char *wri_abspath,
@@ -3221,7 +3232,7 @@ op_depth_for_copy(apr_int64_t *op_depth,
         }
     }
   SVN_ERR(svn_sqlite__reset(stmt));
-  
+
   return SVN_NO_ERROR;
 }
 
@@ -4109,7 +4120,7 @@ read_all_tree_conflicts(apr_hash_t **tre
       const char *conflict_data;
       const svn_skel_t *skel;
       const svn_wc_conflict_description2_t *conflict;
-      
+
       svn_pool_clear(iterpool);
 
       child_relpath = svn_sqlite__column_text(stmt, 0, NULL);
@@ -4728,7 +4739,7 @@ info_below_working(svn_boolean_t *have_b
             *have_work = TRUE;
           else
             *have_base = TRUE;
-              
+
           *status = svn_sqlite__column_token(stmt, 3, presence_map);
           if (op_depth > 0)
             SVN_ERR(convert_to_working_status(status, *status));
@@ -4855,7 +4866,7 @@ svn_wc__db_temp_op_delete(svn_wc__db_t *
   VERIFY_USABLE_PDH(b.pdh);
 
   /* These two for svn_wc__db_temp_forget_directory */
-  b.db = db; 
+  b.db = db;
   b.local_abspath = local_abspath;
 
   SVN_ERR(svn_sqlite__with_transaction(b.pdh->wcroot->sdb, temp_op_delete_txn,
@@ -6176,7 +6187,7 @@ svn_wc__db_global_commit(svn_wc__db_t *d
 
   cb.new_revision = new_revision;
 
-  cb.changed_rev = changed_revision; 
+  cb.changed_rev = changed_revision;
   cb.changed_date = changed_date;
   cb.changed_author = changed_author;
   cb.new_checksum = new_checksum;
@@ -8751,7 +8762,7 @@ svn_wc__db_temp_op_set_file_external(svn
   svn_boolean_t got_row;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
-  SVN_ERR_ASSERT(!repos_relpath 
+  SVN_ERR_ASSERT(!repos_relpath
                  || svn_relpath_is_canonical(repos_relpath, scratch_pool));
 
   SVN_ERR(svn_wc__db_pdh_parse_local_abspath(&pdh, &local_relpath, db,

Modified: subversion/branches/performance/subversion/libsvn_wc/wc_db.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/wc_db.h?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/wc_db.h (original)
+++ subversion/branches/performance/subversion/libsvn_wc/wc_db.h Thu Jan  6 19:15:40 2011
@@ -2414,7 +2414,7 @@ svn_wc__db_temp_op_set_rev_and_repos_rel
    REPOS_RELPATH is not NULL, apply REPOS_RELPATH, REPOS_ROOT_URL and
    REPOS_UUID.
    Perform all temporary allocations in SCRATCH_POOL.
-   
+
    ### For 1.7 this should probably become a proper tree conflict and
    ### just handled by putting a base directory below the existing
    ### working node.

Modified: subversion/branches/performance/subversion/libsvn_wc/workqueue.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/workqueue.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/workqueue.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/workqueue.c Thu Jan  6 19:15:40 2011
@@ -480,8 +480,8 @@ svn_wc__wq_add_revert(svn_boolean_t *wil
 
 /* Removes a BASE_NODE and all it's data, leaving any adds and copies as is.
    Do this as a depth first traversal to make sure than any parent still exists
-   on error conditions. 
-   
+   on error conditions.
+
    ### This function needs review for 4th tree behavior.*/
 static svn_error_t *
 remove_base_node(svn_wc__db_t *db,
@@ -712,7 +712,7 @@ run_deletion_postcommit(svn_wc__db_t *db
                 db, local_abspath,
                 FALSE, FALSE, cancel_func, cancel_baton, scratch_pool));
 
-      /* If the parent entry's working rev 'lags' behind new_rev... 
+      /* If the parent entry's working rev 'lags' behind new_rev...
          ### Maybe we should also add a not-present node if the
          ### deleted node was switched? */
       if (new_revision > parent_revision)

Modified: subversion/branches/performance/subversion/mod_authz_svn/mod_authz_svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/mod_authz_svn/mod_authz_svn.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/mod_authz_svn/mod_authz_svn.c (original)
+++ subversion/branches/performance/subversion/mod_authz_svn/mod_authz_svn.c Thu Jan  6 19:15:40 2011
@@ -46,7 +46,7 @@
 
 extern module AP_MODULE_DECLARE_DATA authz_svn_module;
 
-typedef struct {
+typedef struct authz_svn_config_rec {
   int authoritative;
   int anonymous;
   int no_auth_when_anon_ok;
@@ -166,7 +166,7 @@ get_access_conf(request_rec *r, authz_sv
   dav_error *dav_err;
   char errbuf[256];
 
-  if (conf->repo_relative_access_file) 
+  if (conf->repo_relative_access_file)
     {
       dav_err = dav_svn_get_repos_path(r, conf->base_path, &repos_path);
       if (dav_err) {
@@ -176,12 +176,12 @@ get_access_conf(request_rec *r, authz_sv
       access_file = svn_dirent_join_many(r->pool, repos_path, "conf",
                                          conf->repo_relative_access_file,
                                          NULL);
-    } 
+    }
   else
     {
       access_file = conf->access_file;
     }
-  
+
   ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
                 "Path to authz file is %s", access_file);
 

Modified: subversion/branches/performance/subversion/mod_dav_svn/dav_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/mod_dav_svn/dav_svn.h?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/mod_dav_svn/dav_svn.h (original)
+++ subversion/branches/performance/subversion/mod_dav_svn/dav_svn.h Thu Jan  6 19:15:40 2011
@@ -73,7 +73,7 @@ extern "C" {
  * ### only a single FS open; otherwise, it will have to work a bit harder
  * ### to keep the things in sync.
  */
-typedef struct {
+typedef struct dav_svn_repos {
   apr_pool_t *pool;     /* request_rec -> pool */
 
   /* Remember the root URL path of this repository (just a path; no
@@ -175,7 +175,7 @@ enum dav_svn_private_restype {
 
 
 /* store info about a root in a repository */
-typedef struct {
+typedef struct dav_svn_root {
   /* If a root within the FS has been opened, the value is stored here.
      Otherwise, this field is NULL. */
   svn_fs_root_t *root;
@@ -662,7 +662,7 @@ dav_svn__post_create_txn(const dav_resou
 /*** authz.c ***/
 
 /* A baton needed by dav_svn__authz_read_func(). */
-typedef struct
+typedef struct dav_svn__authz_read_baton
 {
   /* The original request, needed to generate a subrequest. */
   request_rec *r;
@@ -809,7 +809,7 @@ dav_svn__build_uri(const dav_svn_repos *
    ### URIs which we may need to parse. it also ignores any scheme, host,
    ### and port in the URI and simply assumes it refers to the same server.
 */
-typedef struct {
+typedef struct dav_svn__uri_info {
   svn_revnum_t rev;
   const char *repos_path;
   const char *activity_id;

Modified: subversion/branches/performance/subversion/mod_dav_svn/deadprops.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/mod_dav_svn/deadprops.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/mod_dav_svn/deadprops.c (original)
+++ subversion/branches/performance/subversion/mod_dav_svn/deadprops.c Thu Jan  6 19:15:40 2011
@@ -180,7 +180,7 @@ save_value(dav_db *db, const dav_prop_na
       else
         return dav_svn__new_error(db->p, HTTP_CONFLICT, 0,
                                   "Properties may only be defined in the "
-                                  SVN_DAV_PROP_NS_SVN " and " 
+                                  SVN_DAV_PROP_NS_SVN " and "
                                   SVN_DAV_PROP_NS_CUSTOM " namespaces.");
     }
 
@@ -503,7 +503,7 @@ db_store(dav_db *db,
   if (absent && ! elem->first_child)
     /* ### better error check */
     return dav_svn__new_error(pool, HTTP_INTERNAL_SERVER_ERROR, 0,
-                              apr_psprintf(pool, 
+                              apr_psprintf(pool,
                                            "'%s' cannot be specified on the "
                                            "value without specifying an "
                                            "expectation",
@@ -762,7 +762,7 @@ db_apply_rollback(dav_db *db, dav_deadpr
 
   if (! db->resource->info->revprop_error)
     return NULL;
-  
+
   /* Returning the original revprop change error here will cause this
      detailed error to get returned to the client in preference to the
      more generic error created by mod_dav. */

Modified: subversion/branches/performance/subversion/mod_dav_svn/mod_dav_svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/mod_dav_svn/mod_dav_svn.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/mod_dav_svn/mod_dav_svn.c (original)
+++ subversion/branches/performance/subversion/mod_dav_svn/mod_dav_svn.c Thu Jan  6 19:15:40 2011
@@ -50,7 +50,7 @@
 #define PATHAUTHZ_BYPASS_ARG "short_circuit"
 
 /* per-server configuration */
-typedef struct {
+typedef struct server_conf_t {
   const char *special_uri;
 } server_conf_t;
 
@@ -73,7 +73,7 @@ enum path_authz_conf {
 };
 
 /* per-dir configuration */
-typedef struct {
+typedef struct dir_conf_t {
   const char *fs_path;               /* path to the SVN FS */
   const char *repo_name;             /* repository name */
   const char *xslt_uri;              /* XSL transform URI */
@@ -663,7 +663,7 @@ merge_xml_filter_insert(request_rec *r)
 }
 
 
-typedef struct {
+typedef struct merge_ctx_t {
   apr_bucket_brigade *bb;
   apr_xml_parser *parser;
   apr_pool_t *pool;

Modified: subversion/branches/performance/subversion/mod_dav_svn/reports/replay.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/mod_dav_svn/reports/replay.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/mod_dav_svn/reports/replay.c (original)
+++ subversion/branches/performance/subversion/mod_dav_svn/reports/replay.c Thu Jan  6 19:15:40 2011
@@ -42,7 +42,7 @@
 #include "../dav_svn.h"
 
 
-typedef struct {
+typedef struct edit_baton_t {
   apr_bucket_brigade *bb;
   ap_filter_t *output;
   svn_boolean_t started;

Modified: subversion/branches/performance/subversion/mod_dav_svn/reports/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/mod_dav_svn/reports/update.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/mod_dav_svn/reports/update.c (original)
+++ subversion/branches/performance/subversion/mod_dav_svn/reports/update.c Thu Jan  6 19:15:40 2011
@@ -43,7 +43,7 @@
 #include "../dav_svn.h"
 
 
-typedef struct {
+typedef struct update_ctx_t {
   const dav_resource *resource;
 
   /* the revision we are updating to. used to generated IDs. */

Modified: subversion/branches/performance/subversion/mod_dav_svn/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/mod_dav_svn/repos.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/mod_dav_svn/repos.c (original)
+++ subversion/branches/performance/subversion/mod_dav_svn/repos.c Thu Jan  6 19:15:40 2011
@@ -71,7 +71,7 @@ struct dav_stream {
 
 /* Convenience structure that facilitates combined memory allocation of
    a dav_resource and dav_resource_private pair. */
-typedef struct {
+typedef struct dav_resource_combined {
   dav_resource res;
   dav_resource_private priv;
 } dav_resource_combined;
@@ -3049,7 +3049,7 @@ set_headers(request_rec *r, const dav_re
 }
 
 
-typedef struct {
+typedef struct diff_ctx_t {
   ap_filter_t *output;
   apr_pool_t *pool;
 } diff_ctx_t;
@@ -3932,7 +3932,7 @@ move_resource(dav_resource *src,
 }
 
 
-typedef struct {
+typedef struct walker_ctx_t {
   /* the input walk parameters */
   const dav_walk_params *params;
 
@@ -4054,7 +4054,7 @@ do_walk(walker_ctx_t *ctx, int depth)
       if (params->walk_type & DAV_WALKTYPE_AUTH)
         {
           const char *repos_relpath =
-            apr_pstrcat(iterpool, 
+            apr_pstrcat(iterpool,
                         apr_pstrmemdup(iterpool,
                                        ctx->repos_path->data,
                                        ctx->repos_path->len),
@@ -4103,7 +4103,7 @@ do_walk(walker_ctx_t *ctx, int depth)
       ctx->uri->len = uri_len;
       ctx->repos_path->len = repos_len;
     }
-  
+
   svn_pool_destroy(iterpool);
 
   return NULL;
@@ -4379,7 +4379,7 @@ int dav_svn__method_post(request_rec *r)
      the client with (hopefully) some helpful information. */
   if (derr)
     return dav_svn__error_response_tag(r, derr);
-    
+
   return OK;
 }
 

Modified: subversion/branches/performance/subversion/mod_dav_svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/mod_dav_svn/util.c?rev=1056015&r1=1056014&r2=1056015&view=diff
==============================================================================
--- subversion/branches/performance/subversion/mod_dav_svn/util.c (original)
+++ subversion/branches/performance/subversion/mod_dav_svn/util.c Thu Jan  6 19:15:40 2011
@@ -717,20 +717,20 @@ request_body_to_string(svn_string_t **re
         {
           const char *data;
           apr_size_t len;
-          
+
           if (APR_BUCKET_IS_EOS(bucket))
             {
               seen_eos = 1;
               break;
             }
-          
+
           if (APR_BUCKET_IS_METADATA(bucket))
             continue;
-          
+
           status = apr_bucket_read(bucket, &data, &len, APR_BLOCK_READ);
           if (status != APR_SUCCESS)
             goto cleanup;
-          
+
           total_read += len;
           if (limit_req_body && total_read > limit_req_body)
             {
@@ -740,10 +740,10 @@ request_body_to_string(svn_string_t **re
               result = HTTP_REQUEST_ENTITY_TOO_LARGE;
               goto cleanup;
             }
-          
+
           svn_stringbuf_appendbytes(buf, data, len);
         }
-      
+
       apr_brigade_cleanup(brigade);
     }
   while (!seen_eos);
@@ -758,7 +758,7 @@ request_body_to_string(svn_string_t **re
 
  cleanup:
   apr_brigade_destroy(brigade);
-  
+
   /* Apache will supply a default error, plus the error log above. */
   return result;
 }