System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 6018c985e9c08ba50a4139ac6fc75a8829402fac:


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 66 69 6c 65 32 2e 65 61 67 6c  .#..# file2.eagl
0060: 65 20 2d 2d 0d 0a 23 0d 0a 23 20 45 78 74 65 6e  e --..#..# Exten
0070: 73 69 62 6c 65 20 41 64 61 70 74 61 62 6c 65 20  sible Adaptable 
0080: 47 65 6e 65 72 61 6c 69 7a 65 64 20 4c 6f 67 69  Generalized Logi
0090: 63 20 45 6e 67 69 6e 65 20 28 45 61 67 6c 65 29  c Engine (Eagle)
00a0: 0d 0a 23 20 45 61 67 6c 65 20 46 69 6c 65 20 32  ..# Eagle File 2
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 72 65 63 6f 6e   procedure recon
0320: 66 69 67 75 72 65 73 20 74 68 65 20 73 70 65 63  figures the spec
0330: 69 66 69 65 64 20 63 68 61 6e 6e 65 6c 20 74 6f  ified channel to
0340: 20 66 75 6c 6c 20 41 53 43 49 49 0d 0a 20 20 23   full ASCII..  #
0350: 20 20 20 20 20 20 20 6d 6f 64 65 2e 0d 0a 20 20         mode...  
0360: 23 0d 0a 20 20 70 72 6f 63 20 6d 61 6b 65 41 73  #..  proc makeAs
0370: 63 69 69 43 68 61 6e 6e 65 6c 20 7b 20 63 68 61  ciiChannel { cha
0380: 6e 6e 65 6c 20 7d 20 7b 0d 0a 20 20 20 20 66 63  nnel } {..    fc
0390: 6f 6e 66 69 67 75 72 65 20 24 63 68 61 6e 6e 65  onfigure $channe
03a0: 6c 20 2d 65 6e 63 6f 64 69 6e 67 20 61 73 63 69  l -encoding asci
03b0: 69 20 2d 74 72 61 6e 73 6c 61 74 69 6f 6e 20 61  i -translation a
03c0: 75 74 6f 3b 20 23 20 41 53 43 49 49 20 54 45 58  uto; # ASCII TEX
03d0: 54 0d 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 23 0d 0a  T..  }.....  #..
03e0: 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 70    # NOTE: This p
03f0: 72 6f 63 65 64 75 72 65 20 72 65 61 64 73 20 61  rocedure reads a
0400: 6c 6c 20 64 61 74 61 20 66 72 6f 6d 20 74 68 65  ll data from the
0410: 20 73 70 65 63 69 66 69 65 64 20 41 53 43 49 49   specified ASCII
0420: 20 66 69 6c 65 20 61 6e 64 0d 0a 20 20 23 20 20   file and..  #  
0430: 20 20 20 20 20 72 65 74 75 72 6e 73 20 69 74 2e       returns it.
0440: 0d 0a 20 20 23 0d 0a 20 20 70 72 6f 63 20 72 65  ..  #..  proc re
0450: 61 64 41 73 63 69 69 46 69 6c 65 20 7b 20 66 69  adAsciiFile { fi
0460: 6c 65 4e 61 6d 65 20 7d 20 7b 0d 0a 20 20 20 20  leName } {..    
0470: 73 65 74 20 63 68 61 6e 6e 65 6c 20 5b 6f 70 65  set channel [ope
0480: 6e 20 24 66 69 6c 65 4e 61 6d 65 20 52 44 4f 4e  n $fileName RDON
0490: 4c 59 5d 0d 0a 20 20 20 20 6d 61 6b 65 41 73 63  LY]..    makeAsc
04a0: 69 69 43 68 61 6e 6e 65 6c 20 24 63 68 61 6e 6e  iiChannel $chann
04b0: 65 6c 0d 0a 20 20 20 20 73 65 74 20 72 65 73 75  el..    set resu
04c0: 6c 74 20 5b 72 65 61 64 20 24 63 68 61 6e 6e 65  lt [read $channe
04d0: 6c 5d 0d 0a 20 20 20 20 63 6c 6f 73 65 20 24 63  l]..    close $c
04e0: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 72 65 74 75  hannel..    retu
04f0: 72 6e 20 24 72 65 73 75 6c 74 0d 0a 20 20 7d 0d  rn $result..  }.
0500: 0a 0c 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
0510: 45 3a 20 54 68 69 73 20 70 72 6f 63 65 64 75 72  E: This procedur
0520: 65 20 77 72 69 74 65 73 20 61 6c 6c 20 64 61 74  e writes all dat
0530: 61 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  a to the specifi
0540: 65 64 20 41 53 43 49 49 20 66 69 6c 65 20 61 6e  ed ASCII file an
0550: 64 0d 0a 20 20 23 20 20 20 20 20 20 20 72 65 74  d..  #       ret
0560: 75 72 6e 73 20 61 6e 20 65 6d 70 74 79 20 73 74  urns an empty st
0570: 72 69 6e 67 2e 20 20 50 72 65 76 69 6f 75 73 20  ring.  Previous 
0580: 64 61 74 61 20 63 6f 6e 74 61 69 6e 65 64 20 69  data contained i
0590: 6e 20 74 68 65 20 66 69 6c 65 2c 0d 0a 20 20 23  n the file,..  #
05a0: 20 20 20 20 20 20 20 69 66 20 61 6e 79 2c 20 69         if any, i
05b0: 73 20 6c 6f 73 74 2e 0d 0a 20 20 23 0d 0a 20 20  s lost...  #..  
05c0: 70 72 6f 63 20 77 72 69 74 65 41 73 63 69 69 46  proc writeAsciiF
05d0: 69 6c 65 20 7b 20 66 69 6c 65 4e 61 6d 65 20 64  ile { fileName d
05e0: 61 74 61 20 7d 20 7b 0d 0a 20 20 20 20 73 65 74  ata } {..    set
05f0: 20 63 68 61 6e 6e 65 6c 20 5b 6f 70 65 6e 20 24   channel [open $
0600: 66 69 6c 65 4e 61 6d 65 20 7b 57 52 4f 4e 4c 59  fileName {WRONLY
0610: 20 43 52 45 41 54 20 54 52 55 4e 43 7d 5d 0d 0a   CREAT TRUNC}]..
0620: 20 20 20 20 6d 61 6b 65 41 73 63 69 69 43 68 61      makeAsciiCha
0630: 6e 6e 65 6c 20 24 63 68 61 6e 6e 65 6c 0d 0a 20  nnel $channel.. 
0640: 20 20 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69     puts -nonewli
0650: 6e 65 20 24 63 68 61 6e 6e 65 6c 20 24 64 61 74  ne $channel $dat
0660: 61 0d 0a 20 20 20 20 63 6c 6f 73 65 20 24 63 68  a..    close $ch
0670: 61 6e 6e 65 6c 0d 0a 20 20 20 20 72 65 74 75 72  annel..    retur
0680: 6e 20 22 22 0d 0a 20 20 7d 0d 0a 0c 0d 0a 20 20  n ""..  }.....  
0690: 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 54 68 69  #..  # NOTE: Thi
06a0: 73 20 70 72 6f 63 65 64 75 72 65 20 72 65 63 6f  s procedure reco
06b0: 6e 66 69 67 75 72 65 73 20 74 68 65 20 73 70 65  nfigures the spe
06c0: 63 69 66 69 65 64 20 63 68 61 6e 6e 65 6c 20 74  cified channel t
06d0: 6f 20 66 75 6c 6c 20 55 6e 69 63 6f 64 65 0d 0a  o full Unicode..
06e0: 20 20 23 20 20 20 20 20 20 20 6d 6f 64 65 2e 0d    #       mode..
06f0: 0a 20 20 23 0d 0a 20 20 70 72 6f 63 20 6d 61 6b  .  #..  proc mak
0700: 65 55 6e 69 63 6f 64 65 43 68 61 6e 6e 65 6c 20  eUnicodeChannel 
0710: 7b 20 63 68 61 6e 6e 65 6c 20 7d 20 7b 0d 0a 20  { channel } {.. 
0720: 20 20 20 66 63 6f 6e 66 69 67 75 72 65 20 24 63     fconfigure $c
0730: 68 61 6e 6e 65 6c 20 2d 65 6e 63 6f 64 69 6e 67  hannel -encoding
0740: 20 75 6e 69 63 6f 64 65 20 2d 74 72 61 6e 73 6c   unicode -transl
0750: 61 74 69 6f 6e 20 61 75 74 6f 3b 20 23 20 55 4e  ation auto; # UN
0760: 49 43 4f 44 45 20 54 45 58 54 0d 0a 20 20 7d 0d  ICODE TEXT..  }.
0770: 0a 0c 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
0780: 45 3a 20 54 68 69 73 20 70 72 6f 63 65 64 75 72  E: This procedur
0790: 65 20 72 65 61 64 73 20 61 6c 6c 20 64 61 74 61  e reads all data
07a0: 20 66 72 6f 6d 20 74 68 65 20 73 70 65 63 69 66   from the specif
07b0: 69 65 64 20 55 6e 69 63 6f 64 65 20 66 69 6c 65  ied Unicode file
07c0: 20 61 6e 64 0d 0a 20 20 23 20 20 20 20 20 20 20   and..  #       
07d0: 72 65 74 75 72 6e 73 20 69 74 2e 0d 0a 20 20 23  returns it...  #
07e0: 0d 0a 20 20 70 72 6f 63 20 72 65 61 64 55 6e 69  ..  proc readUni
07f0: 63 6f 64 65 46 69 6c 65 20 7b 20 66 69 6c 65 4e  codeFile { fileN
0800: 61 6d 65 20 7d 20 7b 0d 0a 20 20 20 20 73 65 74  ame } {..    set
0810: 20 63 68 61 6e 6e 65 6c 20 5b 6f 70 65 6e 20 24   channel [open $
0820: 66 69 6c 65 4e 61 6d 65 20 52 44 4f 4e 4c 59 5d  fileName RDONLY]
0830: 0d 0a 20 20 20 20 6d 61 6b 65 55 6e 69 63 6f 64  ..    makeUnicod
0840: 65 43 68 61 6e 6e 65 6c 20 24 63 68 61 6e 6e 65  eChannel $channe
0850: 6c 0d 0a 20 20 20 20 73 65 74 20 72 65 73 75 6c  l..    set resul
0860: 74 20 5b 72 65 61 64 20 24 63 68 61 6e 6e 65 6c  t [read $channel
0870: 5d 0d 0a 20 20 20 20 63 6c 6f 73 65 20 24 63 68  ]..    close $ch
0880: 61 6e 6e 65 6c 0d 0a 20 20 20 20 72 65 74 75 72  annel..    retur
0890: 6e 20 24 72 65 73 75 6c 74 0d 0a 20 20 7d 0d 0a  n $result..  }..
08a0: 0c 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
08b0: 3a 20 54 68 69 73 20 70 72 6f 63 65 64 75 72 65  : This procedure
08c0: 20 77 72 69 74 65 73 20 61 6c 6c 20 64 61 74 61   writes all data
08d0: 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65   to the specifie
08e0: 64 20 55 6e 69 63 6f 64 65 20 66 69 6c 65 20 61  d Unicode file a
08f0: 6e 64 0d 0a 20 20 23 20 20 20 20 20 20 20 72 65  nd..  #       re
0900: 74 75 72 6e 73 20 61 6e 20 65 6d 70 74 79 20 73  turns an empty s
0910: 74 72 69 6e 67 2e 20 20 50 72 65 76 69 6f 75 73  tring.  Previous
0920: 20 64 61 74 61 20 63 6f 6e 74 61 69 6e 65 64 20   data contained 
0930: 69 6e 20 74 68 65 20 66 69 6c 65 2c 0d 0a 20 20  in the file,..  
0940: 23 20 20 20 20 20 20 20 69 66 20 61 6e 79 2c 20  #       if any, 
0950: 69 73 20 6c 6f 73 74 2e 0d 0a 20 20 23 0d 0a 20  is lost...  #.. 
0960: 20 70 72 6f 63 20 77 72 69 74 65 55 6e 69 63 6f   proc writeUnico
0970: 64 65 46 69 6c 65 20 7b 20 66 69 6c 65 4e 61 6d  deFile { fileNam
0980: 65 20 64 61 74 61 20 7d 20 7b 0d 0a 20 20 20 20  e data } {..    
0990: 73 65 74 20 63 68 61 6e 6e 65 6c 20 5b 6f 70 65  set channel [ope
09a0: 6e 20 24 66 69 6c 65 4e 61 6d 65 20 7b 57 52 4f  n $fileName {WRO
09b0: 4e 4c 59 20 43 52 45 41 54 20 54 52 55 4e 43 7d  NLY CREAT TRUNC}
09c0: 5d 0d 0a 20 20 20 20 6d 61 6b 65 55 6e 69 63 6f  ]..    makeUnico
09d0: 64 65 43 68 61 6e 6e 65 6c 20 24 63 68 61 6e 6e  deChannel $chann
09e0: 65 6c 0d 0a 20 20 20 20 70 75 74 73 20 2d 6e 6f  el..    puts -no
09f0: 6e 65 77 6c 69 6e 65 20 24 63 68 61 6e 6e 65 6c  newline $channel
0a00: 20 24 64 61 74 61 0d 0a 20 20 20 20 63 6c 6f 73   $data..    clos
0a10: 65 20 24 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20  e $channel..    
0a20: 72 65 74 75 72 6e 20 22 22 0d 0a 20 20 7d 0d 0a  return ""..  }..
0a30: 0c 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
0a40: 3a 20 54 68 69 73 20 70 72 6f 63 65 64 75 72 65  : This procedure
0a50: 20 72 65 63 6f 6e 66 69 67 75 72 65 73 20 74 68   reconfigures th
0a60: 65 20 73 70 65 63 69 66 69 65 64 20 63 68 61 6e  e specified chan
0a70: 6e 65 6c 20 66 6f 72 20 75 73 65 20 62 79 20 74  nel for use by t
0a80: 68 65 0d 0a 20 20 23 20 20 20 20 20 20 20 6c 6f  he..  #       lo
0a90: 67 67 69 6e 67 20 73 75 62 73 79 73 74 65 6d 2e  gging subsystem.
0aa0: 0d 0a 20 20 23 0d 0a 20 20 70 72 6f 63 20 6d 61  ..  #..  proc ma
0ab0: 6b 65 4c 6f 67 43 68 61 6e 6e 65 6c 20 7b 20 63  keLogChannel { c
0ac0: 68 61 6e 6e 65 6c 20 7d 20 7b 0d 0a 20 20 20 20  hannel } {..    
0ad0: 73 65 74 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20  set translation 
0ae0: 5b 65 78 70 72 20 7b 5b 69 73 45 61 67 6c 65 5d  [expr {[isEagle]
0af0: 20 3f 20 22 70 72 6f 74 6f 63 6f 6c 22 20 3a 20   ? "protocol" : 
0b00: 22 61 75 74 6f 22 7d 5d 0d 0a 20 20 20 20 66 63  "auto"}]..    fc
0b10: 6f 6e 66 69 67 75 72 65 20 24 63 68 61 6e 6e 65  onfigure $channe
0b20: 6c 20 2d 65 6e 63 6f 64 69 6e 67 20 62 69 6e 61  l -encoding bina
0b30: 72 79 20 2d 74 72 61 6e 73 6c 61 74 69 6f 6e 20  ry -translation 
0b40: 24 74 72 61 6e 73 6c 61 74 69 6f 6e 3b 20 23 20  $translation; # 
0b50: 4c 4f 47 20 44 41 54 41 0d 0a 20 20 7d 0d 0a 0c  LOG DATA..  }...
0b60: 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
0b70: 20 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 20   This procedure 
0b80: 61 70 70 65 6e 64 73 20 64 61 74 61 20 74 6f 20  appends data to 
0b90: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6c 6f  the specified lo
0ba0: 67 20 64 61 74 61 20 66 69 6c 65 20 61 6e 64 0d  g data file and.
0bb0: 0a 20 20 23 20 20 20 20 20 20 20 72 65 74 75 72  .  #       retur
0bc0: 6e 73 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  ns an empty stri
0bd0: 6e 67 2e 20 20 50 72 65 76 69 6f 75 73 20 64 61  ng.  Previous da
0be0: 74 61 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20  ta contained in 
0bf0: 74 68 65 20 66 69 6c 65 2c 0d 0a 20 20 23 20 20  the file,..  #  
0c00: 20 20 20 20 20 69 66 20 61 6e 79 2c 20 69 73 20       if any, is 
0c10: 70 72 65 73 65 72 76 65 64 2e 0d 0a 20 20 23 0d  preserved...  #.
0c20: 0a 20 20 70 72 6f 63 20 61 70 70 65 6e 64 4c 6f  .  proc appendLo
0c30: 67 46 69 6c 65 20 7b 20 66 69 6c 65 4e 61 6d 65  gFile { fileName
0c40: 20 64 61 74 61 20 7d 20 7b 0d 0a 20 20 20 20 73   data } {..    s
0c50: 65 74 20 63 68 61 6e 6e 65 6c 20 5b 6f 70 65 6e  et channel [open
0c60: 20 24 66 69 6c 65 4e 61 6d 65 20 7b 57 52 4f 4e   $fileName {WRON
0c70: 4c 59 20 43 52 45 41 54 20 41 50 50 45 4e 44 7d  LY CREAT APPEND}
0c80: 5d 0d 0a 20 20 20 20 6d 61 6b 65 4c 6f 67 43 68  ]..    makeLogCh
0c90: 61 6e 6e 65 6c 20 24 63 68 61 6e 6e 65 6c 0d 0a  annel $channel..
0ca0: 20 20 20 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c      puts -nonewl
0cb0: 69 6e 65 20 24 63 68 61 6e 6e 65 6c 20 24 64 61  ine $channel $da
0cc0: 74 61 0d 0a 20 20 20 20 63 6c 6f 73 65 20 24 63  ta..    close $c
0cd0: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 72 65 74 75  hannel..    retu
0ce0: 72 6e 20 22 22 0d 0a 20 20 7d 0d 0a 0c 0d 0a 20  rn ""..  }..... 
0cf0: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 54 68   #..  # NOTE: Th
0d00: 69 73 20 70 72 6f 63 65 64 75 72 65 20 61 70 70  is procedure app
0d10: 65 6e 64 73 20 64 61 74 61 20 74 6f 20 74 68 65  ends data to the
0d20: 20 73 70 65 63 69 66 69 65 64 20 73 68 61 72 65   specified share
0d30: 64 20 6c 6f 67 20 64 61 74 61 0d 0a 20 20 23 20  d log data..  # 
0d40: 20 20 20 20 20 20 66 69 6c 65 20 61 6e 64 20 72        file and r
0d50: 65 74 75 72 6e 73 20 61 6e 20 65 6d 70 74 79 20  eturns an empty 
0d60: 73 74 72 69 6e 67 2e 20 20 50 72 65 76 69 6f 75  string.  Previou
0d70: 73 20 64 61 74 61 20 63 6f 6e 74 61 69 6e 65 64  s data contained
0d80: 20 69 6e 0d 0a 20 20 23 20 20 20 20 20 20 20 74   in..  #       t
0d90: 68 65 20 66 69 6c 65 2c 20 69 66 20 61 6e 79 2c  he file, if any,
0da0: 20 69 73 20 70 72 65 73 65 72 76 65 64 2e 0d 0a   is preserved...
0db0: 20 20 23 0d 0a 20 20 70 72 6f 63 20 61 70 70 65    #..  proc appe
0dc0: 6e 64 53 68 61 72 65 64 4c 6f 67 46 69 6c 65 20  ndSharedLogFile 
0dd0: 7b 20 66 69 6c 65 4e 61 6d 65 20 64 61 74 61 20  { fileName data 
0de0: 7d 20 7b 0d 0a 20 20 20 20 73 65 74 20 63 6f 6d  } {..    set com
0df0: 6d 61 6e 64 20 5b 6c 69 73 74 20 6f 70 65 6e 20  mand [list open 
0e00: 24 66 69 6c 65 4e 61 6d 65 20 7b 57 52 4f 4e 4c  $fileName {WRONL
0e10: 59 20 43 52 45 41 54 20 41 50 50 45 4e 44 7d 5d  Y CREAT APPEND}]
0e20: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
0e30: 20 48 41 43 4b 3a 20 54 63 6c 20 61 70 70 65 61   HACK: Tcl appea
0e40: 72 73 20 74 6f 20 64 6f 20 74 68 69 73 20 62 79  rs to do this by
0e50: 20 64 65 66 61 75 6c 74 3b 20 68 6f 77 65 76 65   default; howeve
0e60: 72 20 45 61 67 6c 65 20 64 6f 65 73 20 6e 6f 74  r Eagle does not
0e70: 20 61 6e 64 0d 0a 20 20 20 20 23 20 20 20 20 20   and..    #     
0e80: 20 20 77 69 6c 6c 20 6e 6f 74 2e 20 20 54 68 65    will not.  The
0e90: 72 65 66 6f 72 65 2c 20 6d 61 6e 75 61 6c 6c 79  refore, manually
0ea0: 20 61 64 64 20 74 68 65 20 2d 73 68 61 72 65 20   add the -share 
0eb0: 6f 70 74 69 6f 6e 20 74 6f 20 74 68 65 0d 0a 20  option to the.. 
0ec0: 20 20 20 23 20 20 20 20 20 20 20 63 6f 6d 6d 61     #       comma
0ed0: 6e 64 20 69 66 20 72 75 6e 6e 69 6e 67 20 69 6e  nd if running in
0ee0: 20 45 61 67 6c 65 2e 0d 0a 20 20 20 20 23 0d 0a   Eagle...    #..
0ef0: 20 20 20 20 69 66 20 7b 5b 69 73 45 61 67 6c 65      if {[isEagle
0f00: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
0f10: 20 6c 61 70 70 65 6e 64 20 63 6f 6d 6d 61 6e 64   lappend command
0f20: 20 30 20 66 69 6c 65 20 2d 73 68 61 72 65 20 72   0 file -share r
0f30: 65 61 64 57 72 69 74 65 0d 0a 20 20 20 20 7d 0d  eadWrite..    }.
0f40: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
0f50: 4e 4f 54 45 3a 20 4f 70 65 6e 20 74 68 65 20 66  NOTE: Open the f
0f60: 69 6c 65 20 75 73 69 6e 67 20 74 68 65 20 63 6f  ile using the co
0f70: 6d 6d 61 6e 64 20 63 6f 6e 73 74 72 75 63 74 65  mmand constructe
0f80: 64 20 61 62 6f 76 65 2c 20 63 6f 6e 66 69 67 75  d above, configu
0f90: 72 65 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  re..    #       
0fa0: 74 68 65 20 63 68 61 6e 6e 65 6c 20 66 6f 72 20  the channel for 
0fb0: 62 69 6e 61 72 79 20 64 61 74 61 2c 20 61 6e 64  binary data, and
0fc0: 20 6f 75 74 70 75 74 20 74 68 65 20 64 61 74 61   output the data
0fd0: 20 74 6f 20 69 74 2e 0d 0a 20 20 20 20 23 0d 0a   to it...    #..
0fe0: 20 20 20 20 73 65 74 20 63 68 61 6e 6e 65 6c 20      set channel 
0ff0: 5b 65 76 61 6c 20 24 63 6f 6d 6d 61 6e 64 5d 0d  [eval $command].
1000: 0a 20 20 20 20 6d 61 6b 65 4c 6f 67 43 68 61 6e  .    makeLogChan
1010: 6e 65 6c 20 24 63 68 61 6e 6e 65 6c 0d 0a 20 20  nel $channel..  
1020: 20 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e    puts -nonewlin
1030: 65 20 24 63 68 61 6e 6e 65 6c 20 24 64 61 74 61  e $channel $data
1040: 3b 20 66 6c 75 73 68 20 24 63 68 61 6e 6e 65 6c  ; flush $channel
1050: 0d 0a 20 20 20 20 63 6c 6f 73 65 20 24 63 68 61  ..    close $cha
1060: 6e 6e 65 6c 0d 0a 20 20 20 20 72 65 74 75 72 6e  nnel..    return
1070: 20 22 22 0d 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 23   ""..  }.....  #
1080: 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73  ..  # NOTE: This
1090: 20 70 72 6f 63 65 64 75 72 65 20 72 65 61 64 73   procedure reads
10a0: 20 61 6c 6c 20 64 61 74 61 20 66 72 6f 6d 20 74   all data from t
10b0: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 68 61  he specified sha
10c0: 72 65 64 20 62 69 6e 61 72 79 0d 0a 20 20 23 20  red binary..  # 
10d0: 20 20 20 20 20 20 66 69 6c 65 20 61 6e 64 20 72        file and r
10e0: 65 74 75 72 6e 73 20 69 74 2e 0d 0a 20 20 23 0d  eturns it...  #.
10f0: 0a 20 20 70 72 6f 63 20 72 65 61 64 53 68 61 72  .  proc readShar
1100: 65 64 46 69 6c 65 20 7b 20 66 69 6c 65 4e 61 6d  edFile { fileNam
1110: 65 20 7d 20 7b 0d 0a 20 20 20 20 73 65 74 20 63  e } {..    set c
1120: 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 6f 70 65  ommand [list ope
1130: 6e 20 24 66 69 6c 65 4e 61 6d 65 20 52 44 4f 4e  n $fileName RDON
1140: 4c 59 5d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20  LY]....    #..  
1150: 20 20 23 20 48 41 43 4b 3a 20 54 63 6c 20 61 70    # HACK: Tcl ap
1160: 70 65 61 72 73 20 74 6f 20 64 6f 20 74 68 69 73  pears to do this
1170: 20 62 79 20 64 65 66 61 75 6c 74 3b 20 68 6f 77   by default; how
1180: 65 76 65 72 20 45 61 67 6c 65 20 64 6f 65 73 20  ever Eagle does 
1190: 6e 6f 74 20 61 6e 64 0d 0a 20 20 20 20 23 20 20  not and..    #  
11a0: 20 20 20 20 20 77 69 6c 6c 20 6e 6f 74 2e 20 20       will not.  
11b0: 54 68 65 72 65 66 6f 72 65 2c 20 6d 61 6e 75 61  Therefore, manua
11c0: 6c 6c 79 20 61 64 64 20 74 68 65 20 2d 73 68 61  lly add the -sha
11d0: 72 65 20 6f 70 74 69 6f 6e 20 74 6f 20 74 68 65  re option to the
11e0: 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 63 6f  ..    #       co
11f0: 6d 6d 61 6e 64 20 69 66 20 72 75 6e 6e 69 6e 67  mmand if running
1200: 20 69 6e 20 45 61 67 6c 65 2e 0d 0a 20 20 20 20   in Eagle...    
1210: 23 0d 0a 20 20 20 20 69 66 20 7b 5b 69 73 45 61  #..    if {[isEa
1220: 67 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  gle]} then {..  
1230: 20 20 20 20 6c 61 70 70 65 6e 64 20 63 6f 6d 6d      lappend comm
1240: 61 6e 64 20 30 20 66 69 6c 65 20 2d 73 68 61 72  and 0 file -shar
1250: 65 20 72 65 61 64 57 72 69 74 65 0d 0a 20 20 20  e readWrite..   
1260: 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
1270: 20 23 20 4e 4f 54 45 3a 20 4f 70 65 6e 20 74 68   # NOTE: Open th
1280: 65 20 66 69 6c 65 20 75 73 69 6e 67 20 74 68 65  e file using the
1290: 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 74 72 75   command constru
12a0: 63 74 65 64 20 61 62 6f 76 65 2c 20 63 6f 6e 66  cted above, conf
12b0: 69 67 75 72 65 0d 0a 20 20 20 20 23 20 20 20 20  igure..    #    
12c0: 20 20 20 74 68 65 20 63 68 61 6e 6e 65 6c 20 66     the channel f
12d0: 6f 72 20 62 69 6e 61 72 79 20 64 61 74 61 2c 20  or binary data, 
12e0: 61 6e 64 20 6f 75 74 70 75 74 20 74 68 65 20 64  and output the d
12f0: 61 74 61 20 74 6f 20 69 74 2e 0d 0a 20 20 20 20  ata to it...    
1300: 23 0d 0a 20 20 20 20 73 65 74 20 63 68 61 6e 6e  #..    set chann
1310: 65 6c 20 5b 65 76 61 6c 20 24 63 6f 6d 6d 61 6e  el [eval $comman
1320: 64 5d 0d 0a 20 20 20 20 6d 61 6b 65 42 69 6e 61  d]..    makeBina
1330: 72 79 43 68 61 6e 6e 65 6c 20 24 63 68 61 6e 6e  ryChannel $chann
1340: 65 6c 0d 0a 20 20 20 20 73 65 74 20 72 65 73 75  el..    set resu
1350: 6c 74 20 5b 72 65 61 64 20 24 63 68 61 6e 6e 65  lt [read $channe
1360: 6c 5d 0d 0a 20 20 20 20 63 6c 6f 73 65 20 24 63  l]..    close $c
1370: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 72 65 74 75  hannel..    retu
1380: 72 6e 20 24 72 65 73 75 6c 74 0d 0a 20 20 7d 0d  rn $result..  }.
1390: 0a 0c 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
13a0: 45 3a 20 54 68 69 73 20 70 72 6f 63 65 64 75 72  E: This procedur
13b0: 65 20 61 70 70 65 6e 64 73 20 64 61 74 61 20 74  e appends data t
13c0: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
13d0: 73 68 61 72 65 64 20 62 69 6e 61 72 79 20 66 69  shared binary fi
13e0: 6c 65 0d 0a 20 20 23 20 20 20 20 20 20 20 61 6e  le..  #       an
13f0: 64 20 72 65 74 75 72 6e 73 20 61 6e 20 65 6d 70  d returns an emp
1400: 74 79 20 73 74 72 69 6e 67 2e 20 20 50 72 65 76  ty string.  Prev
1410: 69 6f 75 73 20 64 61 74 61 20 63 6f 6e 74 61 69  ious data contai
1420: 6e 65 64 20 69 6e 20 74 68 65 0d 0a 20 20 23 20  ned in the..  # 
1430: 20 20 20 20 20 20 66 69 6c 65 2c 20 69 66 20 61        file, if a
1440: 6e 79 2c 20 69 73 20 70 72 65 73 65 72 76 65 64  ny, is preserved
1450: 2e 0d 0a 20 20 23 0d 0a 20 20 70 72 6f 63 20 61  ...  #..  proc a
1460: 70 70 65 6e 64 53 68 61 72 65 64 46 69 6c 65 20  ppendSharedFile 
1470: 7b 20 66 69 6c 65 4e 61 6d 65 20 64 61 74 61 20  { fileName data 
1480: 7d 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  } {..    #..    
1490: 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 73 68 6f  # NOTE: This sho
14a0: 75 6c 64 20 77 6f 72 6b 20 70 72 6f 70 65 72 6c  uld work properl
14b0: 79 20 69 6e 20 62 6f 74 68 20 54 63 6c 20 61 6e  y in both Tcl an
14c0: 64 20 45 61 67 6c 65 2e 0d 0a 20 20 20 20 23 0d  d Eagle...    #.
14d0: 0a 20 20 20 20 73 65 74 20 63 6f 6d 6d 61 6e 64  .    set command
14e0: 20 5b 6c 69 73 74 20 6f 70 65 6e 20 24 66 69 6c   [list open $fil
14f0: 65 4e 61 6d 65 20 7b 57 52 4f 4e 4c 59 20 43 52  eName {WRONLY CR
1500: 45 41 54 20 41 50 50 45 4e 44 7d 5d 0d 0a 0d 0a  EAT APPEND}]....
1510: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 48 41 43      #..    # HAC
1520: 4b 3a 20 54 63 6c 20 61 70 70 65 61 72 73 20 74  K: Tcl appears t
1530: 6f 20 64 6f 20 74 68 69 73 20 62 79 20 64 65 66  o do this by def
1540: 61 75 6c 74 3b 20 68 6f 77 65 76 65 72 20 45 61  ault; however Ea
1550: 67 6c 65 20 64 6f 65 73 20 6e 6f 74 20 61 6e 64  gle does not and
1560: 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 77 69  ..    #       wi
1570: 6c 6c 20 6e 6f 74 2e 20 20 54 68 65 72 65 66 6f  ll not.  Therefo
1580: 72 65 2c 20 6d 61 6e 75 61 6c 6c 79 20 61 64 64  re, manually add
1590: 20 74 68 65 20 2d 73 68 61 72 65 20 6f 70 74 69   the -share opti
15a0: 6f 6e 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 23  on to the..    #
15b0: 20 20 20 20 20 20 20 63 6f 6d 6d 61 6e 64 20 69         command i
15c0: 66 20 72 75 6e 6e 69 6e 67 20 69 6e 20 45 61 67  f running in Eag
15d0: 6c 65 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  le...    #..    
15e0: 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d 7d 20 74  if {[isEagle]} t
15f0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 6c 61 70  hen {..      lap
1600: 70 65 6e 64 20 63 6f 6d 6d 61 6e 64 20 30 20 66  pend command 0 f
1610: 69 6c 65 20 2d 73 68 61 72 65 20 72 65 61 64 57  ile -share readW
1620: 72 69 74 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  rite..    }.... 
1630: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
1640: 3a 20 4f 70 65 6e 20 74 68 65 20 66 69 6c 65 20  : Open the file 
1650: 75 73 69 6e 67 20 74 68 65 20 63 6f 6d 6d 61 6e  using the comman
1660: 64 20 63 6f 6e 73 74 72 75 63 74 65 64 20 61 62  d constructed ab
1670: 6f 76 65 2c 20 63 6f 6e 66 69 67 75 72 65 0d 0a  ove, configure..
1680: 20 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20      #       the 
1690: 63 68 61 6e 6e 65 6c 20 66 6f 72 20 62 69 6e 61  channel for bina
16a0: 72 79 20 64 61 74 61 2c 20 61 6e 64 20 6f 75 74  ry data, and out
16b0: 70 75 74 20 74 68 65 20 64 61 74 61 20 74 6f 20  put the data to 
16c0: 69 74 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  it...    #..    
16d0: 73 65 74 20 63 68 61 6e 6e 65 6c 20 5b 65 76 61  set channel [eva
16e0: 6c 20 24 63 6f 6d 6d 61 6e 64 5d 0d 0a 20 20 20  l $command]..   
16f0: 20 6d 61 6b 65 42 69 6e 61 72 79 43 68 61 6e 6e   makeBinaryChann
1700: 65 6c 20 24 63 68 61 6e 6e 65 6c 0d 0a 20 20 20  el $channel..   
1710: 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65   puts -nonewline
1720: 20 24 63 68 61 6e 6e 65 6c 20 24 64 61 74 61 3b   $channel $data;
1730: 20 66 6c 75 73 68 20 24 63 68 61 6e 6e 65 6c 0d   flush $channel.
1740: 0a 20 20 20 20 63 6c 6f 73 65 20 24 63 68 61 6e  .    close $chan
1750: 6e 65 6c 0d 0a 20 20 20 20 72 65 74 75 72 6e 20  nel..    return 
1760: 22 22 0d 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 23 0d  ""..  }.....  #.
1770: 0a 20 20 23 20 4e 4f 54 45 3a 20 50 72 6f 76 69  .  # NOTE: Provi
1780: 64 65 20 74 68 65 20 45 61 67 6c 65 20 22 66 69  de the Eagle "fi
1790: 6c 65 20 74 79 70 65 73 22 20 70 61 63 6b 61 67  le types" packag
17a0: 65 20 74 6f 20 74 68 65 20 69 6e 74 65 72 70 72  e to the interpr
17b0: 65 74 65 72 2e 0d 0a 20 20 23 0d 0a 20 20 70 61  eter...  #..  pa
17c0: 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 45 61  ckage provide Ea
17d0: 67 6c 65 2e 46 69 6c 65 2e 54 79 70 65 73 20 5c  gle.File.Types \
17e0: 0d 0a 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 73  ..    [expr {[is
17f0: 45 61 67 6c 65 5d 20 3f 20 5b 69 6e 66 6f 20 65  Eagle] ? [info e
1800: 6e 67 69 6e 65 20 50 61 74 63 68 4c 65 76 65 6c  ngine PatchLevel
1810: 5d 20 3a 20 22 31 2e 30 22 7d 5d 0d 0a 7d 0d 0a  ] : "1.0"}]..}..
1820: 0c                                               .