Annotation of micropolis/src/tclx/tcllib/tclinit.tcl, revision 1.1

1.1     ! root        1: #-----------------------------------------------------------------------------
        !             2: # TclInit.tcl -- Extended Tcl initialization.
        !             3: #-----------------------------------------------------------------------------
        !             4: # $Id: TclInit.tcl,v 2.0 1992/10/16 04:51:37 markd Rel $
        !             5: #-----------------------------------------------------------------------------
        !             6: 
        !             7: global env TCLENV
        !             8: set TCLENV(inUnknown) 0
        !             9: 
        !            10: #
        !            11: # Unknown command trap handler.
        !            12: #
        !            13: proc unknown {cmdName args} {
        !            14:     global TCLENV
        !            15:     if $TCLENV(inUnknown) {
        !            16:         error "recursive unknown command trap: \"$cmdName\""}
        !            17:     set TCLENV(inUnknown) 1
        !            18:     
        !            19:     set stat [catch {demand_load $cmdName} ret]
        !            20:     if {$stat == 0 && $ret} {
        !            21:         set TCLENV(inUnknown) 0
        !            22:         return [uplevel 1 [list eval $cmdName $args]]
        !            23:     }
        !            24: 
        !            25:     if {$stat != 0} {
        !            26:         global errorInfo errorCode
        !            27:         set TCLENV(inUnknown) 0
        !            28:         error $ret $errorInfo $errorCode
        !            29:     }
        !            30: 
        !            31:     global env interactiveSession noAutoExec
        !            32: 
        !            33:     if {$interactiveSession && ([info level] == 1) && ([info script] == "") &&
        !            34:             (!([info exists noAutoExec] && [set noAutoExec]))} {
        !            35:         if {[file rootname $cmdName] == "$cmdName"} {
        !            36:             if [info exists env(PATH)] {
        !            37:                 set binpath [searchpath [split $env(PATH) :] $cmdName]
        !            38:             } else {
        !            39:                 set binpath [searchpath "." $cmdName]
        !            40:             }
        !            41:         } else {
        !            42:             set binpath $cmdName
        !            43:         }
        !            44:         if {[file executable $binpath]} {
        !            45:             set TCLENV(inUnknown) 0
        !            46:             uplevel 1 [list system [concat $cmdName $args]]
        !            47:             return
        !            48:         }
        !            49:     }
        !            50:     set TCLENV(inUnknown) 0
        !            51:     error "invalid command name: \"$cmdName\""
        !            52: }
        !            53: 
        !            54: #
        !            55: # Search a path list for a file. (catch is for bad ~user)
        !            56: #
        !            57: proc searchpath {pathlist file} {
        !            58:     foreach dir $pathlist {
        !            59:         if {$dir == ""} {set dir .}
        !            60:         if {[catch {file exists $dir/$file} result] == 0 && $result}  {
        !            61:             return $dir/$file
        !            62:         }
        !            63:     }
        !            64:     return {}
        !            65: }
        !            66: 
        !            67: #
        !            68: # Define a proc to be available for demand_load.
        !            69: #
        !            70: proc autoload {filenam args} {
        !            71:     global TCLENV
        !            72:     foreach i $args {
        !            73:         set TCLENV(PROC:$i) [list F $filenam]
        !            74:     }
        !            75: }
        !            76: 
        !            77: #
        !            78: # Search TCLPATH for a file to source.
        !            79: #
        !            80: proc load {name} {
        !            81:     global TCLPATH errorCode
        !            82:     if {[string first / $name] >= 0} {
        !            83:         return  [uplevel #0 source $name]
        !            84:     }
        !            85:     set where [searchpath $TCLPATH $name]
        !            86:     if [lempty $where] {
        !            87:         error "couldn't find $name in Tcl search path" "" "TCLSH FILE_NOT_FOUND"
        !            88:     }
        !            89:     uplevel #0 source $where
        !            90: }
        !            91: 
        !            92: autoload buildidx.tcl buildpackageindex
        !            93: 
        !            94: # == Put any code you want all Tcl programs to include here. ==
        !            95: 
        !            96: if !$interactiveSession return
        !            97: 
        !            98: # == Interactive Tcl session initialization ==
        !            99: 
        !           100: set TCLENV(topLevelPromptHook) {global programName; concat "$programName>" }
        !           101: set TCLENV(downLevelPromptHook) {concat "=>"}
        !           102: 
        !           103: if [file readable ~/.tclrc] {source ~/.tclrc}
        !           104: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.