Use string map rather than regsub for the printable procedure.
authorPat Thoyts <patthoyts@users.sourceforge.net>
Sun, 29 Nov 2009 00:55:47 +0000 (00:55 +0000)
committerPat Thoyts <patthoyts@users.sourceforge.net>
Sun, 29 Nov 2009 11:34:26 +0000 (11:34 +0000)
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
bin/sockspy.tcl

index 75de035c371135a12148d7ed66624eb279869596..83ca11cd4cd492772acb61b1452184493517f9b6 100644 (file)
@@ -423,11 +423,19 @@ proc saveOutput {} {
 # printable -- Replaces all unprintable characters into dots.
 # 
 proc printable {s {spaces 0}} {
-    regsub -all {[^\x09\x20-\x7e]} $s "." n
+    variable printable
+    if {![info exists printable]} {
+        for {set n 0} {$n < 256} {incr n} {
+            if {($n < 32 || $n >= 0x7e) && $n != 9} {
+                lappend printable [format %c $n] "."
+            }
+        }
+    }
+    set s [string map $printable $s]
     if {$spaces} {
-       regsub -all { } $n "_" n
+        set s [string map {" " "_"} $s]
     }
-    return $n;
+    return $s
 }
 ##+##########################################################################
 #