System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 46990c6357a5e1ede3a80b313a13fd5f677cd64a:


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 63 6f 6d 6d 6f 6e 2e 65 61 67  .#..# common.eag
0060: 6c 65 20 2d 2d 0d 0a 23 0d 0a 23 20 57 72 69 74  le --..#..# Writ
0070: 74 65 6e 20 62 79 20 4a 6f 65 20 4d 69 73 74 61  ten by Joe Mista
0080: 63 68 6b 69 6e 2e 0d 0a 23 20 52 65 6c 65 61 73  chkin...# Releas
0090: 65 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63  ed to the public
00a0: 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20   domain, use at 
00b0: 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a  your own risk!..
00c0: 23 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  #..#############
00d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0110: 23 23 0d 0a 0d 0a 69 66 20 7b 5b 69 73 45 61 67  ##....if {[isEag
0120: 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 70  le]} then {..  p
0130: 72 6f 63 20 6c 6f 61 64 41 73 73 65 6d 62 6c 79  roc loadAssembly
0140: 20 7b 20 66 69 6c 65 4e 61 6d 65 20 7d 20 7b 0d   { fileName } {.
0150: 0a 20 20 20 20 73 65 74 20 66 69 6c 65 4e 61 6d  .    set fileNam
0160: 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 66 69  e [file join [fi
0170: 6c 65 20 64 69 72 6e 61 6d 65 20 24 3a 3a 70 61  le dirname $::pa
0180: 74 68 5d 20 62 69 6e 20 5c 0d 0a 20 20 20 20 20  th] bin \..     
0190: 20 20 20 5b 65 78 70 72 20 7b 5b 68 61 76 65 43     [expr {[haveC
01a0: 6f 6e 73 74 72 61 69 6e 74 20 69 6d 61 67 65 52  onstraint imageR
01b0: 75 6e 74 69 6d 65 34 30 5d 20 3f 20 22 32 30 31  untime40] ? "201
01c0: 30 22 20 3a 20 22 32 30 30 38 22 7d 5d 20 5c 0d  0" : "2008"}] \.
01d0: 0a 20 20 20 20 20 20 20 20 24 3a 3a 74 65 73 74  .        $::test
01e0: 5f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 62  _configuration b
01f0: 69 6e 20 24 66 69 6c 65 4e 61 6d 65 5d 0d 0a 0d  in $fileName]...
0200: 0a 20 20 20 20 69 66 20 7b 5b 63 61 74 63 68 20  .    if {[catch 
0210: 7b 73 65 74 20 61 73 73 65 6d 62 6c 79 20 5c 0d  {set assembly \.
0220: 0a 20 20 20 20 20 20 20 20 5b 6f 62 6a 65 63 74  .        [object
0230: 20 6c 6f 61 64 20 2d 6c 6f 61 64 74 79 70 65 20   load -loadtype 
0240: 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 5d 7d  File $fileName]}
0250: 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  ] == 0} then {..
0260: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
0270: 20 4e 4f 54 45 3a 20 4e 6f 77 2c 20 61 64 64 20   NOTE: Now, add 
0280: 74 68 65 20 6e 65 63 65 73 73 61 72 79 20 74 65  the necessary te
0290: 73 74 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a  st constraint...
02a0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 61        #..      a
02b0: 64 64 43 6f 6e 73 74 72 61 69 6e 74 20 5b 66 69  ddConstraint [fi
02c0: 6c 65 20 72 6f 6f 74 6e 61 6d 65 20 5b 66 69 6c  le rootname [fil
02d0: 65 20 74 61 69 6c 20 24 66 69 6c 65 4e 61 6d 65  e tail $fileName
02e0: 5d 5d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20  ]]....      #.. 
02f0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 52 65 74       # NOTE: Ret
0300: 75 72 6e 20 74 68 65 20 66 75 6c 6c 20 70 61 74  urn the full pat
0310: 68 20 6f 66 20 74 68 65 20 6c 6f 61 64 65 64 20  h of the loaded 
0320: 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  file...      #..
0330: 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 66 69        return $fi
0340: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 7d 0d 0a 0d  leName..    }...
0350: 0a 20 20 20 20 72 65 74 75 72 6e 20 22 22 0d 0a  .    return ""..
0360: 20 20 7d 0d 0a 0c 0d 0a 20 20 70 72 6f 63 20 73    }.....  proc s
0370: 65 74 75 70 44 62 20 7b 66 69 6c 65 4e 61 6d 65  etupDb {fileName
0380: 20 7b 6d 6f 64 65 20 22 22 7d 20 7b 76 61 72 4e   {mode ""} {varN
0390: 61 6d 65 20 64 62 7d 7d 20 7b 0d 0a 20 20 20 20  ame db}} {..    
03a0: 73 65 74 20 66 69 6c 65 4e 61 6d 65 20 5b 66 69  set fileName [fi
03b0: 6c 65 20 6a 6f 69 6e 20 5b 67 65 74 54 65 6d 70  le join [getTemp
03c0: 6f 72 61 72 79 50 61 74 68 5d 20 24 66 69 6c 65  oraryPath] $file
03d0: 4e 61 6d 65 5d 0d 0a 20 20 20 20 63 61 74 63 68  Name]..    catch
03e0: 20 7b 66 69 6c 65 20 64 65 6c 65 74 65 20 24 66   {file delete $f
03f0: 69 6c 65 4e 61 6d 65 7d 0d 0a 20 20 20 20 75 70  ileName}..    up
0400: 76 61 72 20 31 20 24 76 61 72 4e 61 6d 65 20 64  var 1 $varName d
0410: 62 0d 0a 0d 0a 20 20 20 20 73 65 74 20 63 6f 6e  b....    set con
0420: 6e 65 63 74 69 6f 6e 20 7b 44 61 74 61 20 53 6f  nection {Data So
0430: 75 72 63 65 3d 24 7b 66 69 6c 65 4e 61 6d 65 7d  urce=${fileName}
0440: 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 73 74  }....    if {[st
0450: 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6d 6f 64  ring length $mod
0460: 65 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  e] > 0} then {..
0470: 20 20 20 20 20 20 61 70 70 65 6e 64 20 63 6f 6e        append con
0480: 6e 65 63 74 69 6f 6e 20 7b 3b 4a 6f 75 72 6e 61  nection {;Journa
0490: 6c 20 4d 6f 64 65 3d 24 7b 6d 6f 64 65 7d 7d 0d  l Mode=${mode}}.
04a0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 73 65  .    }....    se
04b0: 74 20 64 62 20 5b 73 71 6c 20 6f 70 65 6e 20 2d  t db [sql open -
04c0: 74 79 70 65 20 53 51 4c 69 74 65 20 5b 73 75 62  type SQLite [sub
04d0: 73 74 20 24 63 6f 6e 6e 65 63 74 69 6f 6e 5d 5d  st $connection]]
04e0: 0d 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 70 72 6f 63  ..  }.....  proc
04f0: 20 63 6c 65 61 6e 75 70 44 62 20 7b 66 69 6c 65   cleanupDb {file
0500: 4e 61 6d 65 20 7b 76 61 72 4e 61 6d 65 20 64 62  Name {varName db
0510: 7d 7d 20 7b 0d 0a 20 20 20 20 75 70 76 61 72 20  }} {..    upvar 
0520: 31 20 24 76 61 72 4e 61 6d 65 20 64 62 0d 0a 20  1 $varName db.. 
0530: 20 20 20 63 61 74 63 68 20 7b 73 71 6c 20 63 6c     catch {sql cl
0540: 6f 73 65 20 24 64 62 7d 0d 0a 20 20 20 20 63 61  ose $db}..    ca
0550: 74 63 68 20 7b 66 69 6c 65 20 64 65 6c 65 74 65  tch {file delete
0560: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 67 65 74   [file join [get
0570: 54 65 6d 70 6f 72 61 72 79 50 61 74 68 5d 20 24  TemporaryPath] $
0580: 66 69 6c 65 4e 61 6d 65 5d 7d 0d 0a 20 20 7d 0d  fileName]}..  }.
0590: 0a 7d 0d 0a                                      .}..