System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact baba55f0c8375fde4ebd026230c37efbef24c85a:


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 65 78 65 63 2e 65 61 67 6c 65  .#..# exec.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 45 78 65 63 75 74 65  .# Eagle Execute
00b0: 20 50 61 63 6b 61 67 65 20 46 69 6c 65 0d 0a 23   Package File..#
00c0: 0d 0a 23 20 43 6f 70 79 72 69 67 68 74 20 28 63  ..# Copyright (c
00d0: 29 20 32 30 30 37 2d 32 30 31 32 20 62 79 20 4a  ) 2007-2012 by J
00e0: 6f 65 20 4d 69 73 74 61 63 68 6b 69 6e 2e 20 20  oe Mistachkin.  
00f0: 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72  All rights reser
0100: 76 65 64 2e 0d 0a 23 0d 0a 23 20 53 65 65 20 74  ved...#..# See t
0110: 68 65 20 66 69 6c 65 20 22 6c 69 63 65 6e 73 65  he file "license
0120: 2e 74 65 72 6d 73 22 20 66 6f 72 20 69 6e 66 6f  .terms" for info
0130: 72 6d 61 74 69 6f 6e 20 6f 6e 20 75 73 61 67 65  rmation on usage
0140: 20 61 6e 64 20 72 65 64 69 73 74 72 69 62 75 74   and redistribut
0150: 69 6f 6e 20 6f 66 0d 0a 23 20 74 68 69 73 20 66  ion of..# this f
0160: 69 6c 65 2c 20 61 6e 64 20 66 6f 72 20 61 20 44  ile, and for a D
0170: 49 53 43 4c 41 49 4d 45 52 20 4f 46 20 41 4c 4c  ISCLAIMER OF ALL
0180: 20 57 41 52 52 41 4e 54 49 45 53 2e 0d 0a 23 0d   WARRANTIES...#.
0190: 0a 23 20 52 43 53 3a 20 40 28 23 29 20 24 49 64  .# RCS: @(#) $Id
01a0: 3a 20 24 0d 0a 23 0d 0a 23 23 23 23 23 23 23 23  : $..#..########
01b0: 23 23 23 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 0d 0a 0d 0a 23 0d 0a 23 20  #######....#..# 
0200: 4e 4f 54 45 3a 20 55 73 65 20 6f 75 72 20 6f 77  NOTE: Use our ow
0210: 6e 20 6e 61 6d 65 73 70 61 63 65 20 68 65 72 65  n namespace here
0220: 20 62 65 63 61 75 73 65 20 65 76 65 6e 20 74 68   because even th
0230: 6f 75 67 68 20 77 65 20 64 6f 20 6e 6f 74 20 64  ough we do not d
0240: 69 72 65 63 74 6c 79 0d 0a 23 20 20 20 20 20 20  irectly..#      
0250: 20 73 75 70 70 6f 72 74 20 6e 61 6d 65 73 70 61   support namespa
0260: 63 65 73 20 6f 75 72 73 65 6c 76 65 73 2c 20 77  ces ourselves, w
0270: 65 20 64 6f 20 6e 6f 74 20 77 61 6e 74 20 74 6f  e do not want to
0280: 20 70 6f 6c 6c 75 74 65 20 74 68 65 20 67 6c 6f   pollute the glo
0290: 62 61 6c 0d 0a 23 20 20 20 20 20 20 20 6e 61 6d  bal..#       nam
02a0: 65 73 70 61 63 65 20 69 66 20 74 68 69 73 20 73  espace if this s
02b0: 63 72 69 70 74 20 61 63 74 75 61 6c 6c 79 20 65  cript actually e
02c0: 6e 64 73 20 75 70 20 62 65 69 6e 67 20 65 76 61  nds up being eva
02d0: 6c 75 61 74 65 64 20 69 6e 20 54 63 6c 2e 0d 0a  luated in Tcl...
02e0: 23 0d 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61  #..namespace eva
02f0: 6c 20 3a 3a 45 61 67 6c 65 20 7b 0d 0a 20 20 23  l ::Eagle {..  #
0300: 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73  ..  # NOTE: This
0310: 20 70 72 6f 63 65 64 75 72 65 20 65 78 65 63 75   procedure execu
0320: 74 65 73 20 61 20 6e 61 74 69 76 65 20 54 63 6c  tes a native Tcl
0330: 20 6f 72 20 45 61 67 6c 65 20 73 75 62 2d 73 68   or Eagle sub-sh
0340: 65 6c 6c 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ell using the.. 
0350: 20 23 20 20 20 20 20 20 20 73 70 65 63 69 66 69   #       specifi
0360: 65 64 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64  ed arguments and
0370: 20 72 65 74 75 72 6e 73 20 74 68 65 20 63 61 70   returns the cap
0380: 74 75 72 65 64 20 6f 75 74 70 75 74 2c 20 76 65  tured output, ve
0390: 72 62 61 74 69 6d 2e 0d 0a 20 20 23 0d 0a 20 20  rbatim...  #..  
03a0: 70 72 6f 63 20 65 78 65 63 53 68 65 6c 6c 20 7b  proc execShell {
03b0: 20 6f 70 74 69 6f 6e 73 20 61 72 67 73 20 7d 20   options args } 
03c0: 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  {..    #..    # 
03d0: 4e 4f 54 45 3a 20 53 74 61 72 74 20 6f 75 74 20  NOTE: Start out 
03e0: 77 69 74 68 20 6a 75 73 74 20 74 68 65 20 62 61  with just the ba
03f0: 73 65 20 5b 65 78 65 63 5d 20 63 6f 6d 6d 61 6e  se [exec] comman
0400: 64 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 73  d...    #..    s
0410: 65 74 20 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74  et command [list
0420: 20 65 78 65 63 5d 0d 0a 0d 0a 20 20 20 20 23 0d   exec]....    #.
0430: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 64 64  .    # NOTE: Add
0440: 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 74 68 65   options for the
0450: 20 5b 65 78 65 63 5d 20 63 6f 6d 6d 61 6e 64 2c   [exec] command,
0460: 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 23 0d   if any...    #.
0470: 0a 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e 67 74  .    if {[llengt
0480: 68 20 24 6f 70 74 69 6f 6e 73 5d 20 3e 20 30 7d  h $options] > 0}
0490: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 65   then {..      e
04a0: 76 61 6c 20 6c 61 70 70 65 6e 64 20 63 6f 6d 6d  val lappend comm
04b0: 61 6e 64 20 24 6f 70 74 69 6f 6e 73 0d 0a 20 20  and $options..  
04c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
04d0: 20 20 23 20 4e 4f 54 45 3a 20 41 6c 77 61 79 73    # NOTE: Always
04e0: 20 61 64 64 20 74 68 65 20 65 6e 64 2d 6f 66 2d   add the end-of-
04f0: 6f 70 74 69 6f 6e 73 20 6d 61 72 6b 65 72 2e 0d  options marker..
0500: 0a 20 20 20 20 23 0d 0a 20 20 20 20 6c 61 70 70  .    #..    lapp
0510: 65 6e 64 20 63 6f 6d 6d 61 6e 64 20 2d 2d 0d 0a  end command --..
0520: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
0530: 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 6e  OTE: Check for n
0540: 61 74 69 76 65 20 54 63 6c 20 61 6e 64 20 4d 6f  ative Tcl and Mo
0550: 6e 6f 20 62 65 63 61 75 73 65 20 74 68 69 73 20  no because this 
0560: 69 6d 70 61 63 74 73 20 68 6f 77 20 74 68 65 0d  impacts how the.
0570: 0a 20 20 20 20 23 20 20 20 20 20 20 20 73 68 65  .    #       she
0580: 6c 6c 20 65 78 65 63 75 74 61 62 6c 65 20 6e 61  ll executable na
0590: 6d 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64  me is determined
05a0: 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ...    #..    if
05b0: 20 7b 5b 69 73 45 61 67 6c 65 5d 20 26 26 20 5b   {[isEagle] && [
05c0: 69 73 4d 6f 6e 6f 5d 7d 20 74 68 65 6e 20 7b 0d  isMono]} then {.
05d0: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
05e0: 23 20 48 41 43 4b 3a 20 41 73 73 75 6d 65 20 74  # HACK: Assume t
05f0: 68 61 74 20 4d 6f 6e 6f 20 69 73 20 73 6f 6d 65  hat Mono is some
0600: 77 68 65 72 65 20 61 6c 6f 6e 67 20 74 68 65 20  where along the 
0610: 50 41 54 48 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  PATH...      #..
0620: 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20 63 6f        lappend co
0630: 6d 6d 61 6e 64 20 6d 6f 6e 6f 20 5c 0d 0a 20 20  mmand mono \..  
0640: 20 20 20 20 20 20 20 20 5b 61 70 70 65 6e 64 41          [appendA
0650: 72 67 73 20 5c 22 20 5b 66 69 6c 65 20 6e 61 74  rgs \" [file nat
0660: 69 76 65 6e 61 6d 65 20 5b 69 6e 66 6f 20 6e 61  ivename [info na
0670: 6d 65 6f 66 65 78 65 63 75 74 61 62 6c 65 5d 5d  meofexecutable]]
0680: 20 5c 22 5d 0d 0a 20 20 20 20 7d 20 65 6c 73 65   \"]..    } else
0690: 20 7b 0d 0a 20 20 20 20 20 20 6c 61 70 70 65 6e   {..      lappen
06a0: 64 20 63 6f 6d 6d 61 6e 64 20 5b 69 6e 66 6f 20  d command [info 
06b0: 6e 61 6d 65 6f 66 65 78 65 63 75 74 61 62 6c 65  nameofexecutable
06c0: 5d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ]....      #..  
06d0: 20 20 20 20 23 20 48 41 43 4b 3a 20 57 68 65 6e      # HACK: When
06e0: 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 2e 4e 45 54   running on .NET
06f0: 20 43 6f 72 65 2c 20 77 65 20 6e 65 65 64 20 74   Core, we need t
0700: 6f 20 69 6e 73 65 72 74 20 74 68 65 20 22 65 78  o insert the "ex
0710: 65 63 22 0d 0a 20 20 20 20 20 20 23 20 20 20 20  ec"..      #    
0720: 20 20 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20     command line 
0730: 61 72 67 75 6d 65 6e 74 20 66 6f 6c 6c 6f 77 65  argument followe
0740: 64 20 62 79 20 6f 75 72 20 61 73 73 65 6d 62 6c  d by our assembl
0750: 79 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 23  y name...      #
0760: 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 69 73 45  ..      if {[isE
0770: 61 67 6c 65 5d 20 26 26 20 5b 69 73 44 6f 74 4e  agle] && [isDotN
0780: 65 74 43 6f 72 65 5d 7d 20 74 68 65 6e 20 7b 0d  etCore]} then {.
0790: 0a 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64  .        lappend
07a0: 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63 0d 0a 0d   command exec...
07b0: 0a 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64  .        lappend
07c0: 20 63 6f 6d 6d 61 6e 64 20 5b 61 70 70 65 6e 64   command [append
07d0: 41 72 67 73 20 5c 22 20 5c 0d 0a 20 20 20 20 20  Args \" \..     
07e0: 20 20 20 20 20 20 20 5b 66 69 6c 65 20 6e 61 74         [file nat
07f0: 69 76 65 6e 61 6d 65 20 5b 6c 69 6e 64 65 78 20  ivename [lindex 
0800: 5b 69 6e 66 6f 20 61 73 73 65 6d 62 6c 79 20 74  [info assembly t
0810: 72 75 65 5d 20 31 5d 5d 20 5c 22 5d 0d 0a 20 20  rue] 1]] \"]..  
0820: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
0830: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
0840: 45 3a 20 49 66 20 70 6f 73 73 69 62 6c 65 2c 20  E: If possible, 
0850: 63 68 65 63 6b 20 69 66 20 74 68 65 20 63 75 72  check if the cur
0860: 72 65 6e 74 20 69 6e 74 65 72 70 72 65 74 65 72  rent interpreter
0870: 20 68 61 73 20 73 65 63 75 72 69 74 79 0d 0a 20   has security.. 
0880: 20 20 20 23 20 20 20 20 20 20 20 65 6e 61 62 6c     #       enabl
0890: 65 64 3b 20 69 66 20 73 6f 2c 20 61 64 64 20 74  ed; if so, add t
08a0: 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 63  he appropriate c
08b0: 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 6f 70 74 69  ommand line opti
08c0: 6f 6e 20 66 6f 72 0d 0a 20 20 20 20 23 20 20 20  on for..    #   
08d0: 20 20 20 20 74 68 65 20 73 75 62 2d 70 72 6f 63      the sub-proc
08e0: 65 73 73 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  ess...    #..   
08f0: 20 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d 20 26   if {[isEagle] &
0900: 26 20 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f  & [llength [info
0910: 20 63 6f 6d 6d 61 6e 64 73 20 6f 62 6a 65 63 74   commands object
0920: 5d 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  ]] > 0} then {..
0930: 20 20 20 20 20 20 69 66 20 7b 5b 63 61 74 63 68        if {[catch
0940: 20 7b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65   {..        obje
0950: 63 74 20 69 6e 76 6f 6b 65 20 2d 66 6c 61 67 73  ct invoke -flags
0960: 20 2b 4e 6f 6e 50 75 62 6c 69 63 20 49 6e 74 65   +NonPublic Inte
0970: 72 70 72 65 74 65 72 2e 47 65 74 41 63 74 69 76  rpreter.GetActiv
0980: 65 20 48 61 73 53 65 63 75 72 69 74 79 0d 0a 20  e HasSecurity.. 
0990: 20 20 20 20 20 7d 20 73 65 63 75 72 69 74 79 5d       } security]
09a0: 20 3d 3d 20 30 20 26 26 20 24 73 65 63 75 72 69   == 0 && $securi
09b0: 74 79 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  ty} then {..    
09c0: 20 20 20 20 6c 61 70 70 65 6e 64 20 63 6f 6d 6d      lappend comm
09d0: 61 6e 64 20 2d 73 65 63 75 72 69 74 79 20 74 72  and -security tr
09e0: 75 65 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  ue..      }..   
09f0: 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
0a00: 20 23 20 4e 4f 54 45 3a 20 41 64 64 20 63 6f 6d   # NOTE: Add com
0a10: 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d 65  mand line argume
0a20: 6e 74 73 20 74 6f 20 74 68 65 20 73 68 65 6c 6c  nts to the shell
0a30: 20 63 6f 6d 6d 61 6e 64 2c 20 69 66 20 61 6e 79   command, if any
0a40: 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ...    #..    if
0a50: 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 73   {[llength $args
0a60: 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20  ] > 0} then {.. 
0a70: 20 20 20 20 20 65 76 61 6c 20 6c 61 70 70 65 6e       eval lappen
0a80: 64 20 63 6f 6d 6d 61 6e 64 20 24 61 72 67 73 0d  d command $args.
0a90: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
0aa0: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 69 6e  .    # NOTE: Fin
0ab0: 61 6c 6c 79 2c 20 65 78 65 63 75 74 65 20 74 68  ally, execute th
0ac0: 65 20 72 65 73 75 6c 74 69 6e 67 20 5b 65 78 65  e resulting [exe
0ad0: 63 5d 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 74 68  c] command in th
0ae0: 65 20 63 6f 6e 74 65 78 74 0d 0a 20 20 20 20 23  e context..    #
0af0: 20 20 20 20 20 20 20 6f 66 20 74 68 65 20 63 61         of the ca
0b00: 6c 6c 65 72 2c 20 72 65 74 75 72 6e 69 6e 67 20  ller, returning 
0b10: 69 74 73 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20  its result...   
0b20: 20 23 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 5b   #..    return [
0b30: 75 70 6c 65 76 65 6c 20 31 20 24 63 6f 6d 6d 61  uplevel 1 $comma
0b40: 6e 64 5d 0d 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 23  nd]..  }.....  #
0b50: 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73  ..  # NOTE: This
0b60: 20 70 72 6f 63 65 64 75 72 65 20 69 73 20 64 65   procedure is de
0b70: 73 69 67 6e 65 64 20 74 6f 20 65 78 74 72 61 63  signed to extrac
0b80: 74 20 74 68 65 20 65 78 69 74 20 63 6f 64 65 20  t the exit code 
0b90: 66 6f 72 20 61 20 63 68 69 6c 64 0d 0a 20 20 23  for a child..  #
0ba0: 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 20 72         process r
0bb0: 75 6e 20 76 69 61 20 5b 65 78 65 63 5d 20 75 73  un via [exec] us
0bc0: 69 6e 67 20 74 68 65 20 76 61 6c 75 65 20 6f 66  ing the value of
0bd0: 20 24 3a 3a 65 72 72 6f 72 43 6f 64 65 2e 20 20   $::errorCode.  
0be0: 49 74 20 77 69 6c 6c 0d 0a 20 20 23 20 20 20 20  It will..  #    
0bf0: 20 20 20 61 6c 77 61 79 73 20 72 65 74 75 72 6e     always return
0c00: 20 65 69 74 68 65 72 20 61 20 76 61 6c 69 64 20   either a valid 
0c10: 69 6e 74 65 67 65 72 20 2d 4f 52 2d 20 74 68 65  integer -OR- the
0c20: 20 73 70 65 63 69 66 69 65 64 20 64 65 66 61 75   specified defau
0c30: 6c 74 0d 0a 20 20 23 20 20 20 20 20 20 20 76 61  lt..  #       va
0c40: 6c 75 65 2c 20 77 68 69 63 68 20 6d 61 79 20 62  lue, which may b
0c50: 65 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e  e an empty strin
0c60: 67 2e 0d 0a 20 20 23 0d 0a 20 20 70 72 6f 63 20  g...  #..  proc 
0c70: 6d 61 79 62 65 47 65 74 45 78 69 74 43 6f 64 65  maybeGetExitCode
0c80: 20 7b 20 76 61 6c 75 65 20 7b 64 65 66 61 75 6c   { value {defaul
0c90: 74 20 22 22 7d 20 7d 20 7b 0d 0a 20 20 20 20 69  t ""} } {..    i
0ca0: 66 20 7b 5b 6c 69 6e 64 65 78 20 24 76 61 6c 75  f {[lindex $valu
0cb0: 65 20 30 5d 20 65 71 20 22 43 48 49 4c 44 53 54  e 0] eq "CHILDST
0cc0: 41 54 55 53 22 7d 20 74 68 65 6e 20 7b 0d 0a 20  ATUS"} then {.. 
0cd0: 20 20 20 20 20 73 65 74 20 73 74 61 74 75 73 20       set status 
0ce0: 5b 6c 69 6e 64 65 78 20 24 76 61 6c 75 65 20 32  [lindex $value 2
0cf0: 5d 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b  ]....      if {[
0d00: 73 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67 65  string is intege
0d10: 72 20 2d 73 74 72 69 63 74 20 24 73 74 61 74 75  r -strict $statu
0d20: 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  s]} then {..    
0d30: 20 20 20 20 72 65 74 75 72 6e 20 24 73 74 61 74      return $stat
0d40: 75 73 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  us..      }..   
0d50: 20 7d 0d 0a 0d 0a 20 20 20 20 72 65 74 75 72 6e   }....    return
0d60: 20 24 64 65 66 61 75 6c 74 0d 0a 20 20 7d 0d 0a   $default..  }..
0d70: 0c 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
0d80: 3a 20 50 72 6f 76 69 64 65 20 74 68 65 20 45 61  : Provide the Ea
0d90: 67 6c 65 20 22 65 78 65 63 75 74 65 22 20 70 61  gle "execute" pa
0da0: 63 6b 61 67 65 20 74 6f 20 74 68 65 20 69 6e 74  ckage to the int
0db0: 65 72 70 72 65 74 65 72 2e 0d 0a 20 20 23 0d 0a  erpreter...  #..
0dc0: 20 20 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64    package provid
0dd0: 65 20 45 61 67 6c 65 2e 45 78 65 63 75 74 65 20  e Eagle.Execute 
0de0: 5c 0d 0a 20 20 20 20 5b 65 78 70 72 20 7b 5b 69  \..    [expr {[i
0df0: 73 45 61 67 6c 65 5d 20 3f 20 5b 69 6e 66 6f 20  sEagle] ? [info 
0e00: 65 6e 67 69 6e 65 20 50 61 74 63 68 4c 65 76 65  engine PatchLeve
0e10: 6c 5d 20 3a 20 22 31 2e 30 22 7d 5d 0d 0a 7d 0d  l] : "1.0"}]..}.
0e20: 0a 0c                                            ..