From a85cdb2d1a721a02ef4104f9e6ef5488b0539a15 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Fri, 20 Dec 2013 04:40:00 +0000 Subject: [PATCH] abbreviate long strings when printing lazy_entries on a single line --- src/lazy_bdecode.cpp | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/src/lazy_bdecode.cpp b/src/lazy_bdecode.cpp index 7861a9619..b0a40c0d9 100644 --- a/src/lazy_bdecode.cpp +++ b/src/lazy_bdecode.cpp @@ -506,15 +506,42 @@ namespace libtorrent ret += "'"; if (printable) { - ret += e.string_value(); + if (single_line && e.string_length() > 30) + { + ret.append(e.string_ptr(), 14); + ret += "..."; + ret.append(e.string_ptr() + e.string_length()-14, 14); + } + else + ret.append(e.string_ptr(), e.string_length()); ret += "'"; return ret; } - for (int i = 0; i < e.string_length(); ++i) + if (single_line && e.string_length() > 20) { - char tmp[5]; - snprintf(tmp, sizeof(tmp), "%02x", (unsigned char)str[i]); - ret += tmp; + for (int i = 0; i < 9; ++i) + { + char tmp[5]; + snprintf(tmp, sizeof(tmp), "%02x", (unsigned char)str[i]); + ret += tmp; + } + ret += "..."; + for (int i = e.string_length() - 9 + , len(e.string_length()); i < len; ++i) + { + char tmp[5]; + snprintf(tmp, sizeof(tmp), "%02x", (unsigned char)str[i]); + ret += tmp; + } + } + else + { + for (int i = 0; i < e.string_length(); ++i) + { + char tmp[5]; + snprintf(tmp, sizeof(tmp), "%02x", (unsigned char)str[i]); + ret += tmp; + } } ret += "'"; return ret;