Daniel Shahaf wrote on Wed, Jun 15, 2011 at 06:33:46 +0300: > s...@apache.org wrote on Tue, Jun 14, 2011 at 15:10:50 -0000: > > + svn_stringbuf_appendcstr(buf, _("Local property value:\n")); > > + if (mine_is_binary) > > + svn_stringbuf_appendcstr(buf, _("Cannot display: property value is > > " > > + "binary data\n")); > > Could we just print a hex dump of the value?
Concretely: [[[ but the property has already been locally changed to a different value. Local property value: mine Incoming property value: 0x7E454B4602010100000000000000000002003D0001000000A01440000000000040000000000000 ]]] Patch to produce that: [[[ Index: subversion/libsvn_wc/props.c =================================================================== --- subversion/libsvn_wc/props.c (revision 1135910) +++ subversion/libsvn_wc/props.c (working copy) @@ -545,6 +545,16 @@ maybe_prop_value(const svn_skel_t *skel, } +/** Store printf("%x", c) into BUF and return the latter. */ +static APR_INLINE const char * +hex_of(char *buf, const unsigned char c) +{ + buf[0] = "01234567890ABCDEF"[(c >> 4)]; + buf[1] = "01234567890ABCDEF"[c & 0xf]; + buf[2] = '\0'; + return buf; +} + /* Parse a property conflict description from the provided SKEL. The result includes a descriptive message (see generate_conflict_message) and maybe a diff of property values containing conflict markers. @@ -647,8 +657,14 @@ prop_conflict_from_skel(const svn_string_t **confl { svn_stringbuf_appendcstr(buf, _("Local property value:\n")); if (mine_is_binary) - svn_stringbuf_appendcstr(buf, _("Cannot display: property value is " - "binary data\n")); + { + char hex[3] = {0}; + svn_string_t mine2 = *mine; + + svn_stringbuf_appendcstr(buf, "0x"); + while (mine2.len--) + svn_stringbuf_appendbytes(buf, hex_of(hex, *mine2.data++), 2); + } else svn_stringbuf_appendbytes(buf, mine->data, mine->len); svn_stringbuf_appendcstr(buf, "\n"); @@ -658,8 +674,14 @@ prop_conflict_from_skel(const svn_string_t **confl { svn_stringbuf_appendcstr(buf, _("Incoming property value:\n")); if (incoming_is_binary) - svn_stringbuf_appendcstr(buf, _("Cannot display: property value is " - "binary data\n")); + { + char hex[3] = {0}; + svn_string_t incoming2 = *incoming; + + svn_stringbuf_appendcstr(buf, "0x"); + while (incoming2.len--) + svn_stringbuf_appendbytes(buf, hex_of(hex, *incoming2.data++), 2); + } else svn_stringbuf_appendbytes(buf, incoming->data, incoming->len); svn_stringbuf_appendcstr(buf, "\n"); ]]] If the general idea is plausible I'll clean up the patch, fix tests, commit, etc.