aboutsummaryrefslogtreecommitdiff
path: root/ber
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-07-14 17:41:34 +0200
committerDimitri Sokolyuk <demon@dim13.org>2015-07-14 17:41:34 +0200
commit7b3803f2588cae3120baa4bce24b5e4c671b3694 (patch)
treedb4d9a7f67a561bd59a4f23c9256e2657b2eff7d /ber
parent2e3613a9203ae2dccf6d09032a9edca22b5f5381 (diff)
Narrow output
Diffstat (limited to 'ber')
-rw-r--r--ber/dump.go41
1 files changed, 19 insertions, 22 deletions
diff --git a/ber/dump.go b/ber/dump.go
index 18976bd..d31ea78 100644
--- a/ber/dump.go
+++ b/ber/dump.go
@@ -2,47 +2,44 @@ package ber
import "fmt"
-func Dump(b []byte) {
- dump(b, 0)
+func Dump(b []byte) string {
+ return dump(b, 0)
}
-func dump(b []byte, indent int) {
+func short(b []byte) string {
+ if len(b) > 5 {
+ return fmt.Sprint(b[:5], " ...")
+ }
+ return fmt.Sprint(b)
+}
+
+func dump(b []byte, indent int) (s string) {
class, kind, tag, _, value, rest := Split(b)
- for i := indent; i > 0; i-- {
- fmt.Print("\t")
- }
+ s += fmt.Sprintf("%*s", indent*2, "")
switch class {
case classUniversal:
switch tag {
case tagInteger:
- fmt.Println(tag, UnmarshalInt(value))
+ s += fmt.Sprintln(tag, UnmarshalInt(value))
case tagObjectIdentifier:
- fmt.Println(tag, UnmarshalOID(value))
+ s += fmt.Sprintln(tag, UnmarshalOID(value))
case tagBitString:
- fmt.Println(tag, UnmarshalBitString(value), value)
+ s += fmt.Sprintln(tag, UnmarshalBitString(value), value)
default:
- if len(value) > 5 {
- fmt.Println(tag, kind, value[:5], "...")
- } else {
- fmt.Println(tag, kind, value)
- }
+ s += fmt.Sprintln(tag, kind, short(value))
}
default:
- if len(value) > 5 {
- fmt.Println(class, kind, byte(tag), value[:5], "...")
- } else {
- fmt.Println(class, kind, byte(tag), value)
- }
+ s += fmt.Sprintln(class, kind, byte(tag), short(value))
}
if len(value) > 0 && kind != kindPrimitive {
- dump(value, indent+1)
+ s += dump(value, indent+1)
}
if len(rest) > 0 {
- dump(rest, indent)
+ s += dump(rest, indent)
}
-
+ return
}