Index: client/1.0/pkgr.eagle ================================================================== --- client/1.0/pkgr.eagle +++ client/1.0/pkgr.eagle @@ -19,17 +19,39 @@ # support namespaces ourselves, we do not want to pollute the global # namespace if this script actually ends up being evaluated in Tcl. # namespace eval ::PackageRepository { # - # NOTE: This package absolutely requires the Eagle core script library - # package, even when it is being used by native Tcl. If needed, - # prior to loading this package, the native Tcl auto-path should - # be modified to include the "Eagle1.0" directory (i.e. the one - # containing the Eagle core script library file "init.eagle"). + # NOTE: When running from the source tree, modify the auto-path to include + # the "Eagle1.0" directory within externals. # - package require Eagle.Library + if {1} then { + lappend ::auto_path [file join [file dirname [file dirname \ + [file dirname [info script]]]] externals Eagle lib Eagle1.0] + } + + # + # NOTE: This package requires several packages from the Eagle core script + # library, even when it is being used by native Tcl. If necessary, + # prior to evaluating this file in native Tcl, its auto-path should + # be modified to include an "Eagle1.0" directory (i.e. a directory + # containing the Eagle core script library files "auxiliary.eagle", + # "file1.eagle", and "platform.eagle"). + # + package require Eagle.Platform + package require Eagle.Auxiliary + package require Eagle.File + + # + # NOTE: This block is intended to be evaluated successfully by native + # Tcl only. + # + catch { + ::Eagle::exportAndImportPackageCommands ::Eagle [list \ + appendArgs getDictionaryValue isEagle readFile writeFile] \ + false false + } # # NOTE: This procedure returns a formatted, possibly version-specific, # package name, for use in logging. # Index: client/1.0/pkgr.eagle.asc ================================================================== --- client/1.0/pkgr.eagle.asc +++ client/1.0/pkgr.eagle.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJXukjoAAoJEFAslq9JXcLZcP8P/R+gHDIAU2RDsyd2e/WS0wp8 -nukTGsFJGCsU2iJj25+/Fg6Wch5Q/+y95MrG3b6/IbxGIg3Ceoya9PRe327E/GLL -k6XmYH4aqEpDxeo9Wdnbp650NUnae17Rxz0OKKqkZFKgGYdYHWlRWkkgQDejbkF5 -/sCN2YujnZW73G5q3fO4c2SgLIAbqa1vTKNLx+y4JQD29DKPfhSdnyAXF1s78cEe -KjC4fBNuzmZguX47IKRkgVftS+HCsDOTg5OE8z7Jfz6nDqBG0I8AfdjjaKlqfAPk -+MgQW5soVo+k5IctK5NOPnZgS9oQr6PeB/FRxEFQ3LMAJ/1HoXg1rx1RjvcoZFVx -y11qL2eAbbhA9BGKnoCpWAba2Rd/K0gNaX/lPEzuQ2gqPyDiTKLKlMVkFoe3veF2 -qocMKB5rKT6IYo+VvTWnyWpRRXh5VX2MKvb4ODto0NpBiGUXrFsrahhRkGPeIsrY -unpquq7Y0ifm4b0cgbo2dKcDe0tpEP52RN9CS4I5T1H835z16cThGKZQQojjHbwO -sctFN9dn3t0ueaw5lJVeLU/VarWYlpv7OE9RsMrTL2qwxjq04eOYmyF1x0NE1omC -8TeRV/TGRUMeEHxKNBU0ousDnfuYNO3Az0cMQr5Qz2KBU9NEuxxTwwajubHDOB3K -rf+q63yhjWoEk9t2PAtZ -=2Bom +iQIcBAABCAAGBQJXwrG4AAoJEFAslq9JXcLZTXYP/isdVHPK7vJtFtSKkuem+tep +g8x4+kqh/i+aUcIAs0v9SHZR2vHxrI1I4lzl/V+qAyHsRG9sRMEdGihMo2yMFElD +TYwNKfCnZSo0sAlN/4s6RogcRPHbNvzJlUfMshyzQVxDz2qmwzun/0YywrDZ+DaP +CNN7ggia+qFqv8yCaWemk+Aelw3mr8w684FMJ2Zo/Ut/LXGG6l07S7lcJJCPrw1E +EDvv6TG8jS/WmskYEjzB8JgI4r76rfb71vF1QbgxFKUHl/MlPOcgzkGhoPTTh4Pr +AK3kOpQ1zOGeIIAyXJ1Q2Jsv9BElELH93MkbLe3wHiJsD8TKYrzZ4W8iKSrdv76o +MzqyponsMi69wT+/PdEgKn/q/sL3j+b8AL/RcHMp/9FeEHG7KKQSIfh8fN9eCYyY +2SOzvXoELFZh+/jSHpIbWak/wVdyhVZY5zYyZDKIfClQaw82qSaMC2c/T68Fttr4 +4hJj4/466F+BvD38rMKyQUh4iU807BHnUzB40Jl1+lOt+cyJzytZxf2q8x398mXp +5SBRvEwnO1VRL67i+lg8eIBF4KJ6PaJP33xITUA8rN3ruIu9/keKS7O3nkDMcDfX +JbtzsFto3Gp6udV+bMD4iHWt2Q5K3YBKJNDdTkb+aqxzaOIrXkXy7nZIbwT+S0fH +2gaTSJqG3vkFGW2lOz1L +=4Bis -----END PGP SIGNATURE----- Index: client/1.0/pkgr.eagle.harpy ================================================================== --- client/1.0/pkgr.eagle.harpy +++ client/1.0/pkgr.eagle.harpy @@ -19,50 +19,50 @@ None Mistachkin Systems - 47e8d3e7-3dd5-48bf-b342-836b23e32ebf + c74e1f6b-2d84-4211-9e57-7dc5900166a6 SHA512 Script - 2016-08-25T21:27:05.9892578Z + 2016-08-28T09:40:46.8098359Z -1.00:00:00 0x9559f6017247e3e2 - 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 Index: client/1.0/pkgr.eagle.harpy.asc ================================================================== --- client/1.0/pkgr.eagle.harpy.asc +++ client/1.0/pkgr.eagle.harpy.asc @@ -1,18 +1,18 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository -iQIcBAABCAAGBQJXukjrAAoJEFAslq9JXcLZbY4P/jE4D00nd7/s6rdf5/OR6p95 -5GtSB/7k84G7ARinCTfFYrIH6NiOJja2Q/KzZ7ZyrZPjUbu6TY1zdc5YjhsMJ/n+ -tNJyqX0wR8puVMRWKWUHdjQoldMFit52SSj9469WFwD7hoNY1U6JxD3Y9bPXQFIs -k7lOk93FZccEcQ9fTfbYxM5aFSVdAJ8GeWK3dO4/Qm0OkBONxFPkay+1SD9+k+fQ -RmN8h726hro6/VP6KCHSfgvb0ZMnaT7tdxtE3+JNd5ImJkiGG+J0DIr1VsJ7fRe4 -NeoXi7TJ5zgaVU3Mh0IJ5DOgIGTD38Hp6XDiA1hLO14UAJYUAOdDoPKxxZBShbje -8nVVFuJ0UDSEPUejV8q15B9xbgf7YFogA69LgswtmVCixMATyFLYabBQUqBpT4QI -Aed9mYFEFCsao8WbBr7BP3gcoiSAizL+wSi7IkCTZmSybC3F1eVZe8K5X6qwD3yy -BNtOb9MyjSYDgOZ6xrJI7T9lK3wrjcrthV6QoIb88wkdZkFFKUesRfN6eTzyG1Xr -bX6YetT1anL9Iny0i6S1R1f5KgWcWnLr8QGDQohTLR80H+aULh62FgXH/wZdZazq -wGzqV63ue1d7YofQHc7xpdIhxFQKg9WDqCSOsQsUfs8IubKJJmAwgY39nefdD49a -ng/KOXn6b9mDv2AUrWyc -=GG1I +iQIcBAABCAAGBQJXwrG6AAoJEFAslq9JXcLZ0pkQAL83BkvudG9MI+UJLV73Bc05 +XSP2WbCJumtYwgR9DXT4Rd4vyg13kwXtaWVR8eJSviyjLEh3DlYpPmbGT1fwv1Mm +S+1RvTwkgoclFU3T1L3EheZHOfJS5cPbYb07vGPlH3BvW/lTe2BUpo2teOUkrDjj +/AuD+PbKef2NzafOd05WpCHvMATK4wxOhQ+zZiQepuR0pFIJEP3iOAWX6gd+9Wrx +EjGrbxZOwB2kQMzHryVWnHWdb/pRDm8lLbGltvL3QEE3IfnezQk+l+QWtVoqmIaQ +wQb3uevC6bkZTI69IDO2SzN4X1xk8qjX2gDLg0DQ3l9+etSXLRYAysV4BfZkL2lP +p4rY8RAIrhcmYP3dBKh/1lTQj5N31/At5dLV7OVS0drhEYTjQMEfYu1CSSe5HcBt +GwVAePqx0qOwwkh/BQ8lpzaARIxOz4xQ1Rb9kj++G4Rn/VpKhcxp6Szz5bN1A9Qv +DiAmJ2Nt0o/tROdEeyko0LTTjwiHXeL0AXQwOLpId/Ub6iUBg+jopTB6yZ2ILtBy +52nQxBSLrUGRbufsIUNixnxkVCG96HcHP+rqL8Sjh0nM0tDeJqYie1bRm9swEEpz +XmwDm2ppPNmlOlMolSIZeW2zFS/NpwPTh1Hl5AlW6G+qFMdDITH5YPbzrejp5bta ++22SBhBjMWsQpb9c1X4s +=0lhA -----END PGP SIGNATURE----- ADDED externals/Eagle/lib/Eagle1.0/auxiliary.eagle Index: externals/Eagle/lib/Eagle1.0/auxiliary.eagle ================================================================== --- externals/Eagle/lib/Eagle1.0/auxiliary.eagle +++ externals/Eagle/lib/Eagle1.0/auxiliary.eagle @@ -0,0 +1,122 @@ +############################################################################### +# +# auxiliary.eagle -- +# +# Extensible Adaptable Generalized Logic Engine (Eagle) +# Eagle Auxiliary Package File +# +# Copyright (c) 2007-2012 by Joe Mistachkin. All rights reserved. +# +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# RCS: @(#) $Id: $ +# +############################################################################### + +# +# NOTE: Use our own namespace here because even though we do not directly +# support namespaces ourselves, we do not want to pollute the global +# namespace if this script actually ends up being evaluated in Tcl. +# +namespace eval ::Eagle { + # + # NOTE: This procedure returns the value of an environment variable, if + # it actually exists; otherwise, an empty string is returned. + # + proc getEnvironmentVariable { name } { + global env + + return [expr {[info exists env($name)] ? $env($name) : ""}] + } + + # + # NOTE: This procedure accepts an any number of arguments. The arguments + # are appended into one big string, verbatim. The resulting string + # is returned. Normally, this procedure is used to avoid undesired + # string interpolation operations. + # + proc appendArgs { args } { + set result ""; eval append result $args + } + + # + # NOTE: This procedure attempts to locate the first named value we are + # interested in. The dictionary argument must be a list with an + # even number of elements in the following format: + # + # ... + # + proc getDictionaryValue { dictionary name {default ""} {wrap ""} } { + foreach {pairName pairValue} $dictionary { + # + # NOTE: Does this name match the one specified by the caller? + # + if {$pairName eq $name} then { + # + # NOTE: Return the value, optionally wrapped. + # + return [appendArgs $wrap $pairValue $wrap] + } + } + + # + # NOTE: No match was found, return the default value. + # + return $default + } + + # + # NOTE: This procedure exports one or more commands from the specified + # namespace and imports them into the global namespace, optionally + # forgetting all previous imports from the specified namespace. + # + proc exportAndImportPackageCommands { namespace exports forget force } { + # + # NOTE: Forget any previous commands that were imported from + # this namespace into the global namespace? + # + if {$forget} then { + namespace eval :: [list namespace forget [appendArgs $namespace ::*]] + } + + # + # NOTE: Process each command to be exported from the specified + # namespace and import it into the global namespace, if + # necessary. + # + foreach export $exports { + # + # NOTE: Force importing of our exported commands into the global + # namespace? Otherwise, see if the command is already + # present in the global namespace before trying to import + # it. + # + if {$force || \ + [llength [info commands [appendArgs :: $export]]] == 0} then { + # + # NOTE: Export the specified command from the specified namespace. + # + namespace eval $namespace [list namespace export $export] + + # + # NOTE: Import the specified command into the global namespace. + # + set namespaceExport [appendArgs $namespace :: $export] + + if {$force} then { + namespace eval :: [list namespace import -force $namespaceExport] + } else { + namespace eval :: [list namespace import $namespaceExport] + } + } + } + } + + # + # NOTE: Provide the Eagle "auxiliary" package to the interpreter. + # + package provide Eagle.Auxiliary \ + [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}] +} + ADDED externals/Eagle/lib/Eagle1.0/auxiliary.eagle.harpy Index: externals/Eagle/lib/Eagle1.0/auxiliary.eagle.harpy ================================================================== --- externals/Eagle/lib/Eagle1.0/auxiliary.eagle.harpy +++ externals/Eagle/lib/Eagle1.0/auxiliary.eagle.harpy @@ -0,0 +1,68 @@ + + + + None + Mistachkin Systems + 91ef85fe-7679-47c7-a0e9-f7d7a080e4b4 + SHA512 + Script + 2016-08-27T05:29:08.8293672Z + -1.00:00:00 + 0x9559f6017247e3e2 + + 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 + + ADDED externals/Eagle/lib/Eagle1.0/file1.eagle Index: externals/Eagle/lib/Eagle1.0/file1.eagle ================================================================== --- externals/Eagle/lib/Eagle1.0/file1.eagle +++ externals/Eagle/lib/Eagle1.0/file1.eagle @@ -0,0 +1,75 @@ +############################################################################### +# +# file1.eagle -- +# +# Extensible Adaptable Generalized Logic Engine (Eagle) +# Eagle File 1 Package File +# +# Copyright (c) 2007-2012 by Joe Mistachkin. All rights reserved. +# +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# RCS: @(#) $Id: $ +# +############################################################################### + +# +# NOTE: Use our own namespace here because even though we do not directly +# support namespaces ourselves, we do not want to pollute the global +# namespace if this script actually ends up being evaluated in Tcl. +# +namespace eval ::Eagle { + # + # NOTE: This procedure reconfigures the specified channel to full binary + # mode. + # + proc makeBinaryChannel { channel } { + fconfigure $channel -encoding binary -translation binary; # BINARY DATA + } + + # + # NOTE: This procedure reads all data from the specified binary file and + # returns it. + # + proc readFile { fileName } { + set channel [open $fileName RDONLY] + makeBinaryChannel $channel + set result [read $channel] + close $channel + return $result + } + + # + # NOTE: This procedure writes all data to the specified binary file and + # returns an empty string. Previous data contained in the file, + # if any, is lost. + # + proc writeFile { fileName data } { + set channel [open $fileName {WRONLY CREAT TRUNC}] + makeBinaryChannel $channel + puts -nonewline $channel $data + close $channel + return "" + } + + # + # NOTE: This procedure appends data to the specified binary file and + # returns an empty string. Previous data contained in the file, + # if any, is preserved. + # + proc appendFile { fileName data } { + set channel [open $fileName {WRONLY CREAT APPEND}] + makeBinaryChannel $channel + puts -nonewline $channel $data + close $channel + return "" + } + + # + # NOTE: Provide the Eagle "file" package to the interpreter. + # + package provide Eagle.File \ + [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}] +} + ADDED externals/Eagle/lib/Eagle1.0/file1.eagle.harpy Index: externals/Eagle/lib/Eagle1.0/file1.eagle.harpy ================================================================== --- externals/Eagle/lib/Eagle1.0/file1.eagle.harpy +++ externals/Eagle/lib/Eagle1.0/file1.eagle.harpy @@ -0,0 +1,68 @@ + + + + None + Mistachkin Systems + 5508fd9d-1cc7-41e6-af44-6f5ae6f6ed0a + SHA512 + Script + 2016-08-27T08:02:54.7688203Z + -1.00:00:00 + 0x9559f6017247e3e2 + + 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 + + ADDED externals/Eagle/lib/Eagle1.0/pkgIndex.eagle Index: externals/Eagle/lib/Eagle1.0/pkgIndex.eagle ================================================================== --- externals/Eagle/lib/Eagle1.0/pkgIndex.eagle +++ externals/Eagle/lib/Eagle1.0/pkgIndex.eagle @@ -0,0 +1,27 @@ +############################################################################### +# +# pkgIndex.eagle -- +# +# Extensible Adaptable Generalized Logic Engine (Eagle) +# Package Index File +# +# Copyright (c) 2007-2012 by Joe Mistachkin. All rights reserved. +# +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# RCS: @(#) $Id: $ +# +############################################################################### + +if {![package vsatisfies [package provide Tcl] 8.4]} {return} +if {![package vsatisfies [package provide Eagle] 1.0]} {return} + +package ifneeded Eagle.Auxiliary 1.0 \ + [list sourceWithInfo [file join $dir auxiliary.eagle]] + +package ifneeded Eagle.File 1.0 \ + [list sourceWithInfo [file join $dir file1.eagle]] + +package ifneeded Eagle.Platform 1.0 \ + [list sourceWithInfo [file join $dir platform.eagle]] ADDED externals/Eagle/lib/Eagle1.0/pkgIndex.eagle.harpy Index: externals/Eagle/lib/Eagle1.0/pkgIndex.eagle.harpy ================================================================== --- externals/Eagle/lib/Eagle1.0/pkgIndex.eagle.harpy +++ externals/Eagle/lib/Eagle1.0/pkgIndex.eagle.harpy @@ -0,0 +1,68 @@ + + + + None + Mistachkin Systems + 0ac0c0e2-f1d1-431a-bc48-e098d0ca87c6 + SHA512 + Script + 2016-08-28T09:40:06.7737031Z + -1.00:00:00 + 0x9559f6017247e3e2 + + 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 + + ADDED externals/Eagle/lib/Eagle1.0/pkgIndex.tcl Index: externals/Eagle/lib/Eagle1.0/pkgIndex.tcl ================================================================== --- externals/Eagle/lib/Eagle1.0/pkgIndex.tcl +++ externals/Eagle/lib/Eagle1.0/pkgIndex.tcl @@ -0,0 +1,27 @@ +############################################################################### +# +# pkgIndex.tcl -- +# +# Extensible Adaptable Generalized Logic Engine (Eagle) +# Package Index File +# +# Copyright (c) 2007-2012 by Joe Mistachkin. All rights reserved. +# +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# RCS: @(#) $Id: $ +# +############################################################################### + +if {![package vsatisfies [package provide Tcl] 8.4]} {return} +if {[string length [package provide Eagle]] > 0} then {return} + +package ifneeded Eagle.Auxiliary 1.0 \ + [list source [file join $dir auxiliary.eagle]] + +package ifneeded Eagle.File 1.0 \ + [list source [file join $dir file1.eagle]] + +package ifneeded Eagle.Platform 1.0 \ + [list source [file join $dir platform.eagle]] ADDED externals/Eagle/lib/Eagle1.0/platform.eagle Index: externals/Eagle/lib/Eagle1.0/platform.eagle ================================================================== --- externals/Eagle/lib/Eagle1.0/platform.eagle +++ externals/Eagle/lib/Eagle1.0/platform.eagle @@ -0,0 +1,278 @@ +############################################################################### +# +# platform.eagle -- +# +# Extensible Adaptable Generalized Logic Engine (Eagle) +# Eagle Platform Package File +# +# Copyright (c) 2007-2012 by Joe Mistachkin. All rights reserved. +# +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# RCS: @(#) $Id: $ +# +############################################################################### + +# +# NOTE: Use our own namespace here because even though we do not directly +# support namespaces ourselves, we do not want to pollute the global +# namespace if this script actually ends up being evaluated in Tcl. +# +namespace eval ::Eagle { + # + # NOTE: This is the procedure that detects whether or not we are running + # in Eagle (otherwise, it is assumed that we are running in vanilla + # Tcl). This procedure must work correctly in both Tcl and Eagle + # and must return non-zero only when running in Eagle. + # + proc isEagle {} { + # + # NOTE: Nothing too fancy or expensive should be done here. In theory, + # use of this procedure should be rare; however, in practice, this + # procedure is actually used quite a bit (e.g. by the test suite). + # + return [expr {[info exists ::tcl_platform(engine)] && \ + [string compare -nocase eagle $::tcl_platform(engine)] == 0}] + } + + # + # NOTE: This is the procedure that detects whether or not we are running + # in Eagle on Mono (otherwise, we are running in Tcl or in Eagle on + # the .NET Framework). This procedure must function correctly in + # both Tcl and Eagle and must return non-zero only when running in + # Eagle on Mono. + # + proc isMono {} { + # + # NOTE: Nothing too fancy or expensive should be done here. In theory, + # use of this procedure should be rare; however, in practice, this + # procedure is actually used quite a bit (e.g. by the test suite). + # + return [expr {[info exists ::eagle_platform(runtime)] && \ + [string compare -nocase mono $::eagle_platform(runtime)] == 0}] + } + + # + # NOTE: This procedure returns non-zero if the logged on user has full + # administrator rights on this machine. Currently, this only works + # in Eagle; however, it may work from native Tcl in the future. + # + proc isAdministrator {} { + return [expr {[info exists ::eagle_platform(administrator)] && \ + $::eagle_platform(administrator)}] + } + + # + # NOTE: This is the procedure that detects whether or not we are running + # on Windows (otherwise, it is assumed that we are running on some + # flavor of Unix). This procedure must function correctly in both + # Tcl and Eagle and must return non-zero only when on Windows. + # + proc isWindows {} { + # + # NOTE: Nothing too fancy or expensive should be done here. In theory, + # use of this procedure should be rare; however, in practice, this + # procedure is actually used quite a bit (e.g. by the test suite). + # + return [expr {[info exists ::tcl_platform(platform)] && \ + $::tcl_platform(platform) eq "windows"}] + } + + # + # NOTE: This procedure should return non-zero if and only if only there + # is currently an interactive user that can respond to prompts and + # other requests for input. + # + proc isInteractive {} { + # + # TODO: Is something more complex required here? + # + return [expr {[info exists ::tcl_interactive] && $::tcl_interactive}] + } + + # + # NOTE: This procedure adds the specified directory to the PATH. It is + # designed to work on the various flavors of Windows and Unix. + # + proc addToPath { dir } { + global env + global tcl_platform + + # + # NOTE: This should work properly in both Tcl and Eagle. + # Normalize to an operating system native path. + # + set dir [file nativename $dir] + + # + # NOTE: On Windows, use PATH; otherwise (i.e. Unix), use + # LD_LIBRARY_PATH. + # + if {[isWindows]} then { + set name PATH + } else { + set name LD_LIBRARY_PATH + } + + # + # NOTE: Make sure the directory is not already in the + # loader search path. + # + if {[info exists tcl_platform(pathSeparator)]} then { + set separator $tcl_platform(pathSeparator) + } elseif {[isWindows]} then { + set separator \; + } else { + set separator : + } + + # + # NOTE: Does the necessary environment variable exist? + # + if {[info exists env($name)]} then { + # + # NOTE: Grab the value of the environment variable. + # + set value $env($name) + + # + # BUGBUG: Consider exact case only for now. + # + if {[lsearch -exact [split $value $separator] $dir] == -1} then { + # + # NOTE: Append the directory to the loader search path. + # This allows us to subsequently load DLLs that + # implicitly attempt to load other DLLs that are + # not in the application directory. + # + set env($name) [join [list $value $dir] $separator] + + # + # NOTE: Yes, we altered the search path. + # + return true + } + } else { + # + # NOTE: Create the loader search path with the directory. + # + set env($name) $dir + + # + # NOTE: Yes, we created the search path. + # + return true + } + + # + # NOTE: No, we did not alter the search path. + # + return false + } + + # + # NOTE: This procedure removes the specified directory from the PATH. + # It is designed to work on the various flavors of Windows and + # Unix. + # + proc removeFromPath { dir } { + global env + global tcl_platform + + # + # NOTE: This should work properly in both Tcl and Eagle. + # Normalize to an operating system native path. + # + set dir [file nativename $dir] + + # + # NOTE: On Windows, use PATH; otherwise (i.e. Unix), use + # LD_LIBRARY_PATH. + # + if {[isWindows]} then { + set name PATH + } else { + set name LD_LIBRARY_PATH + } + + # + # NOTE: Make sure the directory is in the loader search + # path. + # + if {[info exists tcl_platform(pathSeparator)]} then { + set separator $tcl_platform(pathSeparator) + } elseif {[isWindows]} then { + set separator \; + } else { + set separator : + } + + # + # NOTE: Does the necessary environment variable exist? + # + if {[info exists env($name)]} then { + # + # NOTE: We need to separate the directories in the path + # so that we can selectively remove the one we are + # looking for. + # + set dirs [split $env($name) $separator] + + # + # BUGBUG: Consider exact case only for now. + # + set index [lsearch -exact $dirs $dir] + + # + # NOTE: Is the directory in the loader search path? + # + if {$index != -1} then { + # + # NOTE: Remove the directory from the loader search path. + # + set dirs [lreplace $dirs $index $index] + + # + # NOTE: Replace the original loader search path with + # our modified one. + # + set env($name) [join $dirs $separator] + + # + # NOTE: Yes, we altered the search path. + # + return true + } + } + + # + # NOTE: No, we did not alter the search path. + # + return false + } + + # + # NOTE: This procedure returns non-zero if the specified file names refer + # to the same file, using the most robust method available for the + # script engine and platform. + # + proc isSameFileName { fileName1 fileName2 } { + if {[isEagle]} then { + return [file same $fileName1 $fileName2] + } else { + if {[isWindows]} then { + return [string equal -nocase $fileName1 $fileName2] + } else { + return [string equal $fileName1 $fileName2] + } + } + } + + # + # NOTE: Provide the Eagle "platform" package to the interpreter. + # + package provide Eagle.Platform \ + [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}] +} + ADDED externals/Eagle/lib/Eagle1.0/platform.eagle.harpy Index: externals/Eagle/lib/Eagle1.0/platform.eagle.harpy ================================================================== --- externals/Eagle/lib/Eagle1.0/platform.eagle.harpy +++ externals/Eagle/lib/Eagle1.0/platform.eagle.harpy @@ -0,0 +1,68 @@ + + + + None + Mistachkin Systems + c497f05f-67d0-4afd-8902-24ca3891e1d8 + SHA512 + Script + 2016-08-28T08:22:02.1194062Z + -1.00:00:00 + 0x9559f6017247e3e2 + + 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 + +