System.Data.SQLite

Login
This project makes use of Eagle, provided by Mistachkin Systems.
Eagle: Secure Software Automation

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch fossil-2.0 Excluding Merge-Ins

This is equivalent to a diff from d9a9e08362 to 0e121167b8

2017-03-13
21:22
For the design-time components installer tool, make sure that verbose mode is honored for mock registry keys even in the event that a parameter has an invalid value. check-in: d1111b2d68 user: mistachkin tags: trunk
2017-03-08
03:41
Partially reverse changes from the previous check-in on this branch because Fossil 2.x is going to return the first 40 characters of SHA3 hashes. Closed-Leaf check-in: 0e121167b8 user: mistachkin tags: fossil-2.0
2017-02-27
17:56
Prepare for the proposed hash algorithm changes in Fossil 2.0. check-in: 5c2462c16b user: mistachkin tags: fossil-2.0
17:20
Make PATH handling more robust in the batch tools for MSBuild. check-in: d9a9e08362 user: mistachkin tags: trunk
2017-02-18
00:56
Feature the link to the news page more prominently on the landing page. check-in: ee8701edb5 user: mistachkin tags: trunk

Changes to Setup/updateFileInfo.tcl.

32
33
34
35
36
37
38
39

40
41
42
43


44
45
46
47
48
49
50
32
33
34
35
36
37
38

39
40
41


42
43
44
45
46
47
48
49
50







-
+


-
-
+
+







  #       decimal.
  #
  return [format %.2f [expr {[file size $fileName] / 1048576.0}]]
}

proc getFileHash { fileName } {
  #
  # NOTE: Return the SHA1 hash of the file, making use of Fossil via [exec] to
  # NOTE: Return the SHA3 hash of the file, making use of Fossil via [exec] to
  #       actually calculate it.
  #
  return [string trim [lindex [regexp -inline -nocase -- {[0-9A-F]{40} } \
      [exec fossil sha1sum $fileName]] 0]]
  return [string trim [lindex [regexp -inline -nocase -- {[0-9A-F]{56} } \
      [exec fossil sha3sum $fileName]] 0]]
}

#
# NOTE: Grab the fully qualified directory name of the directory containing
#       this script file.
#
set path [file normalize [file dirname [info script]]]
81
82
83
84
85
86
87
88

89
90
91
92
93
94
95
96


97
98
99
100

101
102
103

104
105
106
107
108
109
110
81
82
83
84
85
86
87

88
89
90
91
92
93
94


95
96
97
98
99

100
101
102

103
104
105
106
107
108
109
110







-
+






-
-
+
+



-
+


-
+







    [string length $outputDirectory] == 0} then {
  set outputDirectory [file join $path Output]
}

#
# NOTE: Setup the regular expression patterns with the necessary captures.
#       These patterns are mostly non-greedy; however, at the end we need to
#       match exactly 40 hexadecimal characters.  In theory, in Tcl, this could
#       match exactly 56 hexadecimal characters.  In theory, in Tcl, this could
#       have an undefined result due to the mixing of greedy and non-greedy
#       quantifiers; however, in practice, this seems to work properly.  Also,
#       this pattern assumes a particular structure for the [HTML] file to be
#       updated.
#
set pattern1 {<a\
    href=".*?/(.*?\.(?:exe|zip|nupkg))">.*?\((\d+?\.\d+?) MiB\).*?sha1:\
    ([0-9A-F]{40})}
    href=".*?/(.*?\.(?:exe|zip|nupkg))">.*?\((\d+?\.\d+?) MiB\).*?sha3:\
    ([0-9A-F]{56})}

set pattern2 {<a\
    href=".*?/package/.*?/\d+\.\d+\.\d+\.\d+">(.*?)</a>.*?\((\d+?\.\d+?)\
    MiB\).*?sha1: ([0-9A-F]{40})}
    MiB\).*?sha3: ([0-9A-F]{56})}

set pattern3 {href="/downloads/(.*?)"}
set pattern4 {\(sha1: ([0-9A-F]{40})\)}
set pattern4 {\(sha3: ([0-9A-F]{56})\)}
set pattern5 {\((\d+?\.\d+?) MiB\)}

#
# NOTE: Grab all the data from the file to be updated.
#
set data [readFile $updateFileName]

181
182
183
184
185
186
187
188

189
190
191
192
193
194
195
181
182
183
184
185
186
187

188
189
190
191
192
193
194
195







-
+








      incr start [string length $fileHash]
    }
  }
}

#
# NOTE: Attempt to verify that each file name now has the correct SHA1 hash
# NOTE: Attempt to verify that each file name now has the correct SHA3 hash
#       associated with it on the page.
#
foreach {dummy3 fileName} [regexp -all -inline -nocase -- $pattern3 $data] \
        {dummy4 fileHash} [regexp -all -inline -nocase -- $pattern4 $data] \
        {dummy5 fileSize} [regexp -all -inline -nocase -- $pattern5 $data] {
  #
  # NOTE: Get the fully qualified file name based on the configured
208
209
210
211
212
213
214
215

216
217
218
219
220
221
222
208
209
210
211
212
213
214

215
216
217
218
219
220
221
222







-
+







  #
  # NOTE: Make sure the file hash from the [modified] data matches the
  #       calculated hash for the file.  If not, fail.
  #
  set fullFileHash [getFileHash $fullFileName]

  if {$fileHash ne $fullFileHash} then {
    puts stdout "ERROR: SHA1 hash mismatch for\
    puts stdout "ERROR: SHA3 hash mismatch for\
        file \"$fullFileName\", have \"$fileHash\" (from data),\
        need \"$fullFileHash\" (calculated)."
  }

  set fullFileSize [getFileSize $fullFileName]

  if {$fileSize ne $fullFileSize} then {