Import Tcl-core 8.6.6 (as of svn r86089)
This commit is contained in:
53
tools/findBadExternals.tcl
Normal file
53
tools/findBadExternals.tcl
Normal file
@@ -0,0 +1,53 @@
|
||||
# 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]
|
||||
Reference in New Issue
Block a user