System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact a4d9e89a53c6afa7bdd0cea64dcada0cdda31049:


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 69 6e 69 74 2e 65 61 67 6c 65  .#..# init.eagle
0060: 20 2d 2d 0d 0a 23 0d 0a 23 20 45 78 74 65 6e 73   --..#..# Extens
0070: 69 62 6c 65 20 41 64 61 70 74 61 62 6c 65 20 47  ible Adaptable G
0080: 65 6e 65 72 61 6c 69 7a 65 64 20 4c 6f 67 69 63  eneralized Logic
0090: 20 45 6e 67 69 6e 65 20 28 45 61 67 6c 65 29 0d   Engine (Eagle).
00a0: 0a 23 20 45 61 67 6c 65 20 49 6e 74 65 72 70 72  .# Eagle Interpr
00b0: 65 74 65 72 20 49 6e 69 74 69 61 6c 69 7a 61 74  eter Initializat
00c0: 69 6f 6e 20 46 69 6c 65 0d 0a 23 0d 0a 23 20 43  ion File..#..# C
00d0: 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30  opyright (c) 200
00e0: 37 2d 32 30 31 32 20 62 79 20 4a 6f 65 20 4d 69  7-2012 by Joe Mi
00f0: 73 74 61 63 68 6b 69 6e 2e 20 20 41 6c 6c 20 72  stachkin.  All r
0100: 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0d  ights reserved..
0110: 0a 23 0d 0a 23 20 53 65 65 20 74 68 65 20 66 69  .#..# See the fi
0120: 6c 65 20 22 6c 69 63 65 6e 73 65 2e 74 65 72 6d  le "license.term
0130: 73 22 20 66 6f 72 20 69 6e 66 6f 72 6d 61 74 69  s" for informati
0140: 6f 6e 20 6f 6e 20 75 73 61 67 65 20 61 6e 64 20  on on usage and 
0150: 72 65 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f  redistribution o
0160: 66 0d 0a 23 20 74 68 69 73 20 66 69 6c 65 2c 20  f..# this file, 
0170: 61 6e 64 20 66 6f 72 20 61 20 44 49 53 43 4c 41  and for a DISCLA
0180: 49 4d 45 52 20 4f 46 20 41 4c 4c 20 57 41 52 52  IMER OF ALL WARR
0190: 41 4e 54 49 45 53 2e 0d 0a 23 0d 0a 23 20 52 43  ANTIES...#..# RC
01a0: 53 3a 20 40 28 23 29 20 24 49 64 3a 20 24 0d 0a  S: @(#) $Id: $..
01b0: 23 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  #..#############
01c0: 23 23 23 23 23 23 23 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 0d 0a 0d 0a 23 0d 0a 23 20 4e 4f 54 45 3a  ##....#..# NOTE:
0210: 20 55 73 65 20 6f 75 72 20 6f 77 6e 20 6e 61 6d   Use our own nam
0220: 65 73 70 61 63 65 20 68 65 72 65 20 62 65 63 61  espace here beca
0230: 75 73 65 20 65 76 65 6e 20 74 68 6f 75 67 68 20  use even though 
0240: 77 65 20 64 6f 20 6e 6f 74 20 64 69 72 65 63 74  we do not direct
0250: 6c 79 0d 0a 23 20 20 20 20 20 20 20 73 75 70 70  ly..#       supp
0260: 6f 72 74 20 6e 61 6d 65 73 70 61 63 65 73 20 6f  ort namespaces o
0270: 75 72 73 65 6c 76 65 73 2c 20 77 65 20 64 6f 20  urselves, we do 
0280: 6e 6f 74 20 77 61 6e 74 20 74 6f 20 70 6f 6c 6c  not want to poll
0290: 75 74 65 20 74 68 65 20 67 6c 6f 62 61 6c 0d 0a  ute the global..
02a0: 23 20 20 20 20 20 20 20 6e 61 6d 65 73 70 61 63  #       namespac
02b0: 65 20 69 66 20 74 68 69 73 20 73 63 72 69 70 74  e if this script
02c0: 20 61 63 74 75 61 6c 6c 79 20 65 6e 64 73 20 75   actually ends u
02d0: 70 20 62 65 69 6e 67 20 65 76 61 6c 75 61 74 65  p being evaluate
02e0: 64 20 69 6e 20 54 63 6c 2e 0d 0a 23 0d 0a 6e 61  d in Tcl...#..na
02f0: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 45  mespace eval ::E
0300: 61 67 6c 65 20 7b 0d 0a 20 20 23 0d 0a 20 20 23  agle {..  #..  #
0310: 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20 74   NOTE: This is t
0320: 68 65 20 70 72 6f 63 65 64 75 72 65 20 74 68 61  he procedure tha
0330: 74 20 64 65 74 65 63 74 73 20 77 68 65 74 68 65  t detects whethe
0340: 72 20 6f 72 20 6e 6f 74 20 77 65 20 61 72 65 0d  r or not we are.
0350: 0a 20 20 23 20 20 20 20 20 20 20 72 75 6e 6e 69  .  #       runni
0360: 6e 67 20 69 6e 20 45 61 67 6c 65 20 28 6f 74 68  ng in Eagle (oth
0370: 65 72 77 69 73 65 2c 20 77 65 20 61 72 65 20 72  erwise, we are r
0380: 75 6e 6e 69 6e 67 20 69 6e 20 76 61 6e 69 6c 6c  unning in vanill
0390: 61 20 54 63 6c 29 2e 0d 0a 20 20 23 20 20 20 20  a Tcl)...  #    
03a0: 20 20 20 54 68 69 73 20 70 72 6f 63 65 64 75 72     This procedur
03b0: 65 20 6d 75 73 74 20 66 75 6e 63 74 69 6f 6e 20  e must function 
03c0: 63 6f 72 72 65 63 74 6c 79 20 69 6e 20 62 6f 74  correctly in bot
03d0: 68 20 54 63 6c 20 61 6e 64 20 45 61 67 6c 65 0d  h Tcl and Eagle.
03e0: 0a 20 20 23 20 20 20 20 20 20 20 61 6e 64 20 6d  .  #       and m
03f0: 75 73 74 20 72 65 74 75 72 6e 20 6e 6f 6e 2d 7a  ust return non-z
0400: 65 72 6f 20 6f 6e 6c 79 20 77 68 65 6e 20 72 75  ero only when ru
0410: 6e 6e 69 6e 67 20 69 6e 20 45 61 67 6c 65 2e 20  nning in Eagle. 
0420: 20 54 68 69 73 0d 0a 20 20 23 20 20 20 20 20 20   This..  #      
0430: 20 70 72 6f 63 65 64 75 72 65 20 6d 75 73 74 20   procedure must 
0440: 62 65 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68  be defined in th
0450: 69 73 20 73 63 72 69 70 74 20 66 69 6c 65 20 62  is script file b
0460: 65 63 61 75 73 65 20 69 74 20 69 73 0d 0a 20 20  ecause it is..  
0470: 23 20 20 20 20 20 20 20 6e 65 65 64 65 64 20 77  #       needed w
0480: 68 69 6c 65 20 74 68 69 73 20 73 63 72 69 70 74  hile this script
0490: 20 66 69 6c 65 20 69 73 20 62 65 69 6e 67 20 65   file is being e
04a0: 76 61 6c 75 61 74 65 64 2e 20 20 54 68 65 20 73  valuated.  The s
04b0: 61 6d 65 0d 0a 20 20 23 20 20 20 20 20 20 20 70  ame..  #       p
04c0: 72 6f 63 65 64 75 72 65 20 69 73 20 61 6c 73 6f  rocedure is also
04d0: 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20   defined in the 
04e0: 22 70 6c 61 74 66 6f 72 6d 2e 65 61 67 6c 65 22  "platform.eagle"
04f0: 20 66 69 6c 65 2e 0d 0a 20 20 23 0d 0a 20 20 23   file...  #..  #
0500: 20 3c 62 6f 6f 74 73 74 72 61 70 3e 0d 0a 20 20   <bootstrap>..  
0510: 70 72 6f 63 20 69 73 45 61 67 6c 65 20 7b 7d 20  proc isEagle {} 
0520: 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  {..    #..    # 
0530: 4e 4f 54 45 3a 20 4e 6f 74 68 69 6e 67 20 74 6f  NOTE: Nothing to
0540: 6f 20 66 61 6e 63 79 20 6f 72 20 65 78 70 65 6e  o fancy or expen
0550: 73 69 76 65 20 73 68 6f 75 6c 64 20 62 65 20 64  sive should be d
0560: 6f 6e 65 20 69 6e 20 68 65 72 65 2e 20 20 49 6e  one in here.  In
0570: 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 74 68  ..    #       th
0580: 65 6f 72 79 2c 20 75 73 65 20 6f 66 20 74 68 69  eory, use of thi
0590: 73 20 72 6f 75 74 69 6e 65 20 73 68 6f 75 6c 64  s routine should
05a0: 20 62 65 20 72 61 72 65 3b 20 68 6f 77 65 76 65   be rare; howeve
05b0: 72 2c 20 69 6e 0d 0a 20 20 20 20 23 20 20 20 20  r, in..    #    
05c0: 20 20 20 70 72 61 63 74 69 63 65 2c 20 74 68 69     practice, thi
05d0: 73 20 72 6f 75 74 69 6e 65 20 69 73 20 61 63 74  s routine is act
05e0: 75 61 6c 6c 79 20 75 73 65 64 20 71 75 69 74 65  ually used quite
05f0: 20 61 20 62 69 74 20 28 65 2e 67 2e 0d 0a 20 20   a bit (e.g...  
0600: 20 20 23 20 20 20 20 20 20 20 62 79 20 74 68 65    #       by the
0610: 20 74 65 73 74 20 73 75 69 74 65 29 2e 0d 0a 20   test suite)... 
0620: 20 20 20 23 0d 0a 20 20 20 20 72 65 74 75 72 6e     #..    return
0630: 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78   [expr {[info ex
0640: 69 73 74 73 20 3a 3a 74 63 6c 5f 70 6c 61 74 66  ists ::tcl_platf
0650: 6f 72 6d 28 65 6e 67 69 6e 65 29 5d 20 26 26 20  orm(engine)] && 
0660: 5c 0d 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69  \..        [stri
0670: 6e 67 20 63 6f 6d 70 61 72 65 20 2d 6e 6f 63 61  ng compare -noca
0680: 73 65 20 65 61 67 6c 65 20 24 3a 3a 74 63 6c 5f  se eagle $::tcl_
0690: 70 6c 61 74 66 6f 72 6d 28 65 6e 67 69 6e 65 29  platform(engine)
06a0: 5d 20 3d 3d 20 30 7d 5d 0d 0a 20 20 7d 0d 0a 0c  ] == 0}]..  }...
06b0: 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
06c0: 20 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 20   This procedure 
06d0: 69 73 20 64 65 73 69 67 6e 65 64 20 74 6f 20 22  is designed to "
06e0: 6c 6f 61 64 22 20 28 69 2e 65 2e 20 5b 73 6f 75  load" (i.e. [sou
06f0: 72 63 65 5d 29 20 6f 74 68 65 72 20 73 63 72 69  rce]) other scri
0700: 70 74 0d 0a 20 20 23 20 20 20 20 20 20 20 66 69  pt..  #       fi
0710: 6c 65 73 20 74 68 61 74 20 6c 6f 67 69 63 61 6c  les that logical
0720: 6c 79 20 62 65 6c 6f 6e 67 20 74 6f 20 74 68 65  ly belong to the
0730: 20 70 61 63 6b 61 67 65 20 64 65 66 69 6e 65 64   package defined
0740: 20 69 6e 20 74 68 69 73 20 73 63 72 69 70 74 0d   in this script.
0750: 0a 20 20 23 20 20 20 20 20 20 20 66 69 6c 65 2e  .  #       file.
0760: 20 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20    Upon success, 
0770: 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 20  an empty string 
0780: 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64  will be returned
0790: 2e 20 20 41 20 73 63 72 69 70 74 0d 0a 20 20 23  .  A script..  #
07a0: 20 20 20 20 20 20 20 65 72 72 6f 72 20 6d 61 79         error may
07b0: 20 62 65 20 72 61 69 73 65 64 2e 20 20 54 68 69   be raised.  Thi
07c0: 73 20 73 68 6f 75 6c 64 20 77 6f 72 6b 20 70 72  s should work pr
07d0: 6f 70 65 72 6c 79 20 69 6e 20 62 6f 74 68 20 54  operly in both T
07e0: 63 6c 20 61 6e 64 0d 0a 20 20 23 20 20 20 20 20  cl and..  #     
07f0: 20 20 45 61 67 6c 65 2e 20 20 54 68 69 73 20 70    Eagle.  This p
0800: 72 6f 63 65 64 75 72 65 20 6d 75 73 74 20 62 65  rocedure must be
0810: 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 69 73   defined in this
0820: 20 73 63 72 69 70 74 20 66 69 6c 65 20 62 65 63   script file bec
0830: 61 75 73 65 0d 0a 20 20 23 20 20 20 20 20 20 20  ause..  #       
0840: 69 74 20 69 73 20 6e 65 65 64 65 64 20 77 68 69  it is needed whi
0850: 6c 65 20 74 68 69 73 20 73 63 72 69 70 74 20 66  le this script f
0860: 69 6c 65 20 69 73 20 62 65 69 6e 67 20 65 76 61  ile is being eva
0870: 6c 75 61 74 65 64 2e 0d 0a 20 20 23 0d 0a 20 20  luated...  #..  
0880: 23 20 3c 62 6f 6f 74 73 74 72 61 70 3e 0d 0a 20  # <bootstrap>.. 
0890: 20 70 72 6f 63 20 6c 6f 61 64 53 63 72 69 70 74   proc loadScript
08a0: 73 20 7b 20 64 69 72 65 63 74 6f 72 79 20 66 69  s { directory fi
08b0: 6c 65 4e 61 6d 65 73 4f 6e 6c 79 20 7d 20 7b 0d  leNamesOnly } {.
08c0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
08d0: 54 45 3a 20 44 6f 65 73 20 74 68 65 20 64 69 72  TE: Does the dir
08e0: 65 63 74 6f 72 79 20 73 70 65 63 69 66 69 65 64  ectory specified
08f0: 20 62 79 20 74 68 65 20 63 61 6c 6c 65 72 20 63   by the caller c
0900: 6f 6e 74 61 69 6e 20 69 6e 66 6f 72 6d 61 74 69  ontain informati
0910: 6f 6e 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  on..    #       
0920: 75 73 65 66 75 6c 20 69 6e 20 6c 6f 63 61 74 69  useful in locati
0930: 6e 67 20 74 68 65 20 73 63 72 69 70 74 20 66 69  ng the script fi
0940: 6c 65 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  le?..    #..    
0950: 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67  if {[string leng
0960: 74 68 20 24 64 69 72 65 63 74 6f 72 79 5d 20 3d  th $directory] =
0970: 3d 20 30 20 7c 7c 20 24 64 69 72 65 63 74 6f 72  = 0 || $director
0980: 79 20 65 71 20 22 2e 22 7d 20 74 68 65 6e 20 7b  y eq "."} then {
0990: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
09a0: 20 23 20 4e 4f 54 45 3a 20 54 68 65 20 64 69 72   # NOTE: The dir
09b0: 65 63 74 6f 72 79 20 73 70 65 63 69 66 69 65 64  ectory specified
09c0: 20 62 79 20 74 68 65 20 63 61 6c 6c 65 72 20 63   by the caller c
09d0: 6f 6e 74 61 69 6e 73 20 6e 6f 20 75 73 65 66 75  ontains no usefu
09e0: 6c 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  l..      #      
09f0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 75 73   information, us
0a00: 65 20 74 68 65 20 54 63 6c 20 6c 69 62 72 61 72  e the Tcl librar
0a10: 79 20 64 69 72 65 63 74 6f 72 79 20 69 6e 73 74  y directory inst
0a20: 65 61 64 2c 20 69 66 0d 0a 20 20 20 20 20 20 23  ead, if..      #
0a30: 20 20 20 20 20 20 20 70 6f 73 73 69 62 6c 65 2e         possible.
0a40: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
0a50: 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74   if {[info exist
0a60: 73 20 3a 3a 74 63 6c 5f 6c 69 62 72 61 72 79 5d  s ::tcl_library]
0a70: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20   && \..         
0a80: 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20   [string length 
0a90: 24 3a 3a 74 63 6c 5f 6c 69 62 72 61 72 79 5d 20  $::tcl_library] 
0aa0: 3e 20 30 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  > 0 && \..      
0ab0: 20 20 20 20 5b 66 69 6c 65 20 69 73 64 69 72 65      [file isdire
0ac0: 63 74 6f 72 79 20 24 3a 3a 74 63 6c 5f 6c 69 62  ctory $::tcl_lib
0ad0: 72 61 72 79 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  rary]} then {.. 
0ae0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
0af0: 20 20 23 20 4e 4f 54 45 3a 20 4f 6b 2c 20 75 73    # NOTE: Ok, us
0b00: 65 20 74 68 65 20 54 63 6c 20 6c 69 62 72 61 72  e the Tcl librar
0b10: 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  y directory...  
0b20: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
0b30: 20 73 65 74 20 64 69 72 65 63 74 6f 72 79 20 24   set directory $
0b40: 3a 3a 74 63 6c 5f 6c 69 62 72 61 72 79 0d 0a 20  ::tcl_library.. 
0b50: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
0b60: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
0b70: 54 45 3a 20 53 74 61 72 74 20 6f 75 74 20 77 69  TE: Start out wi
0b80: 74 68 20 74 68 65 20 5b 73 6f 75 72 63 65 5d 20  th the [source] 
0b90: 63 6f 6d 6d 61 6e 64 2e 0d 0a 20 20 20 20 23 0d  command...    #.
0ba0: 0a 20 20 20 20 73 65 74 20 62 61 73 65 43 6f 6d  .    set baseCom
0bb0: 6d 61 6e 64 20 73 6f 75 72 63 65 0d 0a 0d 0a 20  mand source.... 
0bc0: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
0bd0: 3a 20 57 68 65 6e 20 75 73 69 6e 67 20 45 61 67  : When using Eag
0be0: 6c 65 2c 20 75 73 65 20 74 68 65 20 2d 77 69 74  le, use the -wit
0bf0: 68 69 6e 66 6f 20 6f 70 74 69 6f 6e 20 74 6f 20  hinfo option to 
0c00: 70 72 65 73 65 72 76 65 20 74 68 65 0d 0a 20 20  preserve the..  
0c10: 20 20 23 20 20 20 20 20 20 20 6c 6f 63 61 74 69    #       locati
0c20: 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66  on information f
0c30: 6f 72 20 70 72 6f 63 65 64 75 72 65 73 20 64 65  or procedures de
0c40: 66 69 6e 65 64 20 69 6e 20 74 68 65 20 73 70 65  fined in the spe
0c50: 63 69 66 69 65 64 0d 0a 20 20 20 20 23 20 20 20  cified..    #   
0c60: 20 20 20 20 73 63 72 69 70 74 20 66 69 6c 65 2e      script file.
0c70: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
0c80: 7b 5b 69 73 45 61 67 6c 65 5d 7d 20 74 68 65 6e  {[isEagle]} then
0c90: 20 7b 0d 0a 20 20 20 20 20 20 6c 61 70 70 65 6e   {..      lappen
0ca0: 64 20 62 61 73 65 43 6f 6d 6d 61 6e 64 20 2d 77  d baseCommand -w
0cb0: 69 74 68 69 6e 66 6f 20 74 72 75 65 20 2d 2d 0d  ithinfo true --.
0cc0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
0cd0: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 4c 6f 61  .    # NOTE: Loa
0ce0: 64 20 65 61 63 68 20 73 63 72 69 70 74 20 66 69  d each script fi
0cf0: 6c 65 20 73 70 65 63 69 66 69 65 64 20 62 79 20  le specified by 
0d00: 74 68 65 20 63 61 6c 6c 65 72 2c 20 69 6e 20 74  the caller, in t
0d10: 68 65 20 65 78 61 63 74 0d 0a 20 20 20 20 23 20  he exact..    # 
0d20: 20 20 20 20 20 20 6f 72 64 65 72 20 74 68 65 79        order they
0d30: 20 77 65 72 65 20 73 70 65 63 69 66 69 65 64 2e   were specified.
0d40: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 66 6f 72  ..    #..    for
0d50: 65 61 63 68 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c  each fileNameOnl
0d60: 79 20 24 66 69 6c 65 4e 61 6d 65 73 4f 6e 6c 79  y $fileNamesOnly
0d70: 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20   {..      #..   
0d80: 20 20 20 23 20 4e 4f 54 45 3a 20 53 74 61 72 74     # NOTE: Start
0d90: 20 77 69 74 68 20 74 68 65 20 62 61 73 65 20 5b   with the base [
0da0: 73 6f 75 72 63 65 5d 20 63 6f 6d 6d 61 6e 64 2c  source] command,
0db0: 20 6d 61 79 62 65 20 77 69 74 68 20 73 6f 6d 65   maybe with some
0dc0: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
0dd0: 6f 70 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20  options...      
0de0: 23 0d 0a 20 20 20 20 20 20 73 65 74 20 66 69 6c  #..      set fil
0df0: 65 43 6f 6d 6d 61 6e 64 20 24 62 61 73 65 43 6f  eCommand $baseCo
0e00: 6d 6d 61 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 23  mmand....      #
0e10: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
0e20: 41 64 64 20 74 68 65 20 71 75 61 6c 69 66 69 65  Add the qualifie
0e30: 64 20 66 69 6c 65 20 6e 61 6d 65 2c 20 77 68 69  d file name, whi
0e40: 63 68 20 6d 61 79 20 6f 72 20 6d 61 79 20 6e 6f  ch may or may no
0e50: 74 20 62 65 20 66 75 6c 6c 79 0d 0a 20 20 20 20  t be fully..    
0e60: 20 20 23 20 20 20 20 20 20 20 71 75 61 6c 69 66    #       qualif
0e70: 69 65 64 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  ied...      #.. 
0e80: 20 20 20 20 20 6c 61 70 70 65 6e 64 20 66 69 6c       lappend fil
0e90: 65 43 6f 6d 6d 61 6e 64 20 5b 66 69 6c 65 20 6a  eCommand [file j
0ea0: 6f 69 6e 20 24 64 69 72 65 63 74 6f 72 79 20 24  oin $directory $
0eb0: 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 5d 0d 0a 0d  fileNameOnly]...
0ec0: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
0ed0: 23 20 4e 4f 54 45 3a 20 45 76 61 6c 75 61 74 65  # NOTE: Evaluate
0ee0: 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 63   the resulting c
0ef0: 6f 6d 6d 61 6e 64 20 69 6e 20 74 68 65 20 63 61  ommand in the ca
0f00: 6c 6c 65 72 73 20 63 6f 6e 74 65 78 74 2e 0d 0a  llers context...
0f10: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 75        #..      u
0f20: 70 6c 65 76 65 6c 20 31 20 24 66 69 6c 65 43 6f  plevel 1 $fileCo
0f30: 6d 6d 61 6e 64 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  mmand..    }....
0f40: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
0f50: 45 3a 20 53 75 63 63 65 73 73 2c 20 72 65 74 75  E: Success, retu
0f60: 72 6e 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  rn an empty stri
0f70: 6e 67 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ng...    #..    
0f80: 72 65 74 75 72 6e 20 22 22 0d 0a 20 20 7d 0d 0a  return ""..  }..
0f90: 0c 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
0fa0: 3a 20 54 68 69 73 20 70 72 6f 63 65 64 75 72 65  : This procedure
0fb0: 20 69 73 20 64 65 73 69 67 6e 65 64 20 74 6f 20   is designed to 
0fc0: 22 6c 6f 61 64 22 20 28 69 2e 65 2e 20 5b 73 6f  "load" (i.e. [so
0fd0: 75 72 63 65 5d 29 20 6f 74 68 65 72 20 73 63 72  urce]) other scr
0fe0: 69 70 74 0d 0a 20 20 23 20 20 20 20 20 20 20 66  ipt..  #       f
0ff0: 69 6c 65 73 20 74 68 61 74 20 6c 6f 67 69 63 61  iles that logica
1000: 6c 6c 79 20 62 65 6c 6f 6e 67 20 74 6f 20 74 68  lly belong to th
1010: 65 20 70 61 63 6b 61 67 65 20 64 65 66 69 6e 65  e package define
1020: 64 20 69 6e 20 74 68 69 73 20 73 63 72 69 70 74  d in this script
1030: 0d 0a 20 20 23 20 20 20 20 20 20 20 66 69 6c 65  ..  #       file
1040: 2e 20 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  .  Upon success,
1050: 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
1060: 20 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65   will be returne
1070: 64 2e 20 20 41 20 73 63 72 69 70 74 0d 0a 20 20  d.  A script..  
1080: 23 20 20 20 20 20 20 20 65 72 72 6f 72 20 6d 61  #       error ma
1090: 79 20 62 65 20 72 61 69 73 65 64 2e 20 20 54 68  y be raised.  Th
10a0: 69 73 20 73 68 6f 75 6c 64 20 77 6f 72 6b 20 70  is should work p
10b0: 72 6f 70 65 72 6c 79 20 69 6e 20 62 6f 74 68 20  roperly in both 
10c0: 54 63 6c 20 61 6e 64 0d 0a 20 20 23 20 20 20 20  Tcl and..  #    
10d0: 20 20 20 45 61 67 6c 65 2e 20 20 54 68 69 73 20     Eagle.  This 
10e0: 70 72 6f 63 65 64 75 72 65 20 6d 75 73 74 20 62  procedure must b
10f0: 65 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 69  e defined in thi
1100: 73 20 73 63 72 69 70 74 20 66 69 6c 65 20 62 65  s script file be
1110: 63 61 75 73 65 0d 0a 20 20 23 20 20 20 20 20 20  cause..  #      
1120: 20 69 74 20 69 73 20 6e 65 65 64 65 64 20 77 68   it is needed wh
1130: 69 6c 65 20 74 68 69 73 20 73 63 72 69 70 74 20  ile this script 
1140: 66 69 6c 65 20 69 73 20 62 65 69 6e 67 20 65 76  file is being ev
1150: 61 6c 75 61 74 65 64 2e 20 20 49 66 20 74 68 65  aluated.  If the
1160: 72 65 0d 0a 20 20 23 20 20 20 20 20 20 20 65 78  re..  #       ex
1170: 69 73 74 73 20 61 20 67 6c 6f 62 61 6c 20 61 72  ists a global ar
1180: 72 61 79 20 65 6c 65 6d 65 6e 74 20 6e 6f 28 24  ray element no($
1190: 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 29 20 63 6f  fileNameOnly) co
11a0: 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 61  rresponding to a
11b0: 0d 0a 20 20 23 20 20 20 20 20 20 20 70 61 72 74  ..  #       part
11c0: 69 63 75 6c 61 72 20 73 63 72 69 70 74 20 66 69  icular script fi
11d0: 6c 65 20 74 6f 20 62 65 20 6c 6f 61 64 65 64 2c  le to be loaded,
11e0: 20 69 74 20 77 69 6c 6c 20 62 65 20 73 6b 69 70   it will be skip
11f0: 70 65 64 2e 0d 0a 20 20 23 0d 0a 20 20 23 20 3c  ped...  #..  # <
1200: 62 6f 6f 74 73 74 72 61 70 3e 0d 0a 20 20 70 72  bootstrap>..  pr
1210: 6f 63 20 6d 61 79 62 65 4c 6f 61 64 53 63 72 69  oc maybeLoadScri
1220: 70 74 73 20 7b 20 64 69 72 65 63 74 6f 72 79 20  pts { directory 
1230: 66 69 6c 65 4e 61 6d 65 73 4f 6e 6c 79 20 7d 20  fileNamesOnly } 
1240: 7b 0d 0a 20 20 20 20 73 65 74 20 6d 61 74 63 68  {..    set match
1250: 46 69 6c 65 4e 61 6d 65 73 20 5b 6c 69 73 74 5d  FileNames [list]
1260: 0d 0a 0d 0a 20 20 20 20 66 6f 72 65 61 63 68 20  ....    foreach 
1270: 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 24 66 69  fileNameOnly $fi
1280: 6c 65 4e 61 6d 65 73 4f 6e 6c 79 20 7b 0d 0a 20  leNamesOnly {.. 
1290: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
12a0: 65 78 69 73 74 73 20 3a 3a 6e 6f 28 24 66 69 6c  exists ::no($fil
12b0: 65 4e 61 6d 65 4f 6e 6c 79 29 5d 7d 20 74 68 65  eNameOnly)]} the
12c0: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 61 70  n {..        lap
12d0: 70 65 6e 64 20 6d 61 74 63 68 46 69 6c 65 4e 61  pend matchFileNa
12e0: 6d 65 73 20 24 66 69 6c 65 4e 61 6d 65 4f 6e 6c  mes $fileNameOnl
12f0: 79 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  y..      }..    
1300: 7d 0d 0a 0d 0a 20 20 20 20 72 65 74 75 72 6e 20  }....    return 
1310: 5b 75 70 6c 65 76 65 6c 20 31 20 5b 6c 69 73 74  [uplevel 1 [list
1320: 20 6c 6f 61 64 53 63 72 69 70 74 73 20 24 64 69   loadScripts $di
1330: 72 65 63 74 6f 72 79 20 24 6d 61 74 63 68 46 69  rectory $matchFi
1340: 6c 65 4e 61 6d 65 73 5d 5d 0d 0a 20 20 7d 0d 0a  leNames]]..  }..
1350: 0c 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 74 65 72  ...  if {![inter
1360: 70 20 69 73 73 61 66 65 5d 7d 20 74 68 65 6e 20  p issafe]} then 
1370: 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  {..    #..    # 
1380: 4e 4f 54 45 3a 20 4c 6f 61 64 20 74 68 65 20 65  NOTE: Load the e
1390: 78 74 72 61 20 73 63 72 69 70 74 20 6c 69 62 72  xtra script libr
13a0: 61 72 79 20 66 69 6c 65 73 20 74 68 61 74 20 63  ary files that c
13b0: 6f 6e 74 61 69 6e 20 63 6f 6d 6d 6f 6e 6c 79 20  ontain commonly 
13c0: 75 73 65 64 0d 0a 20 20 20 20 23 20 20 20 20 20  used..    #     
13d0: 20 20 70 72 6f 63 65 64 75 72 65 73 20 74 68 61    procedures tha
13e0: 74 20 61 72 65 20 73 68 61 72 65 64 20 62 65 74  t are shared bet
13f0: 77 65 65 6e 20 6e 61 74 69 76 65 20 54 63 6c 20  ween native Tcl 
1400: 61 6e 64 20 45 61 67 6c 65 2e 0d 0a 20 20 20 20  and Eagle...    
1410: 23 0d 0a 20 20 20 20 6d 61 79 62 65 4c 6f 61 64  #..    maybeLoad
1420: 53 63 72 69 70 74 73 20 5b 66 69 6c 65 20 64 69  Scripts [file di
1430: 72 6e 61 6d 65 20 5b 69 6e 66 6f 20 73 63 72 69  rname [info scri
1440: 70 74 5d 5d 20 5b 6c 69 73 74 20 5c 0d 0a 20 20  pt]] [list \..  
1450: 20 20 20 20 20 20 61 75 78 69 6c 69 61 72 79 2e        auxiliary.
1460: 65 61 67 6c 65 20 64 61 74 61 62 61 73 65 2e 65  eagle database.e
1470: 61 67 6c 65 20 65 78 65 63 2e 65 61 67 6c 65 20  agle exec.eagle 
1480: 66 69 6c 65 31 2e 65 61 67 6c 65 20 5c 0d 0a 20  file1.eagle \.. 
1490: 20 20 20 20 20 20 20 66 69 6c 65 32 2e 65 61 67         file2.eag
14a0: 6c 65 20 66 69 6c 65 33 2e 65 61 67 6c 65 20 69  le file3.eagle i
14b0: 6e 66 6f 2e 65 61 67 6c 65 20 6c 69 73 74 2e 65  nfo.eagle list.e
14c0: 61 67 6c 65 20 5c 0d 0a 20 20 20 20 20 20 20 20  agle \..        
14d0: 70 6b 67 74 2e 65 61 67 6c 65 20 70 6c 61 74 66  pkgt.eagle platf
14e0: 6f 72 6d 2e 65 61 67 6c 65 20 74 65 73 74 6c 6f  orm.eagle testlo
14f0: 67 2e 65 61 67 6c 65 20 75 6e 7a 69 70 2e 65 61  g.eagle unzip.ea
1500: 67 6c 65 5d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20  gle]....    #.. 
1510: 20 20 20 23 20 4e 4f 54 45 3a 20 4c 6f 61 64 20     # NOTE: Load 
1520: 74 68 65 20 65 78 74 72 61 20 73 63 72 69 70 74  the extra script
1530: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 73 20 74   library files t
1540: 68 61 74 20 63 6f 6e 74 61 69 6e 20 70 72 6f 63  hat contain proc
1550: 65 64 75 72 65 73 20 74 68 61 74 0d 0a 20 20 20  edures that..   
1560: 20 23 20 20 20 20 20 20 20 72 65 71 75 69 72 65   #       require
1570: 20 61 20 73 70 65 63 69 66 69 63 20 6c 61 6e 67   a specific lang
1580: 75 61 67 65 20 28 69 2e 65 2e 20 65 69 74 68 65  uage (i.e. eithe
1590: 72 20 6e 61 74 69 76 65 20 54 63 6c 20 6f 72 20  r native Tcl or 
15a0: 45 61 67 6c 65 29 2e 0d 0a 20 20 20 20 23 0d 0a  Eagle)...    #..
15b0: 20 20 20 20 69 66 20 7b 5b 69 73 45 61 67 6c 65      if {[isEagle
15c0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
15d0: 20 6d 61 79 62 65 4c 6f 61 64 53 63 72 69 70 74   maybeLoadScript
15e0: 73 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  s [file dirname 
15f0: 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 5d 20 5b  [info script]] [
1600: 6c 69 73 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  list \..        
1610: 20 20 63 6f 6d 70 61 74 2e 65 61 67 6c 65 20 63    compat.eagle c
1620: 73 68 61 72 70 2e 65 61 67 6c 65 20 6f 62 6a 65  sharp.eagle obje
1630: 63 74 2e 65 61 67 6c 65 20 70 72 6f 63 65 73 73  ct.eagle process
1640: 2e 65 61 67 6c 65 20 5c 0d 0a 20 20 20 20 20 20  .eagle \..      
1650: 20 20 20 20 72 75 6e 6f 70 74 2e 65 61 67 6c 65      runopt.eagle
1660: 20 75 6e 6b 6f 62 6a 2e 65 61 67 6c 65 20 75 70   unkobj.eagle up
1670: 64 61 74 65 2e 65 61 67 6c 65 5d 0d 0a 20 20 20  date.eagle]..   
1680: 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
1690: 20 6d 61 79 62 65 4c 6f 61 64 53 63 72 69 70 74   maybeLoadScript
16a0: 73 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  s [file dirname 
16b0: 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 5d 20 5b  [info script]] [
16c0: 6c 69 73 74 20 73 68 69 6d 2e 65 61 67 6c 65 5d  list shim.eagle]
16d0: 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0c 0d  ..    }..  }....
16e0: 0a 20 20 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d  .  if {[isEagle]
16f0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 23  } then {..    ##
1700: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1710: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1720: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1730: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1740: 23 23 23 23 23 23 23 23 23 0d 0a 20 20 20 20 23  #########..    #
1750: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1760: 23 23 23 23 23 23 23 23 23 23 23 20 42 45 47 49  ########### BEGI
1770: 4e 20 45 61 67 6c 65 20 4f 4e 4c 59 20 23 23 23  N Eagle ONLY ###
1780: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1790: 23 23 23 23 23 23 23 23 23 23 0d 0a 20 20 20 20  ##########..    
17a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17e0: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 20  ###########.... 
17f0: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
1800: 3a 20 54 68 69 73 20 70 72 6f 63 65 64 75 72 65  : This procedure
1810: 20 75 73 65 73 20 74 68 65 20 5b 73 6f 75 72 63   uses the [sourc
1820: 65 5d 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 65 76  e] command to ev
1830: 61 6c 75 61 74 65 20 61 20 73 63 72 69 70 74 0d  aluate a script.
1840: 0a 20 20 20 20 23 20 20 20 20 20 20 20 66 69 6c  .    #       fil
1850: 65 20 77 68 69 6c 65 20 70 72 65 73 65 72 76 69  e while preservi
1860: 6e 67 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20  ng the location 
1870: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 20  information for 
1880: 70 72 6f 63 65 64 75 72 65 73 0d 0a 20 20 20 20  procedures..    
1890: 23 20 20 20 20 20 20 20 64 65 66 69 6e 65 64 20  #       defined 
18a0: 77 69 74 68 20 69 74 2e 0d 0a 20 20 20 20 23 0d  with it...    #.
18b0: 0a 20 20 20 20 23 20 3c 70 6b 67 49 6e 64 65 78  .    # <pkgIndex
18c0: 3e 0d 0a 20 20 20 20 70 72 6f 63 20 73 6f 75 72  >..    proc sour
18d0: 63 65 57 69 74 68 49 6e 66 6f 20 7b 20 61 72 67  ceWithInfo { arg
18e0: 73 20 7d 20 7b 0d 0a 20 20 20 20 20 20 63 61 74  s } {..      cat
18f0: 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 65  ch {..        se
1900: 74 20 73 61 76 65 64 43 61 63 68 65 46 6c 61 67  t savedCacheFlag
1910: 73 20 4e 6f 6e 65 0d 0a 0d 0a 20 20 20 20 20 20  s None....      
1920: 20 20 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20    object invoke 
1930: 2d 66 6c 61 67 73 20 2b 4e 6f 6e 50 75 62 6c 69  -flags +NonPubli
1940: 63 20 49 6e 74 65 72 70 72 65 74 65 72 2e 47 65  c Interpreter.Ge
1950: 74 41 63 74 69 76 65 20 5c 0d 0a 20 20 20 20 20  tActive \..     
1960: 20 20 20 20 20 20 20 42 65 67 69 6e 4e 6f 41 72         BeginNoAr
1970: 67 75 6d 65 6e 74 43 61 63 68 65 20 73 61 76 65  gumentCache save
1980: 64 43 61 63 68 65 46 6c 61 67 73 0d 0a 20 20 20  dCacheFlags..   
1990: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 74 72     }....      tr
19a0: 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 61 74  y {..        cat
19b0: 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ch {..          
19c0: 73 65 74 20 73 61 76 65 64 49 6e 74 65 72 70 72  set savedInterpr
19d0: 65 74 65 72 46 6c 61 67 73 20 4e 6f 6e 65 0d 0a  eterFlags None..
19e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65  ..          obje
19f0: 63 74 20 69 6e 76 6f 6b 65 20 2d 66 6c 61 67 73  ct invoke -flags
1a00: 20 2b 4e 6f 6e 50 75 62 6c 69 63 20 49 6e 74 65   +NonPublic Inte
1a10: 72 70 72 65 74 65 72 2e 47 65 74 41 63 74 69 76  rpreter.GetActiv
1a20: 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e \..           
1a30: 20 20 20 42 65 67 69 6e 41 72 67 75 6d 65 6e 74     BeginArgument
1a40: 4c 6f 63 61 74 69 6f 6e 20 73 61 76 65 64 49 6e  Location savedIn
1a50: 74 65 72 70 72 65 74 65 72 46 6c 61 67 73 0d 0a  terpreterFlags..
1a60: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1a70: 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20 20       try {..    
1a80: 20 20 20 20 20 20 73 65 74 20 63 6f 6d 6d 61 6e        set comman
1a90: 64 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 5d 3b  d [list source];
1aa0: 20 65 76 61 6c 20 6c 61 70 70 65 6e 64 20 63 6f   eval lappend co
1ab0: 6d 6d 61 6e 64 20 24 61 72 67 73 0d 0a 0d 0a 20  mmand $args.... 
1ac0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1ad0: 5b 75 70 6c 65 76 65 6c 20 31 20 24 63 6f 6d 6d  [uplevel 1 $comm
1ae0: 61 6e 64 5d 0d 0a 20 20 20 20 20 20 20 20 7d 20  and]..        } 
1af0: 66 69 6e 61 6c 6c 79 20 7b 0d 0a 20 20 20 20 20  finally {..     
1b00: 20 20 20 20 20 63 61 74 63 68 20 7b 0d 0a 20 20       catch {..  
1b10: 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
1b20: 20 69 6e 76 6f 6b 65 20 2d 66 6c 61 67 73 20 2b   invoke -flags +
1b30: 4e 6f 6e 50 75 62 6c 69 63 20 49 6e 74 65 72 70  NonPublic Interp
1b40: 72 65 74 65 72 2e 47 65 74 41 63 74 69 76 65 20  reter.GetActive 
1b50: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  \..             
1b60: 20 20 20 45 6e 64 41 72 67 75 6d 65 6e 74 4c 6f     EndArgumentLo
1b70: 63 61 74 69 6f 6e 20 73 61 76 65 64 49 6e 74 65  cation savedInte
1b80: 72 70 72 65 74 65 72 46 6c 61 67 73 0d 0a 20 20  rpreterFlags..  
1b90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1ba0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 20 66 69     }..      } fi
1bb0: 6e 61 6c 6c 79 20 7b 0d 0a 20 20 20 20 20 20 20  nally {..       
1bc0: 20 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20   catch {..      
1bd0: 20 20 20 20 6f 62 6a 65 63 74 20 69 6e 76 6f 6b      object invok
1be0: 65 20 2d 66 6c 61 67 73 20 2b 4e 6f 6e 50 75 62  e -flags +NonPub
1bf0: 6c 69 63 20 49 6e 74 65 72 70 72 65 74 65 72 2e  lic Interpreter.
1c00: 47 65 74 41 63 74 69 76 65 20 5c 0d 0a 20 20 20  GetActive \..   
1c10: 20 20 20 20 20 20 20 20 20 20 20 45 6e 64 4e 6f             EndNo
1c20: 41 72 67 75 6d 65 6e 74 43 61 63 68 65 20 73 61  ArgumentCache sa
1c30: 76 65 64 43 61 63 68 65 46 6c 61 67 73 0d 0a 20  vedCacheFlags.. 
1c40: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1c50: 7d 0d 0a 20 20 20 20 7d 0d 0a 0c 0d 0a 20 20 20  }..    }.....   
1c60: 20 69 66 20 7b 21 5b 69 6e 74 65 72 70 20 69 73   if {![interp is
1c70: 73 61 66 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  safe]} then {.. 
1c80: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
1c90: 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20 74 68  NOTE: This is th
1ca0: 65 20 5b 75 6e 6b 6e 6f 77 6e 5d 20 63 6f 6d 6d  e [unknown] comm
1cb0: 61 6e 64 20 66 6f 72 20 45 61 67 6c 65 2e 20 20  and for Eagle.  
1cc0: 49 74 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c 6c 79  It will normally
1cd0: 20 62 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20   be..      #    
1ce0: 20 20 20 65 78 65 63 75 74 65 64 20 62 79 20 74     executed by t
1cf0: 68 65 20 73 63 72 69 70 74 20 65 6e 67 69 6e 65  he script engine
1d00: 20 77 68 65 6e 20 61 20 63 6f 6d 6d 61 6e 64 20   when a command 
1d10: 69 73 20 6e 6f 74 20 66 6f 75 6e 64 2e 0d 0a 20  is not found... 
1d20: 20 20 20 20 20 23 20 20 20 20 20 20 20 42 79 20       #       By 
1d30: 64 65 66 61 75 6c 74 2c 20 69 74 20 77 69 6c 6c  default, it will
1d40: 20 73 69 6d 70 6c 79 20 72 61 69 73 65 20 61 20   simply raise a 
1d50: 73 63 72 69 70 74 20 65 72 72 6f 72 3b 20 68 6f  script error; ho
1d60: 77 65 76 65 72 2c 20 69 66 0d 0a 20 20 20 20 20  wever, if..     
1d70: 20 23 20 20 20 20 20 20 20 74 68 65 20 22 65 61   #       the "ea
1d80: 67 6c 65 55 6e 6b 6e 6f 77 6e 4f 62 6a 65 63 74  gleUnknownObject
1d90: 49 6e 76 6f 6b 65 22 20 72 75 6e 74 69 6d 65 20  Invoke" runtime 
1da0: 6f 70 74 69 6f 6e 20 69 73 20 73 65 74 2c 20 69  option is set, i
1db0: 74 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 23 20  t will..      # 
1dc0: 20 20 20 20 20 20 66 69 72 73 74 20 61 74 74 65        first atte
1dd0: 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 20 28  mpt to use the (
1de0: 75 6e 6b 6e 6f 77 6e 29 20 63 6f 6d 6d 61 6e 64  unknown) command
1df0: 20 6e 61 6d 65 20 61 73 20 74 68 65 20 6e 61 6d   name as the nam
1e00: 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  e..      #      
1e10: 20 6f 66 20 61 20 43 4c 52 20 74 79 70 65 2e 0d   of a CLR type..
1e20: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
1e30: 23 20 3c 63 72 65 61 74 65 3e 0d 0a 20 20 20 20  # <create>..    
1e40: 20 20 70 72 6f 63 20 75 6e 6b 6e 6f 77 6e 20 7b    proc unknown {
1e50: 20 6e 61 6d 65 20 61 72 67 73 20 7d 20 7b 0d 0a   name args } {..
1e60: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
1e70: 20 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20     # NOTE: This 
1e80: 69 73 20 61 6e 20 5b 75 6e 6b 6e 6f 77 6e 5d 20  is an [unknown] 
1e90: 70 72 6f 63 65 64 75 72 65 20 74 68 61 74 20 6e  procedure that n
1ea0: 6f 72 6d 61 6c 6c 79 20 70 72 6f 64 75 63 65 73  ormally produces
1eb0: 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 23 20 20   an..        #  
1ec0: 20 20 20 20 20 61 70 70 72 6f 70 72 69 61 74 65       appropriate
1ed0: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 3b 20   error message; 
1ee0: 68 6f 77 65 76 65 72 2c 20 69 74 20 63 61 6e 20  however, it can 
1ef0: 6f 70 74 69 6f 6e 61 6c 6c 79 20 74 72 79 0d 0a  optionally try..
1f00: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
1f10: 74 6f 20 69 6e 76 6f 6b 65 20 61 20 73 74 61 74  to invoke a stat
1f20: 69 63 20 6f 62 6a 65 63 74 20 6d 65 74 68 6f 64  ic object method
1f30: 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
1f40: 20 20 20 20 20 20 23 20 54 4f 44 4f 3a 20 41 64        # TODO: Ad
1f50: 64 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61 75  d support for au
1f60: 74 6f 2d 6c 6f 61 64 69 6e 67 20 70 61 63 6b 61  to-loading packa
1f70: 67 65 73 20 68 65 72 65 20 69 6e 20 74 68 65 20  ges here in the 
1f80: 66 75 74 75 72 65 3f 0d 0a 20 20 20 20 20 20 20  future?..       
1f90: 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b   #..        if {
1fa0: 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f 20 63  [llength [info c
1fb0: 6f 6d 6d 61 6e 64 73 20 68 61 73 52 75 6e 74 69  ommands hasRunti
1fc0: 6d 65 4f 70 74 69 6f 6e 5d 5d 20 3e 20 30 20 26  meOption]] > 0 &
1fd0: 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  & \..           
1fe0: 20 5b 68 61 73 52 75 6e 74 69 6d 65 4f 70 74 69   [hasRuntimeOpti
1ff0: 6f 6e 20 65 61 67 6c 65 55 6e 6b 6e 6f 77 6e 4f  on eagleUnknownO
2000: 62 6a 65 63 74 49 6e 76 6f 6b 65 5d 20 26 26 20  bjectInvoke] && 
2010: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  \..            [
2020: 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f 20 63 6f  llength [info co
2030: 6d 6d 61 6e 64 73 20 6f 62 6a 65 63 74 5d 5d 20  mmands object]] 
2040: 3e 20 30 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  > 0 && \..      
2050: 20 20 20 20 20 20 5b 6c 6c 65 6e 67 74 68 20 5b        [llength [
2060: 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 75 6e  info commands un
2070: 6b 6e 6f 77 6e 4f 62 6a 65 63 74 49 6e 76 6f 6b  knownObjectInvok
2080: 65 5d 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d  e]] > 0} then {.
2090: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
20a0: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
20b0: 49 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 20 6f  In the context o
20c0: 66 20 74 68 65 20 63 61 6c 6c 65 72 2c 20 61 74  f the caller, at
20d0: 74 65 6d 70 74 20 74 6f 20 69 6e 76 6f 6b 65 20  tempt to invoke 
20e0: 61 20 73 74 61 74 69 63 0d 0a 20 20 20 20 20 20  a static..      
20f0: 20 20 20 20 23 20 20 20 20 20 20 20 6f 62 6a 65      #       obje
2100: 63 74 20 6d 65 74 68 6f 64 20 75 73 69 6e 67 20  ct method using 
2110: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 61 72  the specified ar
2120: 67 75 6d 65 6e 74 73 20 28 77 68 69 63 68 20 6d  guments (which m
2130: 61 79 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20  ay..          # 
2140: 20 20 20 20 20 20 63 6f 6e 74 61 69 6e 20 76 61        contain va
2150: 72 69 61 62 6c 65 20 6e 61 6d 65 73 29 2e 0d 0a  riable names)...
2160: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
2170: 20 20 20 20 20 20 20 69 66 20 7b 5b 63 61 74 63         if {[catc
2180: 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h {..           
2190: 20 65 76 61 6c 20 75 6e 6b 6e 6f 77 6e 4f 62 6a   eval unknownObj
21a0: 65 63 74 49 6e 76 6f 6b 65 20 31 20 5b 6c 69 73  ectInvoke 1 [lis
21b0: 74 20 24 6e 61 6d 65 5d 20 24 61 72 67 73 0d 0a  t $name] $args..
21c0: 20 20 20 20 20 20 20 20 20 20 7d 20 72 65 73 75            } resu
21d0: 6c 74 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b  lt] == 0} then {
21e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 0d  ..            #.
21f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4e  .            # N
2200: 4f 54 45 3a 20 54 68 65 20 73 74 61 74 69 63 20  OTE: The static 
2210: 6f 62 6a 65 63 74 20 6d 65 74 68 6f 64 20 77 61  object method wa
2220: 73 20 69 6e 76 6f 6b 65 64 20 73 75 63 63 65 73  s invoked succes
2230: 73 66 75 6c 6c 79 2e 0d 0a 20 20 20 20 20 20 20  sfully...       
2240: 20 20 20 20 20 23 20 20 20 20 20 20 20 52 65 74       #       Ret
2250: 75 72 6e 20 69 74 73 20 72 65 73 75 6c 74 2e 0d  urn its result..
2260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a  .            #..
2270: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2280: 72 6e 20 2d 63 6f 64 65 20 6f 6b 20 24 72 65 73  rn -code ok $res
2290: 75 6c 74 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ult..          }
22a0: 20 65 6c 73 65 69 66 20 7b 5b 73 74 72 69 6e 67   elseif {[string
22b0: 20 6c 65 6e 67 74 68 20 24 72 65 73 75 6c 74 5d   length $result]
22c0: 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20   > 0} then {..  
22d0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
22e0: 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
22f0: 20 41 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 69   Attempting to i
2300: 6e 76 6f 6b 65 20 74 68 65 20 73 74 61 74 69 63  nvoke the static
2310: 20 6f 62 6a 65 63 74 20 6d 65 74 68 6f 64 20 72   object method r
2320: 61 69 73 65 64 0d 0a 20 20 20 20 20 20 20 20 20  aised..         
2330: 20 20 20 23 20 20 20 20 20 20 20 61 6e 20 65 72     #       an er
2340: 72 6f 72 2e 20 20 52 65 2d 72 61 69 73 65 20 69  ror.  Re-raise i
2350: 74 20 6e 6f 77 2e 20 20 49 66 20 6e 6f 20 65 72  t now.  If no er
2360: 72 6f 72 20 6d 65 73 73 61 67 65 20 77 61 73 0d  ror message was.
2370: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20  .            #  
2380: 20 20 20 20 20 70 72 6f 76 69 64 65 64 2c 20 66       provided, f
2390: 61 6c 6c 62 61 63 6b 20 6f 6e 20 74 68 65 20 64  allback on the d
23a0: 65 66 61 75 6c 74 20 28 62 65 6c 6f 77 29 2e 0d  efault (below)..
23b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a  .            #..
23c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
23d0: 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 20 24  rn -code error $
23e0: 72 65 73 75 6c 74 0d 0a 20 20 20 20 20 20 20 20  result..        
23f0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
2400: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
2410: 20 2d 63 6f 64 65 20 65 72 72 6f 72 20 5b 61 70   -code error [ap
2420: 70 65 6e 64 41 72 67 73 20 22 69 6e 76 61 6c 69  pendArgs "invali
2430: 64 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 20 5c  d command name \
2440: 22 22 20 24 6e 61 6d 65 20 5c 22 5d 0d 0a 20 20  "" $name \"]..  
2450: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 20 65 6c 73      }..    } els
2460: 65 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  e {..      #..  
2470: 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73      # NOTE: This
2480: 20 69 73 20 74 68 65 20 5b 75 6e 6b 6e 6f 77 6e   is the [unknown
2490: 5d 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 45 61  ] command for Ea
24a0: 67 6c 65 2e 20 20 49 74 20 77 69 6c 6c 20 6e 6f  gle.  It will no
24b0: 72 6d 61 6c 6c 79 20 62 65 0d 0a 20 20 20 20 20  rmally be..     
24c0: 20 23 20 20 20 20 20 20 20 65 78 65 63 75 74 65   #       execute
24d0: 64 20 62 79 20 74 68 65 20 73 63 72 69 70 74 20  d by the script 
24e0: 65 6e 67 69 6e 65 20 77 68 65 6e 20 61 20 63 6f  engine when a co
24f0: 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 66 6f 75  mmand is not fou
2500: 6e 64 2e 0d 0a 20 20 20 20 20 20 23 20 20 20 20  nd...      #    
2510: 20 20 20 49 74 20 77 69 6c 6c 20 73 69 6d 70 6c     It will simpl
2520: 79 20 72 61 69 73 65 20 61 20 73 63 72 69 70 74  y raise a script
2530: 20 65 72 72 6f 72 2e 20 20 54 68 69 73 20 70 72   error.  This pr
2540: 6f 63 65 64 75 72 65 20 69 73 20 61 6c 73 6f 0d  ocedure is also.
2550: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 64  .      #       d
2560: 65 66 69 6e 65 64 20 69 6e 20 22 73 61 66 65 2e  efined in "safe.
2570: 65 61 67 6c 65 22 2e 0d 0a 20 20 20 20 20 20 23  eagle"...      #
2580: 0d 0a 20 20 20 20 20 20 23 20 3c 63 72 65 61 74  ..      # <creat
2590: 65 3e 0d 0a 20 20 20 20 20 20 70 72 6f 63 20 75  e>..      proc u
25a0: 6e 6b 6e 6f 77 6e 20 7b 20 6e 61 6d 65 20 61 72  nknown { name ar
25b0: 67 73 20 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20  gs } {..        
25c0: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
25d0: 45 3a 20 54 68 69 73 20 69 73 20 61 6e 20 5b 75  E: This is an [u
25e0: 6e 6b 6e 6f 77 6e 5d 20 70 72 6f 63 65 64 75 72  nknown] procedur
25f0: 65 20 74 68 61 74 20 70 72 6f 64 75 63 65 73 20  e that produces 
2600: 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a  an appropriate..
2610: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
2620: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
2630: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
2640: 20 20 20 23 20 54 4f 44 4f 3a 20 41 64 64 20 73     # TODO: Add s
2650: 75 70 70 6f 72 74 20 66 6f 72 20 61 75 74 6f 2d  upport for auto-
2660: 6c 6f 61 64 69 6e 67 20 70 61 63 6b 61 67 65 73  loading packages
2670: 20 68 65 72 65 20 69 6e 20 74 68 65 20 66 75 74   here in the fut
2680: 75 72 65 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d  ure?..        #.
2690: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
26a0: 20 54 68 69 73 20 63 6f 6d 6d 61 6e 64 20 63 61   This command ca
26b0: 6e 6e 6f 74 20 75 73 65 20 5b 61 70 70 65 6e 64  nnot use [append
26c0: 41 72 67 73 5d 20 62 65 63 61 75 73 65 20 74 68  Args] because th
26d0: 61 74 20 70 72 6f 63 65 64 75 72 65 0d 0a 20 20  at procedure..  
26e0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 69 73        #       is
26f0: 20 64 65 66 69 6e 65 64 20 69 6e 20 61 6e 6f 74   defined in anot
2700: 68 65 72 20 66 69 6c 65 20 74 68 61 74 20 69 73  her file that is
2710: 20 6e 65 76 65 72 20 6c 6f 61 64 65 64 20 69 6e   never loaded in
2720: 74 6f 20 22 73 61 66 65 22 0d 0a 20 20 20 20 20  to "safe"..     
2730: 20 20 20 23 20 20 20 20 20 20 20 69 6e 74 65 72     #       inter
2740: 70 72 65 74 65 72 73 2e 0d 0a 20 20 20 20 20 20  preters...      
2750: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 72 65 74    #..        ret
2760: 75 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 20  urn -code error 
2770: 22 69 6e 76 61 6c 69 64 20 63 6f 6d 6d 61 6e 64  "invalid command
2780: 20 6e 61 6d 65 20 5c 22 24 6e 61 6d 65 5c 22 22   name \"$name\""
2790: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
27a0: 0d 0a 0c 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  .....    #..    
27b0: 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 6e 61 6d  # NOTE: This nam
27c0: 65 73 70 61 63 65 20 61 6e 64 20 74 68 65 20 70  espace and the p
27d0: 72 6f 63 65 64 75 72 65 20 64 65 66 69 6e 65 64  rocedure defined
27e0: 20 77 69 74 68 69 6e 20 69 74 20 61 72 65 20 75   within it are u
27f0: 73 65 64 20 66 6f 72 0d 0a 20 20 20 20 23 20 20  sed for..    #  
2800: 20 20 20 20 20 63 6f 6d 70 61 74 69 62 69 6c 69       compatibili
2810: 74 79 20 77 69 74 68 20 6e 61 74 69 76 65 20 54  ty with native T
2820: 63 6c 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  cl...    #..    
2830: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a  namespace eval :
2840: 3a 74 63 6c 3a 3a 74 6d 20 7b 0d 0a 20 20 20 20  :tcl::tm {..    
2850: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
2860: 45 3a 20 49 64 65 61 6c 6c 79 2c 20 74 68 69 73  E: Ideally, this
2870: 20 70 72 6f 63 65 64 75 72 65 20 73 68 6f 75 6c   procedure shoul
2880: 64 20 62 65 20 63 72 65 61 74 65 64 20 69 6e 20  d be created in 
2890: 74 68 65 20 22 3a 3a 74 63 6c 3a 3a 74 6d 22 0d  the "::tcl::tm".
28a0: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 6e  .      #       n
28b0: 61 6d 65 73 70 61 63 65 2e 0d 0a 20 20 20 20 20  amespace...     
28c0: 20 23 0d 0a 20 20 20 20 20 20 23 20 3c 63 72 65   #..      # <cre
28d0: 61 74 65 3e 0d 0a 20 20 20 20 20 20 70 72 6f 63  ate>..      proc
28e0: 20 3a 3a 74 63 6c 3a 3a 74 6d 3a 3a 55 6e 6b 6e   ::tcl::tm::Unkn
28f0: 6f 77 6e 48 61 6e 64 6c 65 72 20 7b 20 6f 72 69  ownHandler { ori
2900: 67 69 6e 61 6c 20 6e 61 6d 65 20 61 72 67 73 20  ginal name args 
2910: 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  } {..        #..
2920: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
2930: 44 6f 20 6e 6f 74 68 69 6e 67 20 65 78 63 65 70  Do nothing excep
2940: 74 20 63 61 6c 6c 20 74 68 65 20 6f 72 69 67 69  t call the origi
2950: 6e 61 6c 20 68 61 6e 64 6c 65 72 2e 0d 0a 20 20  nal handler...  
2960: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
2970: 20 75 70 6c 65 76 65 6c 20 31 20 24 6f 72 69 67   uplevel 1 $orig
2980: 69 6e 61 6c 20 5b 3a 3a 6c 69 6e 73 65 72 74 20  inal [::linsert 
2990: 24 61 72 67 73 20 30 20 24 6e 61 6d 65 5d 0d 0a  $args 0 $name]..
29a0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
29b0: 0c 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
29c0: 4e 4f 54 45 3a 20 54 68 69 73 20 70 72 6f 63 65  NOTE: This proce
29d0: 64 75 72 65 20 69 73 20 6e 6f 72 6d 61 6c 6c 79  dure is normally
29e0: 20 65 78 65 63 75 74 65 64 20 62 79 20 74 68 65   executed by the
29f0: 20 70 61 63 6b 61 67 65 20 6d 61 6e 61 67 65 6d   package managem
2a00: 65 6e 74 0d 0a 20 20 20 20 23 20 20 20 20 20 20  ent..    #      
2a10: 20 73 75 62 73 79 73 74 65 6d 20 6f 66 20 45 61   subsystem of Ea
2a20: 67 6c 65 20 77 68 65 6e 20 61 20 70 61 63 6b 61  gle when a packa
2a30: 67 65 20 69 73 20 72 65 71 75 65 73 74 65 64 20  ge is requested 
2a40: 74 68 61 74 20 63 61 6e 6e 6f 74 20 62 65 0d 0a  that cannot be..
2a50: 20 20 20 20 23 20 20 20 20 20 20 20 66 6f 75 6e      #       foun
2a60: 64 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  d.  By default, 
2a70: 69 74 20 77 69 6c 6c 20 66 6f 72 63 65 20 61 20  it will force a 
2a80: 73 63 61 6e 20 6f 66 20 61 6c 6c 20 6b 6e 6f 77  scan of all know
2a90: 6e 20 70 61 63 6b 61 67 65 0d 0a 20 20 20 20 23  n package..    #
2aa0: 20 20 20 20 20 20 20 69 6e 64 65 78 65 73 2e 0d         indexes..
2ab0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 3c 63  .    #..    # <c
2ac0: 72 65 61 74 65 3e 0d 0a 20 20 20 20 70 72 6f 63  reate>..    proc
2ad0: 20 74 63 6c 50 6b 67 55 6e 6b 6e 6f 77 6e 20 7b   tclPkgUnknown {
2ae0: 20 6e 61 6d 65 20 61 72 67 73 20 7d 20 7b 0d 0a   name args } {..
2af0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
2b00: 20 4e 4f 54 45 3a 20 46 6f 72 63 65 20 61 20 72   NOTE: Force a r
2b10: 65 73 63 61 6e 20 6f 66 20 22 70 6b 67 49 6e 64  escan of "pkgInd
2b20: 65 78 22 20 66 69 6c 65 73 2e 20 20 54 68 69 73  ex" files.  This
2b30: 20 6d 75 73 74 20 62 65 20 64 6f 6e 65 20 69 6e   must be done in
2b40: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
2b50: 74 68 65 20 67 6c 6f 62 61 6c 20 73 63 6f 70 65  the global scope
2b60: 20 73 6f 20 74 68 61 74 20 74 68 65 20 73 70 65   so that the spe
2b70: 63 69 61 6c 20 67 6c 6f 62 61 6c 20 76 61 72 69  cial global vari
2b80: 61 62 6c 65 20 27 64 69 72 27 0d 0a 20 20 20 20  able 'dir'..    
2b90: 20 20 23 20 20 20 20 20 20 20 73 65 74 20 62 79    #       set by
2ba0: 20 74 68 65 20 70 61 63 6b 61 67 65 20 69 6e 64   the package ind
2bb0: 65 78 20 6c 6f 61 64 69 6e 67 20 73 75 62 73 79  ex loading subsy
2bc0: 73 74 65 6d 20 63 61 6e 20 62 65 20 61 63 63 65  stem can be acce
2bd0: 73 73 65 64 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  ssed...      #..
2be0: 20 20 20 20 20 20 75 70 6c 65 76 65 6c 20 23 30        uplevel #0
2bf0: 20 5b 6c 69 73 74 20 70 61 63 6b 61 67 65 20 73   [list package s
2c00: 63 61 6e 20 2d 68 6f 73 74 20 2d 6e 6f 72 6d 61  can -host -norma
2c10: 6c 20 2d 72 65 66 72 65 73 68 5d 0d 0a 20 20 20  l -refresh]..   
2c20: 20 7d 0d 0a 0c 0d 0a 20 20 20 20 23 0d 0a 20 20   }.....    #..  
2c30: 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 70    # NOTE: This p
2c40: 72 6f 63 65 64 75 72 65 20 6d 61 72 6b 73 20 61  rocedure marks a
2c50: 20 70 72 6f 63 65 64 75 72 65 20 66 6f 72 20 22   procedure for "
2c60: 66 61 73 74 22 20 65 78 65 63 75 74 69 6f 6e 3b  fast" execution;
2c70: 20 66 6f 72 20 6e 6f 77 2c 0d 0a 20 20 20 20 23   for now,..    #
2c80: 20 20 20 20 20 20 20 74 68 69 73 20 6d 65 61 6e         this mean
2c90: 73 20 64 69 73 61 62 6c 69 6e 67 20 61 6e 79 74  s disabling anyt
2ca0: 68 69 6e 67 20 74 68 61 74 20 6d 61 6b 65 73 20  hing that makes 
2cb0: 76 61 72 69 61 62 6c 65 20 61 63 63 65 73 73 20  variable access 
2cc0: 73 6c 6f 77 65 72 0d 0a 20 20 20 20 23 20 20 20  slower..    #   
2cd0: 20 20 20 20 77 68 69 6c 65 20 74 68 65 20 74 61      while the ta
2ce0: 72 67 65 74 20 70 72 6f 63 65 64 75 72 65 20 69  rget procedure i
2cf0: 73 20 65 78 65 63 75 74 69 6e 67 2e 0d 0a 20 20  s executing...  
2d00: 20 20 23 0d 0a 20 20 20 20 23 20 3c 65 78 70 65    #..    # <expe
2d10: 72 69 6d 65 6e 74 61 6c 3e 0d 0a 20 20 20 20 70  rimental>..    p
2d20: 72 6f 63 20 6d 61 6b 65 50 72 6f 63 65 64 75 72  roc makeProcedur
2d30: 65 46 61 73 74 20 7b 20 6e 61 6d 65 20 66 61 73  eFast { name fas
2d40: 74 20 7d 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a  t } {..      #..
2d50: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68        # NOTE: Th
2d60: 69 73 20 73 68 6f 75 6c 64 20 77 6f 72 6b 20 70  is should work p
2d70: 72 6f 70 65 72 6c 79 20 69 6e 20 45 61 67 6c 65  roperly in Eagle
2d80: 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 23 0d   only...      #.
2d90: 0a 20 20 20 20 20 20 63 61 74 63 68 20 7b 0d 0a  .      catch {..
2da0: 20 20 20 20 20 20 20 20 75 70 6c 65 76 65 6c 20          uplevel 
2db0: 31 20 5b 6c 69 73 74 20 6f 62 6a 65 63 74 20 69  1 [list object i
2dc0: 6e 76 6f 6b 65 20 2d 66 6c 61 67 73 20 2b 4e 6f  nvoke -flags +No
2dd0: 6e 50 75 62 6c 69 63 20 5c 0d 0a 20 20 20 20 20  nPublic \..     
2de0: 20 20 20 20 20 20 20 49 6e 74 65 72 70 72 65 74         Interpret
2df0: 65 72 2e 47 65 74 41 63 74 69 76 65 20 4d 61 6b  er.GetActive Mak
2e00: 65 50 72 6f 63 65 64 75 72 65 46 61 73 74 20 24  eProcedureFast $
2e10: 6e 61 6d 65 20 24 66 61 73 74 5d 0d 0a 20 20 20  name $fast]..   
2e20: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0c 0d 0a     }..    }.....
2e30: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
2e40: 45 3a 20 54 68 69 73 20 70 72 6f 63 65 64 75 72  E: This procedur
2e50: 65 20 6d 61 72 6b 73 20 61 20 76 61 72 69 61 62  e marks a variab
2e60: 6c 65 20 66 6f 72 20 22 66 61 73 74 22 20 61 63  le for "fast" ac
2e70: 63 65 73 73 3b 20 66 6f 72 20 6e 6f 77 2c 20 74  cess; for now, t
2e80: 68 69 73 0d 0a 20 20 20 20 23 20 20 20 20 20 20  his..    #      
2e90: 20 6d 65 61 6e 73 20 64 69 73 61 62 6c 69 6e 67   means disabling
2ea0: 20 61 6e 79 74 68 69 6e 67 20 74 68 61 74 20 6d   anything that m
2eb0: 61 6b 65 73 20 76 61 72 69 61 62 6c 65 20 61 63  akes variable ac
2ec0: 63 65 73 73 20 73 6c 6f 77 65 72 20 77 68 69 6c  cess slower whil
2ed0: 65 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 74  e..    #       t
2ee0: 68 65 20 74 61 72 67 65 74 20 76 61 72 69 61 62  he target variab
2ef0: 6c 65 20 69 73 20 62 65 69 6e 67 20 72 65 61 64  le is being read
2f00: 2c 20 73 65 74 2c 20 6f 72 20 75 6e 73 65 74 2e  , set, or unset.
2f10: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 3c  ..    #..    # <
2f20: 65 78 70 65 72 69 6d 65 6e 74 61 6c 3e 0d 0a 20  experimental>.. 
2f30: 20 20 20 70 72 6f 63 20 6d 61 6b 65 56 61 72 69     proc makeVari
2f40: 61 62 6c 65 46 61 73 74 20 7b 20 6e 61 6d 65 20  ableFast { name 
2f50: 66 61 73 74 20 7d 20 7b 0d 0a 20 20 20 20 20 20  fast } {..      
2f60: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
2f70: 20 54 68 69 73 20 73 68 6f 75 6c 64 20 77 6f 72   This should wor
2f80: 6b 20 70 72 6f 70 65 72 6c 79 20 69 6e 20 45 61  k properly in Ea
2f90: 67 6c 65 20 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20  gle only...     
2fa0: 20 23 0d 0a 20 20 20 20 20 20 63 61 74 63 68 20   #..      catch 
2fb0: 7b 0d 0a 20 20 20 20 20 20 20 20 75 70 6c 65 76  {..        uplev
2fc0: 65 6c 20 31 20 5b 6c 69 73 74 20 6f 62 6a 65 63  el 1 [list objec
2fd0: 74 20 69 6e 76 6f 6b 65 20 2d 66 6c 61 67 73 20  t invoke -flags 
2fe0: 2b 4e 6f 6e 50 75 62 6c 69 63 20 5c 0d 0a 20 20  +NonPublic \..  
2ff0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 70            Interp
3000: 72 65 74 65 72 2e 47 65 74 41 63 74 69 76 65 20  reter.GetActive 
3010: 4d 61 6b 65 56 61 72 69 61 62 6c 65 46 61 73 74  MakeVariableFast
3020: 20 24 6e 61 6d 65 20 24 66 61 73 74 5d 0d 0a 20   $name $fast].. 
3030: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0c       }..    }...
3040: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
3050: 4f 54 45 3a 20 41 64 64 20 73 63 72 69 70 74 20  OTE: Add script 
3060: 6c 69 62 72 61 72 79 20 66 69 6c 65 73 20 62 6f  library files bo
3070: 72 72 6f 77 65 64 20 66 72 6f 6d 20 6e 61 74 69  rrowed from nati
3080: 76 65 20 54 63 6c 2e 0d 0a 20 20 20 20 23 0d 0a  ve Tcl...    #..
3090: 20 20 20 20 69 66 20 7b 21 5b 69 6e 74 65 72 70      if {![interp
30a0: 20 69 73 73 61 66 65 5d 7d 20 74 68 65 6e 20 7b   issafe]} then {
30b0: 0d 0a 20 20 20 20 20 20 6d 61 79 62 65 4c 6f 61  ..      maybeLoa
30c0: 64 53 63 72 69 70 74 73 20 5b 66 69 6c 65 20 64  dScripts [file d
30d0: 69 72 6e 61 6d 65 20 5b 69 6e 66 6f 20 73 63 72  irname [info scr
30e0: 69 70 74 5d 5d 20 5b 6c 69 73 74 20 77 6f 72 64  ipt]] [list word
30f0: 2e 74 63 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  .tcl]..    }....
3100: 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23      ############
3110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3130: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3140: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
3150: 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23  .    ###########
3160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3170: 23 23 20 45 4e 44 20 45 61 67 6c 65 20 4f 4e 4c  ## END Eagle ONL
3180: 59 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23  Y ##############
3190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
31a0: 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23  ..    ##########
31b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
31c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
31d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
31e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
31f0: 23 0d 0a 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20  #..  } else {.. 
3200: 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23     #############
3210: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3230: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a  ##############..
3250: 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23      ############
3260: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3270: 23 20 42 45 47 49 4e 20 54 63 6c 20 4f 4e 4c 59  # BEGIN Tcl ONLY
3280: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
3290: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
32a0: 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23  .    ###########
32b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
32c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
32d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
32e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
32f0: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
3300: 20 4e 4f 54 45 3a 20 45 78 70 6f 72 74 73 20 74   NOTE: Exports t
3310: 68 65 20 6e 65 63 65 73 73 61 72 79 20 63 6f 6d  he necessary com
3320: 6d 61 6e 64 73 20 66 72 6f 6d 20 74 68 69 73 20  mands from this 
3330: 70 61 63 6b 61 67 65 20 61 6e 64 20 69 6d 70 6f  package and impo
3340: 72 74 20 74 68 65 6d 0d 0a 20 20 20 20 23 20 20  rt them..    #  
3350: 20 20 20 20 20 69 6e 74 6f 20 74 68 65 20 67 6c       into the gl
3360: 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 65 2e 0d  obal namespace..
3370: 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
3380: 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f 20 63  [llength [info c
3390: 6f 6d 6d 61 6e 64 73 20 65 78 70 6f 72 74 41 6e  ommands exportAn
33a0: 64 49 6d 70 6f 72 74 50 61 63 6b 61 67 65 43 6f  dImportPackageCo
33b0: 6d 6d 61 6e 64 73 5d 5d 20 3e 20 30 7d 20 74 68  mmands]] > 0} th
33c0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 65 78 70 6f  en {..      expo
33d0: 72 74 41 6e 64 49 6d 70 6f 72 74 50 61 63 6b 61  rtAndImportPacka
33e0: 67 65 43 6f 6d 6d 61 6e 64 73 20 5b 6e 61 6d 65  geCommands [name
33f0: 73 70 61 63 65 20 63 75 72 72 65 6e 74 5d 20 5b  space current] [
3400: 6c 69 73 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  list \..        
3410: 20 20 69 73 45 61 67 6c 65 20 6c 6f 61 64 53 63    isEagle loadSc
3420: 72 69 70 74 73 20 6d 61 79 62 65 4c 6f 61 64 53  ripts maybeLoadS
3430: 63 72 69 70 74 73 20 69 73 57 69 6e 64 6f 77 73  cripts isWindows
3440: 20 69 73 49 6e 74 65 72 61 63 74 69 76 65 20 5c   isInteractive \
3450: 0d 0a 20 20 20 20 20 20 20 20 20 20 68 61 76 65  ..          have
3460: 47 61 72 75 64 61 20 69 73 54 63 6c 54 68 72 65  Garuda isTclThre
3470: 61 64 20 69 73 4d 6f 6e 6f 20 69 73 44 6f 74 4e  ad isMono isDotN
3480: 65 74 43 6f 72 65 20 69 73 53 61 6d 65 46 69 6c  etCore isSameFil
3490: 65 4e 61 6d 65 20 5c 0d 0a 20 20 20 20 20 20 20  eName \..       
34a0: 20 20 20 67 65 74 45 6e 76 69 72 6f 6e 6d 65 6e     getEnvironmen
34b0: 74 56 61 72 69 61 62 6c 65 20 63 6f 6d 62 69 6e  tVariable combin
34c0: 65 46 6c 61 67 73 20 67 65 74 43 6f 6d 70 69 6c  eFlags getCompil
34d0: 65 49 6e 66 6f 20 67 65 74 50 6c 61 74 66 6f 72  eInfo getPlatfor
34e0: 6d 49 6e 66 6f 20 5c 0d 0a 20 20 20 20 20 20 20  mInfo \..       
34f0: 20 20 20 67 65 74 50 6c 75 67 69 6e 4e 61 6d 65     getPluginName
3500: 20 67 65 74 50 6c 75 67 69 6e 50 61 74 68 20 67   getPluginPath g
3510: 65 74 50 61 63 6b 61 67 65 49 6e 73 74 61 6c 6c  etPackageInstall
3520: 50 61 74 68 20 61 70 70 65 6e 64 41 72 67 73 20  Path appendArgs 
3530: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 61 70  \..          lap
3540: 70 65 6e 64 41 72 67 73 20 67 65 74 44 69 63 74  pendArgs getDict
3550: 69 6f 6e 61 72 79 56 61 6c 75 65 20 67 65 74 43  ionaryValue getC
3560: 6f 6c 75 6d 6e 56 61 6c 75 65 20 67 65 74 52 6f  olumnValue getRo
3570: 77 43 6f 6c 75 6d 6e 56 61 6c 75 65 20 5c 0d 0a  wColumnValue \..
3580: 20 20 20 20 20 20 20 20 20 20 74 71 70 75 74 73            tqputs
3590: 20 74 71 6c 6f 67 20 6d 61 6b 65 42 69 6e 61 72   tqlog makeBinar
35a0: 79 43 68 61 6e 6e 65 6c 20 6d 61 6b 65 41 73 63  yChannel makeAsc
35b0: 69 69 43 68 61 6e 6e 65 6c 20 6d 61 6b 65 55 6e  iiChannel makeUn
35c0: 69 63 6f 64 65 43 68 61 6e 6e 65 6c 20 5c 0d 0a  icodeChannel \..
35d0: 20 20 20 20 20 20 20 20 20 20 6d 61 6b 65 4c 6f            makeLo
35e0: 67 43 68 61 6e 6e 65 6c 20 72 65 61 64 46 69 6c  gChannel readFil
35f0: 65 20 72 65 61 64 53 68 61 72 65 64 46 69 6c 65  e readSharedFile
3600: 20 77 72 69 74 65 46 69 6c 65 20 61 70 70 65 6e   writeFile appen
3610: 64 46 69 6c 65 20 5c 0d 0a 20 20 20 20 20 20 20  dFile \..       
3620: 20 20 20 61 70 70 65 6e 64 4c 6f 67 46 69 6c 65     appendLogFile
3630: 20 61 70 70 65 6e 64 53 68 61 72 65 64 46 69 6c   appendSharedFil
3640: 65 20 61 70 70 65 6e 64 53 68 61 72 65 64 4c 6f  e appendSharedLo
3650: 67 46 69 6c 65 20 5c 0d 0a 20 20 20 20 20 20 20  gFile \..       
3660: 20 20 20 72 65 61 64 41 73 63 69 69 46 69 6c 65     readAsciiFile
3670: 20 77 72 69 74 65 41 73 63 69 69 46 69 6c 65 20   writeAsciiFile 
3680: 72 65 61 64 55 6e 69 63 6f 64 65 46 69 6c 65 20  readUnicodeFile 
3690: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 77 72 69  \..          wri
36a0: 74 65 55 6e 69 63 6f 64 65 46 69 6c 65 20 67 65  teUnicodeFile ge
36b0: 74 44 69 72 52 65 73 75 6c 74 50 61 74 68 20 61  tDirResultPath a
36c0: 64 64 54 6f 50 61 74 68 20 72 65 6d 6f 76 65 46  ddToPath removeF
36d0: 72 6f 6d 50 61 74 68 20 5c 0d 0a 20 20 20 20 20  romPath \..     
36e0: 20 20 20 20 20 65 78 65 63 53 68 65 6c 6c 20 6d       execShell m
36f0: 61 79 62 65 47 65 74 45 78 69 74 43 6f 64 65 20  aybeGetExitCode 
3700: 6c 73 68 75 66 66 6c 65 20 6c 64 69 66 66 65 72  lshuffle ldiffer
3710: 65 6e 63 65 20 66 69 6c 74 65 72 20 6d 61 70 20  ence filter map 
3720: 72 65 64 75 63 65 20 5c 0d 0a 20 20 20 20 20 20  reduce \..      
3730: 20 20 20 20 67 65 74 4c 65 6e 67 74 68 4d 6f 64      getLengthMod
3740: 69 66 69 65 72 20 64 65 62 75 67 20 66 69 6e 64  ifier debug find
3750: 44 69 72 65 63 74 6f 72 69 65 73 20 5c 0d 0a 20  Directories \.. 
3760: 20 20 20 20 20 20 20 20 20 66 69 6e 64 44 69 72           findDir
3770: 65 63 74 6f 72 69 65 73 52 65 63 75 72 73 69 76  ectoriesRecursiv
3780: 65 20 66 69 6e 64 46 69 6c 65 73 20 66 69 6e 64  e findFiles find
3790: 46 69 6c 65 73 52 65 63 75 72 73 69 76 65 20 5c  FilesRecursive \
37a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 6f 70 79  ..          copy
37b0: 46 69 6c 65 73 52 65 63 75 72 73 69 76 65 20 65  FilesRecursive e
37c0: 78 70 6f 72 74 41 6e 64 49 6d 70 6f 72 74 50 61  xportAndImportPa
37d0: 63 6b 61 67 65 43 6f 6d 6d 61 6e 64 73 20 73 65  ckageCommands se
37e0: 74 75 70 55 6e 7a 69 70 56 61 72 73 20 5c 0d 0a  tupUnzipVars \..
37f0: 20 20 20 20 20 20 20 20 20 20 75 6e 7a 69 70 4d            unzipM
3800: 75 73 74 42 65 49 6e 73 74 61 6c 6c 65 64 20 65  ustBeInstalled e
3810: 78 74 72 61 63 74 5a 69 70 41 72 63 68 69 76 65  xtractZipArchive
3820: 5d 20 66 61 6c 73 65 20 66 61 6c 73 65 0d 0a 20  ] false false.. 
3830: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 23 23 23     }....    ####
3840: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3860: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3870: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3880: 23 23 23 23 23 23 23 0d 0a 20 20 20 20 23 23 23  #######..    ###
3890: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
38a0: 23 23 23 23 23 23 23 23 23 23 23 20 45 4e 44 20  ########### END 
38b0: 54 63 6c 20 4f 4e 4c 59 20 23 23 23 23 23 23 23  Tcl ONLY #######
38c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
38d0: 23 23 23 23 23 23 23 23 0d 0a 20 20 20 20 23 23  ########..    ##
38e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
38f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3900: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3920: 23 23 23 23 23 23 23 23 23 0d 0a 20 20 7d 0d 0a  #########..  }..
3930: 0c 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
3940: 3a 20 50 72 6f 76 69 64 65 20 74 68 65 20 45 61  : Provide the Ea
3950: 67 6c 65 20 22 6c 69 62 72 61 72 79 22 20 70 61  gle "library" pa
3960: 63 6b 61 67 65 20 74 6f 20 74 68 65 20 69 6e 74  ckage to the int
3970: 65 72 70 72 65 74 65 72 2e 0d 0a 20 20 23 0d 0a  erpreter...  #..
3980: 20 20 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64    package provid
3990: 65 20 45 61 67 6c 65 2e 4c 69 62 72 61 72 79 20  e Eagle.Library 
39a0: 5c 0d 0a 20 20 20 20 5b 65 78 70 72 20 7b 5b 69  \..    [expr {[i
39b0: 73 45 61 67 6c 65 5d 20 3f 20 5b 69 6e 66 6f 20  sEagle] ? [info 
39c0: 65 6e 67 69 6e 65 20 50 61 74 63 68 4c 65 76 65  engine PatchLeve
39d0: 6c 5d 20 3a 20 22 31 2e 30 22 7d 5d 0d 0a 7d 0d  l] : "1.0"}]..}.
39e0: 0a 0c                                            ..