summaryrefslogtreecommitdiff
path: root/ndb/src
diff options
context:
space:
mode:
authorunknown <tomas@poseidon.ndb.mysql.com>2005-01-06 13:02:06 +0100
committerunknown <tomas@poseidon.ndb.mysql.com>2005-01-06 13:02:06 +0100
commit72d51976812852d65659b4bd245e94a0a31af5b4 (patch)
tree54e75c948576c08a502d3c2fc18e0e24455087dd /ndb/src
parent22c23f2247a836745a0b658e2e4a903227db1966 (diff)
downloadmariadb-git-72d51976812852d65659b4bd245e94a0a31af5b4.tar.gz
NdbRecAttr.cpp:
improved printout routine ndb/src/ndbapi/NdbRecAttr.cpp: improved printout routine
Diffstat (limited to 'ndb/src')
-rw-r--r--ndb/src/ndbapi/NdbRecAttr.cpp25
1 files changed, 7 insertions, 18 deletions
diff --git a/ndb/src/ndbapi/NdbRecAttr.cpp b/ndb/src/ndbapi/NdbRecAttr.cpp
index f1a123ded3c..59df23a9053 100644
--- a/ndb/src/ndbapi/NdbRecAttr.cpp
+++ b/ndb/src/ndbapi/NdbRecAttr.cpp
@@ -141,40 +141,29 @@ static void
ndbrecattr_print_string(NdbOut& out, const char *type,
const char *ref, unsigned sz)
{
- int i;
+ int i, len, printable= 1;
// trailing zeroes are not printed
for (i=sz-1; i >= 0; i--)
if (ref[i] == 0) sz--;
else break;
if (sz == 0) return; // empty
- char *str= (char*)malloc(sz+1);
- memcpy(str, ref, sz);
- str[sz]= 0; // null terminate
- int len= strlen(str);
- int printable= 1;
- for (i=0; i < len; i++)
- {
- if (str[i] < 32) {
+ for (len=0; len < (int)sz && ref[i] != 0; len++)
+ if (printable && !isprint((int)ref[i]))
printable= 0;
- break;
- }
- }
+
if (printable)
- out.print("%.*s", len, str);
+ out.print("%.*s", len, ref);
else
- {
for (i=0; i < len; i++)
- out.print("%02X", (int)str[i]);
- }
+ out.print("%02X", (int)ref[i]);
- free(str);
if (len != (int)sz)
{
out.print("[");
for (i= len+1; ref[i] != 0; i++)
out.print("%u]",len-i);
- assert(sz > i);
+ assert((int)sz > i);
ndbrecattr_print_string(out,type,ref+i,sz-i);
}
}