Hyrum K Wright wrote on Fri, Feb 04, 2011 at 09:28:04 -0600: > Reviewing my own commits... > > On Fri, Feb 4, 2011 at 9:20 AM, <hwri...@apache.org> wrote: > > +++ subversion/trunk/subversion/libsvn_client/export.c Fri Feb 4 15:20:50 > > 2011 > > @@ -900,8 +900,9 @@ close_file(void *file_baton, > > actual_checksum = svn_checksum__from_digest(fb->text_digest, > > svn_checksum_md5, pool); > > > > - SVN_ERR(svn_checksum_mismatch_err(svn_dirent_local_style(fb->path, pool), > > - text_checksum, actual_checksum, pool)); > > + SVN_ERR(svn_checksum_mismatch_err(text_checksum, actual_checksum, pool, > > + _("Checksum mismatch for '%s'"), > > + svn_dirent_local_style(fb->path, > > pool))); > > Although the use of svn_checksum_mismatch_err() simplifies the code > and consolidates various messages for translation, it does have one > drawback: the call to svn_dirent_local_style() is now unconditional, > rather than only being invoked in the (unlikely) event of a checksum > mismatch. Is this enough of a drawback that I should revert the past > couple of commits in this area? >
Does it compute that string now for every path in an exported tree? +1 to avoiding that if possible. > -Hyrum > > > > > if ((! fb->eol_style_val) && (! fb->keywords_val) && (! fb->special)) > > { > > > > Modified: subversion/trunk/subversion/libsvn_subr/checksum.c > > URL: > > http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/checksum.c?rev=1067195&r1=1067194&r2=1067195&view=diff > > ============================================================================== > > --- subversion/trunk/subversion/libsvn_subr/checksum.c (original) > > +++ subversion/trunk/subversion/libsvn_subr/checksum.c Fri Feb 4 15:20:50 > > 2011 > > @@ -402,21 +402,28 @@ svn_checksum_size(const svn_checksum_t * > > } > > > > svn_error_t * > > -svn_checksum_mismatch_err(const char *object_label, > > - const svn_checksum_t *expected, > > +svn_checksum_mismatch_err(const svn_checksum_t *expected, > > const svn_checksum_t *actual, > > - apr_pool_t *scratch_pool) > > + apr_pool_t *scratch_pool, > > + const char *fmt, > > + ...) > > { > > if (!svn_checksum_match(expected, actual)) > > { > > + va_list ap; > > + const char *desc; > > + > > + va_start(ap, fmt); > > + desc = apr_pvsprintf(scratch_pool, fmt, ap); > > + va_end(ap); > > + > > return svn_error_createf(SVN_ERR_CHECKSUM_MISMATCH, NULL, > > - apr_psprintf(scratch_pool, "%s:\n%s\n%s\n", > > - _("Checksum mismatch for '%s'\n"), > > - _(" expected: %s"), > > - _(" actual: %s")), > > - object_label, > > - svn_checksum_to_cstring_display(expected, scratch_pool), > > - svn_checksum_to_cstring_display(actual, scratch_pool)); > > + _("%s:\n" > > + " expected: %s\n" > > + " actual: %s\n"), > > + desc, > > + svn_checksum_to_cstring_display(expected, > > scratch_pool), > > + svn_checksum_to_cstring_display(actual, scratch_pool)); > > } > > else > > return SVN_NO_ERROR; > > > > > >