#! /usr/bin/tclsh # # $Id: elite-find,v 1.4 2003/03/10 23:38:06 mdw Exp $ package require "elite" "1.0.1" proc ok {s vv expr} { global argv0 set ip [interp create] foreach v $vv { upvar 1 $v var if {[array exists var]} { foreach {k d} [array get var] { $ip eval [list set ${v}($k) $d] } } else { $ip eval [list set $v $var] } } elite-worldinfo p $s foreach {k v} [array get p] { $ip eval [list set $k $v] } if {[catch { $ip eval [list expr $expr] } rc]} { puts stderr "$argv0: error in expression: $rc" exit 1 } interp delete $ip return $rc } set g $galaxy1 set d 70 for {set i 0} {$i < [llength $argv]} {incr i} { set a [lindex $argv $i] switch -glob -- $a { "-g" { incr i set a [lindex $argv $i] set g [parse-galaxy-spec $a] if {[string equal $g ""]} { puts stderr "$argv0: bad galaxy string `$a'" exit 1 } destructure {. g} $g } "--" { incr i break } "-*" { puts stderr "usage: $argv0 \[-g GALAXY\] \[EXPR\]" exit 1 } default { break } } } set expr {} if {$i == [llength $argv] - 1} { set expr [lindex $argv $i] } elseif {$i != [llength $argv]} { puts stderr "usage: $argv0 \[-g GALAXY\] \[EXPR\]" exit 1 } set ww [elite-galaxylist $g] foreach {s x y} $ww { if {[string equal $expr ""] || [ok $s {} $expr]} { puts [world-summary $s] } }