diff options
author | unknown <tomas@poseidon.ndb.mysql.com> | 2005-01-06 13:02:06 +0100 |
---|---|---|
committer | unknown <tomas@poseidon.ndb.mysql.com> | 2005-01-06 13:02:06 +0100 |
commit | 72d51976812852d65659b4bd245e94a0a31af5b4 (patch) | |
tree | 54e75c948576c08a502d3c2fc18e0e24455087dd /ndb/src | |
parent | 22c23f2247a836745a0b658e2e4a903227db1966 (diff) | |
download | mariadb-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.cpp | 25 |
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); } } |