# findBadExternals.tcl -- # # This script scans the Tcl load library for exported symbols # that do not begin with 'Tcl' or 'tcl'. It reports them on the # standard output. It is used to make sure that the library does # not inadvertently export externals that may be in conflict with # other code. # # Usage: # # tclsh findBadExternals.tcl /path/to/tclXX.so-or-.dll # # Copyright (c) 2005 George Peter Staplin and Kevin Kenny # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. #---------------------------------------------------------------------- proc main {argc argv} { if {$argc != 1} { puts stderr "syntax is: [info script] libtcl" return 1 } switch -exact -- $::tcl_platform(platform) { unix - macosx { set status [catch { exec nm --extern-only --defined-only [lindex $argv 0] } result] } windows { set status [catch { exec dumpbin /exports [lindex $argv 0] } result] } } if {$status != 0 && $::errorCode ne "NONE"} { puts $result return 1 } foreach line [split $result \n] { if {! [string match {* [Tt]cl*} $line]} { puts $line } } return 0 } exit [main $::argc $::argv]