Changeset 1042 for trunk/lang/tcl


Ignore:
Timestamp:
Jun 10, 2008, 6:52:04 PM (16 years ago)
Author:
mmc
Message:

Fixed the Rappture::encoding::encode and decode operations to honor "--".
This is handy when the string may start with a dash, as in:

Rappture::encoding::encode -- -hi

Fixed the library.tcl code to guard against encode/decode problem by
using the "--" in front of strings obtained from the xml.

Cleaned up the tests for the Rappture::LibraryObj? class. Everything
works properly now, except for units. Some of the tests are failing
because the units code reports "length" instead of "area" (test finds
this problem). This should be fixed in the units code.

Location:
trunk/lang/tcl
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/lang/tcl/scripts/library.tcl

    r1018 r1042  
    347347    }
    348348    set node [$node parentNode]
     349    if {$node == ""} {
     350        return ""
     351    }
    349352
    350353    switch -- $params(-as) {
     
    453456      }
    454457      default {
    455           error "bad flavor \"$params(-as)\": should be component, id, object, type"
     458          error "bad flavor \"$params(-as)\": should be component, id, object, path, type"
    456459      }
    457460    }
     
    502505    }
    503506    if {$params(-decode) == "yes"} {
    504         return [Rappture::encoding::decode [string trim [$node text]]]
     507        return [Rappture::encoding::decode -- [string trim [$node text]]]
    505508    } else {
    506509        return [string trim [$node text]]
     
    543546        }
    544547    }
    545     if {[llength $args] > 2} {
     548    if {[llength $args] < 1 || [llength $args] > 2} {
    546549        error "wrong # args: should be \"put ?-append bval? ?-id num? ?-type string|file? ?-compress bval? ?path? string\""
    547550    }
     
    563566
    564567    if {$params(-compress) || [Rappture::encoding::is binary $str]} {
    565         set str [Rappture::encoding::encode $str]
     568        set str [Rappture::encoding::encode -- $str]
    566569    }
    567570
  • trunk/lang/tcl/src/RpEncodeTclInterface.cc

    r1018 r1042  
    137137
    138138    // parse through command line options
    139     if ((objc <= 2) && (objc >= 5)) {
     139    if (objc < 1) {
    140140        Tcl_AppendResult(interp,
    141141                "wrong # args: should be \"", cmdName,
    142                 " ?-as z|b64|zb64? ?-no-header? <string>\"", (char*)NULL);
     142                " ?-as z|b64|zb64? ?-no-header? ?--? <string>\"", (char*)NULL);
    143143        return TCL_ERROR;
    144144    }
     
    185185                addHeader = 0;
    186186            }
     187            else if ( strcmp(option,"--") == 0 ) {
     188                nextarg++;
     189                break;
     190            }
    187191            else {
    188                 break;
     192                Tcl_AppendResult(interp,
     193                    "bad option \"", option,
     194                    "\": should be -as, -no-header, --", (char*)NULL);
     195                return TCL_ERROR;
    189196            }
    190197        }
     
    197204        Tcl_AppendResult(interp,
    198205                "wrong # args: should be \"", cmdName,
    199                 " ?-as z|b64|zb64? ?-no-header? <string>\"", (char*)NULL);
     206                " ?-as z|b64|zb64? ?-no-header? ?--? <string>\"", (char*)NULL);
    200207        return TCL_ERROR;
    201208    }
     
    269276
    270277    // parse through command line options
    271     if ((objc != 2) && (objc != 4)) {
     278    if (objc < 1) {
    272279        Tcl_AppendResult(interp,
    273280                "wrong # args: should be \"", cmdName,
    274                 " ?-as z|b64|zb64? <string>\"", (char*)NULL);
    275         return TCL_ERROR;
    276     }
    277 
    278     option = Tcl_GetStringFromObj(objv[nextarg], &optionLen);
    279     if (*option == '-') {
    280         if ( strncmp(option,"-as",optionLen) == 0 ) {
    281             nextarg++;
    282             typeLen = 0;
    283             if (nextarg < objc) {
    284                 encodeType = Tcl_GetStringFromObj(objv[nextarg],&typeLen);
    285                 nextarg++;
    286             }
    287             if (        (typeLen == 1) &&
    288                         (strncmp(encodeType,"z",typeLen) == 0) ) {
    289                 decompress = 1;
    290                 base64 = 0;
    291             }
    292             else if (   (typeLen == 3) &&
    293                         (strncmp(encodeType,"b64",typeLen) == 0) ) {
    294                 decompress = 0;
    295                 base64 = 1;
    296             }
    297             else if (   (typeLen == 4) &&
    298                         (strncmp(encodeType,"zb64",typeLen) == 0) ) {
    299                 decompress = 1;
    300                 base64 = 1;
    301             }
    302             else {
    303                 // user did not specify recognized wishes for this option,
    304                 Tcl_AppendResult(interp, "bad value \"",(char*)NULL);
    305                 if (encodeType != NULL) {
    306                     Tcl_AppendResult(interp, encodeType,(char*)NULL);
    307                 }
     281                " ?-as z|b64|zb64? ?--? <string>\"", (char*)NULL);
     282        return TCL_ERROR;
     283    }
     284
     285    while ((objc - nextarg) > 0) {
     286        option = Tcl_GetStringFromObj(objv[nextarg], &optionLen);
     287        if (*option == '-') {
     288            if ( strncmp(option,"-as",optionLen) == 0 ) {
     289                nextarg++;
     290                typeLen = 0;
     291                if (nextarg < objc) {
     292                    encodeType = Tcl_GetStringFromObj(objv[nextarg],&typeLen);
     293                    nextarg++;
     294                }
     295                if (        (typeLen == 1) &&
     296                            (strncmp(encodeType,"z",typeLen) == 0) ) {
     297                    decompress = 1;
     298                    base64 = 0;
     299                }
     300                else if (   (typeLen == 3) &&
     301                            (strncmp(encodeType,"b64",typeLen) == 0) ) {
     302                    decompress = 0;
     303                    base64 = 1;
     304                }
     305                else if (   (typeLen == 4) &&
     306                            (strncmp(encodeType,"zb64",typeLen) == 0) ) {
     307                    decompress = 1;
     308                    base64 = 1;
     309                }
     310                else {
     311                    // user did not specify recognized wishes for this option,
     312                    Tcl_AppendResult(interp, "bad value \"",(char*)NULL);
     313                    if (encodeType != NULL) {
     314                        Tcl_AppendResult(interp, encodeType,(char*)NULL);
     315                    }
     316                    Tcl_AppendResult(interp,
     317                            "\": should be one of z, b64, zb64",
     318                            (char*)NULL);
     319                    return TCL_ERROR;
     320                }
     321            } else if ( strcmp(option,"--") == 0 ) {
     322                nextarg++;
     323                break;
     324            } else {
    308325                Tcl_AppendResult(interp,
    309                         "\": should be one of z, b64, zb64",
    310                         (char*)NULL);
     326                    "bad option \"", option,
     327                    "\": should be -as, --", (char*)NULL);
    311328                return TCL_ERROR;
    312329            }
     330        } else {
     331            break;
    313332        }
    314333    }
     
    317336        Tcl_AppendResult(interp,
    318337                "wrong # args: should be \"", cmdName,
    319                 " ?-as z|b64|zb64? <string>\"", (char*)NULL);
     338                " ?-as z|b64|zb64? ?--? <string>\"", (char*)NULL);
    320339        return TCL_ERROR;
    321340    }
  • trunk/lang/tcl/tests/children.test

    r424 r1042  
    4141    list [catch {$lib children "input.number(min)" "wreew"} msg] $msg
    4242} {1 {wrong # args: should be "children ?-as fval? ?-type name? ?path?"}}
    43 # this test works for tcl version of rappture, different error message
    44 #test library-8.3.1.1 {children command path -as flag  no option} {
    45 #    list [catch {$lib children -as} msg] $msg
    46 #} {1 {bad path component "-as"}}
    47 test library-8.3.1.2 {children command path -as flag  no option} {
     43test library-8.3.1 {children command path -as flag  no option} {
    4844    list [catch {$lib children -as} msg] $msg
    49 } {1 {bad flavor "" for -as: should be component, id, object, path, type}}
     45} {1 {bad path component "-as"}}
    5046test library-8.3.2 {children command path -as flag component path} {
    5147    $lib children -as component "input"
     
    6359    $lib children -as object "input"
    6460} {::libraryObj1 ::libraryObj2 ::libraryObj3 ::libraryObj4}
    65 # this test works for old tcl bindings, different error message
    66 #test library-8.3.7 {children command path -as junk type path} {
    67 #    list [catch {$lib children -as junk "input"} msg] $msg
    68 #} {1 {bad flavor "junk": should be component, id, object, path, type}}
    69 # this test works for new tcl bindings, different error message
    7061test library-8.3.7 {children command path -as junk type path} {
    7162    list [catch {$lib children -as junk "input"} msg] $msg
    72 } {1 {bad flavor "junk" for -as: should be component, id, object, path, type}}
     63} {1 {bad flavor "junk": should be component, id, object, path, type}}
    7364test library-8.4.1 {children command path -type number path} {
    7465    $lib children -type "number" "input"
  • trunk/lang/tcl/tests/copy.test

    r424 r1042  
    2626catch {unset lib}
    2727set lib [Rappture::library rplib_test.xml]
    28 # this test works for old tcl bindings, different error message
    29 #test library-9.0.1.1 {copy command, 0 args} {
    30 #    list [catch {$lib copy} msg] $msg
    31 #} {1 {wrong # args: should be "libraryObj0 copy path from ?arg arg ...?"}}
    32 # this test works for new tcl bindings, different error message
    33 test library-9.0.1.2 {copy command, 0 args} {
     28test library-9.0.1.1 {copy command, 0 args} {
    3429    list [catch {$lib copy} msg] $msg
    35 } {1 {wrong # args: should be "::libraryObj0 copy path from ?xmlobj? path"}}
    36 # this test works for old tcl bindings, different error message
    37 #test library-9.0.2.1 {copy command, 0 args} {
    38 #    list [catch {$lib copy "input.number(min)"} msg] $msg
    39 #} {1 {wrong # args: should be "libraryObj0 copy path from ?arg arg ...?"}}
    40 # this test works for new tcl bindings, different error message
    41 test library-9.0.2.2 {copy command, 0 args} {
     30} {1 {wrong # args: should be "libraryObj0 copy path from ?arg arg ...?"}}
     31test library-9.0.2.1 {copy command, 0 args} {
    4232    list [catch {$lib copy "input.number(min)"} msg] $msg
    43 } {1 {wrong # args: should be "::libraryObj0 copy path from ?xmlobj? path"}}
    44 # this test works for old tcl bindings, different error message
    45 #test library-9.0.3.1 {copy command, 1 arg} {
    46 #    list [catch {$lib copy "input.number(min)" from } msg] $msg
    47 #} {1 {wrong # args: should be "copy path from ?xmlobj? path"}}
    48 # this test works for new tcl bindings, different error message
    49 test library-9.0.3.2 {copy command, 1 arg} {
     33} {1 {wrong # args: should be "libraryObj0 copy path from ?arg arg ...?"}}
     34test library-9.0.3.1 {copy command, 1 arg} {
    5035    list [catch {$lib copy "input.number(min)" from } msg] $msg
    51 } {1 {wrong # args: should be "::libraryObj0 copy path from ?xmlobj? path"}}
    52 # this test works for old tcl bindings
    53 # does not work for new tcl bindings because the bad paths are not
    54 # discovered in the binding, but in the core copy function and
    55 # currently errors from the core functions are not relayed to
    56 # the bindings.
    57 #test library-9.0.4 {copy command not enough arg} {
    58 #    list [catch {$lib copy "input.number(min)" from $lib} msg] $msg
    59 #} {1 {bad path component "::libraryObj0"}}
    60 # this test works for old tcl bindings, different error message
    61 #test library-9.0.5.1 {copy command not enough arg} {
    62 #    list [catch {$lib copy "input.number(min)" from } msg] $msg
    63 #} {1 {wrong # args: should be "copy path from ?xmlobj? path"}}
    64 test library-9.0.5.2 {copy command not enough arg} {
     36} {1 {wrong # args: should be "copy path from ?xmlobj? path"}}
     37test library-9.0.4 {copy command not enough arg} {
     38    list [catch {$lib copy "input.number(min)" from $lib} msg] $msg
     39} {1 {bad path component "::libraryObj0"}}
     40test library-9.0.5.1 {copy command not enough arg} {
    6541    list [catch {$lib copy "input.number(min)" from } msg] $msg
    66 } {1 {wrong # args: should be "::libraryObj0 copy path from ?xmlobj? path"}}
     42} {1 {wrong # args: should be "copy path from ?xmlobj? path"}}
    6743test library-9.1.1 {copy command, bad syntax, switched from -> junk} {
    6844    list [catch {$lib copy "input.number(blah)" junk "input.number(min)"} msg] $msg
  • trunk/lang/tcl/tests/diff.test

    r444 r1042  
    3434set libFromGet [$libDefault element -as object "input.number(max)"]
    3535
    36 # this test works for old tcl bindings, different error message
    37 #test library-10.0.1.1 {diff command, no arguments} {
    38 #    list [catch {$lib diff} msg] $msg
    39 #} {1 {wrong # args: should be "libraryObj0 diff libobj"}}
    40 # this test works for new tcl bindings, different error message
    41 test library-10.0.1.2 {diff command, no arguments} {
     36test library-10.0.1.1 {diff command, no arguments} {
    4237    list [catch {$lib diff} msg] $msg
    43 } {1 {wrong # args: should be "::libraryObj0 diff xmlobj"}}
     38} {1 {wrong # args: should be "libraryObj0 diff libobj"}}
    4439test library-10.1.1 {diff command, one argument, no difference} {
    4540    $lib diff $libnew
     
    6762test library-10.3.1 {diff command, two arguments, returns error} {
    6863    list [catch {$lib diff $libnew $libnew} msg] $msg
    69 } {1 {wrong # args: should be "::libraryObj0 diff xmlobj"}}
     64} {1 {wrong # args: should be "libraryObj0 diff libobj"}}
    7065test library-10.3.2 {diff command, bad second arg, returns error} {
    7166    list [catch {$lib diff slfd} msg] $msg
  • trunk/lang/tcl/tests/element.test

    r424 r1042  
    4141    list [catch {$lib element "input.number(min)" "wreew"} msg] $msg
    4242} {1 {wrong # args: should be "element ?-as fval? ?path?"}}
    43 # this test works for old tcl bindings, different error message
    44 #test library-5.3.1.1 {element command path -as flag  no option} {
    45 #    list [catch {$lib element -as} msg] $msg
    46 #} {1 {bad path component "-as"}}
    47 # this test works for new tcl bindings, different error message
    48 test library-5.3.1.2 {element command path -as flag  no option} {
     43test library-5.3.1.1 {element command path -as flag  no option} {
    4944    list [catch {$lib element -as} msg] $msg
    50 } {1 {bad flavor "" for -as: should be component, id, object, path, type}}
     45} {1 {bad path component "-as"}}
    5146test library-5.3.2 {element command path -as component, path with id} {
    5247    $lib element -as component "input.number(max)"
     
    6560    list [catch {$ele isa ::Rappture::LibraryObj} msg] $msg
    6661} {0 1}
    67 # this test works for old tcl bindings, different error message
    68 #test library-5.3.7.1 {element command path -as junk, path with id} {
    69 #    list [catch {$lib element -as junk "input.number(max)"} msg] $msg
    70 #} {1 {bad flavor "junk": should be component, id, object, path, type}}
    71 # this test works for new tcl bindings, different error message
    72 test library-5.3.7.2 {element command path -as junk, path with id} {
     62test library-5.3.7.1 {element command path -as junk, path with id} {
    7363    list [catch {$lib element -as junk "input.number(max)"} msg] $msg
    74 } {1 {bad flavor "junk" for -as: should be component, id, object, path, type}}
     64} {1 {bad flavor "junk": should be component, id, object, path, type}}
    7565test library-5.3.8 {element command path -as component, path does not exist} {
    7666    $lib element -as component "input.test(we)"
  • trunk/lang/tcl/tests/encode.test

    r725 r1042  
    6565test encode-2.0.0 {Rappture::encoding::encode, 0 arguments} {
    6666    list [catch {Rappture::encoding::encode} msg] $msg
    67 } {1 {wrong # args: should be "Rappture::encoding::encode ?-as z|b64|zb64? ?-no-header? <string>"}}
     67} {1 {wrong # args: should be "Rappture::encoding::encode ?-as z|b64|zb64? ?-no-header? ?--? <string>"}}
    6868
    6969test encode-2.1.0 {Rappture::encoding::encode, ascii string argument} {
     
    9191test encode-2.2.2 {Rappture::encoding::encode, -as flag correct value z} {
    9292    list [catch {Rappture::encoding::encode -as z} msg] $msg
    93 } {1 {wrong # args: should be "Rappture::encoding::encode ?-as z|b64|zb64? ?-no-header? <string>"}}
     93} {1 {wrong # args: should be "Rappture::encoding::encode ?-as z|b64|zb64? ?-no-header? ?--? <string>"}}
    9494
    9595test encode-2.2.3 {Rappture::encoding::encode, -as z w/ string} {
     
    103103}}
    104104
     105test encode-2.2.5 {Rappture::encoding::encode with --} {
     106    list [catch {Rappture::encoding::encode -hi} msg] $msg
     107} {1 {bad option "-hi": should be -as, -no-header, --}}
     108
     109test encode-2.2.6 {Rappture::encoding::encode with --} {
     110    list [catch {Rappture::encoding::encode -- -hi} msg] $msg
     111} {0 {@@RP-ENC:zb64
     112H4sIAAAAAAAAA9PNyAQA8jSeVgMAAAA=
     113}}
     114
    105115#----------------------------------------------------------
    106116#----------------------------------------------------------
     
    111121test decode-3.0.0 {Rappture::encoding::decode, 0 arguments} {
    112122    list [catch {Rappture::encoding::decode} msg] $msg
    113 } {1 {wrong # args: should be "Rappture::encoding::decode ?-as z|b64|zb64? <string>"}}
     123} {1 {wrong # args: should be "Rappture::encoding::decode ?-as z|b64|zb64? ?--? <string>"}}
    114124
    115125test decode-3.1.0 {Rappture::encoding::decode, 1 arg, b64 encoded} {
     
    125135test decode-3.1.2 {Rappture::encoding::decode, 2 args} {
    126136    list [catch {Rappture::encoding::decode "hi" "bye"} msg] $msg
    127 } {1 {wrong # args: should be "Rappture::encoding::decode ?-as z|b64|zb64? <string>"}}
     137} {1 {wrong # args: should be "Rappture::encoding::decode ?-as z|b64|zb64? ?--? <string>"}}
    128138
    129139test decode-3.2.0 {Rappture::encoding::decode, -as flag, no value} {
     
    133143test decode-3.2.1 {Rappture::encoding::decode, -as flag, bad value} {
    134144    list [catch {Rappture::encoding::decode -as zz} msg] $msg
    135 } {1 {wrong # args: should be "Rappture::encoding::decode ?-as z|b64|zb64? <string>"}}
     145} {1 {bad value "zz": should be one of z, b64, zb64}}
    136146
    137147test decode-3.2.2 {Rappture::encoding::decode, -as flag, zb64 w/ string} {
     
    151161} {This is a test}
    152162
     163test encode-3.2.5 {Rappture::encoding::decode with --} {
     164    list [catch {Rappture::encoding::decode -hi} msg] $msg
     165} {1 {bad option "-hi": should be -as, --}}
     166
     167test encode-3.2.6 {Rappture::encoding::decode with --} {
     168    list [catch {Rappture::encoding::decode -- -hi} msg] $msg
     169} {0 -hi}
     170
    153171
    154172::tcltest::cleanupTests
  • trunk/lang/tcl/tests/get.test

    r424 r1042  
    3131test get-1.0.2 {get command, two arguments } {
    3232    list [ catch {$lib get "input.number(min).default" "ggg"} msg] $msg
    33 } {1 {wrong # args: should be "::libraryObj0 get ?path?"}}
     33} {1 {wrong # args: should be "get ?-decode yes? ?path?"}}
    3434#----------------------------------------------------------
    3535test get-1.1 {get command valid path} {
  • trunk/lang/tcl/tests/isa.test

    r424 r1042  
    2121set lib [Rappture::library rplib_test.xml]
    2222
     23itcl::class foo { # used for tests below }
     24
    2325#----------------------------------------------------------
    2426# isa command
     
    2729test library-7.0.1 {isa command 0 arg} {
    2830    list [catch {$lib isa} msg] $msg
    29 } {1 {wrong # args: should be "::libraryObj0 isa objType"}}
     31} {1 {wrong # args: should be "object isa className"}}
    3032test library-7.1.1 {isa command 1 valid arg} {
    3133    $lib isa ::Rappture::LibraryObj
    3234} {1}
    3335test library-7.1.2 {isa command 1 invalid arg} {
    34     $lib isa ::Rappture::Curve
     36    $lib isa ::foo
    3537} {0}
    3638test library-7.1.3 {isa command 1 invalid arg} {
    37     $lib isa sdfsdf
    38 } {0}
     39    list [catch {$lib isa sdfsdf} result] $result
     40} {1 {class "sdfsdf" not found in context "::Rappture::LibraryObj"}}
    3941test library-7.2.1 {isa command 2 args} {
    4042    list [catch {$lib isa ::Rappture::LibraryObj ::Rappture::LibraryObj} msg] $msg
    41 } {1 {wrong # args: should be "::libraryObj0 isa objType"}}
     43} {1 {wrong # args: should be "object isa className"}}
    4244
    4345
  • trunk/lang/tcl/tests/parent.test

    r424 r1042  
    4040test library-6.2.1 {parent command path 2 arg} {
    4141    list [catch {$lib parent "input.number(min)" "wreew"} msg] $msg
    42 } {1 {wrong # args: should be "parent ?-as <fval>? ?<path>?"}}
     42} {1 {wrong # args: should be "parent ?-as fval? ?path?"}}
    4343test library-6.3.1 {parent command path -as flag  no option} {
    4444    list [catch {$lib parent -as} msg] $msg
    45 } {1 {bad flavor "" for -as: should be component, id, object, path, type}}
     45} {1 {bad path component "-as"}}
    4646test library-6.3.2 {parent command path -as flag component path with id} {
    4747    $lib parent -as component "input.number(max).default"
  • trunk/lang/tcl/tests/put.test

    r424 r1042  
    3636    set libPut [Rappture::library rplib_test.xml]
    3737    list [catch {$libPut put} msg] $msg
    38 } {1 {wrong # args: should be "put ?-append yes? ?-id num? ?<path>? <string>"}}
     38} {1 {wrong # args: should be "put ?-append bval? ?-id num? ?-type string|file? ?-compress bval? ?path? string"}}
    3939test library-4.1.1 {put command valid path 1 arg} {
    4040    catch {unset libPut}
     
    9595    # $libPut xml
    9696} {1 {expected boolean value but got "input.test(withId)"}}
    97 test library-4.2.4 {put command test append blank} {
    98     # catch {unset libPut}
    99     # set libPut [Rappture::library rplib_test.xml]
    100     list [catch {$libPut put -append} msg] $msg
    101 } {1 {expected boolean value but got ""}}
    10297test library-4.2.5 {put command test append junk} {
    10398    catch {unset libPut}
     
    155150    set libPut [Rappture::library rplib_test.xml]
    156151    list [catch {$libPut put "input.test" "val1" "val2"} msg] $msg
    157 } {1 {wrong # args: should be "put ?-append yes? ?-id num? ?<path>? <string>"}}
     152} {1 {wrong # args: should be "put ?-append bval? ?-id num? ?-type string|file? ?-compress bval? ?path? string"}}
    158153
    159154
  • trunk/lang/tcl/tests/remove.test

    r403 r1042  
    2828test library-11.0.1 {remove command, 2 arguments} {
    2929    list [catch {$lib remove output junk} msg] $msg
    30 } {1 {wrong # args: should be "::libraryObj0 remove ?<path>?"}}
     30} {1 {wrong # args: should be "libraryObj0 remove ?path?"}}
    3131test library-11.1.1 {remove command, 1 argument, valid path} {
    3232    $lib remove output
    3333    $lib xml
    34 } {<?xml version="1.0"?>
    35 <run>
     34} {<run>
    3635    <tool>
    3736        <title>Graphing Calculator</title>
  • trunk/lang/tcl/tests/xml.test

    r403 r1042  
    3030    set lib [Rappture::library rplib_test.xml]
    3131    set xmltext [$lib xml]
    32 } {<?xml version="1.0"?>
    33 <run>
     32} {<run>
    3433    <tool>
    3534        <title>Graphing Calculator</title>
     
    8382    set lib [Rappture::library rplib_test.xml]
    8483    list [catch {$lib xml "1moreArg"} msg] $msg
    85 } {1 {wrong # args: should be "::libraryObj1 xml "}}
     84} {1 {wrong # args: should be "libraryObj1 xml"}}
    8685
    8786
Note: See TracChangeset for help on using the changeset viewer.