System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 3fb2196e248efc65a477321fcc3c47ca5fc8f290:


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 73 61 66 65 2e 65 61 67 6c 65  .#..# safe.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 53 61 66 65 20 49 6e 74 65 72 70 72 65  .# Safe Interpre
00b0: 74 65 72 20 49 6e 69 74 69 61 6c 69 7a 61 74 69  ter Initializati
00c0: 6f 6e 20 46 69 6c 65 0d 0a 23 0d 0a 23 20 43 6f  on File..#..# Co
00d0: 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 37  pyright (c) 2007
00e0: 2d 32 30 31 30 20 62 79 20 4a 6f 65 20 4d 69 73  -2010 by Joe Mis
00f0: 74 61 63 68 6b 69 6e 2e 20 20 41 6c 6c 20 72 69  tachkin.  All ri
0100: 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0d 0a  ghts reserved...
0110: 23 0d 0a 23 20 53 65 65 20 74 68 65 20 66 69 6c  #..# See the fil
0120: 65 20 22 6c 69 63 65 6e 73 65 2e 74 65 72 6d 73  e "license.terms
0130: 22 20 66 6f 72 20 69 6e 66 6f 72 6d 61 74 69 6f  " for informatio
0140: 6e 20 6f 6e 20 75 73 61 67 65 20 61 6e 64 20 72  n on usage and r
0150: 65 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 66  edistribution of
0160: 0d 0a 23 20 74 68 69 73 20 66 69 6c 65 2c 20 61  ..# this file, a
0170: 6e 64 20 66 6f 72 20 61 20 44 49 53 43 4c 41 49  nd for a DISCLAI
0180: 4d 45 52 20 4f 46 20 41 4c 4c 20 57 41 52 52 41  MER OF ALL WARRA
0190: 4e 54 49 45 53 2e 0d 0a 23 0d 0a 23 20 52 43 53  NTIES...#..# RCS
01a0: 3a 20 40 28 23 29 20 24 49 64 3a 20 24 0d 0a 23  : @(#) $Id: $..#
01b0: 0d 0a 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 23 23 23 23 23 23 23 23 23  ################
0200: 23 0d 0a 0d 0a 23 0d 0a 23 20 4e 4f 54 45 3a 20  #....#..# NOTE: 
0210: 55 73 65 20 6f 75 72 20 6f 77 6e 20 6e 61 6d 65  Use our own name
0220: 73 70 61 63 65 20 68 65 72 65 20 62 65 63 61 75  space here becau
0230: 73 65 20 65 76 65 6e 20 74 68 6f 75 67 68 20 77  se even though w
0240: 65 20 64 6f 20 6e 6f 74 20 64 69 72 65 63 74 6c  e do not directl
0250: 79 0d 0a 23 20 20 20 20 20 20 20 73 75 70 70 6f  y..#       suppo
0260: 72 74 20 6e 61 6d 65 73 70 61 63 65 73 20 6f 75  rt namespaces ou
0270: 72 73 65 6c 76 65 73 2c 20 77 65 20 64 6f 20 6e  rselves, we do n
0280: 6f 74 20 77 61 6e 74 20 74 6f 20 70 6f 6c 6c 75  ot want to pollu
0290: 74 65 20 74 68 65 20 67 6c 6f 62 61 6c 0d 0a 23  te the global..#
02a0: 20 20 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65         namespace
02b0: 20 69 66 20 74 68 69 73 20 73 63 72 69 70 74 20   if this script 
02c0: 61 63 74 75 61 6c 6c 79 20 65 6e 64 73 20 75 70  actually ends up
02d0: 20 62 65 69 6e 67 20 65 76 61 6c 75 61 74 65 64   being evaluated
02e0: 20 69 6e 20 54 63 6c 2e 0d 0a 23 0d 0a 6e 61 6d   in Tcl...#..nam
02f0: 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 45 61  espace eval ::Ea
0300: 67 6c 65 20 7b 0d 0a 20 20 23 0d 0a 20 20 23 20  gle {..  #..  # 
0310: 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20 74 68  NOTE: This is th
0320: 65 20 70 72 6f 63 65 64 75 72 65 20 74 68 61 74  e procedure that
0330: 20 64 65 74 65 63 74 73 20 77 68 65 74 68 65 72   detects whether
0340: 20 6f 72 20 6e 6f 74 20 77 65 20 61 72 65 0d 0a   or not we are..
0350: 20 20 23 20 20 20 20 20 20 20 72 75 6e 6e 69 6e    #       runnin
0360: 67 20 69 6e 20 45 61 67 6c 65 20 28 6f 74 68 65  g in Eagle (othe
0370: 72 77 69 73 65 2c 20 77 65 20 61 72 65 20 72 75  rwise, we are ru
0380: 6e 6e 69 6e 67 20 69 6e 20 76 61 6e 69 6c 6c 61  nning in vanilla
0390: 20 54 63 6c 29 2e 0d 0a 20 20 23 20 20 20 20 20   Tcl)...  #     
03a0: 20 20 54 68 69 73 20 70 72 6f 63 65 64 75 72 65    This procedure
03b0: 20 6d 75 73 74 20 66 75 6e 63 74 69 6f 6e 20 63   must function c
03c0: 6f 72 72 65 63 74 6c 79 20 69 6e 20 62 6f 74 68  orrectly in both
03d0: 20 54 63 6c 20 61 6e 64 20 45 61 67 6c 65 0d 0a   Tcl and Eagle..
03e0: 20 20 23 20 20 20 20 20 20 20 61 6e 64 20 6d 75    #       and mu
03f0: 73 74 20 72 65 74 75 72 6e 20 6e 6f 6e 2d 7a 65  st return non-ze
0400: 72 6f 20 6f 6e 6c 79 20 77 68 65 6e 20 72 75 6e  ro only when run
0410: 6e 69 6e 67 20 69 6e 20 45 61 67 6c 65 2e 0d 0a  ning in Eagle...
0420: 20 20 23 0d 0a 20 20 70 72 6f 63 20 69 73 45 61    #..  proc isEa
0430: 67 6c 65 20 7b 7d 20 7b 0d 0a 20 20 20 20 23 0d  gle {} {..    #.
0440: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 4e 6f 74  .    # NOTE: Not
0450: 68 69 6e 67 20 74 6f 6f 20 66 61 6e 63 79 20 6f  hing too fancy o
0460: 72 20 65 78 70 65 6e 73 69 76 65 20 73 68 6f 75  r expensive shou
0470: 6c 64 20 62 65 20 64 6f 6e 65 20 69 6e 20 68 65  ld be done in he
0480: 72 65 2e 20 20 49 6e 0d 0a 20 20 20 20 23 20 20  re.  In..    #  
0490: 20 20 20 20 20 74 68 65 6f 72 79 2c 20 75 73 65       theory, use
04a0: 20 6f 66 20 74 68 69 73 20 72 6f 75 74 69 6e 65   of this routine
04b0: 20 73 68 6f 75 6c 64 20 62 65 20 72 61 72 65 3b   should be rare;
04c0: 20 68 6f 77 65 76 65 72 2c 20 69 6e 0d 0a 20 20   however, in..  
04d0: 20 20 23 20 20 20 20 20 20 20 70 72 61 63 74 69    #       practi
04e0: 63 65 2c 20 74 68 69 73 20 72 6f 75 74 69 6e 65  ce, this routine
04f0: 20 69 73 20 61 63 74 75 61 6c 6c 79 20 75 73 65   is actually use
0500: 64 20 71 75 69 74 65 20 61 20 62 69 74 20 28 65  d quite a bit (e
0510: 2e 67 2e 0d 0a 20 20 20 20 23 20 20 20 20 20 20  .g...    #      
0520: 20 62 79 20 74 68 65 20 74 65 73 74 20 73 75 69   by the test sui
0530: 74 65 29 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  te)...    #..   
0540: 20 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 5b   return [expr {[
0550: 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 74 63  info exists ::tc
0560: 6c 5f 70 6c 61 74 66 6f 72 6d 28 65 6e 67 69 6e  l_platform(engin
0570: 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  e)] && \..      
0580: 20 20 5b 73 74 72 69 6e 67 20 63 6f 6d 70 61 72    [string compar
0590: 65 20 2d 6e 6f 63 61 73 65 20 65 61 67 6c 65 20  e -nocase eagle 
05a0: 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28  $::tcl_platform(
05b0: 65 6e 67 69 6e 65 29 5d 20 3d 3d 20 30 7d 5d 0d  engine)] == 0}].
05c0: 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 69 66 20 7b 5b  .  }.....  if {[
05d0: 69 73 45 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b  isEagle]} then {
05e0: 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23  ..    ##########
05f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0600: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0610: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0630: 23 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23 23  #..    #########
0640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0650: 23 23 23 20 42 45 47 49 4e 20 45 61 67 6c 65 20  ### BEGIN Eagle 
0660: 4f 4e 4c 59 20 23 23 23 23 23 23 23 23 23 23 23  ONLY ###########
0670: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0680: 23 23 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23  ##..    ########
0690: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
06a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
06b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
06c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
06d0: 23 23 23 0d 0a 0d 0a 20 20 20 20 70 72 6f 63 20  ###....    proc 
06e0: 75 6e 6b 6e 6f 77 6e 20 7b 20 6e 61 6d 65 20 61  unknown { name a
06f0: 72 67 73 20 7d 20 7b 0d 0a 20 20 20 20 20 20 23  rgs } {..      #
0700: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
0710: 54 68 69 73 20 69 73 20 61 20 73 74 75 62 20 75  This is a stub u
0720: 6e 6b 6e 6f 77 6e 20 70 72 6f 63 65 64 75 72 65  nknown procedure
0730: 20 74 68 61 74 20 73 69 6d 70 6c 79 20 70 72 6f   that simply pro
0740: 64 75 63 65 73 20 61 6e 0d 0a 20 20 20 20 20 20  duces an..      
0750: 23 20 20 20 20 20 20 20 61 70 70 72 6f 70 72 69  #       appropri
0760: 61 74 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ate error messag
0770: 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  e...      #..   
0780: 20 20 20 23 20 54 4f 44 4f 3a 20 41 64 64 20 73     # TODO: Add s
0790: 75 70 70 6f 72 74 20 66 6f 72 20 61 75 74 6f 2d  upport for auto-
07a0: 6c 6f 61 64 69 6e 67 20 70 61 63 6b 61 67 65 73  loading packages
07b0: 20 68 65 72 65 20 69 6e 20 74 68 65 20 66 75 74   here in the fut
07c0: 75 72 65 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20  ure?..      #.. 
07d0: 20 20 20 20 20 72 65 74 75 72 6e 20 2d 63 6f 64       return -cod
07e0: 65 20 65 72 72 6f 72 20 22 69 6e 76 61 6c 69 64  e error "invalid
07f0: 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 20 5c 22   command name \"
0800: 24 6e 61 6d 65 5c 22 22 0d 0a 20 20 20 20 7d 0d  $name\""..    }.
0810: 0a 0c 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
0820: 20 54 4f 44 4f 3a 20 52 65 76 69 73 65 20 6f 72   TODO: Revise or
0830: 20 72 65 6d 6f 76 65 20 74 68 69 73 20 70 72 6f   remove this pro
0840: 63 65 64 75 72 65 20 77 68 65 6e 20 66 75 6c 6c  cedure when full
0850: 20 5b 6e 61 6d 65 73 70 61 63 65 5d 20 73 75 70   [namespace] sup
0860: 70 6f 72 74 20 68 61 73 0d 0a 20 20 20 20 23 20  port has..    # 
0870: 20 20 20 20 20 20 62 65 65 6e 20 61 64 64 65 64        been added
0880: 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 70 72  ...    #..    pr
0890: 6f 63 20 3a 3a 74 63 6c 3a 3a 74 6d 3a 3a 55 6e  oc ::tcl::tm::Un
08a0: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 7b 20 6f  knownHandler { o
08b0: 72 69 67 69 6e 61 6c 20 6e 61 6d 65 20 61 72 67  riginal name arg
08c0: 73 20 7d 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a  s } {..      #..
08d0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 44 6f        # NOTE: Do
08e0: 20 6e 6f 74 68 69 6e 67 20 65 78 63 65 70 74 20   nothing except 
08f0: 63 61 6c 6c 20 74 68 65 20 6f 72 69 67 69 6e 61  call the origina
0900: 6c 20 68 61 6e 64 6c 65 72 2e 0d 0a 20 20 20 20  l handler...    
0910: 20 20 23 0d 0a 20 20 20 20 20 20 75 70 6c 65 76    #..      uplev
0920: 65 6c 20 31 20 24 6f 72 69 67 69 6e 61 6c 20 5b  el 1 $original [
0930: 3a 3a 6c 69 6e 73 65 72 74 20 24 61 72 67 73 20  ::linsert $args 
0940: 30 20 24 6e 61 6d 65 5d 0d 0a 20 20 20 20 7d 0d  0 $name]..    }.
0950: 0a 0c 0d 0a 20 20 20 20 70 72 6f 63 20 74 63 6c  ....    proc tcl
0960: 50 6b 67 55 6e 6b 6e 6f 77 6e 20 7b 20 6e 61 6d  PkgUnknown { nam
0970: 65 20 61 72 67 73 20 7d 20 7b 0d 0a 20 20 20 20  e args } {..    
0980: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
0990: 45 3a 20 44 6f 20 6e 6f 74 68 69 6e 67 20 73 69  E: Do nothing si
09a0: 6e 63 65 20 74 68 69 73 20 69 73 20 5b 6d 6f 73  nce this is [mos
09b0: 74 20 6c 69 6b 65 6c 79 5d 20 61 20 73 61 66 65  t likely] a safe
09c0: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
09d0: 69 6e 74 65 72 70 72 65 74 65 72 2e 0d 0a 20 20  interpreter...  
09e0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 72 65 74      #..      ret
09f0: 75 72 6e 0d 0a 20 20 20 20 7d 0d 0a 0c 0d 0a 20  urn..    }..... 
0a00: 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23     #############
0a10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a  ##############..
0a50: 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23      ############
0a60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a70: 23 20 45 4e 44 20 45 61 67 6c 65 20 4f 4e 4c 59  # END Eagle ONLY
0a80: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
0a90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
0aa0: 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23  .    ###########
0ab0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ac0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ad0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ae0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0af0: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
0b00: 23 20 4e 4f 54 45 3a 20 50 72 6f 76 69 64 65 20  # NOTE: Provide 
0b10: 74 68 65 20 45 61 67 6c 65 20 22 73 61 66 65 22  the Eagle "safe"
0b20: 20 70 61 63 6b 61 67 65 20 74 6f 20 74 68 65 20   package to the 
0b30: 69 6e 74 65 72 70 72 65 74 65 72 2e 0d 0a 20 20  interpreter...  
0b40: 23 0d 0a 20 20 70 61 63 6b 61 67 65 20 70 72 6f  #..  package pro
0b50: 76 69 64 65 20 45 61 67 6c 65 53 61 66 65 20 5c  vide EagleSafe \
0b60: 0d 0a 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 73  ..    [expr {[is
0b70: 45 61 67 6c 65 5d 20 3f 20 5b 69 6e 66 6f 20 65  Eagle] ? [info e
0b80: 6e 67 69 6e 65 20 50 61 74 63 68 4c 65 76 65 6c  ngine PatchLevel
0b90: 5d 20 3a 20 22 31 2e 30 22 7d 5d 0d 0a 7d 0d 0a  ] : "1.0"}]..}..
0ba0: 0c                                               .