##
## Compiler2 - ::Interface
##
## (C) IPN - Ingenieurbuero fuer Praezisionsnumerik
##
## Dipl.-Ing. Andreas Otto
## Ulmenstrasse 3
## D-34289 Zierenberg
##
## Alle Rechte vorbehalten
##
package require StdLib
package require System
package require Config
PkgProvide Interface
##
## ---------------------------------------------------------------
##
namespace eval ::IShell {
}
proc ::IShell::ErrorN { args } {
::StdLib::ErrorN {ISHELL ERROR} [ concat $args [ list {please check your environment} ] ]
}
proc ::IShell::Exec { Cmd Args } {
set EXEC [ auto_execok $Cmd ]
## is Cmd is available ?
if {$EXEC == {}} {
ErrorN "can't find executable \"$Cmd\""
}
## use the old TMakeLib "Exec" wich moved to StdLib
::StdLib::Push CHANNEL DEFAULT ERROR ERROR
if {[catch { ::StdLib::Exec [ concat $EXEC $Args ] } FH]} {
ErrorN "can't execute \"$Cmd $Args\"" $FH
}
::StdLib::Pop CHANNEL ERROR
}
proc ::IShell::DExec { Dir Cmd Args } {
::Dir::Push $Dir
Exec $Cmd $Args
::Dir::Pop
}
##
## ---------------------------------------------------------------
##
namespace eval ::ITclSh {
variable EXEC [ ::Env::Arch bin $::System::TCLSH ]
#variable EXEC /home/dev1usr/Project/Compiler2/src/OtTcl.tpkg/arch/linuxi386/bin/tclsh8.3
## test the executable
::Is::Executable $EXEC
variable NAME
append NAME C M P _ N _ I
}
proc ::ITclSh::Exec { { Args {} } } {
variable EXEC
variable NAME
::Env::Push $NAME 1
::StdLib::Exec [ concat [list $EXEC] $Args ]
::Env::Pop $NAME
}
proc ::ITclSh::Open { { Args {} } } {
variable EXEC
variable NAME
::Env::Push $NAME 1
set FH [ ::StdLib::Open [ concat [list $EXEC] $Args ] ]
::Env::Pop $NAME
return $FH
}
##
## ---------------------------------------------------------------
##
namespace eval ::ITclTest {
variable EXEC [ ::Env::Arch bin $::System::TCLTEST ]
# variable EXEC [list /home/dev1usr/Project/Compiler3/src/tcl8.3.4/unix/Start -t E]
## test the executable
::Is::Executable $EXEC
variable NAME
append NAME C M P _ N _ I
}
proc ::ITclTest::Exec { Args } {
variable EXEC
variable NAME
::Env::Push $NAME 1
::StdLib::Exec [ concat $EXEC $Args ]
::Env::Pop $NAME
}
##
## ---------------------------------------------------------------
##
## ACHTUNG! test auf "::Is::Executable" nach hinten verlegen da sonst Tcl-Only Distribution
## fehler produziert
##
namespace eval ::IWish {
variable EXEC [ ::Env::Arch bin $::System::WISH ]
set env(TK_LIBRARY) [ ::Env::Arch lib tk8.3 ]
variable NAME
append NAME C M P _ N _ I
}
proc ::IWish::Exec { Args } {
variable EXEC
variable NAME
::Is::Executable $EXEC
::Env::Push $NAME 1
::StdLib::Exec [ concat $EXEC $Args ]
::Env::Pop $NAME
}
proc ::IWish::Open { Args } {
variable EXEC
variable NAME
::Is::Executable $EXEC
::Env::Push $NAME 1
set RET [ ::StdLib::Open [ concat [ list $EXEC ] $Args ] ]
::Env::Pop $NAME
return $RET
}