System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 62be5e67f64e5d37376e0df14296ac48f155547f:


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 54 65 73 74 4f 76 65 72 72  heckForTestOverr
0600: 69 64 65 73 20 7b 20 63 68 61 6e 6e 65 6c 20 76  ides { channel v
0610: 61 72 4e 61 6d 65 73 20 71 75 69 65 74 20 7d 20  arNames quiet } 
0620: 7b 0d 0a 20 20 20 20 20 20 73 65 74 20 72 65 73  {..      set res
0630: 75 6c 74 20 30 0d 0a 0d 0a 20 20 20 20 20 20 66  ult 0....      f
0640: 6f 72 65 61 63 68 20 76 61 72 4e 61 6d 65 20 24  oreach varName $
0650: 76 61 72 4e 61 6d 65 73 20 7b 0d 0a 20 20 20 20  varNames {..    
0660: 20 20 20 20 69 66 20 7b 21 5b 75 70 6c 65 76 65      if {![upleve
0670: 6c 20 31 20 5b 6c 69 73 74 20 69 6e 66 6f 20 65  l 1 [list info e
0680: 78 69 73 74 73 20 24 76 61 72 4e 61 6d 65 5d 5d  xists $varName]]
0690: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
06a0: 20 20 20 20 63 6f 6e 74 69 6e 75 65 0d 0a 20 20      continue..  
06b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
06c0: 20 20 20 69 6e 63 72 20 72 65 73 75 6c 74 0d 0a     incr result..
06d0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 24  ..        if {!$
06e0: 71 75 69 65 74 7d 20 74 68 65 6e 20 7b 0d 0a 20  quiet} then {.. 
06f0: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 7b           catch {
0700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 71  ..            tq
0710: 70 75 74 73 20 24 63 68 61 6e 6e 65 6c 20 5b 61  puts $channel [a
0720: 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20  ppendArgs \..   
0730: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2d 2d               "--
0740: 2d 2d 20 66 6f 75 6e 64 20 76 65 6e 64 6f 72 2d  -- found vendor-
0750: 73 70 65 63 69 66 69 63 20 74 65 73 74 20 6f 76  specific test ov
0760: 65 72 72 69 64 65 20 5c 22 22 20 24 76 61 72 4e  erride \"" $varN
0770: 61 6d 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ame \..         
0780: 20 20 20 20 20 20 20 22 5c 22 20 77 69 74 68 20         "\" with 
0790: 76 61 6c 75 65 20 5c 22 22 20 5b 75 70 6c 65 76  value \"" [uplev
07a0: 65 6c 20 31 20 5b 6c 69 73 74 20 73 65 74 20 24  el 1 [list set $
07b0: 76 61 72 4e 61 6d 65 5d 5d 20 5c 22 5c 6e 5d 0d  varName]] \"\n].
07c0: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
07d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
07e0: 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  ....      #..   
07f0: 20 20 20 23 20 4e 4f 54 45 3a 20 4b 65 65 70 20     # NOTE: Keep 
0800: 74 72 61 63 6b 20 6f 66 20 74 68 65 20 6c 69 73  track of the lis
0810: 74 20 6f 66 20 74 65 73 74 20 6f 76 65 72 72 69  t of test overri
0820: 64 65 20 76 61 72 69 61 62 6c 65 73 2c 20 66 6f  de variables, fo
0830: 72 20 6c 61 74 65 72 0d 0a 20 20 20 20 20 20 23  r later..      #
0840: 20 20 20 20 20 20 20 75 73 65 20 62 79 20 74 68         use by th
0850: 65 20 74 65 73 74 20 73 75 69 74 65 2e 20 20 54  e test suite.  T
0860: 68 69 73 20 6e 65 65 64 73 20 74 6f 20 62 65 20  his needs to be 
0870: 64 6f 6e 65 20 61 66 74 65 72 20 74 68 65 20 6c  done after the l
0880: 6f 6f 70 0d 0a 20 20 20 20 20 20 23 20 20 20 20  oop..      #    
0890: 20 20 20 61 62 6f 76 65 20 62 65 63 61 75 73 65     above because
08a0: 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 75 73   the variable us
08b0: 65 64 20 74 6f 20 6b 65 65 70 20 74 72 61 63 6b  ed to keep track
08c0: 20 69 73 20 6c 69 73 74 65 64 20 77 69 74 68 0d   is listed with.
08d0: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 74  .      #       t
08e0: 68 65 20 6f 74 68 65 72 20 70 6f 73 73 69 62 6c  he other possibl
08f0: 65 20 74 65 73 74 20 6f 76 65 72 72 69 64 65 20  e test override 
0900: 76 61 72 69 61 62 6c 65 73 2e 0d 0a 20 20 20 20  variables...    
0910: 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
0920: 5b 75 70 6c 65 76 65 6c 20 31 20 5b 6c 69 73 74  [uplevel 1 [list
0930: 20 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73   info exists tes
0940: 74 5f 6f 76 65 72 72 69 64 65 73 5d 5d 7d 20 74  t_overrides]]} t
0950: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 75  hen {..        u
0960: 70 6c 65 76 65 6c 20 31 20 5b 6c 69 73 74 20 73  plevel 1 [list s
0970: 65 74 20 74 65 73 74 5f 6f 76 65 72 72 69 64 65  et test_override
0980: 73 20 24 76 61 72 4e 61 6d 65 73 5d 0d 0a 20 20  s $varNames]..  
0990: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 72      }....      r
09a0: 65 74 75 72 6e 20 24 72 65 73 75 6c 74 0d 0a 20  eturn $result.. 
09b0: 20 20 20 7d 0d 0a 0c 0d 0a 20 20 20 20 70 72 6f     }.....    pro
09c0: 63 20 72 65 66 72 65 73 68 41 75 74 6f 50 61 74  c refreshAutoPat
09d0: 68 20 7b 7d 20 7b 0d 0a 20 20 20 20 20 20 69 66  h {} {..      if
09e0: 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f   {[llength [info
09f0: 20 63 6f 6d 6d 61 6e 64 73 20 64 65 62 75 67 5d   commands debug]
0a00: 5d 20 3e 20 30 20 26 26 20 5c 0d 0a 20 20 20 20  ] > 0 && \..    
0a10: 20 20 20 20 20 20 5b 6c 6c 65 6e 67 74 68 20 5b        [llength [
0a20: 69 6e 66 6f 20 73 75 62 63 6f 6d 6d 61 6e 64 73  info subcommands
0a30: 20 64 65 62 75 67 20 72 65 66 72 65 73 68 61 75   debug refreshau
0a40: 74 6f 70 61 74 68 5d 5d 20 3e 20 30 20 26 26 20  topath]] > 0 && 
0a50: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 63 61  \..          [ca
0a60: 74 63 68 20 7b 64 65 62 75 67 20 72 65 66 72 65  tch {debug refre
0a70: 73 68 61 75 74 6f 70 61 74 68 20 74 72 75 65 7d  shautopath true}
0a80: 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  ] == 0} then {..
0a90: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
0aa0: 65 62 75 67 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ebug..      }...
0ab0: 0a 20 20 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e  .      if {[llen
0ac0: 67 74 68 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e  gth [info comman
0ad0: 64 73 20 6f 62 6a 65 63 74 5d 5d 20 3e 20 30 20  ds object]] > 0 
0ae0: 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  && \..          
0af0: 5b 63 61 74 63 68 20 7b 6f 62 6a 65 63 74 20 69  [catch {object i
0b00: 6e 76 6f 6b 65 20 55 74 69 6c 69 74 79 20 52 65  nvoke Utility Re
0b10: 66 72 65 73 68 41 75 74 6f 50 61 74 68 4c 69 73  freshAutoPathLis
0b20: 74 20 74 72 75 65 7d 5d 20 3d 3d 20 30 7d 20 74  t true}] == 0} t
0b30: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 72  hen {..        r
0b40: 65 74 75 72 6e 20 6f 62 6a 65 63 74 0d 0a 20 20  eturn object..  
0b50: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 72      }....      r
0b60: 65 74 75 72 6e 20 22 22 0d 0a 20 20 20 20 7d 0d  eturn ""..    }.
0b70: 0a 0c 0d 0a 20 20 20 20 70 72 6f 63 20 61 64 64  ....    proc add
0b80: 54 65 73 74 53 75 69 74 65 54 6f 41 75 74 6f 50  TestSuiteToAutoP
0b90: 61 74 68 20 7b 20 63 68 61 6e 6e 65 6c 20 76 61  ath { channel va
0ba0: 72 4e 61 6d 65 20 71 75 69 65 74 20 7d 20 7b 0d  rName quiet } {.
0bb0: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
0bc0: 23 20 4e 4f 54 45 3a 20 53 74 61 72 74 20 77 69  # NOTE: Start wi
0bd0: 74 68 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  th the directory
0be0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69 73   containing this
0bf0: 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 23 0d   file...      #.
0c00: 0a 20 20 20 20 20 20 73 65 74 20 64 69 72 20 5b  .      set dir [
0c10: 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20 5b  file normalize [
0c20: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 69 6e  file dirname [in
0c30: 66 6f 20 73 63 72 69 70 74 5d 5d 5d 0d 0a 0d 0a  fo script]]]....
0c40: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
0c50: 20 4e 4f 54 45 3a 20 4b 65 65 70 20 67 6f 69 6e   NOTE: Keep goin
0c60: 67 20 75 6e 74 69 6c 20 74 68 65 20 64 69 72 65  g until the dire
0c70: 63 74 6f 72 79 20 6e 61 6d 65 20 69 73 20 65 6d  ctory name is em
0c80: 70 74 79 20 4f 52 20 69 73 20 61 63 74 75 61 6c  pty OR is actual
0c90: 6c 79 20 74 68 65 0d 0a 20 20 20 20 20 20 23 20  ly the..      # 
0ca0: 20 20 20 20 20 20 72 6f 6f 74 20 6f 66 20 74 68        root of th
0cb0: 65 20 61 73 73 6f 63 69 61 74 65 64 20 76 6f 6c  e associated vol
0cc0: 75 6d 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  ume...      #.. 
0cd0: 20 20 20 20 20 77 68 69 6c 65 20 7b 5b 73 74 72       while {[str
0ce0: 69 6e 67 20 6c 65 6e 67 74 68 20 24 64 69 72 5d  ing length $dir]
0cf0: 20 3e 20 30 20 26 26 20 5c 0d 0a 20 20 20 20 20   > 0 && \..     
0d00: 20 20 20 20 20 5b 6c 73 65 61 72 63 68 20 2d 65       [lsearch -e
0d10: 78 61 63 74 20 2d 6e 6f 63 61 73 65 20 2d 2d 20  xact -nocase -- 
0d20: 5b 66 69 6c 65 20 76 6f 6c 75 6d 65 73 5d 20 24  [file volumes] $
0d30: 64 69 72 5d 20 3d 3d 20 2d 31 7d 20 7b 0d 0a 20  dir] == -1} {.. 
0d40: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
0d50: 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68    # NOTE: Set th
0d60: 65 20 73 75 62 2d 64 69 72 65 63 74 6f 72 79 20  e sub-directory 
0d70: 77 68 65 72 65 20 74 68 65 20 70 61 63 6b 61 67  where the packag
0d80: 65 20 69 6e 64 65 78 20 66 69 6c 65 20 73 68 6f  e index file sho
0d90: 75 6c 64 0d 0a 20 20 20 20 20 20 20 20 23 20 20  uld..        #  
0da0: 20 20 20 20 20 62 65 20 6c 6f 63 61 74 65 64 20       be located 
0db0: 77 69 74 68 69 6e 20 74 68 65 20 64 69 72 65 63  within the direc
0dc0: 74 6f 72 79 20 74 6f 20 62 65 20 73 65 61 72 63  tory to be searc
0dd0: 68 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  hed...        #.
0de0: 0a 20 20 20 20 20 20 20 20 73 65 74 20 64 69 72  .        set dir
0df0: 32 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 6c 69 62  2 [file join lib
0e00: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
0e10: 69 74 65 5d 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ite]....        
0e20: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
0e30: 45 3a 20 44 6f 65 73 20 74 68 69 73 20 64 69 72  E: Does this dir
0e40: 65 63 74 6f 72 79 20 68 61 76 65 20 74 68 65 20  ectory have the 
0e50: 6e 65 63 65 73 73 61 72 79 20 73 75 62 2d 64 69  necessary sub-di
0e60: 72 65 63 74 6f 72 79 20 74 68 61 74 0d 0a 20 20  rectory that..  
0e70: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63 6f        #       co
0e80: 6e 74 61 69 6e 73 20 61 20 70 61 63 6b 61 67 65  ntains a package
0e90: 20 69 6e 64 65 78 20 66 69 6c 65 3f 0d 0a 20 20   index file?..  
0ea0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
0eb0: 20 69 66 20 7b 5b 66 69 6c 65 20 65 78 69 73 74   if {[file exist
0ec0: 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69  s [file join $di
0ed0: 72 20 24 64 69 72 32 5d 5d 20 26 26 20 5c 0d 0a  r $dir2]] && \..
0ee0: 20 20 20 20 20 20 20 20 20 20 20 20 5b 66 69 6c              [fil
0ef0: 65 20 69 73 64 69 72 65 63 74 6f 72 79 20 5b 66  e isdirectory [f
0f00: 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 24 64  ile join $dir $d
0f10: 69 72 32 5d 5d 20 26 26 20 5c 0d 0a 20 20 20 20  ir2]] && \..    
0f20: 20 20 20 20 20 20 20 20 5b 66 69 6c 65 20 65 78          [file ex
0f30: 69 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  ists [file join 
0f40: 24 64 69 72 20 24 64 69 72 32 20 70 6b 67 49 6e  $dir $dir2 pkgIn
0f50: 64 65 78 2e 65 61 67 6c 65 5d 5d 20 26 26 20 5c  dex.eagle]] && \
0f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 66  ..            [f
0f70: 69 6c 65 20 69 73 66 69 6c 65 20 5b 66 69 6c 65  ile isfile [file
0f80: 20 6a 6f 69 6e 20 24 64 69 72 20 24 64 69 72 32   join $dir $dir2
0f90: 20 70 6b 67 49 6e 64 65 78 2e 65 61 67 6c 65 5d   pkgIndex.eagle]
0fa0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
0fb0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
0fc0: 20 20 23 20 4e 4f 54 45 3a 20 49 66 20 72 65 71    # NOTE: If req
0fd0: 75 65 73 74 65 64 2c 20 67 69 76 65 20 6f 75 72  uested, give our
0fe0: 20 63 61 6c 6c 65 72 20 61 63 63 65 73 73 20 74   caller access t
0ff0: 6f 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  o the name of th
1000: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20  e..          #  
1010: 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 77       directory w
1020: 65 20 6a 75 73 74 20 66 6f 75 6e 64 2e 0d 0a 20  e just found... 
1030: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
1040: 20 20 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e        if {[strin
1050: 67 20 6c 65 6e 67 74 68 20 24 76 61 72 4e 61 6d  g length $varNam
1060: 65 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  e] > 0} then {..
1070: 20 20 20 20 20 20 20 20 20 20 20 20 75 70 76 61              upva
1080: 72 20 31 20 24 76 61 72 4e 61 6d 65 20 64 69 72  r 1 $varName dir
1090: 33 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  3..          }..
10a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
10b0: 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
10c0: 20 4f 6b 2c 20 73 68 6f 77 20 74 68 65 20 64 69   Ok, show the di
10d0: 72 65 63 74 6f 72 79 20 77 65 20 66 6f 75 6e 64  rectory we found
10e0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
10f0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 64 69            set di
1100: 72 33 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64  r3 [file join $d
1110: 69 72 20 24 64 69 72 32 5d 0d 0a 0d 0a 20 20 20  ir $dir2]....   
1120: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
1130: 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 65 20 66      # NOTE: We f
1140: 6f 75 6e 64 20 74 68 65 20 6e 65 63 65 73 73 61  ound the necessa
1150: 72 79 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20  ry directory to 
1160: 61 64 64 20 74 6f 20 74 68 65 20 61 75 74 6f 2d  add to the auto-
1170: 70 61 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 20  path;..         
1180: 20 23 20 20 20 20 20 20 20 48 6f 77 65 76 65 72   #       However
1190: 2c 20 77 65 20 63 61 6e 6e 6f 74 20 73 69 6d 70  , we cannot simp
11a0: 6c 79 20 61 64 64 20 69 74 20 74 6f 20 74 68 65  ly add it to the
11b0: 20 61 75 74 6f 2d 70 61 74 68 20 64 69 72 65 63   auto-path direc
11c0: 74 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 23  tly..          #
11d0: 20 20 20 20 20 20 20 62 65 63 61 75 73 65 20 74         because t
11e0: 68 65 20 61 75 74 6f 2d 70 61 74 68 20 69 73 20  he auto-path is 
11f0: 64 79 6e 61 6d 69 63 61 6c 6c 79 20 63 6f 6e 73  dynamically cons
1200: 74 72 75 63 74 65 64 20 61 66 74 65 72 20 74 68  tructed after th
1210: 69 73 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20  is..          # 
1220: 20 20 20 20 20 20 73 63 72 69 70 74 20 69 73 20        script is 
1230: 65 76 61 6c 75 61 74 65 64 3b 20 74 68 65 72 65  evaluated; there
1240: 66 6f 72 65 2c 20 73 65 74 20 74 68 65 20 45 61  fore, set the Ea
1250: 67 6c 65 20 6c 69 62 72 61 72 79 20 70 61 74 68  gle library path
1260: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20  ..          #   
1270: 20 20 20 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20      environment 
1280: 76 61 72 69 61 62 6c 65 20 61 6e 64 20 66 6f 72  variable and for
1290: 63 65 20 74 68 65 20 61 70 70 72 6f 70 72 69 61  ce the appropria
12a0: 74 65 20 69 6e 74 65 72 6e 61 6c 20 70 61 74 68  te internal path
12b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20  ..          #   
12c0: 20 20 20 20 6c 69 73 74 20 74 6f 20 62 65 20 72      list to be r
12d0: 65 66 72 65 73 68 65 64 2e 0d 0a 20 20 20 20 20  efreshed...     
12e0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
12f0: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1300: 73 74 73 20 3a 3a 65 6e 76 28 45 41 47 4c 45 4c  sts ::env(EAGLEL
1310: 49 42 50 41 54 48 29 5d 20 7c 7c 20 5c 0d 0a 20  IBPATH)] || \.. 
1320: 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 6c 73               [ls
1330: 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 3a 3a  earch -exact $::
1340: 65 6e 76 28 45 41 47 4c 45 4c 49 42 50 41 54 48  env(EAGLELIBPATH
1350: 29 20 24 64 69 72 33 5d 20 3d 3d 20 2d 31 7d 20  ) $dir3] == -1} 
1360: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
1370: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
1380: 20 20 20 23 20 4e 4f 54 45 3a 20 49 66 20 77 65     # NOTE: If we
1390: 20 68 61 76 65 20 4e 4f 54 20 62 65 65 6e 20 69   have NOT been i
13a0: 6e 73 74 72 75 63 74 65 64 20 74 6f 20 62 65 20  nstructed to be 
13b0: 71 75 69 65 74 2c 20 72 65 70 6f 72 74 20 6e 6f  quiet, report no
13c0: 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  w...            
13d0: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  #..            i
13e0: 66 20 7b 21 24 71 75 69 65 74 7d 20 74 68 65 6e  f {!$quiet} then
13f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1400: 20 20 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 20    catch {..     
1410: 20 20 20 20 20 20 20 20 20 20 20 74 71 70 75 74             tqput
1420: 73 20 24 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  s $channel [appe
1430: 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20 20  ndArgs \..      
1440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2d                "-
1450: 2d 2d 2d 20 66 6f 75 6e 64 20 76 65 6e 64 6f 72  --- found vendor
1460: 2d 73 70 65 63 69 66 69 63 20 74 65 73 74 20 70  -specific test p
1470: 61 63 6b 61 67 65 20 64 69 72 65 63 74 6f 72 79  ackage directory
1480: 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20 20 20   \"" \..        
1490: 20 20 20 20 20 20 20 20 20 20 20 20 24 64 69 72              $dir
14a0: 33 20 22 5c 22 2c 20 61 64 64 69 6e 67 2e 2e 2e  3 "\", adding...
14b0: 5c 6e 22 5d 0d 0a 20 20 20 20 20 20 20 20 20 20  \n"]..          
14c0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14d0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
14e0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
14f0: 20 20 20 23 20 4e 4f 54 45 3a 20 41 70 70 65 6e     # NOTE: Appen
1500: 64 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20  d the directory 
1510: 74 6f 20 74 68 65 20 6e 65 63 65 73 73 61 72 79  to the necessary
1520: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
1530: 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  iable..         
1540: 20 20 20 23 20 20 20 20 20 20 20 73 6f 20 74 68     #       so th
1550: 61 74 20 69 74 20 77 69 6c 6c 20 67 65 74 20 70  at it will get p
1560: 69 63 6b 65 64 20 75 70 20 77 68 65 6e 20 45 61  icked up when Ea
1570: 67 6c 65 20 61 63 74 75 61 6c 6c 79 20 72 65 62  gle actually reb
1580: 75 69 6c 64 73 0d 0a 20 20 20 20 20 20 20 20 20  uilds..         
1590: 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20 61     #       the a
15a0: 75 74 6f 2d 70 61 74 68 20 6c 69 73 74 20 28 62  uto-path list (b
15b0: 65 6c 6f 77 29 2e 0d 0a 20 20 20 20 20 20 20 20  elow)...        
15c0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
15d0: 20 20 20 6c 61 70 70 65 6e 64 20 3a 3a 65 6e 76     lappend ::env
15e0: 28 45 41 47 4c 45 4c 49 42 50 41 54 48 29 20 24  (EAGLELIBPATH) $
15f0: 64 69 72 33 0d 0a 0d 0a 20 20 20 20 20 20 20 20  dir3....        
1600: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
1610: 20 20 20 23 20 4e 4f 54 45 3a 20 41 74 74 65 6d     # NOTE: Attem
1620: 70 74 20 74 6f 20 66 6f 72 63 65 20 45 61 67 6c  pt to force Eagl
1630: 65 20 74 6f 20 72 65 62 75 69 6c 64 20 74 68 65  e to rebuild the
1640: 20 61 75 74 6f 2d 70 61 74 68 20 66 6f 72 20 74   auto-path for t
1650: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  he..            
1660: 23 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20  #       current 
1670: 69 6e 74 65 72 70 72 65 74 65 72 20 72 69 67 68  interpreter righ
1680: 74 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  t now...        
1690: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
16a0: 20 20 20 73 65 74 20 72 65 66 72 65 73 68 20 5b     set refresh [
16b0: 72 65 66 72 65 73 68 41 75 74 6f 50 61 74 68 5d  refreshAutoPath]
16c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16d0: 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67  if {[string leng
16e0: 74 68 20 24 72 65 66 72 65 73 68 5d 20 3d 3d 20  th $refresh] == 
16f0: 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  0} then {..     
1700: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
1710: 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45            # NOTE
1720: 3a 20 4f 6b 2c 20 6d 61 79 62 65 20 74 68 65 20  : Ok, maybe the 
1730: 5b 6f 62 6a 65 63 74 5d 20 63 6f 6d 6d 61 6e 64  [object] command
1740: 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
1750: 65 2e 20 20 52 65 73 63 61 6e 0d 0a 20 20 20 20  e.  Rescan..    
1760: 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20            #     
1770: 20 20 74 68 65 20 70 61 63 6b 61 67 65 20 69 6e    the package in
1780: 64 65 78 65 73 20 75 73 69 6e 67 20 74 68 65 20  dexes using the 
1790: 5b 70 61 63 6b 61 67 65 20 73 63 61 6e 5d 20 73  [package scan] s
17a0: 75 62 2d 63 6f 6d 6d 61 6e 64 0d 0a 20 20 20 20  ub-command..    
17b0: 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20            #     
17c0: 20 20 69 6e 20 74 68 61 74 20 63 61 73 65 2e 20    in that case. 
17d0: 20 54 68 65 20 64 69 72 65 63 74 6f 72 69 65 73   The directories
17e0: 20 77 69 74 68 69 6e 20 45 41 47 4c 45 4c 49 42   within EAGLELIB
17f0: 50 41 54 48 20 77 69 6c 6c 0d 0a 20 20 20 20 20  PATH will..     
1800: 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20           #      
1810: 20 6e 6f 74 20 62 65 20 61 64 64 65 64 20 74 6f   not be added to
1820: 20 74 68 65 20 61 75 74 6f 2d 70 61 74 68 3b 20   the auto-path; 
1830: 68 6f 77 65 76 65 72 2c 20 61 6c 6c 20 74 68 65  however, all the
1840: 20 70 61 63 6b 61 67 65 0d 0a 20 20 20 20 20 20   package..      
1850: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
1860: 69 6e 64 65 78 65 73 20 61 6e 64 20 74 68 65 69  indexes and thei
1870: 72 20 61 73 73 6f 63 69 61 74 65 64 20 70 61 63  r associated pac
1880: 6b 61 67 65 73 20 77 69 6c 6c 20 62 65 20 61 76  kages will be av
1890: 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  ailable...      
18a0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
18b0: 20 20 20 20 20 20 20 20 20 69 66 20 7b 21 24 71           if {!$q
18c0: 75 69 65 74 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  uiet} then {..  
18d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
18e0: 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  tch {..         
18f0: 20 20 20 20 20 20 20 20 20 74 71 70 75 74 73 20           tqputs 
1900: 24 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  $channel [append
1910: 41 72 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20  Args \..        
1920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2d                "-
1930: 2d 2d 2d 20 75 6e 61 62 6c 65 20 74 6f 20 66 6f  --- unable to fo
1940: 72 63 69 62 6c 79 20 72 65 66 72 65 73 68 20 61  rcibly refresh a
1950: 75 74 6f 2d 70 61 74 68 20 6c 69 73 74 2c 20 22  uto-path list, "
1960: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
1970: 20 20 20 20 20 20 20 20 20 20 22 73 63 61 6e 6e            "scann
1980: 69 6e 67 20 5c 22 22 20 24 3a 3a 65 6e 76 28 45  ing \"" $::env(E
1990: 41 47 4c 45 4c 49 42 50 41 54 48 29 20 22 5c 22  AGLELIBPATH) "\"
19a0: 20 69 6e 73 74 65 61 64 2e 2e 2e 5c 6e 22 5d 0d   instead...\n"].
19b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19c0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
19d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
19e0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
19f0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 49 6e        # NOTE: In
1a00: 20 74 68 65 6f 72 79 2c 20 74 68 69 73 20 63 61   theory, this ca
1a10: 6c 6c 20 74 6f 20 74 68 65 20 5b 70 61 63 6b 61  ll to the [packa
1a20: 67 65 20 73 63 61 6e 5d 20 73 75 62 2d 63 6f 6d  ge scan] sub-com
1a30: 6d 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20  mand..          
1a40: 20 20 20 20 23 20 20 20 20 20 20 20 63 6f 75 6c      #       coul
1a50: 64 20 66 61 69 6c 2c 20 72 61 69 73 69 6e 67 20  d fail, raising 
1a60: 61 20 73 63 72 69 70 74 20 65 72 72 6f 72 20 68  a script error h
1a70: 65 72 65 3b 20 68 6f 77 65 76 65 72 2c 20 74 68  ere; however, th
1a80: 61 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  at..            
1a90: 20 20 23 20 20 20 20 20 20 20 69 73 20 68 69 67    #       is hig
1aa0: 68 6c 79 20 75 6e 6c 69 6b 65 6c 79 2e 0d 0a 20  hly unlikely... 
1ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a               #..
1ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 76                ev
1ad0: 61 6c 20 70 61 63 6b 61 67 65 20 73 63 61 6e 20  al package scan 
1ae0: 2d 68 6f 73 74 20 2d 6e 6f 72 6d 61 6c 20 2d 72  -host -normal -r
1af0: 65 66 72 65 73 68 20 2d 2d 20 24 3a 3a 65 6e 76  efresh -- $::env
1b00: 28 45 41 47 4c 45 4c 49 42 50 41 54 48 29 0d 0a  (EAGLELIBPATH)..
1b10: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
1b20: 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
1b30: 20 20 20 20 69 66 20 7b 21 24 71 75 69 65 74 7d      if {!$quiet}
1b40: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
1b50: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 7b           catch {
1b60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b70: 20 20 20 20 74 71 70 75 74 73 20 24 63 68 61 6e      tqputs $chan
1b80: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
1b90: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  \..             
1ba0: 20 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 66           "---- f
1bb0: 6f 72 63 69 62 6c 79 20 72 65 66 72 65 73 68 65  orcibly refreshe
1bc0: 64 20 61 75 74 6f 2d 70 61 74 68 20 6c 69 73 74  d auto-path list
1bd0: 20 76 69 61 20 5c 22 22 20 5c 0d 0a 20 20 20 20   via \"" \..    
1be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf0: 20 20 24 72 65 66 72 65 73 68 20 22 5c 22 20 63    $refresh "\" c
1c00: 6f 6d 6d 61 6e 64 5c 6e 22 5d 0d 0a 20 20 20 20  ommand\n"]..    
1c10: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1c30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1c40: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1c50: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
1c60: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 65 20       # NOTE: We 
1c70: 61 72 65 20 64 6f 6e 65 2c 20 72 65 74 75 72 6e  are done, return
1c80: 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20   success...     
1c90: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
1ca0: 20 20 72 65 74 75 72 6e 20 74 72 75 65 0d 0a 20    return true.. 
1cb0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1cc0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
1cd0: 20 4e 4f 54 45 3a 20 4b 65 65 70 20 67 6f 69 6e   NOTE: Keep goin
1ce0: 67 20 75 70 20 74 68 65 20 64 69 72 65 63 74 6f  g up the directo
1cf0: 72 79 20 74 72 65 65 2e 2e 2e 0d 0a 20 20 20 20  ry tree.....    
1d00: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 73      #..        s
1d10: 65 74 20 64 69 72 20 5b 66 69 6c 65 20 64 69 72  et dir [file dir
1d20: 6e 61 6d 65 20 24 64 69 72 5d 0d 0a 20 20 20 20  name $dir]..    
1d30: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a    }....      #..
1d40: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 49 66        # NOTE: If
1d50: 20 77 65 20 68 61 76 65 20 4e 4f 54 20 62 65 65   we have NOT bee
1d60: 6e 20 69 6e 73 74 72 75 63 74 65 64 20 74 6f 20  n instructed to 
1d70: 62 65 20 71 75 69 65 74 2c 20 72 65 70 6f 72 74  be quiet, report
1d80: 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 23 0d 0a   now...      #..
1d90: 20 20 20 20 20 20 69 66 20 7b 21 24 71 75 69 65        if {!$quie
1da0: 74 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  t} then {..     
1db0: 20 20 20 63 61 74 63 68 20 7b 0d 0a 20 20 20 20     catch {..    
1dc0: 20 20 20 20 20 20 74 71 70 75 74 73 20 24 63 68        tqputs $ch
1dd0: 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20 20 20 20  annel \..       
1de0: 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 63 6f 75         "---- cou
1df0: 6c 64 20 6e 6f 74 20 66 69 6e 64 20 76 65 6e 64  ld not find vend
1e00: 6f 72 2d 73 70 65 63 69 66 69 63 20 74 65 73 74  or-specific test
1e10: 20 70 61 63 6b 61 67 65 20 64 69 72 65 63 74 6f   package directo
1e20: 72 79 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 7d  ry\n"..        }
1e30: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
1e40: 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
1e50: 54 45 3a 20 44 69 72 65 63 74 6f 72 79 20 6e 6f  TE: Directory no
1e60: 74 20 66 6f 75 6e 64 2c 20 72 65 74 75 72 6e 20  t found, return 
1e70: 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20  failure...      
1e80: 23 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  #..      return 
1e90: 66 61 6c 73 65 0d 0a 20 20 20 20 7d 0d 0a 0c 0d  false..    }....
1ea0: 0a 20 20 20 20 70 72 6f 63 20 66 69 6e 64 49 6e  .    proc findIn
1eb0: 74 65 72 70 72 65 74 65 72 54 65 73 74 50 61 74  terpreterTestPat
1ec0: 68 20 7b 20 63 68 61 6e 6e 65 6c 20 64 69 72 20  h { channel dir 
1ed0: 76 61 72 4e 61 6d 65 20 71 75 69 65 74 20 7d 20  varName quiet } 
1ee0: 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
1ef0: 20 20 23 20 4e 4f 54 45 3a 20 53 74 61 72 74 20    # NOTE: Start 
1f00: 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69  with the specifi
1f10: 65 64 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  ed directory... 
1f20: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65       #..      se
1f30: 74 20 64 69 72 32 20 24 64 69 72 0d 0a 0d 0a 20  t dir2 $dir.... 
1f40: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
1f50: 4e 4f 54 45 3a 20 4b 65 65 70 20 67 6f 69 6e 67  NOTE: Keep going
1f60: 20 75 6e 74 69 6c 20 74 68 65 20 64 69 72 65 63   until the direc
1f70: 74 6f 72 79 20 6e 61 6d 65 20 69 73 20 65 6d 70  tory name is emp
1f80: 74 79 20 4f 52 20 69 73 20 61 63 74 75 61 6c 6c  ty OR is actuall
1f90: 79 20 74 68 65 0d 0a 20 20 20 20 20 20 23 20 20  y the..      #  
1fa0: 20 20 20 20 20 72 6f 6f 74 20 6f 66 20 74 68 65       root of the
1fb0: 20 61 73 73 6f 63 69 61 74 65 64 20 76 6f 6c 75   associated volu
1fc0: 6d 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  me...      #..  
1fd0: 20 20 20 20 77 68 69 6c 65 20 7b 5b 73 74 72 69      while {[stri
1fe0: 6e 67 20 6c 65 6e 67 74 68 20 24 64 69 72 32 5d  ng length $dir2]
1ff0: 20 3e 20 30 20 26 26 20 5c 0d 0a 20 20 20 20 20   > 0 && \..     
2000: 20 20 20 20 20 5b 6c 73 65 61 72 63 68 20 2d 65       [lsearch -e
2010: 78 61 63 74 20 2d 6e 6f 63 61 73 65 20 2d 2d 20  xact -nocase -- 
2020: 5b 66 69 6c 65 20 76 6f 6c 75 6d 65 73 5d 20 24  [file volumes] $
2030: 64 69 72 32 5d 20 3d 3d 20 2d 31 7d 20 7b 0d 0a  dir2] == -1} {..
2040: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
2050: 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74     # NOTE: Set t
2060: 68 65 20 73 75 62 2d 64 69 72 65 63 74 6f 72 79  he sub-directory
2070: 20 77 68 65 72 65 20 74 68 65 20 74 65 73 74 20   where the test 
2080: 73 75 69 74 65 20 66 69 6c 65 20 73 68 6f 75 6c  suite file shoul
2090: 64 20 62 65 0d 0a 20 20 20 20 20 20 20 20 23 20  d be..        # 
20a0: 20 20 20 20 20 20 6c 6f 63 61 74 65 64 20 77 69        located wi
20b0: 74 68 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f  thin the directo
20c0: 72 79 20 74 6f 20 62 65 20 73 65 61 72 63 68 65  ry to be searche
20d0: 64 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  d...        #.. 
20e0: 20 20 20 20 20 20 20 73 65 74 20 64 69 72 33 20         set dir3 
20f0: 54 65 73 74 73 0d 0a 0d 0a 20 20 20 20 20 20 20  Tests....       
2100: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
2110: 54 45 3a 20 44 6f 65 73 20 74 68 69 73 20 64 69  TE: Does this di
2120: 72 65 63 74 6f 72 79 20 68 61 76 65 20 74 68 65  rectory have the
2130: 20 6e 65 63 65 73 73 61 72 79 20 73 75 62 2d 64   necessary sub-d
2140: 69 72 65 63 74 6f 72 79 20 74 68 61 74 0d 0a 20  irectory that.. 
2150: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63         #       c
2160: 6f 6e 74 61 69 6e 73 20 74 68 65 20 74 65 73 74  ontains the test
2170: 20 73 75 69 74 65 20 66 69 6c 65 3f 0d 0a 20 20   suite file?..  
2180: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
2190: 20 69 66 20 7b 5b 66 69 6c 65 20 65 78 69 73 74   if {[file exist
21a0: 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69  s [file join $di
21b0: 72 32 20 24 64 69 72 33 5d 5d 20 26 26 20 5c 0d  r2 $dir3]] && \.
21c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 66 69  .            [fi
21d0: 6c 65 20 69 73 64 69 72 65 63 74 6f 72 79 20 5b  le isdirectory [
21e0: 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 32 20  file join $dir2 
21f0: 24 64 69 72 33 5d 5d 20 26 26 20 5c 0d 0a 20 20  $dir3]] && \..  
2200: 20 20 20 20 20 20 20 20 20 20 5b 66 69 6c 65 20            [file 
2210: 65 78 69 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69  exists [file joi
2220: 6e 20 24 64 69 72 32 20 24 64 69 72 33 20 61 6c  n $dir2 $dir3 al
2230: 6c 2e 65 61 67 6c 65 5d 5d 20 26 26 20 5c 0d 0a  l.eagle]] && \..
2240: 20 20 20 20 20 20 20 20 20 20 20 20 5b 66 69 6c              [fil
2250: 65 20 69 73 66 69 6c 65 20 5b 66 69 6c 65 20 6a  e isfile [file j
2260: 6f 69 6e 20 24 64 69 72 32 20 24 64 69 72 33 20  oin $dir2 $dir3 
2270: 61 6c 6c 2e 65 61 67 6c 65 5d 5d 7d 20 74 68 65  all.eagle]]} the
2280: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
2290: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
22a0: 54 45 3a 20 49 66 20 72 65 71 75 65 73 74 65 64  TE: If requested
22b0: 2c 20 67 69 76 65 20 6f 75 72 20 63 61 6c 6c 65  , give our calle
22c0: 72 20 61 63 63 65 73 73 20 74 6f 20 74 68 65 20  r access to the 
22d0: 6e 61 6d 65 20 6f 66 20 74 68 65 0d 0a 20 20 20  name of the..   
22e0: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 64         #       d
22f0: 69 72 65 63 74 6f 72 79 20 77 65 20 6a 75 73 74  irectory we just
2300: 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 20 20 20   found...       
2310: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
2320: 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67  if {[string leng
2330: 74 68 20 24 76 61 72 4e 61 6d 65 5d 20 3e 20 30  th $varName] > 0
2340: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
2350: 20 20 20 20 20 20 75 70 76 61 72 20 31 20 24 76        upvar 1 $v
2360: 61 72 4e 61 6d 65 20 64 69 72 34 0d 0a 20 20 20  arName dir4..   
2370: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2380: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
2390: 20 20 20 23 20 4e 4f 54 45 3a 20 4f 6b 2c 20 73     # NOTE: Ok, s
23a0: 68 6f 77 20 74 68 65 20 64 69 72 65 63 74 6f 72  how the director
23b0: 79 20 77 65 20 66 6f 75 6e 64 2e 0d 0a 20 20 20  y we found...   
23c0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
23d0: 20 20 20 20 73 65 74 20 64 69 72 34 20 5b 66 69      set dir4 [fi
23e0: 6c 65 20 6a 6f 69 6e 20 24 64 69 72 32 20 24 64  le join $dir2 $d
23f0: 69 72 33 5d 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ir3]....        
2400: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23    #..          #
2410: 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 68 61 76   NOTE: If we hav
2420: 65 20 4e 4f 54 20 62 65 65 6e 20 69 6e 73 74 72  e NOT been instr
2430: 75 63 74 65 64 20 74 6f 20 62 65 20 71 75 69 65  ucted to be quie
2440: 74 2c 20 72 65 70 6f 72 74 20 6e 6f 77 2e 0d 0a  t, report now...
2450: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
2460: 20 20 20 20 20 20 20 69 66 20 7b 21 24 71 75 69         if {!$qui
2470: 65 74 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  et} then {..    
2480: 20 20 20 20 20 20 20 20 63 61 74 63 68 20 7b 0d          catch {.
2490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
24a0: 71 70 75 74 73 20 24 63 68 61 6e 6e 65 6c 20 5b  qputs $channel [
24b0: 61 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20  appendArgs \..  
24c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d0: 22 2d 2d 2d 2d 20 66 6f 75 6e 64 20 76 65 6e 64  "---- found vend
24e0: 6f 72 2d 73 70 65 63 69 66 69 63 20 74 65 73 74  or-specific test
24f0: 20 73 75 69 74 65 20 64 69 72 65 63 74 6f 72 79   suite directory
2500: 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20 20 20   \"" \..        
2510: 20 20 20 20 20 20 20 20 20 20 24 64 69 72 34 20            $dir4 
2520: 5c 22 5c 6e 5d 0d 0a 20 20 20 20 20 20 20 20 20  \"\n]..         
2530: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2540: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23  }....          #
2550: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
2560: 54 45 3a 20 57 65 20 61 72 65 20 64 6f 6e 65 2c  TE: We are done,
2570: 20 72 65 74 75 72 6e 20 73 75 63 63 65 73 73 2e   return success.
2580: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
2590: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25a0: 74 72 75 65 0d 0a 20 20 20 20 20 20 20 20 7d 0d  true..        }.
25b0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
25c0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4b 65        # NOTE: Ke
25d0: 65 70 20 67 6f 69 6e 67 20 75 70 20 74 68 65 20  ep going up the 
25e0: 64 69 72 65 63 74 6f 72 79 20 74 72 65 65 2e 2e  directory tree..
25f0: 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
2600: 20 20 20 20 20 20 73 65 74 20 64 69 72 32 20 5b        set dir2 [
2610: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 64 69  file dirname $di
2620: 72 32 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  r2]..      }....
2630: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
2640: 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 68 61 76   NOTE: If we hav
2650: 65 20 4e 4f 54 20 62 65 65 6e 20 69 6e 73 74 72  e NOT been instr
2660: 75 63 74 65 64 20 74 6f 20 62 65 20 71 75 69 65  ucted to be quie
2670: 74 2c 20 72 65 70 6f 72 74 20 6e 6f 77 2e 0d 0a  t, report now...
2680: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69        #..      i
2690: 66 20 7b 21 24 71 75 69 65 74 7d 20 74 68 65 6e  f {!$quiet} then
26a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63   {..        catc
26b0: 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74  h {..          t
26c0: 71 70 75 74 73 20 24 63 68 61 6e 6e 65 6c 20 5c  qputs $channel \
26d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26e0: 22 2d 2d 2d 2d 20 63 6f 75 6c 64 20 6e 6f 74 20  "---- could not 
26f0: 66 69 6e 64 20 76 65 6e 64 6f 72 2d 73 70 65 63  find vendor-spec
2700: 69 66 69 63 20 74 65 73 74 20 73 75 69 74 65 20  ific test suite 
2710: 64 69 72 65 63 74 6f 72 79 5c 6e 22 0d 0a 20 20  directory\n"..  
2720: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
2730: 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  ....      #..   
2740: 20 20 20 23 20 4e 4f 54 45 3a 20 44 69 72 65 63     # NOTE: Direc
2750: 74 6f 72 79 20 6e 6f 74 20 66 6f 75 6e 64 2c 20  tory not found, 
2760: 72 65 74 75 72 6e 20 66 61 69 6c 75 72 65 2e 0d  return failure..
2770: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
2780: 72 65 74 75 72 6e 20 66 61 6c 73 65 0d 0a 20 20  return false..  
2790: 20 20 7d 0d 0a 0c 0d 0a 20 20 20 20 70 72 6f 63    }.....    proc
27a0: 20 73 65 74 75 70 49 6e 74 65 72 70 72 65 74 65   setupInterprete
27b0: 72 54 65 73 74 50 61 74 68 20 7b 20 63 68 61 6e  rTestPath { chan
27c0: 6e 65 6c 20 64 69 72 20 71 75 69 65 74 20 7d 20  nel dir quiet } 
27d0: 7b 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 6c 6c  {..      if {[ll
27e0: 65 6e 67 74 68 20 5b 69 6e 66 6f 20 63 6f 6d 6d  ength [info comm
27f0: 61 6e 64 73 20 64 65 62 75 67 5d 5d 20 3e 20 30  ands debug]] > 0
2800: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20   && \..         
2810: 20 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f 20   [llength [info 
2820: 73 75 62 63 6f 6d 6d 61 6e 64 73 20 64 65 62 75  subcommands debu
2830: 67 20 74 65 73 74 70 61 74 68 5d 5d 20 3e 20 30  g testpath]] > 0
2840: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20   && \..         
2850: 20 5b 63 61 74 63 68 20 7b 64 65 62 75 67 20 74   [catch {debug t
2860: 65 73 74 70 61 74 68 7d 20 74 65 73 74 50 61 74  estpath} testPat
2870: 68 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d  h] == 0} then {.
2880: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 24 64 69  .        if {$di
2890: 72 20 6e 65 20 24 74 65 73 74 50 61 74 68 7d 20  r ne $testPath} 
28a0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
28b0: 20 20 64 65 62 75 67 20 74 65 73 74 70 61 74 68    debug testpath
28c0: 20 24 64 69 72 0d 0a 0d 0a 20 20 20 20 20 20 20   $dir....       
28d0: 20 20 20 69 66 20 7b 21 24 71 75 69 65 74 7d 20     if {!$quiet} 
28e0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
28f0: 20 20 20 20 63 61 74 63 68 20 7b 0d 0a 20 20 20      catch {..   
2900: 20 20 20 20 20 20 20 20 20 20 20 74 71 70 75 74             tqput
2910: 73 20 24 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  s $channel [appe
2920: 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20 20  ndArgs \..      
2930: 20 20 20 20 20 20 20 20 20 20 20 20 22 2d 2d 2d              "---
2940: 2d 20 73 65 74 20 69 6e 74 65 72 70 72 65 74 65  - set interprete
2950: 72 20 74 65 73 74 20 70 61 74 68 20 74 6f 20 5c  r test path to \
2960: 22 22 20 24 64 69 72 20 5c 0d 0a 20 20 20 20 20  "" $dir \..     
2970: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 22               "\"
2980: 20 76 69 61 20 5c 22 64 65 62 75 67 5c 22 20 63   via \"debug\" c
2990: 6f 6d 6d 61 6e 64 5c 6e 22 5d 0d 0a 20 20 20 20  ommand\n"]..    
29a0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
29b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
29c0: 7d 0d 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 69  }..      } elsei
29d0: 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66  f {[llength [inf
29e0: 6f 20 63 6f 6d 6d 61 6e 64 73 20 6f 62 6a 65 63  o commands objec
29f0: 74 5d 5d 20 3e 20 30 20 26 26 20 5b 63 61 74 63  t]] > 0 && [catc
2a00: 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  h {..        obj
2a10: 65 63 74 20 69 6e 76 6f 6b 65 20 2d 66 6c 61 67  ect invoke -flag
2a20: 73 20 2b 4e 6f 6e 50 75 62 6c 69 63 20 49 6e 74  s +NonPublic Int
2a30: 65 72 70 72 65 74 65 72 2e 47 65 74 41 63 74 69  erpreter.GetActi
2a40: 76 65 20 54 65 73 74 50 61 74 68 0d 0a 20 20 20  ve TestPath..   
2a50: 20 20 20 7d 20 74 65 73 74 50 61 74 68 5d 20 3d     } testPath] =
2a60: 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  = 0} then {..   
2a70: 20 20 20 20 20 69 66 20 7b 24 64 69 72 20 6e 65       if {$dir ne
2a80: 20 24 74 65 73 74 50 61 74 68 7d 20 74 68 65 6e   $testPath} then
2a90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6f 62   {..          ob
2aa0: 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 66 6c 61  ject invoke -fla
2ab0: 67 73 20 2b 4e 6f 6e 50 75 62 6c 69 63 20 49 6e  gs +NonPublic In
2ac0: 74 65 72 70 72 65 74 65 72 2e 47 65 74 41 63 74  terpreter.GetAct
2ad0: 69 76 65 20 54 65 73 74 50 61 74 68 20 24 64 69  ive TestPath $di
2ae0: 72 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  r....          i
2af0: 66 20 7b 21 24 71 75 69 65 74 7d 20 74 68 65 6e  f {!$quiet} then
2b00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2b10: 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20  catch {..       
2b20: 20 20 20 20 20 20 20 74 71 70 75 74 73 20 24 63         tqputs $c
2b30: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
2b40: 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  gs \..          
2b50: 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 73 65          "---- se
2b60: 74 20 69 6e 74 65 72 70 72 65 74 65 72 20 74 65  t interpreter te
2b70: 73 74 20 70 61 74 68 20 74 6f 20 5c 22 22 20 24  st path to \"" $
2b80: 64 69 72 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  dir \..         
2b90: 20 20 20 20 20 20 20 20 20 22 5c 22 20 76 69 61           "\" via
2ba0: 20 5c 22 6f 62 6a 65 63 74 5c 22 20 63 6f 6d 6d   \"object\" comm
2bb0: 61 6e 64 5c 6e 22 5d 0d 0a 20 20 20 20 20 20 20  and\n"]..       
2bc0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2bd0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
2be0: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
2bf0: 20 20 20 20 20 20 20 20 69 66 20 7b 21 24 71 75          if {!$qu
2c00: 69 65 74 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  iet} then {..   
2c10: 20 20 20 20 20 20 20 63 61 74 63 68 20 7b 0d 0a         catch {..
2c20: 20 20 20 20 20 20 20 20 20 20 20 20 74 71 70 75              tqpu
2c30: 74 73 20 24 63 68 61 6e 6e 65 6c 20 22 2d 2d 2d  ts $channel "---
2c40: 2d 20 63 61 6e 6e 6f 74 20 73 65 74 20 69 6e 74  - cannot set int
2c50: 65 72 70 72 65 74 65 72 20 74 65 73 74 20 70 61  erpreter test pa
2c60: 74 68 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 20  th\n"..         
2c70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
2c80: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0c       }..    }...
2c90: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
2ca0: 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 61  OTE: Check for a
2cb0: 6e 79 20 6f 76 65 72 72 69 64 64 65 6e 20 73 65  ny overridden se
2cc0: 74 74 69 6e 67 73 20 74 68 61 74 20 6d 61 79 20  ttings that may 
2cd0: 68 61 76 65 20 62 65 65 6e 20 73 70 65 63 69 66  have been specif
2ce0: 69 65 64 20 76 69 61 0d 0a 20 20 20 20 23 20 20  ied via..    #  
2cf0: 20 20 20 20 20 74 68 65 20 63 6f 6d 6d 61 6e 64       the command
2d00: 20 6c 69 6e 65 2c 20 65 74 63 2e 0d 0a 20 20 20   line, etc...   
2d10: 20 23 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   #..    checkFor
2d20: 54 65 73 74 4f 76 65 72 72 69 64 65 73 20 73 74  TestOverrides st
2d30: 64 6f 75 74 20 5b 65 78 70 72 20 7b 5b 69 6e 66  dout [expr {[inf
2d40: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 6f 76  o exists test_ov
2d50: 65 72 72 69 64 65 73 5d 20 3f 20 5c 0d 0a 20 20  errides] ? \..  
2d60: 20 20 20 20 20 20 24 74 65 73 74 5f 6f 76 65 72        $test_over
2d70: 72 69 64 65 73 20 3a 20 5b 6c 69 73 74 20 62 69  rides : [list bi
2d80: 6e 61 72 79 5f 64 69 72 65 63 74 6f 72 79 20 62  nary_directory b
2d90: 75 69 6c 64 5f 62 61 73 65 5f 64 69 72 65 63 74  uild_base_direct
2da0: 6f 72 79 20 5c 0d 0a 20 20 20 20 20 20 20 20 62  ory \..        b
2db0: 75 69 6c 64 5f 64 69 72 65 63 74 6f 72 79 20 63  uild_directory c
2dc0: 6f 6d 6d 6f 6e 5f 64 69 72 65 63 74 6f 72 79 20  ommon_directory 
2dd0: 63 6f 6e 6e 65 63 74 69 6f 6e 5f 66 6c 61 67 73  connection_flags
2de0: 20 64 61 74 61 62 61 73 65 5f 64 69 72 65 63 74   database_direct
2df0: 6f 72 79 20 5c 0d 0a 20 20 20 20 20 20 20 20 64  ory \..        d
2e00: 61 74 65 74 69 6d 65 5f 66 6f 72 6d 61 74 20 64  atetime_format d
2e10: 65 66 69 6e 65 5f 63 6f 6e 73 74 61 6e 74 5f 70  efine_constant_p
2e20: 72 65 66 69 78 20 65 78 65 63 75 74 65 5f 6f 6e  refix execute_on
2e30: 5f 73 65 74 75 70 20 5c 0d 0a 20 20 20 20 20 20  _setup \..      
2e40: 20 20 69 6e 74 65 72 6f 70 5f 61 73 73 65 6d 62    interop_assemb
2e50: 6c 79 5f 66 69 6c 65 5f 6e 61 6d 65 73 20 6e 61  ly_file_names na
2e60: 74 69 76 65 5f 6c 69 62 72 61 72 79 5f 66 69 6c  tive_library_fil
2e70: 65 5f 6e 61 6d 65 73 20 72 65 6c 65 61 73 65 5f  e_names release_
2e80: 76 65 72 73 69 6f 6e 20 5c 0d 0a 20 20 20 20 20  version \..     
2e90: 20 20 20 73 63 72 61 74 63 68 5f 64 69 72 65 63     scratch_direc
2ea0: 74 6f 72 79 20 74 65 6d 70 6f 72 61 72 79 5f 64  tory temporary_d
2eb0: 69 72 65 63 74 6f 72 79 20 74 65 73 74 5f 63 6c  irectory test_cl
2ec0: 72 20 74 65 73 74 5f 63 6c 72 5f 76 32 20 5c 0d  r test_clr_v2 \.
2ed0: 0a 20 20 20 20 20 20 20 20 74 65 73 74 5f 63 6c  .        test_cl
2ee0: 72 5f 76 34 20 74 65 73 74 5f 63 6f 6e 66 69 67  r_v4 test_config
2ef0: 75 72 61 74 69 6f 6e 20 74 65 73 74 5f 63 6f 6e  uration test_con
2f00: 66 69 67 75 72 61 74 69 6f 6e 73 20 74 65 73 74  figurations test
2f10: 5f 63 6f 6e 73 74 72 61 69 6e 74 73 20 5c 0d 0a  _constraints \..
2f20: 20 20 20 20 20 20 20 20 74 65 73 74 5f 6d 61 63          test_mac
2f30: 68 69 6e 65 20 74 65 73 74 5f 6e 65 74 5f 66 78  hine test_net_fx
2f40: 20 74 65 73 74 5f 6e 65 74 5f 66 78 5f 32 30 30   test_net_fx_200
2f50: 35 20 74 65 73 74 5f 6e 65 74 5f 66 78 5f 32 30  5 test_net_fx_20
2f60: 30 38 20 5c 0d 0a 20 20 20 20 20 20 20 20 74 65  08 \..        te
2f70: 73 74 5f 6e 65 74 5f 66 78 5f 32 30 31 30 20 74  st_net_fx_2010 t
2f80: 65 73 74 5f 6e 65 74 5f 66 78 5f 32 30 31 32 20  est_net_fx_2012 
2f90: 74 65 73 74 5f 6e 65 74 5f 66 78 5f 32 30 31 33  test_net_fx_2013
2fa0: 20 74 65 73 74 5f 6e 65 74 5f 66 78 5f 32 30 31   test_net_fx_201
2fb0: 35 20 5c 0d 0a 20 20 20 20 20 20 20 20 74 65 73  5 \..        tes
2fc0: 74 5f 6f 76 65 72 72 69 64 65 73 20 74 65 73 74  t_overrides test
2fd0: 5f 70 6c 61 74 66 6f 72 6d 20 74 65 73 74 5f 73  _platform test_s
2fe0: 75 69 74 65 20 74 65 73 74 5f 79 65 61 72 20 74  uite test_year t
2ff0: 65 73 74 5f 79 65 61 72 73 20 5c 0d 0a 20 20 20  est_years \..   
3000: 20 20 20 20 20 74 65 73 74 5f 79 65 61 72 5f 63       test_year_c
3010: 6c 72 5f 76 32 20 74 65 73 74 5f 79 65 61 72 5f  lr_v2 test_year_
3020: 63 6c 72 5f 76 34 20 76 65 6e 64 6f 72 5f 64 69  clr_v4 vendor_di
3030: 72 65 63 74 6f 72 79 20 5c 0d 0a 20 20 20 20 20  rectory \..     
3040: 20 20 20 76 65 6e 64 6f 72 5f 74 65 73 74 5f 64     vendor_test_d
3050: 69 72 65 63 74 6f 72 79 5d 7d 5d 20 66 61 6c 73  irectory]}] fals
3060: 65 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  e....    #..    
3070: 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20  # NOTE: Set the 
3080: 6e 61 6d 65 20 6f 66 20 74 68 65 20 72 75 6e 6e  name of the runn
3090: 69 6e 67 20 74 65 73 74 20 73 75 69 74 65 2c 20  ing test suite, 
30a0: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  if necessary... 
30b0: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
30c0: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
30d0: 5f 73 75 69 74 65 5d 7d 20 74 68 65 6e 20 7b 0d  _suite]} then {.
30e0: 0a 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f  .      set test_
30f0: 73 75 69 74 65 20 22 53 79 73 74 65 6d 2e 44 61  suite "System.Da
3100: 74 61 2e 53 51 4c 69 74 65 20 54 65 73 74 20 53  ta.SQLite Test S
3110: 75 69 74 65 20 66 6f 72 20 45 61 67 6c 65 22 0d  uite for Eagle".
3120: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
3130: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 68 65  .    # NOTE: Whe
3140: 6e 20 62 65 69 6e 67 20 65 76 61 6c 75 61 74 65  n being evaluate
3150: 64 20 69 6e 20 61 20 22 73 61 66 65 22 20 69 6e  d in a "safe" in
3160: 74 65 72 70 72 65 74 65 72 2c 20 73 6f 6d 65 20  terpreter, some 
3170: 73 74 65 70 73 20 6d 75 73 74 20 62 65 0d 0a 20  steps must be.. 
3180: 20 20 20 23 20 20 20 20 20 20 20 73 6b 69 70 70     #       skipp
3190: 65 64 20 64 75 65 20 74 6f 20 6d 69 73 73 69 6e  ed due to missin
31a0: 67 20 63 6f 6d 6d 61 6e 64 73 20 61 6e 64 2f 6f  g commands and/o
31b0: 72 20 73 75 62 2d 63 6f 6d 6d 61 6e 64 73 2e 0d  r sub-commands..
31c0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
31d0: 21 5b 69 6e 74 65 72 70 20 69 73 73 61 66 65 5d  ![interp issafe]
31e0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
31f0: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
3200: 20 54 68 69 73 20 76 61 72 69 61 62 6c 65 20 77   This variable w
3210: 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 20  ill contain the 
3220: 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 69 72 65  name of the dire
3230: 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67  ctory containing
3240: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
3250: 74 68 65 20 76 65 6e 64 6f 72 2d 73 70 65 63 69  the vendor-speci
3260: 66 69 63 20 74 65 73 74 69 6e 67 20 69 6e 66 72  fic testing infr
3270: 61 73 74 72 75 63 74 75 72 65 2e 20 20 49 66 20  astructure.  If 
3280: 74 68 65 20 76 61 72 69 61 62 6c 65 20 64 6f 65  the variable doe
3290: 73 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  s..      #      
32a0: 20 6e 6f 74 20 65 78 69 73 74 2c 20 63 72 65 61   not exist, crea
32b0: 74 65 20 69 74 3b 20 6f 74 68 65 72 77 69 73 65  te it; otherwise
32c0: 2c 20 69 74 20 68 61 73 20 62 65 65 6e 20 6f 76  , it has been ov
32d0: 65 72 72 69 64 64 65 6e 20 61 6e 64 20 74 68 65  erridden and the
32e0: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
32f0: 65 78 69 73 74 69 6e 67 20 76 61 6c 75 65 20 73  existing value s
3300: 68 6f 75 6c 64 20 62 65 20 6c 65 66 74 20 69 6e  hould be left in
3310: 74 61 63 74 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  tact...      #..
3320: 20 20 20 20 20 20 73 65 74 20 68 61 76 65 5f 76        set have_v
3330: 65 6e 64 6f 72 5f 64 69 72 65 63 74 6f 72 79 20  endor_directory 
3340: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 76 65 6e  [info exists ven
3350: 64 6f 72 5f 64 69 72 65 63 74 6f 72 79 5d 0d 0a  dor_directory]..
3360: 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 24 68 61  ..      if {!$ha
3370: 76 65 5f 76 65 6e 64 6f 72 5f 64 69 72 65 63 74  ve_vendor_direct
3380: 6f 72 79 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  ory} then {..   
3390: 20 20 20 20 20 73 65 74 20 76 65 6e 64 6f 72 5f       set vendor_
33a0: 64 69 72 65 63 74 6f 72 79 20 22 22 0d 0a 20 20  directory ""..  
33b0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
33c0: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
33d0: 54 68 69 73 20 76 61 72 69 61 62 6c 65 20 77 69  This variable wi
33e0: 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 6e  ll contain the n
33f0: 61 6d 65 20 6f 66 20 74 68 65 20 64 69 72 65 63  ame of the direc
3400: 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 0d  tory containing.
3410: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 74  .      #       t
3420: 68 65 20 76 65 6e 64 6f 72 2d 73 70 65 63 69 66  he vendor-specif
3430: 69 63 20 74 65 73 74 20 73 75 69 74 65 2e 20 20  ic test suite.  
3440: 49 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 20  If the variable 
3450: 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2c 0d  does not exist,.
3460: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63  .      #       c
3470: 72 65 61 74 65 20 69 74 3b 20 6f 74 68 65 72 77  reate it; otherw
3480: 69 73 65 2c 20 69 74 20 68 61 73 20 62 65 65 6e  ise, it has been
3490: 20 6f 76 65 72 72 69 64 64 65 6e 20 61 6e 64 20   overridden and 
34a0: 74 68 65 20 65 78 69 73 74 69 6e 67 0d 0a 20 20  the existing..  
34b0: 20 20 20 20 23 20 20 20 20 20 20 20 76 61 6c 75      #       valu
34c0: 65 20 73 68 6f 75 6c 64 20 62 65 20 6c 65 66 74  e should be left
34d0: 20 69 6e 74 61 63 74 2e 0d 0a 20 20 20 20 20 20   intact...      
34e0: 23 0d 0a 20 20 20 20 20 20 73 65 74 20 68 61 76  #..      set hav
34f0: 65 5f 76 65 6e 64 6f 72 5f 74 65 73 74 5f 64 69  e_vendor_test_di
3500: 72 65 63 74 6f 72 79 20 5b 69 6e 66 6f 20 65 78  rectory [info ex
3510: 69 73 74 73 20 76 65 6e 64 6f 72 5f 74 65 73 74  ists vendor_test
3520: 5f 64 69 72 65 63 74 6f 72 79 5d 0d 0a 0d 0a 20  _directory].... 
3530: 20 20 20 20 20 69 66 20 7b 21 24 68 61 76 65 5f       if {!$have_
3540: 76 65 6e 64 6f 72 5f 74 65 73 74 5f 64 69 72 65  vendor_test_dire
3550: 63 74 6f 72 79 7d 20 74 68 65 6e 20 7b 0d 0a 20  ctory} then {.. 
3560: 20 20 20 20 20 20 20 73 65 74 20 76 65 6e 64 6f         set vendo
3570: 72 5f 74 65 73 74 5f 64 69 72 65 63 74 6f 72 79  r_test_directory
3580: 20 22 22 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a   ""..      }....
3590: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
35a0: 20 4e 4f 54 45 3a 20 54 68 69 73 20 70 72 6f 63   NOTE: This proc
35b0: 65 64 75 72 65 20 77 69 6c 6c 20 61 74 74 65 6d  edure will attem
35c0: 70 74 20 74 6f 20 66 69 6e 64 20 74 68 65 20 76  pt to find the v
35d0: 65 6e 64 6f 72 2d 73 70 65 63 69 66 69 63 20 74  endor-specific t
35e0: 65 73 74 69 6e 67 0d 0a 20 20 20 20 20 20 23 20  esting..      # 
35f0: 20 20 20 20 20 20 69 6e 66 72 61 73 74 72 75 63        infrastruc
3600: 74 75 72 65 20 64 69 72 65 63 74 6f 72 79 20 61  ture directory a
3610: 6e 64 20 61 64 64 20 69 74 20 74 6f 20 74 68 65  nd add it to the
3620: 20 61 75 74 6f 2d 70 61 74 68 20 66 6f 72 20 74   auto-path for t
3630: 68 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  he..      #     
3640: 20 20 63 75 72 72 65 6e 74 20 69 6e 74 65 72 70    current interp
3650: 72 65 74 65 72 2e 20 20 4e 6f 72 6d 61 6c 6c 79  reter.  Normally
3660: 2c 20 74 68 69 73 20 77 69 6c 6c 20 61 6c 73 6f  , this will also
3670: 20 73 65 74 20 74 68 65 20 76 61 72 69 61 62 6c   set the variabl
3680: 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  e..      #      
3690: 20 63 72 65 61 74 65 64 20 61 62 6f 76 65 20 74   created above t
36a0: 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 64  o point to the d
36b0: 69 72 65 63 74 6f 72 79 20 61 64 64 65 64 20 74  irectory added t
36c0: 6f 20 74 68 65 20 61 75 74 6f 2d 70 61 74 68 3b  o the auto-path;
36d0: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
36e0: 68 6f 77 65 76 65 72 2c 20 74 68 69 73 20 77 69  however, this wi
36f0: 6c 6c 20 6e 6f 74 20 62 65 20 64 6f 6e 65 20 69  ll not be done i
3700: 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 77  f the variable w
3710: 61 73 20 6e 6f 74 20 63 72 65 61 74 65 64 0d 0a  as not created..
3720: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 62 79        #       by
3730: 20 75 73 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20   us...      #.. 
3740: 20 20 20 20 20 61 64 64 54 65 73 74 53 75 69 74       addTestSuit
3750: 65 54 6f 41 75 74 6f 50 61 74 68 20 73 74 64 6f  eToAutoPath stdo
3760: 75 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  ut \..          
3770: 5b 65 78 70 72 20 7b 24 68 61 76 65 5f 76 65 6e  [expr {$have_ven
3780: 64 6f 72 5f 64 69 72 65 63 74 6f 72 79 20 3f 20  dor_directory ? 
3790: 22 22 20 3a 20 22 76 65 6e 64 6f 72 5f 64 69 72  "" : "vendor_dir
37a0: 65 63 74 6f 72 79 22 7d 5d 20 5c 0d 0a 20 20 20  ectory"}] \..   
37b0: 20 20 20 20 20 20 20 5b 69 6e 66 6f 20 65 78 69         [info exi
37c0: 73 74 73 20 3a 3a 65 6e 76 28 71 75 69 65 74 41  sts ::env(quietA
37d0: 64 64 54 65 73 74 53 75 69 74 65 54 6f 41 75 74  ddTestSuiteToAut
37e0: 6f 50 61 74 68 29 5d 0d 0a 0d 0a 20 20 20 20 20  oPath)]....     
37f0: 20 75 6e 73 65 74 20 68 61 76 65 5f 76 65 6e 64   unset have_vend
3800: 6f 72 5f 64 69 72 65 63 74 6f 72 79 0d 0a 0d 0a  or_directory....
3810: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
3820: 20 4e 4f 54 45 3a 20 54 68 69 73 20 70 72 6f 63   NOTE: This proc
3830: 65 64 75 72 65 20 77 69 6c 6c 20 61 74 74 65 6d  edure will attem
3840: 70 74 20 74 6f 20 66 69 6e 64 20 74 68 65 20 76  pt to find the v
3850: 65 6e 64 6f 72 2d 73 70 65 63 69 66 69 63 20 74  endor-specific t
3860: 65 73 74 69 6e 67 0d 0a 20 20 20 20 20 20 23 20  esting..      # 
3870: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 2e        directory.
3880: 20 20 4e 6f 72 6d 61 6c 6c 79 2c 20 74 68 69 73    Normally, this
3890: 20 77 69 6c 6c 20 61 6c 73 6f 20 73 65 74 20 74   will also set t
38a0: 68 65 20 76 61 72 69 61 62 6c 65 20 63 72 65 61  he variable crea
38b0: 74 65 64 0d 0a 20 20 20 20 20 20 23 20 20 20 20  ted..      #    
38c0: 20 20 20 61 62 6f 76 65 20 74 6f 20 70 6f 69 6e     above to poin
38d0: 74 20 74 6f 20 74 68 65 20 64 69 72 65 63 74 6f  t to the directo
38e0: 72 79 3b 20 68 6f 77 65 76 65 72 2c 20 74 68 69  ry; however, thi
38f0: 73 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 64 6f  s will not be do
3900: 6e 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  ne..      #     
3910: 20 20 69 66 20 74 68 65 20 76 61 72 69 61 62 6c    if the variabl
3920: 65 20 77 61 73 20 6e 6f 74 20 63 72 65 61 74 65  e was not create
3930: 64 20 62 79 20 75 73 2e 0d 0a 20 20 20 20 20 20  d by us...      
3940: 23 0d 0a 20 20 20 20 20 20 66 69 6e 64 49 6e 74  #..      findInt
3950: 65 72 70 72 65 74 65 72 54 65 73 74 50 61 74 68  erpreterTestPath
3960: 20 73 74 64 6f 75 74 20 24 76 65 6e 64 6f 72 5f   stdout $vendor_
3970: 64 69 72 65 63 74 6f 72 79 20 5c 0d 0a 20 20 20  directory \..   
3980: 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24 68         [expr {$h
3990: 61 76 65 5f 76 65 6e 64 6f 72 5f 74 65 73 74 5f  ave_vendor_test_
39a0: 64 69 72 65 63 74 6f 72 79 20 3f 20 22 22 20 3a  directory ? "" :
39b0: 20 22 76 65 6e 64 6f 72 5f 74 65 73 74 5f 64 69   "vendor_test_di
39c0: 72 65 63 74 6f 72 79 22 7d 5d 20 5c 0d 0a 20 20  rectory"}] \..  
39d0: 20 20 20 20 20 20 20 20 5b 69 6e 66 6f 20 65 78          [info ex
39e0: 69 73 74 73 20 3a 3a 65 6e 76 28 71 75 69 65 74  ists ::env(quiet
39f0: 46 69 6e 64 49 6e 74 65 72 70 72 65 74 65 72 54  FindInterpreterT
3a00: 65 73 74 50 61 74 68 29 5d 0d 0a 0d 0a 20 20 20  estPath)]....   
3a10: 20 20 20 75 6e 73 65 74 20 68 61 76 65 5f 76 65     unset have_ve
3a20: 6e 64 6f 72 5f 74 65 73 74 5f 64 69 72 65 63 74  ndor_test_direct
3a30: 6f 72 79 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a  ory....      #..
3a40: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 49 66        # NOTE: If
3a50: 20 77 65 20 61 63 74 75 61 6c 6c 79 20 66 6f 75   we actually fou
3a60: 6e 64 20 61 20 76 65 6e 64 6f 72 2d 73 70 65 63  nd a vendor-spec
3a70: 69 66 69 63 20 74 65 73 74 69 6e 67 20 69 6e 66  ific testing inf
3a80: 72 61 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20  rastructure..   
3a90: 20 20 20 23 20 20 20 20 20 20 20 64 69 72 65 63     #       direc
3aa0: 74 6f 72 79 20 74 68 65 6e 20 6d 6f 64 69 66 79  tory then modify
3ab0: 20 74 68 65 20 54 65 73 74 50 61 74 68 20 70 72   the TestPath pr
3ac0: 6f 70 65 72 74 79 20 6f 66 20 74 68 65 20 63 75  operty of the cu
3ad0: 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 23 20 20  rrent..      #  
3ae0: 20 20 20 20 20 69 6e 74 65 72 70 72 65 74 65 72       interpreter
3af0: 20 74 6f 20 70 6f 69 6e 74 20 64 69 72 65 63 74   to point direct
3b00: 6c 79 20 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20  ly to it...     
3b10: 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 73   #..      if {[s
3b20: 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 76 65  tring length $ve
3b30: 6e 64 6f 72 5f 74 65 73 74 5f 64 69 72 65 63 74  ndor_test_direct
3b40: 6f 72 79 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b  ory] > 0} then {
3b50: 0d 0a 20 20 20 20 20 20 20 20 73 65 74 75 70 49  ..        setupI
3b60: 6e 74 65 72 70 72 65 74 65 72 54 65 73 74 50 61  nterpreterTestPa
3b70: 74 68 20 73 74 64 6f 75 74 20 24 76 65 6e 64 6f  th stdout $vendo
3b80: 72 5f 74 65 73 74 5f 64 69 72 65 63 74 6f 72 79  r_test_directory
3b90: 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 5c 0d   [info exists \.
3ba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a 3a 65  .            ::e
3bb0: 6e 76 28 71 75 69 65 74 53 65 74 75 70 49 6e 74  nv(quietSetupInt
3bc0: 65 72 70 72 65 74 65 72 54 65 73 74 50 61 74 68  erpreterTestPath
3bd0: 29 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  )]..      }..   
3be0: 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
3bf0: 20 23 20 48 41 43 4b 3a 20 50 72 65 76 65 6e 74   # HACK: Prevent
3c00: 20 74 68 65 20 45 61 67 6c 65 20 63 6f 72 65 20   the Eagle core 
3c10: 74 65 73 74 20 73 75 69 74 65 20 69 6e 66 72 61  test suite infra
3c20: 73 74 72 75 63 74 75 72 65 20 66 72 6f 6d 20 63  structure from c
3c30: 68 65 63 6b 69 6e 67 0d 0a 20 20 20 20 23 20 20  hecking..    #  
3c40: 20 20 20 20 20 74 65 73 74 20 63 6f 6e 73 74 72       test constr
3c50: 61 69 6e 74 73 20 74 68 61 74 20 61 72 65 20 74  aints that are t
3c60: 69 6d 65 2d 63 6f 6e 73 75 6d 69 6e 67 20 61 6e  ime-consuming an
3c70: 64 2f 6f 72 20 6d 6f 73 74 20 6c 69 6b 65 6c 79  d/or most likely
3c80: 20 74 6f 0d 0a 20 20 20 20 23 20 20 20 20 20 20   to..    #      
3c90: 20 62 65 20 73 75 70 65 72 66 6c 75 6f 75 73 20   be superfluous 
3ca0: 74 6f 20 74 68 69 72 64 2d 70 61 72 74 79 20 74  to third-party t
3cb0: 65 73 74 20 73 75 69 74 65 73 20 28 69 2e 65 2e  est suites (i.e.
3cc0: 20 74 68 6f 73 65 20 74 68 61 74 20 61 72 65 0d   those that are.
3cd0: 0a 20 20 20 20 23 20 20 20 20 20 20 20 6e 6f 74  .    #       not
3ce0: 20 74 65 73 74 69 6e 67 20 74 68 65 20 45 61 67   testing the Eag
3cf0: 6c 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  le core library 
3d00: 69 74 73 65 6c 66 29 2e 0d 0a 20 20 20 20 23 0d  itself)...    #.
3d10: 0a 20 20 20 20 73 65 74 20 6e 6f 28 63 6f 72 65  .    set no(core
3d20: 29 20 31 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20  ) 1....    #..  
3d30: 20 20 23 20 4e 4f 54 45 3a 20 4d 61 6b 65 20 74    # NOTE: Make t
3d40: 68 65 20 70 65 72 2d 74 65 73 74 20 63 6f 6e 6e  he per-test conn
3d50: 65 63 74 69 6f 6e 20 66 6c 61 67 20 6f 75 74 70  ection flag outp
3d60: 75 74 20 61 20 6c 69 74 74 6c 65 20 6c 65 73 73  ut a little less
3d70: 20 6e 6f 69 73 79 2e 0d 0a 20 20 20 20 23 0d 0a   noisy...    #..
3d80: 20 20 20 20 73 65 74 20 6e 6f 28 65 6d 69 74 4c      set no(emitL
3d90: 6f 63 61 6c 46 6c 61 67 73 49 66 4e 6f 6e 65 29  ocalFlagsIfNone)
3da0: 20 31 0d 0a 20 20 20 20 73 65 74 20 6e 6f 28 65   1..    set no(e
3db0: 6d 69 74 53 68 61 72 65 64 46 6c 61 67 73 49 66  mitSharedFlagsIf
3dc0: 4e 6f 6e 65 29 20 31 0d 0a 20 20 20 20 73 65 74  None) 1..    set
3dd0: 20 6e 6f 28 65 6d 69 74 47 6c 6f 62 61 6c 46 6c   no(emitGlobalFl
3de0: 61 67 73 49 66 4e 6f 6e 65 29 20 31 0d 0a 20 20  agsIfNone) 1..  
3df0: 20 20 73 65 74 20 6e 6f 28 65 6d 69 74 43 6f 6d    set no(emitCom
3e00: 62 69 6e 65 64 46 6c 61 67 73 49 66 4e 6f 6e 65  binedFlagsIfNone
3e10: 29 20 31 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20  ) 1....    #..  
3e20: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 63 65 20    # NOTE: Force 
3e30: 75 73 65 20 6f 66 20 74 68 65 20 6e 61 74 69 76  use of the nativ
3e40: 65 20 6c 69 62 72 61 72 79 20 70 72 65 2d 6c 6f  e library pre-lo
3e50: 61 64 65 72 20 77 68 65 6e 20 61 70 70 6c 69 63  ader when applic
3e60: 61 62 6c 65 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  able...    #..  
3e70: 20 20 73 65 74 20 6e 6f 28 64 65 6c 65 74 65 53    set no(deleteS
3e80: 71 6c 69 74 65 49 6d 70 6c 69 63 69 74 4e 61 74  qliteImplicitNat
3e90: 69 76 65 46 69 6c 65 73 29 20 31 0d 0a 20 20 20  iveFiles) 1..   
3ea0: 20 73 65 74 20 6e 6f 28 63 6f 70 79 53 71 6c 69   set no(copySqli
3eb0: 74 65 49 6d 70 6c 69 63 69 74 4e 61 74 69 76 65  teImplicitNative
3ec0: 46 69 6c 65 73 29 20 31 0d 0a 20 20 7d 0d 0a 7d  Files) 1..  }..}
3ed0: 0d 0a 0c 0d 0a 23 23 23 23 23 23 23 23 23 23 23  .....###########
3ee0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3ef0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3f00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3f10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3f20: 23 23 23 23 0d 0a 23 23 23 23 23 23 23 23 23 23  ####..##########
3f30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3f40: 23 23 23 23 23 20 45 4e 44 20 56 45 4e 44 4f 52  ##### END VENDOR
3f50: 20 43 4f 44 45 20 23 23 23 23 23 23 23 23 23 23   CODE ##########
3f60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3f70: 23 23 23 23 23 0d 0a 23 23 23 23 23 23 23 23 23  #####..#########
3f80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3f90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3fa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3fb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3fc0: 23 23 23 23 23 23 0d 0a                          ######..