Daniel Shahaf wrote:
> Philip Martin wrote on Wed, Sep 22, 2010 at 11:47:19 +0100:
> > Daniel Shahaf <d.s_at_daniel.shahaf.name> writes:
> > > minval is an apr_uint64_t, so shouldn't the format string use APR_UINT64_FMT?
> >
> > See this thread
> >
> > http://svn.haxx.se/dev/archive-2010-09/0295.shtml
>
> and subversion/libsvn_fs_fs/rep-cache.c:153
Which is one of the ways it can be done when a pool is available:
> return svn_error_createf(SVN_ERR_FS_CORRUPT, NULL,
> apr_psprintf(pool,
> _("Representation key for checksum '%%s' exists "
> "in filesystem '%%s' with a different value "
> "(%%ld,%%%s,%%%s,%%%s) than what we were about "
> "to store (%%ld,%%%s,%%%s,%%%s)"),
> APR_OFF_T_FMT, SVN_FILESIZE_T_FMT,
> SVN_FILESIZE_T_FMT, APR_OFF_T_FMT,
> SVN_FILESIZE_T_FMT, SVN_FILESIZE_T_FMT),
> svn_checksum_to_cstring_display(rep->sha1_checksum, pool),
> fs->path, old_rep->revision, old_rep->offset, old_rep->size,
> old_rep->expanded_size, rep->revision, rep->offset, rep->size,
> rep->expanded_size);
That's one way to do it. I'd prefer to format the various fields into
one or more non-localized strings and then include those strings in the
final localized string. For example:
/* Return a string containing the interesting fields of REP as a
comma-separated tuple, allocated in POOL. */
static char *
rep_tuple_psprintf(const rep_t *rep, apr_pool_t *pool)
{
return apr_psprintf(pool,
"%ld,%" APR_OFF_T_FMT ",%" SVN_FILESIZE_T_FMT
",%" SVN_FILESIZE_T_FMT,
rep->revision, rep->offset, rep->size,
rep->expanded_size);
}
followed by
return svn_error_createf(SVN_ERR_FS_CORRUPT, NULL,
apr_psprintf(pool,
_("Representation key for checksum '%%s' exists "
"in filesystem '%%s' with a different value "
"(%s) than what we were about to store (%s)"),
svn_checksum_to_cstring_display(rep->sha1_checksum, pool),
fs->path, old_rep, rep);
- Julian
Received on 2010-09-22 14:07:43 CEST