System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact ce5cb608a48b84324ff59b310580b149c8ac5968:


0000: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0010: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0030: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
0050: 0a 23 0d 0a 23 20 76 65 6e 64 6f 72 2e 65 61 67  .#..# vendor.eag
0060: 6c 65 20 2d 2d 0d 0a 23 0d 0a 23 20 45 78 74 65  le --..#..# Exte
0070: 6e 73 69 62 6c 65 20 41 64 61 70 74 61 62 6c 65  nsible Adaptable
0080: 20 47 65 6e 65 72 61 6c 69 7a 65 64 20 4c 6f 67   Generalized Log
0090: 69 63 20 45 6e 67 69 6e 65 20 28 45 61 67 6c 65  ic Engine (Eagle
00a0: 29 0d 0a 23 20 45 61 67 6c 65 20 56 65 6e 64 6f  )..# Eagle Vendo
00b0: 72 20 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e  r Initialization
00c0: 20 46 69 6c 65 20 66 6f 72 20 53 79 73 74 65 6d   File for System
00d0: 2e 44 61 74 61 2e 53 51 4c 69 74 65 0d 0a 23 0d  .Data.SQLite..#.
00e0: 0a 23 20 43 6f 70 79 72 69 67 68 74 20 28 63 29  .# Copyright (c)
00f0: 20 32 30 30 37 2d 32 30 31 32 20 62 79 20 4a 6f   2007-2012 by Jo
0100: 65 20 4d 69 73 74 61 63 68 6b 69 6e 2e 20 20 41  e Mistachkin.  A
0110: 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76  ll rights reserv
0120: 65 64 2e 0d 0a 23 0d 0a 23 20 53 65 65 20 74 68  ed...#..# See th
0130: 65 20 66 69 6c 65 20 22 6c 69 63 65 6e 73 65 2e  e file "license.
0140: 74 65 72 6d 73 22 20 66 6f 72 20 69 6e 66 6f 72  terms" for infor
0150: 6d 61 74 69 6f 6e 20 6f 6e 20 75 73 61 67 65 20  mation on usage 
0160: 61 6e 64 20 72 65 64 69 73 74 72 69 62 75 74 69  and redistributi
0170: 6f 6e 20 6f 66 0d 0a 23 20 74 68 69 73 20 66 69  on of..# this fi
0180: 6c 65 2c 20 61 6e 64 20 66 6f 72 20 61 20 44 49  le, and for a DI
0190: 53 43 4c 41 49 4d 45 52 20 4f 46 20 41 4c 4c 20  SCLAIMER OF ALL 
01a0: 57 41 52 52 41 4e 54 49 45 53 2e 0d 0a 23 0d 0a  WARRANTIES...#..
01b0: 23 20 52 43 53 3a 20 40 28 23 29 20 24 49 64 3a  # RCS: @(#) $Id:
01c0: 20 24 0d 0a 23 0d 0a 23 23 23 23 23 23 23 23 23   $..#..#########
01d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0200: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0210: 23 23 23 23 23 23 0d 0a 0d 0a 23 0d 0a 23 20 53  ######....#..# S
0220: 54 55 42 3a 20 54 68 69 73 20 73 63 72 69 70 74  TUB: This script
0230: 20 66 69 6c 65 20 69 73 20 61 20 70 6c 61 63 65   file is a place
0240: 68 6f 6c 64 65 72 2e 20 20 54 68 69 73 20 66 69  holder.  This fi
0250: 6c 65 2c 20 77 68 65 6e 20 70 72 65 73 65 6e 74  le, when present
0260: 2c 20 69 73 20 61 6c 77 61 79 73 0d 0a 23 20 20  , is always..#  
0270: 20 20 20 20 20 65 76 61 6c 75 61 74 65 64 20 77       evaluated w
0280: 68 65 6e 20 61 6e 20 69 6e 74 65 72 70 72 65 74  hen an interpret
0290: 65 72 20 69 73 20 69 6e 69 74 69 61 6c 69 7a 65  er is initialize
02a0: 64 2e 20 20 56 65 6e 64 6f 72 73 20 64 69 73 74  d.  Vendors dist
02b0: 72 69 62 75 74 69 6e 67 0d 0a 23 20 20 20 20 20  ributing..#     
02c0: 20 20 45 61 67 6c 65 20 63 61 6e 20 70 6c 61 63    Eagle can plac
02d0: 65 20 63 75 73 74 6f 6d 20 61 70 70 6c 69 63 61  e custom applica
02e0: 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 2c 20 69  tion-specific, i
02f0: 6e 74 65 72 70 72 65 74 65 72 2d 73 70 65 63 69  nterpreter-speci
0300: 66 69 63 0d 0a 23 20 20 20 20 20 20 20 69 6e 69  fic..#       ini
0310: 74 69 61 6c 69 7a 61 74 69 6f 6e 20 61 6e 64 2f  tialization and/
0320: 6f 72 20 63 75 73 74 6f 6d 69 7a 61 74 69 6f 6e  or customization
0330: 73 20 69 6e 20 68 65 72 65 2e 20 20 41 64 64 69  s in here.  Addi
0340: 74 69 6f 6e 61 6c 6c 79 2c 20 74 68 69 73 20 66  tionally, this f
0350: 69 6c 65 0d 0a 23 20 20 20 20 20 20 20 6d 61 79  ile..#       may
0360: 20 63 6f 6e 74 61 69 6e 20 70 65 72 2d 69 6e 74   contain per-int
0370: 65 72 70 72 65 74 65 72 20 63 75 73 74 6f 6d 69  erpreter customi
0380: 7a 61 74 69 6f 6e 73 20 72 65 71 75 69 72 65 64  zations required
0390: 20 77 68 65 6e 20 70 6f 72 74 69 6e 67 20 74 6f   when porting to
03a0: 0d 0a 23 20 20 20 20 20 20 20 6e 65 77 20 70 6c  ..#       new pl
03b0: 61 74 66 6f 72 6d 73 2c 20 6f 70 65 72 61 74 69  atforms, operati
03c0: 6e 67 20 73 79 73 74 65 6d 73 2c 20 65 74 63 2e  ng systems, etc.
03d0: 0d 0a 23 0d 0a 0c 0d 0a 23 23 23 23 23 23 23 23  ..#.....########
03e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
03f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0420: 23 23 23 23 23 23 23 0d 0a 23 23 23 23 23 23 23  #######..#######
0430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0440: 23 23 23 23 23 23 23 20 42 45 47 49 4e 20 56 45  ####### BEGIN VE
0450: 4e 44 4f 52 20 43 4f 44 45 20 23 23 23 23 23 23  NDOR CODE ######
0460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0470: 23 23 23 23 23 23 23 23 0d 0a 23 23 23 23 23 23  ########..######
0480: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0490: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
04a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
04b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
04c0: 23 23 23 23 23 23 23 23 23 0d 0a 23 0d 0a 23 20  #########..#..# 
04d0: 4e 4f 54 45 3a 20 55 73 65 20 6f 75 72 20 6f 77  NOTE: Use our ow
04e0: 6e 20 6e 61 6d 65 73 70 61 63 65 20 68 65 72 65  n namespace here
04f0: 20 62 65 63 61 75 73 65 20 65 76 65 6e 20 74 68   because even th
0500: 6f 75 67 68 20 77 65 20 64 6f 20 6e 6f 74 20 64  ough we do not d
0510: 69 72 65 63 74 6c 79 0d 0a 23 20 20 20 20 20 20  irectly..#      
0520: 20 73 75 70 70 6f 72 74 20 6e 61 6d 65 73 70 61   support namespa
0530: 63 65 73 20 6f 75 72 73 65 6c 76 65 73 2c 20 77  ces ourselves, w
0540: 65 20 64 6f 20 6e 6f 74 20 77 61 6e 74 20 74 6f  e do not want to
0550: 20 70 6f 6c 6c 75 74 65 20 74 68 65 20 67 6c 6f   pollute the glo
0560: 62 61 6c 0d 0a 23 20 20 20 20 20 20 20 6e 61 6d  bal..#       nam
0570: 65 73 70 61 63 65 20 69 66 20 74 68 69 73 20 73  espace if this s
0580: 63 72 69 70 74 20 61 63 74 75 61 6c 6c 79 20 65  cript actually e
0590: 6e 64 73 20 75 70 20 62 65 69 6e 67 20 65 76 61  nds up being eva
05a0: 6c 75 61 74 65 64 20 69 6e 20 54 63 6c 2e 0d 0a  luated in Tcl...
05b0: 23 0d 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61  #..namespace eva
05c0: 6c 20 3a 3a 45 61 67 6c 65 20 7b 0d 0a 20 20 69  l ::Eagle {..  i
05d0: 66 20 7b 5b 69 73 45 61 67 6c 65 5d 7d 20 74 68  f {[isEagle]} th
05e0: 65 6e 20 7b 0d 0a 20 20 20 20 70 72 6f 63 20 63  en {..    proc c
05f0: 68 65 63 6b 46 6f 72 56 65 6e 64 6f 72 51 75 69  heckForVendorQui
0600: 65 74 20 7b 20 7b 6e 61 6d 65 20 22 22 7d 20 7d  et { {name ""} }
0610: 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b   {..      if {![
0620: 69 6e 74 65 72 70 20 69 73 73 61 66 65 5d 7d 20  interp issafe]} 
0630: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
0640: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
0650: 20 3a 3a 65 6e 76 28 63 68 65 63 6b 46 6f 72 56   ::env(checkForV
0660: 65 6e 64 6f 72 51 75 69 65 74 29 5d 7d 20 74 68  endorQuiet)]} th
0670: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
0680: 72 65 74 75 72 6e 20 74 72 75 65 0d 0a 20 20 20  return true..   
0690: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
06a0: 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65    if {[string le
06b0: 6e 67 74 68 20 24 6e 61 6d 65 5d 20 3e 20 30 7d  ngth $name] > 0}
06c0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
06d0: 20 20 20 73 65 74 20 65 6e 76 56 61 72 4e 61 6d     set envVarNam
06e0: 65 20 5b 61 70 70 65 6e 64 41 72 67 73 20 71 75  e [appendArgs qu
06f0: 69 65 74 20 5b 73 74 72 69 6e 67 20 74 6f 75 70  iet [string toup
0700: 70 65 72 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  per \..         
0710: 20 20 20 20 20 5b 73 74 72 69 6e 67 20 69 6e 64       [string ind
0720: 65 78 20 24 6e 61 6d 65 20 30 5d 5d 20 5b 73 74  ex $name 0]] [st
0730: 72 69 6e 67 20 72 61 6e 67 65 20 24 6e 61 6d 65  ring range $name
0740: 20 31 20 65 6e 64 5d 5d 0d 0a 0d 0a 20 20 20 20   1 end]]....    
0750: 20 20 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20        if {[info 
0760: 65 78 69 73 74 73 20 3a 3a 65 6e 76 28 24 65 6e  exists ::env($en
0770: 76 56 61 72 4e 61 6d 65 29 5d 7d 20 74 68 65 6e  vVarName)]} then
0780: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0790: 72 65 74 75 72 6e 20 74 72 75 65 0d 0a 20 20 20  return true..   
07a0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
07b0: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
07c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
07d0: 73 65 0d 0a 20 20 20 20 7d 0d 0a 0c 0d 0a 20 20  se..    }.....  
07e0: 20 20 70 72 6f 63 20 63 68 65 63 6b 46 6f 72 54    proc checkForT
07f0: 65 73 74 4f 76 65 72 72 69 64 65 73 20 7b 20 63  estOverrides { c
0800: 68 61 6e 6e 65 6c 20 76 61 72 4e 61 6d 65 73 20  hannel varNames 
0810: 71 75 69 65 74 20 7d 20 7b 0d 0a 20 20 20 20 20  quiet } {..     
0820: 20 73 65 74 20 72 65 73 75 6c 74 20 30 0d 0a 0d   set result 0...
0830: 0a 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 76  .      foreach v
0840: 61 72 4e 61 6d 65 20 24 76 61 72 4e 61 6d 65 73  arName $varNames
0850: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b   {..        if {
0860: 21 5b 75 70 6c 65 76 65 6c 20 31 20 5b 6c 69 73  ![uplevel 1 [lis
0870: 74 20 69 6e 66 6f 20 65 78 69 73 74 73 20 24 76  t info exists $v
0880: 61 72 4e 61 6d 65 5d 5d 7d 20 74 68 65 6e 20 7b  arName]]} then {
0890: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74  ..          cont
08a0: 69 6e 75 65 0d 0a 20 20 20 20 20 20 20 20 7d 0d  inue..        }.
08b0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 63 72 20  ...        incr 
08c0: 72 65 73 75 6c 74 0d 0a 0d 0a 20 20 20 20 20 20  result....      
08d0: 20 20 69 66 20 7b 21 24 71 75 69 65 74 7d 20 74    if {!$quiet} t
08e0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
08f0: 20 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20   catch {..      
0900: 20 20 20 20 20 20 74 71 70 75 74 73 20 24 63 68        tqputs $ch
0910: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
0920: 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s \..           
0930: 20 20 20 20 20 22 2d 2d 2d 2d 20 66 6f 75 6e 64       "---- found
0940: 20 76 65 6e 64 6f 72 2d 73 70 65 63 69 66 69 63   vendor-specific
0950: 20 74 65 73 74 20 6f 76 65 72 72 69 64 65 20 5c   test override \
0960: 22 22 20 24 76 61 72 4e 61 6d 65 20 5c 0d 0a 20  "" $varName \.. 
0970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
0980: 5c 22 20 77 69 74 68 20 76 61 6c 75 65 20 5c 22  \" with value \"
0990: 22 20 5b 75 70 6c 65 76 65 6c 20 31 20 5b 6c 69  " [uplevel 1 [li
09a0: 73 74 20 73 65 74 20 24 76 61 72 4e 61 6d 65 5d  st set $varName]
09b0: 5d 20 5c 22 5c 6e 5d 0d 0a 20 20 20 20 20 20 20  ] \"\n]..       
09c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
09d0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
09e0: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
09f0: 45 3a 20 4b 65 65 70 20 74 72 61 63 6b 20 6f 66  E: Keep track of
0a00: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 74 65 73   the list of tes
0a10: 74 20 6f 76 65 72 72 69 64 65 20 76 61 72 69 61  t override varia
0a20: 62 6c 65 73 2c 20 66 6f 72 20 6c 61 74 65 72 0d  bles, for later.
0a30: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 75  .      #       u
0a40: 73 65 20 62 79 20 74 68 65 20 74 65 73 74 20 73  se by the test s
0a50: 75 69 74 65 2e 20 20 54 68 69 73 20 6e 65 65 64  uite.  This need
0a60: 73 20 74 6f 20 62 65 20 64 6f 6e 65 20 61 66 74  s to be done aft
0a70: 65 72 20 74 68 65 20 6c 6f 6f 70 0d 0a 20 20 20  er the loop..   
0a80: 20 20 20 23 20 20 20 20 20 20 20 61 62 6f 76 65     #       above
0a90: 20 62 65 63 61 75 73 65 20 74 68 65 20 76 61 72   because the var
0aa0: 69 61 62 6c 65 20 75 73 65 64 20 74 6f 20 6b 65  iable used to ke
0ab0: 65 70 20 74 72 61 63 6b 20 69 73 20 6c 69 73 74  ep track is list
0ac0: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 23  ed with..      #
0ad0: 20 20 20 20 20 20 20 74 68 65 20 6f 74 68 65 72         the other
0ae0: 20 70 6f 73 73 69 62 6c 65 20 74 65 73 74 20 6f   possible test o
0af0: 76 65 72 72 69 64 65 20 76 61 72 69 61 62 6c 65  verride variable
0b00: 73 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  s...      #..   
0b10: 20 20 20 69 66 20 7b 21 5b 75 70 6c 65 76 65 6c     if {![uplevel
0b20: 20 31 20 5b 6c 69 73 74 20 69 6e 66 6f 20 65 78   1 [list info ex
0b30: 69 73 74 73 20 74 65 73 74 5f 6f 76 65 72 72 69  ists test_overri
0b40: 64 65 73 5d 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  des]]} then {.. 
0b50: 20 20 20 20 20 20 20 75 70 6c 65 76 65 6c 20 31         uplevel 1
0b60: 20 5b 6c 69 73 74 20 73 65 74 20 74 65 73 74 5f   [list set test_
0b70: 6f 76 65 72 72 69 64 65 73 20 24 76 61 72 4e 61  overrides $varNa
0b80: 6d 65 73 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  mes]..      }...
0b90: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 72  .      return $r
0ba0: 65 73 75 6c 74 0d 0a 20 20 20 20 7d 0d 0a 0c 0d  esult..    }....
0bb0: 0a 20 20 20 20 70 72 6f 63 20 72 65 66 72 65 73  .    proc refres
0bc0: 68 41 75 74 6f 50 61 74 68 20 7b 7d 20 7b 0d 0a  hAutoPath {} {..
0bd0: 20 20 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e 67        if {[lleng
0be0: 74 68 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64  th [info command
0bf0: 73 20 64 65 62 75 67 5d 5d 20 3e 20 30 20 26 26  s debug]] > 0 &&
0c00: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 6c   \..          [l
0c10: 6c 65 6e 67 74 68 20 5b 69 6e 66 6f 20 73 75 62  length [info sub
0c20: 63 6f 6d 6d 61 6e 64 73 20 64 65 62 75 67 20 72  commands debug r
0c30: 65 66 72 65 73 68 61 75 74 6f 70 61 74 68 5d 5d  efreshautopath]]
0c40: 20 3e 20 30 20 26 26 20 5c 0d 0a 20 20 20 20 20   > 0 && \..     
0c50: 20 20 20 20 20 5b 63 61 74 63 68 20 7b 64 65 62       [catch {deb
0c60: 75 67 20 72 65 66 72 65 73 68 61 75 74 6f 70 61  ug refreshautopa
0c70: 74 68 20 74 72 75 65 7d 5d 20 3d 3d 20 30 7d 20  th true}] == 0} 
0c80: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
0c90: 72 65 74 75 72 6e 20 64 65 62 75 67 0d 0a 20 20  return debug..  
0ca0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 69      }....      i
0cb0: 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66  f {[llength [inf
0cc0: 6f 20 63 6f 6d 6d 61 6e 64 73 20 6f 62 6a 65 63  o commands objec
0cd0: 74 5d 5d 20 3e 20 30 20 26 26 20 5c 0d 0a 20 20  t]] > 0 && \..  
0ce0: 20 20 20 20 20 20 20 20 5b 63 61 74 63 68 20 7b          [catch {
0cf0: 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 55 74  object invoke Ut
0d00: 69 6c 69 74 79 20 52 65 66 72 65 73 68 41 75 74  ility RefreshAut
0d10: 6f 50 61 74 68 4c 69 73 74 20 74 72 75 65 7d 5d  oPathList true}]
0d20: 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20   == 0} then {.. 
0d30: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 62         return ob
0d40: 6a 65 63 74 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ject..      }...
0d50: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 22  .      return ""
0d60: 0d 0a 20 20 20 20 7d 0d 0a 0c 0d 0a 20 20 20 20  ..    }.....    
0d70: 70 72 6f 63 20 61 64 64 54 65 73 74 53 75 69 74  proc addTestSuit
0d80: 65 54 6f 41 75 74 6f 50 61 74 68 20 7b 20 63 68  eToAutoPath { ch
0d90: 61 6e 6e 65 6c 20 76 61 72 4e 61 6d 65 20 71 75  annel varName qu
0da0: 69 65 74 20 7d 20 7b 0d 0a 20 20 20 20 20 20 23  iet } {..      #
0db0: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
0dc0: 53 74 61 72 74 20 77 69 74 68 20 74 68 65 20 64  Start with the d
0dd0: 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e  irectory contain
0de0: 69 6e 67 20 74 68 69 73 20 66 69 6c 65 2e 0d 0a  ing this file...
0df0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73        #..      s
0e00: 65 74 20 64 69 72 20 5b 66 69 6c 65 20 6e 6f 72  et dir [file nor
0e10: 6d 61 6c 69 7a 65 20 5b 66 69 6c 65 20 64 69 72  malize [file dir
0e20: 6e 61 6d 65 20 5b 69 6e 66 6f 20 73 63 72 69 70  name [info scrip
0e30: 74 5d 5d 5d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d  t]]]....      #.
0e40: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4b  .      # NOTE: K
0e50: 65 65 70 20 67 6f 69 6e 67 20 75 6e 74 69 6c 20  eep going until 
0e60: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 6e 61  the directory na
0e70: 6d 65 20 69 73 20 65 6d 70 74 79 20 4f 52 20 69  me is empty OR i
0e80: 73 20 61 63 74 75 61 6c 6c 79 20 74 68 65 0d 0a  s actually the..
0e90: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 72 6f        #       ro
0ea0: 6f 74 20 6f 66 20 74 68 65 20 61 73 73 6f 63 69  ot of the associ
0eb0: 61 74 65 64 20 76 6f 6c 75 6d 65 2e 0d 0a 20 20  ated volume...  
0ec0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 77 68 69      #..      whi
0ed0: 6c 65 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67  le {[string leng
0ee0: 74 68 20 24 64 69 72 5d 20 3e 20 30 20 26 26 20  th $dir] > 0 && 
0ef0: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 6c 73  \..          [ls
0f00: 65 61 72 63 68 20 2d 65 78 61 63 74 20 2d 6e 6f  earch -exact -no
0f10: 63 61 73 65 20 2d 2d 20 5b 66 69 6c 65 20 76 6f  case -- [file vo
0f20: 6c 75 6d 65 73 5d 20 24 64 69 72 5d 20 3d 3d 20  lumes] $dir] == 
0f30: 2d 31 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  -1} {..        #
0f40: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
0f50: 3a 20 53 65 74 20 74 68 65 20 73 75 62 2d 64 69  : Set the sub-di
0f60: 72 65 63 74 6f 72 79 20 77 68 65 72 65 20 74 68  rectory where th
0f70: 65 20 70 61 63 6b 61 67 65 20 69 6e 64 65 78 20  e package index 
0f80: 66 69 6c 65 20 73 68 6f 75 6c 64 0d 0a 20 20 20  file should..   
0f90: 20 20 20 20 20 23 20 20 20 20 20 20 20 62 65 20       #       be 
0fa0: 6c 6f 63 61 74 65 64 20 77 69 74 68 69 6e 20 74  located within t
0fb0: 68 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20  he directory to 
0fc0: 62 65 20 73 65 61 72 63 68 65 64 2e 0d 0a 20 20  be searched...  
0fd0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
0fe0: 20 73 65 74 20 64 69 72 32 20 5b 66 69 6c 65 20   set dir2 [file 
0ff0: 6a 6f 69 6e 20 6c 69 62 20 53 79 73 74 65 6d 2e  join lib System.
1000: 44 61 74 61 2e 53 51 4c 69 74 65 5d 0d 0a 0d 0a  Data.SQLite]....
1010: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
1020: 20 20 20 23 20 4e 4f 54 45 3a 20 44 6f 65 73 20     # NOTE: Does 
1030: 74 68 69 73 20 64 69 72 65 63 74 6f 72 79 20 68  this directory h
1040: 61 76 65 20 74 68 65 20 6e 65 63 65 73 73 61 72  ave the necessar
1050: 79 20 73 75 62 2d 64 69 72 65 63 74 6f 72 79 20  y sub-directory 
1060: 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20 23 20  that..        # 
1070: 20 20 20 20 20 20 63 6f 6e 74 61 69 6e 73 20 61        contains a
1080: 20 70 61 63 6b 61 67 65 20 69 6e 64 65 78 20 66   package index f
1090: 69 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d  ile?..        #.
10a0: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 5b 66 69  .        if {[fi
10b0: 6c 65 20 65 78 69 73 74 73 20 5b 66 69 6c 65 20  le exists [file 
10c0: 6a 6f 69 6e 20 24 64 69 72 20 24 64 69 72 32 5d  join $dir $dir2]
10d0: 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20  ] && \..        
10e0: 20 20 20 20 5b 66 69 6c 65 20 69 73 64 69 72 65      [file isdire
10f0: 63 74 6f 72 79 20 5b 66 69 6c 65 20 6a 6f 69 6e  ctory [file join
1100: 20 24 64 69 72 20 24 64 69 72 32 5d 5d 20 26 26   $dir $dir2]] &&
1110: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
1120: 5b 66 69 6c 65 20 65 78 69 73 74 73 20 5b 66 69  [file exists [fi
1130: 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 24 64 69  le join $dir $di
1140: 72 32 20 70 6b 67 49 6e 64 65 78 2e 65 61 67 6c  r2 pkgIndex.eagl
1150: 65 5d 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  e]] && \..      
1160: 20 20 20 20 20 20 5b 66 69 6c 65 20 69 73 66 69        [file isfi
1170: 6c 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64  le [file join $d
1180: 69 72 20 24 64 69 72 32 20 70 6b 67 49 6e 64 65  ir $dir2 pkgInde
1190: 78 2e 65 61 67 6c 65 5d 5d 7d 20 74 68 65 6e 20  x.eagle]]} then 
11a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  {..          #..
11b0: 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45            # NOTE
11c0: 3a 20 49 66 20 72 65 71 75 65 73 74 65 64 2c 20  : If requested, 
11d0: 67 69 76 65 20 6f 75 72 20 63 61 6c 6c 65 72 20  give our caller 
11e0: 61 63 63 65 73 73 20 74 6f 20 74 68 65 20 6e 61  access to the na
11f0: 6d 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  me of the..     
1200: 20 20 20 20 20 23 20 20 20 20 20 20 20 64 69 72       #       dir
1210: 65 63 74 6f 72 79 20 77 65 20 6a 75 73 74 20 66  ectory we just f
1220: 6f 75 6e 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  ound...         
1230: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   #..          if
1240: 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68   {[string length
1250: 20 24 76 61 72 4e 61 6d 65 5d 20 3e 20 30 7d 20   $varName] > 0} 
1260: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
1270: 20 20 20 20 75 70 76 61 72 20 31 20 24 76 61 72      upvar 1 $var
1280: 4e 61 6d 65 20 64 69 72 33 0d 0a 20 20 20 20 20  Name dir3..     
1290: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12a0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
12b0: 20 23 20 4e 4f 54 45 3a 20 4f 6b 2c 20 73 68 6f   # NOTE: Ok, sho
12c0: 77 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20  w the directory 
12d0: 77 65 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20  we found...     
12e0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
12f0: 20 20 73 65 74 20 64 69 72 33 20 5b 66 69 6c 65    set dir3 [file
1300: 20 6a 6f 69 6e 20 24 64 69 72 20 24 64 69 72 32   join $dir $dir2
1310: 5d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23  ]....          #
1320: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
1330: 54 45 3a 20 57 65 20 66 6f 75 6e 64 20 74 68 65  TE: We found the
1340: 20 6e 65 63 65 73 73 61 72 79 20 64 69 72 65 63   necessary direc
1350: 74 6f 72 79 20 74 6f 20 61 64 64 20 74 6f 20 74  tory to add to t
1360: 68 65 20 61 75 74 6f 2d 70 61 74 68 3b 0d 0a 20  he auto-path;.. 
1370: 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20           #      
1380: 20 48 6f 77 65 76 65 72 2c 20 77 65 20 63 61 6e   However, we can
1390: 6e 6f 74 20 73 69 6d 70 6c 79 20 61 64 64 20 69  not simply add i
13a0: 74 20 74 6f 20 74 68 65 20 61 75 74 6f 2d 70 61  t to the auto-pa
13b0: 74 68 20 64 69 72 65 63 74 6c 79 0d 0a 20 20 20  th directly..   
13c0: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 62         #       b
13d0: 65 63 61 75 73 65 20 74 68 65 20 61 75 74 6f 2d  ecause the auto-
13e0: 70 61 74 68 20 69 73 20 64 79 6e 61 6d 69 63 61  path is dynamica
13f0: 6c 6c 79 20 63 6f 6e 73 74 72 75 63 74 65 64 20  lly constructed 
1400: 61 66 74 65 72 20 74 68 69 73 0d 0a 20 20 20 20  after this..    
1410: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 73 63        #       sc
1420: 72 69 70 74 20 69 73 20 65 76 61 6c 75 61 74 65  ript is evaluate
1430: 64 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 73 65  d; therefore, se
1440: 74 20 74 68 65 20 45 61 67 6c 65 20 6c 69 62 72  t the Eagle libr
1450: 61 72 79 20 70 61 74 68 0d 0a 20 20 20 20 20 20  ary path..      
1460: 20 20 20 20 23 20 20 20 20 20 20 20 65 6e 76 69      #       envi
1470: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
1480: 20 61 6e 64 20 66 6f 72 63 65 20 74 68 65 20 61   and force the a
1490: 70 70 72 6f 70 72 69 61 74 65 20 69 6e 74 65 72  ppropriate inter
14a0: 6e 61 6c 20 70 61 74 68 0d 0a 20 20 20 20 20 20  nal path..      
14b0: 20 20 20 20 23 20 20 20 20 20 20 20 6c 69 73 74      #       list
14c0: 20 74 6f 20 62 65 20 72 65 66 72 65 73 68 65 64   to be refreshed
14d0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
14e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b            if {![
14f0: 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 65 6e  info exists ::en
1500: 76 28 45 41 47 4c 45 4c 49 42 50 41 54 48 29 5d  v(EAGLELIBPATH)]
1510: 20 7c 7c 20 5c 0d 0a 20 20 20 20 20 20 20 20 20   || \..         
1520: 20 20 20 20 20 5b 6c 73 65 61 72 63 68 20 2d 65       [lsearch -e
1530: 78 61 63 74 20 24 3a 3a 65 6e 76 28 45 41 47 4c  xact $::env(EAGL
1540: 45 4c 49 42 50 41 54 48 29 20 24 64 69 72 33 5d  ELIBPATH) $dir3]
1550: 20 3d 3d 20 2d 31 7d 20 74 68 65 6e 20 7b 0d 0a   == -1} then {..
1560: 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20              #.. 
1570: 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54             # NOT
1580: 45 3a 20 49 66 20 77 65 20 68 61 76 65 20 4e 4f  E: If we have NO
1590: 54 20 62 65 65 6e 20 69 6e 73 74 72 75 63 74 65  T been instructe
15a0: 64 20 74 6f 20 62 65 20 71 75 69 65 74 2c 20 72  d to be quiet, r
15b0: 65 70 6f 72 74 20 6e 6f 77 2e 0d 0a 20 20 20 20  eport now...    
15c0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
15d0: 20 20 20 20 20 20 20 69 66 20 7b 21 24 71 75 69         if {!$qui
15e0: 65 74 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  et} then {..    
15f0: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1600: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1610: 20 20 20 74 71 70 75 74 73 20 24 63 68 61 6e 6e     tqputs $chann
1620: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c  el [appendArgs \
1630: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1640: 20 20 20 20 20 20 22 2d 2d 2d 2d 20 66 6f 75 6e        "---- foun
1650: 64 20 76 65 6e 64 6f 72 2d 73 70 65 63 69 66 69  d vendor-specifi
1660: 63 20 74 65 73 74 20 70 61 63 6b 61 67 65 20 64  c test package d
1670: 69 72 65 63 74 6f 72 79 20 5c 22 22 20 5c 0d 0a  irectory \"" \..
1680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1690: 20 20 20 20 24 64 69 72 33 20 22 5c 22 2c 20 61      $dir3 "\", a
16a0: 64 64 69 6e 67 2e 2e 2e 5c 6e 22 5d 0d 0a 20 20  dding...\n"]..  
16b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
16c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
16d0: 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20              #.. 
16e0: 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54             # NOT
16f0: 45 3a 20 41 70 70 65 6e 64 20 74 68 65 20 64 69  E: Append the di
1700: 72 65 63 74 6f 72 79 20 74 6f 20 74 68 65 20 6e  rectory to the n
1710: 65 63 65 73 73 61 72 79 20 65 6e 76 69 72 6f 6e  ecessary environ
1720: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 0d 0a 20  ment variable.. 
1730: 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20             #    
1740: 20 20 20 73 6f 20 74 68 61 74 20 69 74 20 77 69     so that it wi
1750: 6c 6c 20 67 65 74 20 70 69 63 6b 65 64 20 75 70  ll get picked up
1760: 20 77 68 65 6e 20 45 61 67 6c 65 20 61 63 74 75   when Eagle actu
1770: 61 6c 6c 79 20 72 65 62 75 69 6c 64 73 0d 0a 20  ally rebuilds.. 
1780: 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20             #    
1790: 20 20 20 74 68 65 20 61 75 74 6f 2d 70 61 74 68     the auto-path
17a0: 20 6c 69 73 74 20 28 62 65 6c 6f 77 29 2e 0d 0a   list (below)...
17b0: 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20              #.. 
17c0: 20 20 20 20 20 20 20 20 20 20 20 6c 61 70 70 65             lappe
17d0: 6e 64 20 3a 3a 65 6e 76 28 45 41 47 4c 45 4c 49  nd ::env(EAGLELI
17e0: 42 50 41 54 48 29 20 24 64 69 72 33 0d 0a 0d 0a  BPATH) $dir3....
17f0: 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20              #.. 
1800: 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54             # NOT
1810: 45 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 66 6f  E: Attempt to fo
1820: 72 63 65 20 45 61 67 6c 65 20 74 6f 20 72 65 62  rce Eagle to reb
1830: 75 69 6c 64 20 74 68 65 20 61 75 74 6f 2d 70 61  uild the auto-pa
1840: 74 68 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20  th for the..    
1850: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
1860: 63 75 72 72 65 6e 74 20 69 6e 74 65 72 70 72 65  current interpre
1870: 74 65 72 20 72 69 67 68 74 20 6e 6f 77 2e 0d 0a  ter right now...
1880: 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20              #.. 
1890: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 72             set r
18a0: 65 66 72 65 73 68 20 5b 72 65 66 72 65 73 68 41  efresh [refreshA
18b0: 75 74 6f 50 61 74 68 5d 0d 0a 0d 0a 20 20 20 20  utoPath]....    
18c0: 20 20 20 20 20 20 20 20 69 66 20 7b 5b 73 74 72          if {[str
18d0: 69 6e 67 20 6c 65 6e 67 74 68 20 24 72 65 66 72  ing length $refr
18e0: 65 73 68 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20  esh] == 0} then 
18f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1900: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   #..            
1910: 20 20 23 20 4e 4f 54 45 3a 20 4f 6b 2c 20 6d 61    # NOTE: Ok, ma
1920: 79 62 65 20 74 68 65 20 5b 6f 62 6a 65 63 74 5d  ybe the [object]
1930: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20   command is not 
1940: 61 76 61 69 6c 61 62 6c 65 2e 20 20 52 65 73 63  available.  Resc
1950: 61 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  an..            
1960: 20 20 23 20 20 20 20 20 20 20 74 68 65 20 70 61    #       the pa
1970: 63 6b 61 67 65 20 69 6e 64 65 78 65 73 20 75 73  ckage indexes us
1980: 69 6e 67 20 74 68 65 20 5b 70 61 63 6b 61 67 65  ing the [package
1990: 20 73 63 61 6e 5d 20 73 75 62 2d 63 6f 6d 6d 61   scan] sub-comma
19a0: 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nd..            
19b0: 20 20 23 20 20 20 20 20 20 20 69 6e 20 74 68 61    #       in tha
19c0: 74 20 63 61 73 65 2e 20 20 54 68 65 20 64 69 72  t case.  The dir
19d0: 65 63 74 6f 72 69 65 73 20 77 69 74 68 69 6e 20  ectories within 
19e0: 45 41 47 4c 45 4c 49 42 50 41 54 48 20 77 69 6c  EAGLELIBPATH wil
19f0: 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  l..             
1a00: 20 23 20 20 20 20 20 20 20 6e 6f 74 20 62 65 20   #       not be 
1a10: 61 64 64 65 64 20 74 6f 20 74 68 65 20 61 75 74  added to the aut
1a20: 6f 2d 70 61 74 68 3b 20 68 6f 77 65 76 65 72 2c  o-path; however,
1a30: 20 61 6c 6c 20 74 68 65 20 70 61 63 6b 61 67 65   all the package
1a40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a50: 23 20 20 20 20 20 20 20 69 6e 64 65 78 65 73 20  #       indexes 
1a60: 61 6e 64 20 74 68 65 69 72 20 61 73 73 6f 63 69  and their associ
1a70: 61 74 65 64 20 70 61 63 6b 61 67 65 73 20 77 69  ated packages wi
1a80: 6c 6c 20 62 65 20 61 76 61 69 6c 61 62 6c 65 2e  ll be available.
1a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1aa0: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  #..             
1ab0: 20 69 66 20 7b 21 24 71 75 69 65 74 7d 20 74 68   if {!$quiet} th
1ac0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
1ad0: 20 20 20 20 20 20 63 61 74 63 68 20 7b 0d 0a 20        catch {.. 
1ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af0: 20 74 71 70 75 74 73 20 24 63 68 61 6e 6e 65 6c   tqputs $channel
1b00: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a   [appendArgs \..
1b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b20: 20 20 20 20 20 20 22 2d 2d 2d 2d 20 75 6e 61 62        "---- unab
1b30: 6c 65 20 74 6f 20 66 6f 72 63 69 62 6c 79 20 72  le to forcibly r
1b40: 65 66 72 65 73 68 20 61 75 74 6f 2d 70 61 74 68  efresh auto-path
1b50: 20 6c 69 73 74 2c 20 22 20 5c 0d 0a 20 20 20 20   list, " \..    
1b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b70: 20 20 22 73 63 61 6e 6e 69 6e 67 20 5c 22 22 20    "scanning \"" 
1b80: 24 3a 3a 65 6e 76 28 45 41 47 4c 45 4c 49 42 50  $::env(EAGLELIBP
1b90: 41 54 48 29 20 22 5c 22 20 69 6e 73 74 65 61 64  ATH) "\" instead
1ba0: 2e 2e 2e 5c 6e 22 5d 0d 0a 20 20 20 20 20 20 20  ...\n"]..       
1bb0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1bc0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
1bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a               #..
1be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20                # 
1bf0: 4e 4f 54 45 3a 20 49 6e 20 74 68 65 6f 72 79 2c  NOTE: In theory,
1c00: 20 74 68 69 73 20 63 61 6c 6c 20 74 6f 20 74 68   this call to th
1c10: 65 20 5b 70 61 63 6b 61 67 65 20 73 63 61 6e 5d  e [package scan]
1c20: 20 73 75 62 2d 63 6f 6d 6d 61 6e 64 0d 0a 20 20   sub-command..  
1c30: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20              #   
1c40: 20 20 20 20 63 6f 75 6c 64 20 66 61 69 6c 2c 20      could fail, 
1c50: 72 61 69 73 69 6e 67 20 61 20 73 63 72 69 70 74  raising a script
1c60: 20 65 72 72 6f 72 20 68 65 72 65 3b 20 68 6f 77   error here; how
1c70: 65 76 65 72 2c 20 74 68 61 74 0d 0a 20 20 20 20  ever, that..    
1c80: 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20            #     
1c90: 20 20 69 73 20 68 69 67 68 6c 79 20 75 6e 6c 69    is highly unli
1ca0: 6b 65 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20  kely...         
1cb0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
1cc0: 20 20 20 20 20 20 65 76 61 6c 20 70 61 63 6b 61        eval packa
1cd0: 67 65 20 73 63 61 6e 20 2d 68 6f 73 74 20 2d 6e  ge scan -host -n
1ce0: 6f 72 6d 61 6c 20 2d 72 65 66 72 65 73 68 20 2d  ormal -refresh -
1cf0: 2d 20 24 3a 3a 65 6e 76 28 45 41 47 4c 45 4c 49  - $::env(EAGLELI
1d00: 42 50 41 54 48 29 0d 0a 20 20 20 20 20 20 20 20  BPATH)..        
1d10: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
1d20: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b              if {
1d30: 21 24 71 75 69 65 74 7d 20 74 68 65 6e 20 7b 0d  !$quiet} then {.
1d40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d50: 20 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20   catch {..      
1d60: 20 20 20 20 20 20 20 20 20 20 20 20 74 71 70 75              tqpu
1d70: 74 73 20 24 63 68 61 6e 6e 65 6c 20 5b 61 70 70  ts $channel [app
1d80: 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20  endArgs \..     
1d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da0: 20 22 2d 2d 2d 2d 20 66 6f 72 63 69 62 6c 79 20   "---- forcibly 
1db0: 72 65 66 72 65 73 68 65 64 20 61 75 74 6f 2d 70  refreshed auto-p
1dc0: 61 74 68 20 6c 69 73 74 20 76 69 61 20 5c 22 22  ath list via \""
1dd0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
1de0: 20 20 20 20 20 20 20 20 20 20 24 72 65 66 72 65            $refre
1df0: 73 68 20 22 5c 22 20 63 6f 6d 6d 61 6e 64 5c 6e  sh "\" command\n
1e00: 22 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  "]..            
1e10: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1e20: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1e30: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1e40: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1e50: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
1e60: 4f 54 45 3a 20 57 65 20 61 72 65 20 64 6f 6e 65  OTE: We are done
1e70: 2c 20 72 65 74 75 72 6e 20 73 75 63 63 65 73 73  , return success
1e80: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
1e90: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1ea0: 20 74 72 75 65 0d 0a 20 20 20 20 20 20 20 20 7d   true..        }
1eb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  ....        #.. 
1ec0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4b         # NOTE: K
1ed0: 65 65 70 20 67 6f 69 6e 67 20 75 70 20 74 68 65  eep going up the
1ee0: 20 64 69 72 65 63 74 6f 72 79 20 74 72 65 65 2e   directory tree.
1ef0: 2e 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  ....        #.. 
1f00: 20 20 20 20 20 20 20 73 65 74 20 64 69 72 20 5b         set dir [
1f10: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 64 69  file dirname $di
1f20: 72 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  r]..      }.... 
1f30: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
1f40: 4e 4f 54 45 3a 20 49 66 20 77 65 20 68 61 76 65  NOTE: If we have
1f50: 20 4e 4f 54 20 62 65 65 6e 20 69 6e 73 74 72 75   NOT been instru
1f60: 63 74 65 64 20 74 6f 20 62 65 20 71 75 69 65 74  cted to be quiet
1f70: 2c 20 72 65 70 6f 72 74 20 6e 6f 77 2e 0d 0a 20  , report now... 
1f80: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
1f90: 20 7b 21 24 71 75 69 65 74 7d 20 74 68 65 6e 20   {!$quiet} then 
1fa0: 7b 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68  {..        catch
1fb0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 71   {..          tq
1fc0: 70 75 74 73 20 24 63 68 61 6e 6e 65 6c 20 5c 0d  puts $channel \.
1fd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22  .              "
1fe0: 2d 2d 2d 2d 20 63 6f 75 6c 64 20 6e 6f 74 20 66  ---- could not f
1ff0: 69 6e 64 20 76 65 6e 64 6f 72 2d 73 70 65 63 69  ind vendor-speci
2000: 66 69 63 20 74 65 73 74 20 70 61 63 6b 61 67 65  fic test package
2010: 20 64 69 72 65 63 74 6f 72 79 5c 6e 22 0d 0a 20   directory\n".. 
2020: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2030: 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  }....      #..  
2040: 20 20 20 20 23 20 4e 4f 54 45 3a 20 44 69 72 65      # NOTE: Dire
2050: 63 74 6f 72 79 20 6e 6f 74 20 66 6f 75 6e 64 2c  ctory not found,
2060: 20 72 65 74 75 72 6e 20 66 61 69 6c 75 72 65 2e   return failure.
2070: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
2080: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 0d 0a 20   return false.. 
2090: 20 20 20 7d 0d 0a 0c 0d 0a 20 20 20 20 70 72 6f     }.....    pro
20a0: 63 20 66 69 6e 64 49 6e 74 65 72 70 72 65 74 65  c findInterprete
20b0: 72 54 65 73 74 50 61 74 68 20 7b 20 63 68 61 6e  rTestPath { chan
20c0: 6e 65 6c 20 64 69 72 20 76 61 72 4e 61 6d 65 20  nel dir varName 
20d0: 71 75 69 65 74 20 7d 20 7b 0d 0a 20 20 20 20 20  quiet } {..     
20e0: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
20f0: 3a 20 53 74 61 72 74 20 77 69 74 68 20 74 68 65  : Start with the
2100: 20 73 70 65 63 69 66 69 65 64 20 64 69 72 65 63   specified direc
2110: 74 6f 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  tory...      #..
2120: 20 20 20 20 20 20 73 65 74 20 64 69 72 32 20 24        set dir2 $
2130: 64 69 72 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a  dir....      #..
2140: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4b 65        # NOTE: Ke
2150: 65 70 20 67 6f 69 6e 67 20 75 6e 74 69 6c 20 74  ep going until t
2160: 68 65 20 64 69 72 65 63 74 6f 72 79 20 6e 61 6d  he directory nam
2170: 65 20 69 73 20 65 6d 70 74 79 20 4f 52 20 69 73  e is empty OR is
2180: 20 61 63 74 75 61 6c 6c 79 20 74 68 65 0d 0a 20   actually the.. 
2190: 20 20 20 20 20 23 20 20 20 20 20 20 20 72 6f 6f       #       roo
21a0: 74 20 6f 66 20 74 68 65 20 61 73 73 6f 63 69 61  t of the associa
21b0: 74 65 64 20 76 6f 6c 75 6d 65 2e 0d 0a 20 20 20  ted volume...   
21c0: 20 20 20 23 0d 0a 20 20 20 20 20 20 77 68 69 6c     #..      whil
21d0: 65 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74  e {[string lengt
21e0: 68 20 24 64 69 72 32 5d 20 3e 20 30 20 26 26 20  h $dir2] > 0 && 
21f0: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 6c 73  \..          [ls
2200: 65 61 72 63 68 20 2d 65 78 61 63 74 20 2d 6e 6f  earch -exact -no
2210: 63 61 73 65 20 2d 2d 20 5b 66 69 6c 65 20 76 6f  case -- [file vo
2220: 6c 75 6d 65 73 5d 20 24 64 69 72 32 5d 20 3d 3d  lumes] $dir2] ==
2230: 20 2d 31 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20   -1} {..        
2240: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
2250: 45 3a 20 53 65 74 20 74 68 65 20 73 75 62 2d 64  E: Set the sub-d
2260: 69 72 65 63 74 6f 72 79 20 77 68 65 72 65 20 74  irectory where t
2270: 68 65 20 74 65 73 74 20 73 75 69 74 65 20 66 69  he test suite fi
2280: 6c 65 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20  le should be..  
2290: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 6c 6f        #       lo
22a0: 63 61 74 65 64 20 77 69 74 68 69 6e 20 74 68 65  cated within the
22b0: 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 62 65   directory to be
22c0: 20 73 65 61 72 63 68 65 64 2e 0d 0a 20 20 20 20   searched...    
22d0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 73      #..        s
22e0: 65 74 20 64 69 72 33 20 54 65 73 74 73 0d 0a 0d  et dir3 Tests...
22f0: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
2300: 20 20 20 20 23 20 4e 4f 54 45 3a 20 44 6f 65 73      # NOTE: Does
2310: 20 74 68 69 73 20 64 69 72 65 63 74 6f 72 79 20   this directory 
2320: 68 61 76 65 20 74 68 65 20 6e 65 63 65 73 73 61  have the necessa
2330: 72 79 20 73 75 62 2d 64 69 72 65 63 74 6f 72 79  ry sub-directory
2340: 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20 23   that..        #
2350: 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e 73 20         contains 
2360: 74 68 65 20 74 65 73 74 20 73 75 69 74 65 20 66  the test suite f
2370: 69 6c 65 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d  ile?..        #.
2380: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 5b 66 69  .        if {[fi
2390: 6c 65 20 65 78 69 73 74 73 20 5b 66 69 6c 65 20  le exists [file 
23a0: 6a 6f 69 6e 20 24 64 69 72 32 20 24 64 69 72 33  join $dir2 $dir3
23b0: 5d 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20  ]] && \..       
23c0: 20 20 20 20 20 5b 66 69 6c 65 20 69 73 64 69 72       [file isdir
23d0: 65 63 74 6f 72 79 20 5b 66 69 6c 65 20 6a 6f 69  ectory [file joi
23e0: 6e 20 24 64 69 72 32 20 24 64 69 72 33 5d 5d 20  n $dir2 $dir3]] 
23f0: 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  && \..          
2400: 20 20 5b 66 69 6c 65 20 65 78 69 73 74 73 20 5b    [file exists [
2410: 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 32 20  file join $dir2 
2420: 24 64 69 72 33 20 61 6c 6c 2e 65 61 67 6c 65 5d  $dir3 all.eagle]
2430: 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20  ] && \..        
2440: 20 20 20 20 5b 66 69 6c 65 20 69 73 66 69 6c 65      [file isfile
2450: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72   [file join $dir
2460: 32 20 24 64 69 72 33 20 61 6c 6c 2e 65 61 67 6c  2 $dir3 all.eagl
2470: 65 5d 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e]]} then {..   
2480: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
2490: 20 20 20 20 23 20 4e 4f 54 45 3a 20 49 66 20 72      # NOTE: If r
24a0: 65 71 75 65 73 74 65 64 2c 20 67 69 76 65 20 6f  equested, give o
24b0: 75 72 20 63 61 6c 6c 65 72 20 61 63 63 65 73 73  ur caller access
24c0: 20 74 6f 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   to the name of 
24d0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 23  the..          #
24e0: 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79         directory
24f0: 20 77 65 20 6a 75 73 74 20 66 6f 75 6e 64 2e 0d   we just found..
2500: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
2510: 20 20 20 20 20 20 20 20 69 66 20 7b 5b 73 74 72          if {[str
2520: 69 6e 67 20 6c 65 6e 67 74 68 20 24 76 61 72 4e  ing length $varN
2530: 61 6d 65 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b  ame] > 0} then {
2540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 70  ..            up
2550: 76 61 72 20 31 20 24 76 61 72 4e 61 6d 65 20 64  var 1 $varName d
2560: 69 72 34 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ir4..          }
2570: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d  ....          #.
2580: 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54  .          # NOT
2590: 45 3a 20 4f 6b 2c 20 73 68 6f 77 20 74 68 65 20  E: Ok, show the 
25a0: 64 69 72 65 63 74 6f 72 79 20 77 65 20 66 6f 75  directory we fou
25b0: 6e 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23  nd...          #
25c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 65 74 20  ..          set 
25d0: 64 69 72 34 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  dir4 [file join 
25e0: 24 64 69 72 32 20 24 64 69 72 33 5d 0d 0a 0d 0a  $dir2 $dir3]....
25f0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
2600: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 49         # NOTE: I
2610: 66 20 77 65 20 68 61 76 65 20 4e 4f 54 20 62 65  f we have NOT be
2620: 65 6e 20 69 6e 73 74 72 75 63 74 65 64 20 74 6f  en instructed to
2630: 20 62 65 20 71 75 69 65 74 2c 20 72 65 70 6f 72   be quiet, repor
2640: 74 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  t now...        
2650: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 69    #..          i
2660: 66 20 7b 21 24 71 75 69 65 74 7d 20 74 68 65 6e  f {!$quiet} then
2670: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2680: 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20  catch {..       
2690: 20 20 20 20 20 20 20 74 71 70 75 74 73 20 24 63         tqputs $c
26a0: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
26b0: 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  gs \..          
26c0: 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 66 6f          "---- fo
26d0: 75 6e 64 20 76 65 6e 64 6f 72 2d 73 70 65 63 69  und vendor-speci
26e0: 66 69 63 20 74 65 73 74 20 73 75 69 74 65 20 64  fic test suite d
26f0: 69 72 65 63 74 6f 72 79 20 5c 22 22 20 5c 0d 0a  irectory \"" \..
2700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2710: 20 20 24 64 69 72 34 20 5c 22 5c 6e 5d 0d 0a 20    $dir4 \"\n].. 
2720: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2730: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2740: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
2750: 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 65 20 61      # NOTE: We a
2760: 72 65 20 64 6f 6e 65 2c 20 72 65 74 75 72 6e 20  re done, return 
2770: 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20  success...      
2780: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
2790: 20 72 65 74 75 72 6e 20 74 72 75 65 0d 0a 20 20   return true..  
27a0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
27b0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
27c0: 4e 4f 54 45 3a 20 4b 65 65 70 20 67 6f 69 6e 67  NOTE: Keep going
27d0: 20 75 70 20 74 68 65 20 64 69 72 65 63 74 6f 72   up the director
27e0: 79 20 74 72 65 65 2e 2e 2e 0d 0a 20 20 20 20 20  y tree.....     
27f0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 73 65     #..        se
2800: 74 20 64 69 72 32 20 5b 66 69 6c 65 20 64 69 72  t dir2 [file dir
2810: 6e 61 6d 65 20 24 64 69 72 32 5d 0d 0a 20 20 20  name $dir2]..   
2820: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
2830: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 49  .      # NOTE: I
2840: 66 20 77 65 20 68 61 76 65 20 4e 4f 54 20 62 65  f we have NOT be
2850: 65 6e 20 69 6e 73 74 72 75 63 74 65 64 20 74 6f  en instructed to
2860: 20 62 65 20 71 75 69 65 74 2c 20 72 65 70 6f 72   be quiet, repor
2870: 74 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 23 0d  t now...      #.
2880: 0a 20 20 20 20 20 20 69 66 20 7b 21 24 71 75 69  .      if {!$qui
2890: 65 74 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  et} then {..    
28a0: 20 20 20 20 63 61 74 63 68 20 7b 0d 0a 20 20 20      catch {..   
28b0: 20 20 20 20 20 20 20 74 71 70 75 74 73 20 24 63         tqputs $c
28c0: 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20 20 20  hannel \..      
28d0: 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 63 6f          "---- co
28e0: 75 6c 64 20 6e 6f 74 20 66 69 6e 64 20 76 65 6e  uld not find ven
28f0: 64 6f 72 2d 73 70 65 63 69 66 69 63 20 74 65 73  dor-specific tes
2900: 74 20 73 75 69 74 65 20 64 69 72 65 63 74 6f 72  t suite director
2910: 79 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 7d 0d  y\n"..        }.
2920: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
2930: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
2940: 45 3a 20 44 69 72 65 63 74 6f 72 79 20 6e 6f 74  E: Directory not
2950: 20 66 6f 75 6e 64 2c 20 72 65 74 75 72 6e 20 66   found, return f
2960: 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 23  ailure...      #
2970: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 66  ..      return f
2980: 61 6c 73 65 0d 0a 20 20 20 20 7d 0d 0a 0c 0d 0a  alse..    }.....
2990: 20 20 20 20 70 72 6f 63 20 73 65 74 75 70 49 6e      proc setupIn
29a0: 74 65 72 70 72 65 74 65 72 54 65 73 74 50 61 74  terpreterTestPat
29b0: 68 20 7b 20 63 68 61 6e 6e 65 6c 20 64 69 72 20  h { channel dir 
29c0: 71 75 69 65 74 20 7d 20 7b 0d 0a 20 20 20 20 20  quiet } {..     
29d0: 20 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69   if {[llength [i
29e0: 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 64 65 62  nfo commands deb
29f0: 75 67 5d 5d 20 3e 20 30 20 26 26 20 5c 0d 0a 20  ug]] > 0 && \.. 
2a00: 20 20 20 20 20 20 20 20 20 5b 6c 6c 65 6e 67 74           [llengt
2a10: 68 20 5b 69 6e 66 6f 20 73 75 62 63 6f 6d 6d 61  h [info subcomma
2a20: 6e 64 73 20 64 65 62 75 67 20 74 65 73 74 70 61  nds debug testpa
2a30: 74 68 5d 5d 20 3e 20 30 20 26 26 20 5c 0d 0a 20  th]] > 0 && \.. 
2a40: 20 20 20 20 20 20 20 20 20 5b 63 61 74 63 68 20           [catch 
2a50: 7b 64 65 62 75 67 20 74 65 73 74 70 61 74 68 7d  {debug testpath}
2a60: 20 74 65 73 74 50 61 74 68 5d 20 3d 3d 20 30 7d   testPath] == 0}
2a70: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
2a80: 20 69 66 20 7b 24 64 69 72 20 6e 65 20 24 74 65   if {$dir ne $te
2a90: 73 74 50 61 74 68 7d 20 74 68 65 6e 20 7b 0d 0a  stPath} then {..
2aa0: 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 20            debug 
2ab0: 74 65 73 74 70 61 74 68 20 24 64 69 72 0d 0a 0d  testpath $dir...
2ac0: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 21  .          if {!
2ad0: 24 71 75 69 65 74 7d 20 74 68 65 6e 20 7b 0d 0a  $quiet} then {..
2ae0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2af0: 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h {..           
2b00: 20 20 20 74 71 70 75 74 73 20 24 63 68 61 6e 6e     tqputs $chann
2b10: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c  el [appendArgs \
2b20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b30: 20 20 20 20 22 2d 2d 2d 2d 20 73 65 74 20 69 6e      "---- set in
2b40: 74 65 72 70 72 65 74 65 72 20 74 65 73 74 20 70  terpreter test p
2b50: 61 74 68 20 74 6f 20 5c 22 22 20 24 64 69 72 20  ath to \"" $dir 
2b60: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  \..             
2b70: 20 20 20 20 20 22 5c 22 20 76 69 61 20 5c 22 64       "\" via \"d
2b80: 65 62 75 67 5c 22 20 63 6f 6d 6d 61 6e 64 5c 6e  ebug\" command\n
2b90: 22 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  "]..            
2ba0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
2bb0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2bc0: 20 7d 20 65 6c 73 65 69 66 20 7b 5b 6c 6c 65 6e   } elseif {[llen
2bd0: 67 74 68 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e  gth [info comman
2be0: 64 73 20 6f 62 6a 65 63 74 5d 5d 20 3e 20 30 20  ds object]] > 0 
2bf0: 26 26 20 5b 63 61 74 63 68 20 7b 0d 0a 20 20 20  && [catch {..   
2c00: 20 20 20 20 20 6f 62 6a 65 63 74 20 69 6e 76 6f       object invo
2c10: 6b 65 20 2d 66 6c 61 67 73 20 2b 4e 6f 6e 50 75  ke -flags +NonPu
2c20: 62 6c 69 63 20 49 6e 74 65 72 70 72 65 74 65 72  blic Interpreter
2c30: 2e 47 65 74 41 63 74 69 76 65 20 54 65 73 74 50  .GetActive TestP
2c40: 61 74 68 0d 0a 20 20 20 20 20 20 7d 20 74 65 73  ath..      } tes
2c50: 74 50 61 74 68 5d 20 3d 3d 20 30 7d 20 74 68 65  tPath] == 0} the
2c60: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  n {..        if 
2c70: 7b 24 64 69 72 20 6e 65 20 24 74 65 73 74 50 61  {$dir ne $testPa
2c80: 74 68 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  th} then {..    
2c90: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 69 6e 76        object inv
2ca0: 6f 6b 65 20 2d 66 6c 61 67 73 20 2b 4e 6f 6e 50  oke -flags +NonP
2cb0: 75 62 6c 69 63 20 49 6e 74 65 72 70 72 65 74 65  ublic Interprete
2cc0: 72 2e 47 65 74 41 63 74 69 76 65 20 54 65 73 74  r.GetActive Test
2cd0: 50 61 74 68 20 24 64 69 72 0d 0a 0d 0a 20 20 20  Path $dir....   
2ce0: 20 20 20 20 20 20 20 69 66 20 7b 21 24 71 75 69         if {!$qui
2cf0: 65 74 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  et} then {..    
2d00: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 7b 0d          catch {.
2d10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
2d20: 71 70 75 74 73 20 24 63 68 61 6e 6e 65 6c 20 5b  qputs $channel [
2d30: 61 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20  appendArgs \..  
2d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d50: 22 2d 2d 2d 2d 20 73 65 74 20 69 6e 74 65 72 70  "---- set interp
2d60: 72 65 74 65 72 20 74 65 73 74 20 70 61 74 68 20  reter test path 
2d70: 74 6f 20 5c 22 22 20 24 64 69 72 20 5c 0d 0a 20  to \"" $dir \.. 
2d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d90: 20 22 5c 22 20 76 69 61 20 5c 22 6f 62 6a 65 63   "\" via \"objec
2da0: 74 5c 22 20 63 6f 6d 6d 61 6e 64 5c 6e 22 5d 0d  t\" command\n"].
2db0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2dc0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2dd0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 20       }..      } 
2de0: 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20  else {..        
2df0: 69 66 20 7b 21 24 71 75 69 65 74 7d 20 74 68 65  if {!$quiet} the
2e00: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 63  n {..          c
2e10: 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20  atch {..        
2e20: 20 20 20 20 74 71 70 75 74 73 20 24 63 68 61 6e      tqputs $chan
2e30: 6e 65 6c 20 22 2d 2d 2d 2d 20 63 61 6e 6e 6f 74  nel "---- cannot
2e40: 20 73 65 74 20 69 6e 74 65 72 70 72 65 74 65 72   set interpreter
2e50: 20 74 65 73 74 20 70 61 74 68 5c 6e 22 0d 0a 20   test path\n".. 
2e60: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2e70: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
2e80: 20 20 20 20 7d 0d 0a 0c 0d 0a 20 20 20 20 23 0d      }.....    #.
2e90: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 43 68 65  .    # NOTE: Che
2ea0: 63 6b 20 66 6f 72 20 61 6e 79 20 6f 76 65 72 72  ck for any overr
2eb0: 69 64 64 65 6e 20 73 65 74 74 69 6e 67 73 20 74  idden settings t
2ec0: 68 61 74 20 6d 61 79 20 68 61 76 65 20 62 65 65  hat may have bee
2ed0: 6e 20 73 70 65 63 69 66 69 65 64 20 76 69 61 0d  n specified via.
2ee0: 0a 20 20 20 20 23 20 20 20 20 20 20 20 74 68 65  .    #       the
2ef0: 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2c 20 65   command line, e
2f00: 74 63 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  tc...    #..    
2f10: 63 68 65 63 6b 46 6f 72 54 65 73 74 4f 76 65 72  checkForTestOver
2f20: 72 69 64 65 73 20 73 74 64 6f 75 74 20 5b 65 78  rides stdout [ex
2f30: 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  pr {[info exists
2f40: 20 74 65 73 74 5f 6f 76 65 72 72 69 64 65 73 5d   test_overrides]
2f50: 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 24 74   ? \..        $t
2f60: 65 73 74 5f 6f 76 65 72 72 69 64 65 73 20 3a 20  est_overrides : 
2f70: 5b 6c 69 73 74 20 62 69 6e 61 72 79 5f 64 69 72  [list binary_dir
2f80: 65 63 74 6f 72 79 20 62 75 69 6c 64 5f 62 61 73  ectory build_bas
2f90: 65 5f 64 69 72 65 63 74 6f 72 79 20 5c 0d 0a 20  e_directory \.. 
2fa0: 20 20 20 20 20 20 20 62 75 69 6c 64 5f 64 69 72         build_dir
2fb0: 65 63 74 6f 72 79 20 63 6f 6d 6d 6f 6e 5f 64 69  ectory common_di
2fc0: 72 65 63 74 6f 72 79 20 63 6f 6d 70 69 6c 65 5f  rectory compile_
2fd0: 6f 70 74 69 6f 6e 5f 70 72 65 66 69 78 20 5c 0d  option_prefix \.
2fe0: 0a 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74  .        connect
2ff0: 69 6f 6e 5f 66 6c 61 67 73 20 63 6f 72 65 5f 6c  ion_flags core_l
3000: 69 62 72 61 72 79 5f 76 65 72 73 69 6f 6e 20 64  ibrary_version d
3010: 61 74 61 62 61 73 65 5f 64 69 72 65 63 74 6f 72  atabase_director
3020: 79 20 5c 0d 0a 20 20 20 20 20 20 20 20 64 61 74  y \..        dat
3030: 65 74 69 6d 65 5f 66 6f 72 6d 61 74 20 64 65 66  etime_format def
3040: 69 6e 65 5f 63 6f 6e 73 74 61 6e 74 5f 70 72 65  ine_constant_pre
3050: 66 69 78 20 65 78 65 63 75 74 65 5f 6f 6e 5f 73  fix execute_on_s
3060: 65 74 75 70 20 5c 0d 0a 20 20 20 20 20 20 20 20  etup \..        
3070: 69 6e 74 65 72 6f 70 5f 61 73 73 65 6d 62 6c 79  interop_assembly
3080: 5f 66 69 6c 65 5f 6e 61 6d 65 73 20 6e 61 74 69  _file_names nati
3090: 76 65 5f 6c 69 62 72 61 72 79 5f 66 69 6c 65 5f  ve_library_file_
30a0: 6e 61 6d 65 73 20 5c 0d 0a 20 20 20 20 20 20 20  names \..       
30b0: 20 72 65 6c 65 61 73 65 5f 76 65 72 73 69 6f 6e   release_version
30c0: 20 73 63 72 61 74 63 68 5f 64 69 72 65 63 74 6f   scratch_directo
30d0: 72 79 20 74 65 6d 70 6f 72 61 72 79 5f 64 69 72  ry temporary_dir
30e0: 65 63 74 6f 72 79 20 74 65 73 74 5f 63 6c 72 20  ectory test_clr 
30f0: 5c 0d 0a 20 20 20 20 20 20 20 20 74 65 73 74 5f  \..        test_
3100: 63 6c 72 5f 76 32 20 74 65 73 74 5f 63 6c 72 5f  clr_v2 test_clr_
3110: 76 34 20 74 65 73 74 5f 63 6f 6e 66 69 67 75 72  v4 test_configur
3120: 61 74 69 6f 6e 20 74 65 73 74 5f 63 6f 6e 66 69  ation test_confi
3130: 67 75 72 61 74 69 6f 6e 73 20 5c 0d 0a 20 20 20  gurations \..   
3140: 20 20 20 20 20 74 65 73 74 5f 63 6f 6e 66 69 67       test_config
3150: 75 72 61 74 69 6f 6e 5f 73 75 66 66 69 78 20 74  uration_suffix t
3160: 65 73 74 5f 63 6f 6e 66 69 67 75 72 61 74 69 6f  est_configuratio
3170: 6e 5f 73 75 66 66 69 78 65 73 20 5c 0d 0a 20 20  n_suffixes \..  
3180: 20 20 20 20 20 20 74 65 73 74 5f 63 6f 6e 73 74        test_const
3190: 72 61 69 6e 74 73 20 74 65 73 74 5f 65 78 74 72  raints test_extr
31a0: 61 20 74 65 73 74 5f 65 78 74 72 61 73 20 74 65  a test_extras te
31b0: 73 74 5f 6d 61 63 68 69 6e 65 20 74 65 73 74 5f  st_machine test_
31c0: 6e 61 74 69 76 65 20 5c 0d 0a 20 20 20 20 20 20  native \..      
31d0: 20 20 74 65 73 74 5f 6e 61 74 69 76 65 5f 63 6f    test_native_co
31e0: 6e 66 69 67 75 72 61 74 69 6f 6e 5f 73 75 66 66  nfiguration_suff
31f0: 69 78 20 74 65 73 74 5f 6e 61 74 69 76 65 5f 79  ix test_native_y
3200: 65 61 72 20 74 65 73 74 5f 6e 65 74 5f 66 78 20  ear test_net_fx 
3210: 5c 0d 0a 20 20 20 20 20 20 20 20 74 65 73 74 5f  \..        test_
3220: 6e 65 74 5f 66 78 5f 32 30 30 35 20 74 65 73 74  net_fx_2005 test
3230: 5f 6e 65 74 5f 66 78 5f 32 30 30 38 20 74 65 73  _net_fx_2008 tes
3240: 74 5f 6e 65 74 5f 66 78 5f 32 30 31 30 20 74 65  t_net_fx_2010 te
3250: 73 74 5f 6e 65 74 5f 66 78 5f 32 30 31 32 20 5c  st_net_fx_2012 \
3260: 0d 0a 20 20 20 20 20 20 20 20 74 65 73 74 5f 6e  ..        test_n
3270: 65 74 5f 66 78 5f 32 30 31 33 20 74 65 73 74 5f  et_fx_2013 test_
3280: 6e 65 74 5f 66 78 5f 32 30 31 35 20 74 65 73 74  net_fx_2015 test
3290: 5f 6e 65 74 5f 66 78 5f 32 30 31 37 20 74 65 73  _net_fx_2017 tes
32a0: 74 5f 6f 76 65 72 72 69 64 65 73 20 5c 0d 0a 20  t_overrides \.. 
32b0: 20 20 20 20 20 20 20 74 65 73 74 5f 70 6c 61 74         test_plat
32c0: 66 6f 72 6d 20 74 65 73 74 5f 73 75 69 74 65 20  form test_suite 
32d0: 74 65 73 74 5f 79 65 61 72 20 74 65 73 74 5f 79  test_year test_y
32e0: 65 61 72 73 20 74 65 73 74 5f 79 65 61 72 5f 63  ears test_year_c
32f0: 6c 72 5f 76 32 20 5c 0d 0a 20 20 20 20 20 20 20  lr_v2 \..       
3300: 20 74 65 73 74 5f 79 65 61 72 5f 63 6c 72 5f 76   test_year_clr_v
3310: 34 20 76 65 6e 64 6f 72 5f 64 69 72 65 63 74 6f  4 vendor_directo
3320: 72 79 20 76 65 6e 64 6f 72 5f 74 65 73 74 5f 64  ry vendor_test_d
3330: 69 72 65 63 74 6f 72 79 5d 7d 5d 20 5c 0d 0a 20  irectory]}] \.. 
3340: 20 20 20 20 20 20 20 5b 63 68 65 63 6b 46 6f 72         [checkFor
3350: 56 65 6e 64 6f 72 51 75 69 65 74 20 63 68 65 63  VendorQuiet chec
3360: 6b 46 6f 72 54 65 73 74 4f 76 65 72 72 69 64 65  kForTestOverride
3370: 73 5d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20  s]....    #..   
3380: 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
3390: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 72 75 6e   name of the run
33a0: 6e 69 6e 67 20 74 65 73 74 20 73 75 69 74 65 2c  ning test suite,
33b0: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
33c0: 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
33d0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
33e0: 74 5f 73 75 69 74 65 5d 7d 20 74 68 65 6e 20 7b  t_suite]} then {
33f0: 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65 73 74  ..      set test
3400: 5f 73 75 69 74 65 20 22 53 79 73 74 65 6d 2e 44  _suite "System.D
3410: 61 74 61 2e 53 51 4c 69 74 65 20 54 65 73 74 20  ata.SQLite Test 
3420: 53 75 69 74 65 20 66 6f 72 20 45 61 67 6c 65 22  Suite for Eagle"
3430: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
3440: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 68  ..    # NOTE: Wh
3450: 65 6e 20 62 65 69 6e 67 20 65 76 61 6c 75 61 74  en being evaluat
3460: 65 64 20 69 6e 20 61 20 22 73 61 66 65 22 20 69  ed in a "safe" i
3470: 6e 74 65 72 70 72 65 74 65 72 2c 20 73 6f 6d 65  nterpreter, some
3480: 20 73 74 65 70 73 20 6d 75 73 74 20 62 65 0d 0a   steps must be..
3490: 20 20 20 20 23 20 20 20 20 20 20 20 73 6b 69 70      #       skip
34a0: 70 65 64 20 64 75 65 20 74 6f 20 6d 69 73 73 69  ped due to missi
34b0: 6e 67 20 63 6f 6d 6d 61 6e 64 73 20 61 6e 64 2f  ng commands and/
34c0: 6f 72 20 73 75 62 2d 63 6f 6d 6d 61 6e 64 73 2e  or sub-commands.
34d0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
34e0: 7b 21 5b 69 6e 74 65 72 70 20 69 73 73 61 66 65  {![interp issafe
34f0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
3500: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
3510: 3a 20 54 68 69 73 20 76 61 72 69 61 62 6c 65 20  : This variable 
3520: 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65  will contain the
3530: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 69 72   name of the dir
3540: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
3550: 67 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  g..      #      
3560: 20 74 68 65 20 76 65 6e 64 6f 72 2d 73 70 65 63   the vendor-spec
3570: 69 66 69 63 20 74 65 73 74 69 6e 67 20 69 6e 66  ific testing inf
3580: 72 61 73 74 72 75 63 74 75 72 65 2e 20 20 49 66  rastructure.  If
3590: 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 64 6f   the variable do
35a0: 65 73 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  es..      #     
35b0: 20 20 6e 6f 74 20 65 78 69 73 74 2c 20 63 72 65    not exist, cre
35c0: 61 74 65 20 69 74 3b 20 6f 74 68 65 72 77 69 73  ate it; otherwis
35d0: 65 2c 20 69 74 20 68 61 73 20 62 65 65 6e 20 6f  e, it has been o
35e0: 76 65 72 72 69 64 64 65 6e 20 61 6e 64 20 74 68  verridden and th
35f0: 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  e..      #      
3600: 20 65 78 69 73 74 69 6e 67 20 76 61 6c 75 65 20   existing value 
3610: 73 68 6f 75 6c 64 20 62 65 20 6c 65 66 74 20 69  should be left i
3620: 6e 74 61 63 74 2e 0d 0a 20 20 20 20 20 20 23 0d  ntact...      #.
3630: 0a 20 20 20 20 20 20 73 65 74 20 68 61 76 65 5f  .      set have_
3640: 76 65 6e 64 6f 72 5f 64 69 72 65 63 74 6f 72 79  vendor_directory
3650: 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 76 65   [info exists ve
3660: 6e 64 6f 72 5f 64 69 72 65 63 74 6f 72 79 5d 0d  ndor_directory].
3670: 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 24 68  ...      if {!$h
3680: 61 76 65 5f 76 65 6e 64 6f 72 5f 64 69 72 65 63  ave_vendor_direc
3690: 74 6f 72 79 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  tory} then {..  
36a0: 20 20 20 20 20 20 73 65 74 20 76 65 6e 64 6f 72        set vendor
36b0: 5f 64 69 72 65 63 74 6f 72 79 20 22 22 0d 0a 20  _directory "".. 
36c0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
36d0: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
36e0: 20 54 68 69 73 20 76 61 72 69 61 62 6c 65 20 77   This variable w
36f0: 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 20  ill contain the 
3700: 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 69 72 65  name of the dire
3710: 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
3720: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
3730: 74 68 65 20 76 65 6e 64 6f 72 2d 73 70 65 63 69  the vendor-speci
3740: 66 69 63 20 74 65 73 74 20 73 75 69 74 65 2e 20  fic test suite. 
3750: 20 49 66 20 74 68 65 20 76 61 72 69 61 62 6c 65   If the variable
3760: 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2c   does not exist,
3770: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
3780: 63 72 65 61 74 65 20 69 74 3b 20 6f 74 68 65 72  create it; other
3790: 77 69 73 65 2c 20 69 74 20 68 61 73 20 62 65 65  wise, it has bee
37a0: 6e 20 6f 76 65 72 72 69 64 64 65 6e 20 61 6e 64  n overridden and
37b0: 20 74 68 65 20 65 78 69 73 74 69 6e 67 0d 0a 20   the existing.. 
37c0: 20 20 20 20 20 23 20 20 20 20 20 20 20 76 61 6c       #       val
37d0: 75 65 20 73 68 6f 75 6c 64 20 62 65 20 6c 65 66  ue should be lef
37e0: 74 20 69 6e 74 61 63 74 2e 0d 0a 20 20 20 20 20  t intact...     
37f0: 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 68 61   #..      set ha
3800: 76 65 5f 76 65 6e 64 6f 72 5f 74 65 73 74 5f 64  ve_vendor_test_d
3810: 69 72 65 63 74 6f 72 79 20 5b 69 6e 66 6f 20 65  irectory [info e
3820: 78 69 73 74 73 20 76 65 6e 64 6f 72 5f 74 65 73  xists vendor_tes
3830: 74 5f 64 69 72 65 63 74 6f 72 79 5d 0d 0a 0d 0a  t_directory]....
3840: 20 20 20 20 20 20 69 66 20 7b 21 24 68 61 76 65        if {!$have
3850: 5f 76 65 6e 64 6f 72 5f 74 65 73 74 5f 64 69 72  _vendor_test_dir
3860: 65 63 74 6f 72 79 7d 20 74 68 65 6e 20 7b 0d 0a  ectory} then {..
3870: 20 20 20 20 20 20 20 20 73 65 74 20 76 65 6e 64          set vend
3880: 6f 72 5f 74 65 73 74 5f 64 69 72 65 63 74 6f 72  or_test_director
3890: 79 20 22 22 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  y ""..      }...
38a0: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
38b0: 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 70 72 6f  # NOTE: This pro
38c0: 63 65 64 75 72 65 20 77 69 6c 6c 20 61 74 74 65  cedure will atte
38d0: 6d 70 74 20 74 6f 20 66 69 6e 64 20 74 68 65 20  mpt to find the 
38e0: 76 65 6e 64 6f 72 2d 73 70 65 63 69 66 69 63 20  vendor-specific 
38f0: 74 65 73 74 69 6e 67 0d 0a 20 20 20 20 20 20 23  testing..      #
3900: 20 20 20 20 20 20 20 69 6e 66 72 61 73 74 72 75         infrastru
3910: 63 74 75 72 65 20 64 69 72 65 63 74 6f 72 79 20  cture directory 
3920: 61 6e 64 20 61 64 64 20 69 74 20 74 6f 20 74 68  and add it to th
3930: 65 20 61 75 74 6f 2d 70 61 74 68 20 66 6f 72 20  e auto-path for 
3940: 74 68 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20  the..      #    
3950: 20 20 20 63 75 72 72 65 6e 74 20 69 6e 74 65 72     current inter
3960: 70 72 65 74 65 72 2e 20 20 4e 6f 72 6d 61 6c 6c  preter.  Normall
3970: 79 2c 20 74 68 69 73 20 77 69 6c 6c 20 61 6c 73  y, this will als
3980: 6f 20 73 65 74 20 74 68 65 20 76 61 72 69 61 62  o set the variab
3990: 6c 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  le..      #     
39a0: 20 20 63 72 65 61 74 65 64 20 61 62 6f 76 65 20    created above 
39b0: 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20  to point to the 
39c0: 64 69 72 65 63 74 6f 72 79 20 61 64 64 65 64 20  directory added 
39d0: 74 6f 20 74 68 65 20 61 75 74 6f 2d 70 61 74 68  to the auto-path
39e0: 3b 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  ;..      #      
39f0: 20 68 6f 77 65 76 65 72 2c 20 74 68 69 73 20 77   however, this w
3a00: 69 6c 6c 20 6e 6f 74 20 62 65 20 64 6f 6e 65 20  ill not be done 
3a10: 69 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 20  if the variable 
3a20: 77 61 73 20 6e 6f 74 20 63 72 65 61 74 65 64 0d  was not created.
3a30: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 62  .      #       b
3a40: 79 20 75 73 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  y us...      #..
3a50: 20 20 20 20 20 20 61 64 64 54 65 73 74 53 75 69        addTestSui
3a60: 74 65 54 6f 41 75 74 6f 50 61 74 68 20 73 74 64  teToAutoPath std
3a70: 6f 75 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  out \..         
3a80: 20 5b 65 78 70 72 20 7b 24 68 61 76 65 5f 76 65   [expr {$have_ve
3a90: 6e 64 6f 72 5f 64 69 72 65 63 74 6f 72 79 20 3f  ndor_directory ?
3aa0: 20 22 22 20 3a 20 22 76 65 6e 64 6f 72 5f 64 69   "" : "vendor_di
3ab0: 72 65 63 74 6f 72 79 22 7d 5d 20 5c 0d 0a 20 20  rectory"}] \..  
3ac0: 20 20 20 20 20 20 20 20 5b 63 68 65 63 6b 46 6f          [checkFo
3ad0: 72 56 65 6e 64 6f 72 51 75 69 65 74 20 61 64 64  rVendorQuiet add
3ae0: 54 65 73 74 53 75 69 74 65 54 6f 41 75 74 6f 50  TestSuiteToAutoP
3af0: 61 74 68 5d 0d 0a 0d 0a 20 20 20 20 20 20 75 6e  ath]....      un
3b00: 73 65 74 20 68 61 76 65 5f 76 65 6e 64 6f 72 5f  set have_vendor_
3b10: 64 69 72 65 63 74 6f 72 79 0d 0a 0d 0a 20 20 20  directory....   
3b20: 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
3b30: 54 45 3a 20 54 68 69 73 20 70 72 6f 63 65 64 75  TE: This procedu
3b40: 72 65 20 77 69 6c 6c 20 61 74 74 65 6d 70 74 20  re will attempt 
3b50: 74 6f 20 66 69 6e 64 20 74 68 65 20 76 65 6e 64  to find the vend
3b60: 6f 72 2d 73 70 65 63 69 66 69 63 20 74 65 73 74  or-specific test
3b70: 69 6e 67 0d 0a 20 20 20 20 20 20 23 20 20 20 20  ing..      #    
3b80: 20 20 20 64 69 72 65 63 74 6f 72 79 2e 20 20 4e     directory.  N
3b90: 6f 72 6d 61 6c 6c 79 2c 20 74 68 69 73 20 77 69  ormally, this wi
3ba0: 6c 6c 20 61 6c 73 6f 20 73 65 74 20 74 68 65 20  ll also set the 
3bb0: 76 61 72 69 61 62 6c 65 20 63 72 65 61 74 65 64  variable created
3bc0: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
3bd0: 61 62 6f 76 65 20 74 6f 20 70 6f 69 6e 74 20 74  above to point t
3be0: 6f 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 3b  o the directory;
3bf0: 20 68 6f 77 65 76 65 72 2c 20 74 68 69 73 20 77   however, this w
3c00: 69 6c 6c 20 6e 6f 74 20 62 65 20 64 6f 6e 65 0d  ill not be done.
3c10: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 69  .      #       i
3c20: 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 77  f the variable w
3c30: 61 73 20 6e 6f 74 20 63 72 65 61 74 65 64 20 62  as not created b
3c40: 79 20 75 73 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  y us...      #..
3c50: 20 20 20 20 20 20 66 69 6e 64 49 6e 74 65 72 70        findInterp
3c60: 72 65 74 65 72 54 65 73 74 50 61 74 68 20 73 74  reterTestPath st
3c70: 64 6f 75 74 20 24 76 65 6e 64 6f 72 5f 64 69 72  dout $vendor_dir
3c80: 65 63 74 6f 72 79 20 5c 0d 0a 20 20 20 20 20 20  ectory \..      
3c90: 20 20 20 20 5b 65 78 70 72 20 7b 24 68 61 76 65      [expr {$have
3ca0: 5f 76 65 6e 64 6f 72 5f 74 65 73 74 5f 64 69 72  _vendor_test_dir
3cb0: 65 63 74 6f 72 79 20 3f 20 22 22 20 3a 20 22 76  ectory ? "" : "v
3cc0: 65 6e 64 6f 72 5f 74 65 73 74 5f 64 69 72 65 63  endor_test_direc
3cd0: 74 6f 72 79 22 7d 5d 20 5c 0d 0a 20 20 20 20 20  tory"}] \..     
3ce0: 20 20 20 20 20 5b 63 68 65 63 6b 46 6f 72 56 65       [checkForVe
3cf0: 6e 64 6f 72 51 75 69 65 74 20 66 69 6e 64 49 6e  ndorQuiet findIn
3d00: 74 65 72 70 72 65 74 65 72 54 65 73 74 50 61 74  terpreterTestPat
3d10: 68 5d 0d 0a 0d 0a 20 20 20 20 20 20 75 6e 73 65  h]....      unse
3d20: 74 20 68 61 76 65 5f 76 65 6e 64 6f 72 5f 74 65  t have_vendor_te
3d30: 73 74 5f 64 69 72 65 63 74 6f 72 79 0d 0a 0d 0a  st_directory....
3d40: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
3d50: 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 61 63 74   NOTE: If we act
3d60: 75 61 6c 6c 79 20 66 6f 75 6e 64 20 61 20 76 65  ually found a ve
3d70: 6e 64 6f 72 2d 73 70 65 63 69 66 69 63 20 74 65  ndor-specific te
3d80: 73 74 69 6e 67 20 69 6e 66 72 61 73 74 72 75 63  sting infrastruc
3d90: 74 75 72 65 0d 0a 20 20 20 20 20 20 23 20 20 20  ture..      #   
3da0: 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 74 68      directory th
3db0: 65 6e 20 6d 6f 64 69 66 79 20 74 68 65 20 54 65  en modify the Te
3dc0: 73 74 50 61 74 68 20 70 72 6f 70 65 72 74 79 20  stPath property 
3dd0: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a  of the current..
3de0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 69 6e        #       in
3df0: 74 65 72 70 72 65 74 65 72 20 74 6f 20 70 6f 69  terpreter to poi
3e00: 6e 74 20 64 69 72 65 63 74 6c 79 20 74 6f 20 69  nt directly to i
3e10: 74 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  t...      #..   
3e20: 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c     if {[string l
3e30: 65 6e 67 74 68 20 24 76 65 6e 64 6f 72 5f 74 65  ength $vendor_te
3e40: 73 74 5f 64 69 72 65 63 74 6f 72 79 5d 20 3e 20  st_directory] > 
3e50: 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  0} then {..     
3e60: 20 20 20 73 65 74 75 70 49 6e 74 65 72 70 72 65     setupInterpre
3e70: 74 65 72 54 65 73 74 50 61 74 68 20 73 74 64 6f  terTestPath stdo
3e80: 75 74 20 24 76 65 6e 64 6f 72 5f 74 65 73 74 5f  ut $vendor_test_
3e90: 64 69 72 65 63 74 6f 72 79 20 5c 0d 0a 20 20 20  directory \..   
3ea0: 20 20 20 20 20 20 20 20 20 5b 63 68 65 63 6b 46           [checkF
3eb0: 6f 72 56 65 6e 64 6f 72 51 75 69 65 74 20 73 65  orVendorQuiet se
3ec0: 74 75 70 49 6e 74 65 72 70 72 65 74 65 72 54 65  tupInterpreterTe
3ed0: 73 74 50 61 74 68 5d 0d 0a 20 20 20 20 20 20 7d  stPath]..      }
3ee0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
3ef0: 0d 0a 20 20 20 20 23 20 48 41 43 4b 3a 20 57 68  ..    # HACK: Wh
3f00: 65 6e 20 74 68 65 20 45 61 67 6c 65 20 63 6f 72  en the Eagle cor
3f10: 65 20 74 65 73 74 20 73 75 69 74 65 20 69 6e 66  e test suite inf
3f20: 72 61 73 74 72 75 63 74 75 72 65 20 69 73 20 62  rastructure is b
3f30: 65 74 61 20 34 34 20 6f 72 0d 0a 20 20 20 20 23  eta 44 or..    #
3f40: 20 20 20 20 20 20 20 6c 6f 77 65 72 2c 20 6f 76         lower, ov
3f50: 65 72 72 69 64 65 20 74 68 65 20 5b 67 65 74 4b  erride the [getK
3f60: 6e 6f 77 6e 4d 6f 6e 6f 56 65 72 73 69 6f 6e 73  nownMonoVersions
3f70: 5d 20 70 72 6f 63 65 64 75 72 65 20 74 6f 20 61  ] procedure to a
3f80: 64 64 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  dd..    #       
3f90: 6d 6f 72 65 20 22 6b 6e 6f 77 6e 22 20 76 65 72  more "known" ver
3fa0: 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 4d 6f 6e  sions of the Mon
3fb0: 6f 20 72 75 6e 74 69 6d 65 2e 20 20 45 76 65 6e  o runtime.  Even
3fc0: 74 75 61 6c 6c 79 2c 20 74 68 69 73 0d 0a 20 20  tually, this..  
3fd0: 20 20 23 20 20 20 20 20 20 20 6f 76 65 72 72 69    #       overri
3fe0: 64 65 20 73 68 6f 75 6c 64 20 62 65 20 72 65 6d  de should be rem
3ff0: 6f 76 65 64 20 28 69 2e 65 2e 20 6f 6e 63 65 20  oved (i.e. once 
4000: 74 68 65 20 45 61 67 6c 65 20 63 6f 72 65 20 6c  the Eagle core l
4010: 69 62 72 61 72 79 0d 0a 20 20 20 20 23 20 20 20  ibrary..    #   
4020: 20 20 20 20 69 6e 63 6c 75 64 65 64 20 69 6e 20      included in 
4030: 22 45 78 74 65 72 6e 61 6c 73 22 20 69 73 20 75  "Externals" is u
4040: 70 64 61 74 65 64 29 2e 0d 0a 20 20 20 20 23 0d  pdated)...    #.
4050: 0a 20 20 20 20 69 66 20 7b 5b 70 61 63 6b 61 67  .    if {[packag
4060: 65 20 76 63 6f 6d 70 61 72 65 20 5c 0d 0a 20 20  e vcompare \..  
4070: 20 20 20 20 20 20 24 3a 3a 65 61 67 6c 65 5f 70        $::eagle_p
4080: 6c 61 74 66 6f 72 6d 28 70 61 74 63 68 4c 65 76  latform(patchLev
4090: 65 6c 29 20 31 2e 30 2e 36 38 34 38 2e 31 31 30  el) 1.0.6848.110
40a0: 34 31 5d 20 3c 3d 20 30 7d 20 74 68 65 6e 20 7b  41] <= 0} then {
40b0: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
40c0: 20 23 20 4e 4f 54 45 3a 20 41 72 72 61 6e 67 65   # NOTE: Arrange
40d0: 20 66 6f 72 20 74 68 69 73 20 70 72 6f 63 65 64   for this proced
40e0: 75 72 65 20 74 6f 20 62 65 20 72 65 64 65 66 69  ure to be redefi
40f0: 6e 65 64 20 61 66 74 65 72 20 69 74 20 68 61 73  ned after it has
4100: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
4110: 62 65 65 6e 20 64 65 66 69 6e 65 64 20 62 79 20  been defined by 
4120: 74 68 65 20 45 61 67 6c 65 2e 54 65 73 74 2e 43  the Eagle.Test.C
4130: 6f 6e 73 74 72 61 69 6e 74 73 20 70 61 63 6b 61  onstraints packa
4140: 67 65 20 2d 41 4e 44 2d 0d 0a 20 20 20 20 20 20  ge -AND-..      
4150: 23 20 20 20 20 20 20 20 62 65 66 6f 72 65 20 69  #       before i
4160: 74 20 68 61 73 20 62 65 65 6e 20 75 73 65 64 20  t has been used 
4170: 62 79 20 74 68 65 20 5b 63 68 65 63 6b 46 6f 72  by the [checkFor
4180: 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 5d 0d  RuntimeVersion].
4190: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 70  .      #       p
41a0: 72 6f 63 65 64 75 72 65 2e 0d 0a 20 20 20 20 20  rocedure...     
41b0: 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 3a 3a   #..      set ::
41c0: 74 65 73 74 5f 73 63 72 69 70 74 28 70 72 65 29  test_script(pre)
41d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 63   {..        proc
41e0: 20 67 65 74 4b 6e 6f 77 6e 4d 6f 6e 6f 56 65 72   getKnownMonoVer
41f0: 73 69 6f 6e 73 20 7b 20 7b 66 6f 72 63 65 20 66  sions { {force f
4200: 61 6c 73 65 7d 20 7d 20 7b 0d 0a 20 20 20 20 20  alse} } {..     
4210: 20 20 20 20 20 69 66 20 7b 24 66 6f 72 63 65 20       if {$force 
4220: 7c 7c 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  || ![info exists
4230: 20 3a 3a 6e 6f 28 6d 6f 6e 6f 56 65 72 73 69 6f   ::no(monoVersio
4240: 6e 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ns)]} then {..  
4250: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4260: 20 5b 6c 69 73 74 20 5c 0d 0a 20 20 20 20 20 20   [list \..      
4270: 20 20 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20            [list 
4280: 32 20 30 5d 20 5b 6c 69 73 74 20 32 20 32 5d 20  2 0] [list 2 2] 
4290: 5b 6c 69 73 74 20 32 20 34 5d 20 5b 6c 69 73 74  [list 2 4] [list
42a0: 20 32 20 36 5d 20 5c 0d 0a 20 20 20 20 20 20 20   2 6] \..       
42b0: 20 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 32           [list 2
42c0: 20 38 5d 20 5b 6c 69 73 74 20 32 20 31 30 5d 20   8] [list 2 10] 
42d0: 5b 6c 69 73 74 20 32 20 31 31 5d 20 5b 6c 69 73  [list 2 11] [lis
42e0: 74 20 33 20 30 5d 20 5c 0d 0a 20 20 20 20 20 20  t 3 0] \..      
42f0: 20 20 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20            [list 
4300: 33 20 31 5d 20 5b 6c 69 73 74 20 33 20 32 5d 20  3 1] [list 3 2] 
4310: 5b 6c 69 73 74 20 33 20 34 5d 20 5b 6c 69 73 74  [list 3 4] [list
4320: 20 33 20 36 5d 20 5c 0d 0a 20 20 20 20 20 20 20   3 6] \..       
4330: 20 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 33           [list 3
4340: 20 38 5d 20 5b 6c 69 73 74 20 33 20 31 30 5d 20   8] [list 3 10] 
4350: 5b 6c 69 73 74 20 33 20 31 32 5d 20 5b 6c 69 73  [list 3 12] [lis
4360: 74 20 34 20 30 5d 20 5c 0d 0a 20 20 20 20 20 20  t 4 0] \..      
4370: 20 20 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20            [list 
4380: 34 20 32 5d 20 5b 6c 69 73 74 20 34 20 34 5d 20  4 2] [list 4 4] 
4390: 5b 6c 69 73 74 20 34 20 36 5d 20 5b 6c 69 73 74  [list 4 6] [list
43a0: 20 34 20 38 5d 20 5c 0d 0a 20 20 20 20 20 20 20   4 8] \..       
43b0: 20 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 35           [list 5
43c0: 20 30 5d 20 5b 6c 69 73 74 20 35 20 32 5d 20 5b   0] [list 5 2] [
43d0: 6c 69 73 74 20 35 20 34 5d 20 5b 6c 69 73 74 20  list 5 4] [list 
43e0: 35 20 38 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20  5 8] \..        
43f0: 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 35 20          [list 5 
4400: 31 30 5d 20 5b 6c 69 73 74 20 35 20 31 32 5d 20  10] [list 5 12] 
4410: 5b 6c 69 73 74 20 35 20 31 34 5d 20 5b 6c 69 73  [list 5 14] [lis
4420: 74 20 35 20 31 36 5d 20 5c 0d 0a 20 20 20 20 20  t 5 16] \..     
4430: 20 20 20 20 20 20 20 20 20 20 20 5b 6c 69 73 74             [list
4440: 20 35 20 31 38 5d 20 5b 6c 69 73 74 20 35 20 32   5 18] [list 5 2
4450: 30 5d 20 5b 6c 69 73 74 20 35 20 32 32 5d 5d 0d  0] [list 5 22]].
4460: 0a 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73  .          } els
4470: 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e {..           
4480: 20 72 65 74 75 72 6e 20 5b 6c 69 73 74 5d 0d 0a   return [list]..
4490: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
44a0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
44b0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
44c0: 0a 20 20 20 20 23 20 48 41 43 4b 3a 20 50 72 65  .    # HACK: Pre
44d0: 76 65 6e 74 20 74 68 65 20 45 61 67 6c 65 20 63  vent the Eagle c
44e0: 6f 72 65 20 74 65 73 74 20 73 75 69 74 65 20 69  ore test suite i
44f0: 6e 66 72 61 73 74 72 75 63 74 75 72 65 20 66 72  nfrastructure fr
4500: 6f 6d 20 63 68 65 63 6b 69 6e 67 0d 0a 20 20 20  om checking..   
4510: 20 23 20 20 20 20 20 20 20 74 65 73 74 20 63 6f   #       test co
4520: 6e 73 74 72 61 69 6e 74 73 20 74 68 61 74 20 61  nstraints that a
4530: 72 65 20 74 69 6d 65 2d 63 6f 6e 73 75 6d 69 6e  re time-consumin
4540: 67 20 61 6e 64 2f 6f 72 20 6d 6f 73 74 20 6c 69  g and/or most li
4550: 6b 65 6c 79 20 74 6f 0d 0a 20 20 20 20 23 20 20  kely to..    #  
4560: 20 20 20 20 20 62 65 20 73 75 70 65 72 66 6c 75       be superflu
4570: 6f 75 73 20 74 6f 20 74 68 69 72 64 2d 70 61 72  ous to third-par
4580: 74 79 20 74 65 73 74 20 73 75 69 74 65 73 20 28  ty test suites (
4590: 69 2e 65 2e 20 74 68 6f 73 65 20 74 68 61 74 20  i.e. those that 
45a0: 61 72 65 0d 0a 20 20 20 20 23 20 20 20 20 20 20  are..    #      
45b0: 20 6e 6f 74 20 74 65 73 74 69 6e 67 20 74 68 65   not testing the
45c0: 20 45 61 67 6c 65 20 63 6f 72 65 20 6c 69 62 72   Eagle core libr
45d0: 61 72 79 20 69 74 73 65 6c 66 29 2e 0d 0a 20 20  ary itself)...  
45e0: 20 20 23 0d 0a 20 20 20 20 73 65 74 20 6e 6f 28    #..    set no(
45f0: 63 6f 72 65 29 20 31 0d 0a 0d 0a 20 20 20 20 23  core) 1....    #
4600: 0d 0a 20 20 20 20 23 20 48 41 43 4b 3a 20 50 72  ..    # HACK: Pr
4610: 65 76 65 6e 74 20 74 68 65 20 45 61 67 6c 65 20  event the Eagle 
4620: 63 6f 72 65 20 74 65 73 74 20 73 75 69 74 65 20  core test suite 
4630: 69 6e 66 72 61 73 74 72 75 63 74 75 72 65 20 66  infrastructure f
4640: 72 6f 6d 20 63 68 65 63 6b 69 6e 67 0d 0a 20 20  rom checking..  
4650: 20 20 23 20 20 20 20 20 20 20 66 6f 72 20 61 20    #       for a 
4660: 75 73 61 62 6c 65 20 69 6e 73 74 61 6e 63 65 20  usable instance 
4670: 6f 66 20 45 78 63 65 6c 20 62 65 63 61 75 73 65  of Excel because
4680: 20 69 74 20 63 61 6e 20 62 65 20 71 75 69 74 65   it can be quite
4690: 20 73 6c 6f 77 20 74 6f 0d 0a 20 20 20 20 23 20   slow to..    # 
46a0: 20 20 20 20 20 20 64 6f 20 73 6f 2e 0d 0a 20 20        do so...  
46b0: 20 20 23 0d 0a 20 20 20 20 73 65 74 20 6e 6f 28    #..    set no(
46c0: 65 78 63 65 6c 55 73 61 62 6c 65 29 20 31 0d 0a  excelUsable) 1..
46d0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
46e0: 4f 54 45 3a 20 4d 61 6b 65 20 74 68 65 20 70 65  OTE: Make the pe
46f0: 72 2d 74 65 73 74 20 63 6f 6e 6e 65 63 74 69 6f  r-test connectio
4700: 6e 20 66 6c 61 67 20 6f 75 74 70 75 74 20 61 20  n flag output a 
4710: 6c 69 74 74 6c 65 20 6c 65 73 73 20 6e 6f 69 73  little less nois
4720: 79 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 73  y...    #..    s
4730: 65 74 20 6e 6f 28 65 6d 69 74 4c 6f 63 61 6c 46  et no(emitLocalF
4740: 6c 61 67 73 49 66 4e 6f 6e 65 29 20 31 0d 0a 20  lagsIfNone) 1.. 
4750: 20 20 20 73 65 74 20 6e 6f 28 65 6d 69 74 53 68     set no(emitSh
4760: 61 72 65 64 46 6c 61 67 73 49 66 4e 6f 6e 65 29  aredFlagsIfNone)
4770: 20 31 0d 0a 20 20 20 20 73 65 74 20 6e 6f 28 65   1..    set no(e
4780: 6d 69 74 47 6c 6f 62 61 6c 46 6c 61 67 73 49 66  mitGlobalFlagsIf
4790: 4e 6f 6e 65 29 20 31 0d 0a 20 20 20 20 73 65 74  None) 1..    set
47a0: 20 6e 6f 28 65 6d 69 74 43 6f 6d 62 69 6e 65 64   no(emitCombined
47b0: 46 6c 61 67 73 49 66 4e 6f 6e 65 29 20 31 0d 0a  FlagsIfNone) 1..
47c0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
47d0: 4f 54 45 3a 20 46 6f 72 63 65 20 75 73 65 20 6f  OTE: Force use o
47e0: 66 20 74 68 65 20 6e 61 74 69 76 65 20 6c 69 62  f the native lib
47f0: 72 61 72 79 20 70 72 65 2d 6c 6f 61 64 65 72 20  rary pre-loader 
4800: 77 68 65 6e 20 61 70 70 6c 69 63 61 62 6c 65 2e  when applicable.
4810: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
4820: 7b 21 5b 69 6e 74 65 72 70 20 69 73 73 61 66 65  {![interp issafe
4830: 5d 20 26 26 20 5b 69 73 57 69 6e 64 6f 77 73 5d  ] && [isWindows]
4840: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
4850: 73 65 74 20 6e 6f 28 64 65 6c 65 74 65 53 71 6c  set no(deleteSql
4860: 69 74 65 49 6d 70 6c 69 63 69 74 4e 61 74 69 76  iteImplicitNativ
4870: 65 46 69 6c 65 73 29 20 31 0d 0a 20 20 20 20 20  eFiles) 1..     
4880: 20 73 65 74 20 6e 6f 28 63 6f 70 79 53 71 6c 69   set no(copySqli
4890: 74 65 49 6d 70 6c 69 63 69 74 4e 61 74 69 76 65  teImplicitNative
48a0: 46 69 6c 65 73 29 20 31 0d 0a 20 20 20 20 7d 0d  Files) 1..    }.
48b0: 0a 20 20 7d 0d 0a 7d 0d 0a 0c 0d 0a 23 23 23 23  .  }..}.....####
48c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
48d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
48e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
48f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4900: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 23 23 23  ###########..###
4910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4920: 23 23 23 23 23 23 23 23 23 23 23 23 20 45 4e 44  ############ END
4930: 20 56 45 4e 44 4f 52 20 43 4f 44 45 20 23 23 23   VENDOR CODE ###
4940: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4950: 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 23 23  ############..##
4960: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4970: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4980: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4990: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
49a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a     #############..