Hex Artifact Content
Not logged in

Artifact d98651431b7344ed481cdddad18890c249395ed4:

File tools/cvs2fossil/lib/c2f_pass.tcl part of check-in [be2f99e6a4] - Merge with aku's branch. by drh on 2008-02-13 14:44:50. Also file tools/cvs2fossil/lib/c2f_pass.tcl part of check-in [7817ff2212] - Time information extended to include a total summed over all passes. Output extended to include formatted time data (hours, minutes, seconds). by aku on 2008-02-12 05:39:21.

0000: 23 23 20 2d 2a 2d 20 74 63 6c 20 2d 2a 2d 0a 23  ## -*- tcl -*-.#
0010: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20   # ## ### ##### 
0020: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23  ######## #######
0030: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23  ###### #########
0040: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 20  ############.## 
0050: 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30  Copyright (c) 20
0060: 30 37 20 41 6e 64 72 65 61 73 20 4b 75 70 72 69  07 Andreas Kupri
0070: 65 73 2e 0a 23 0a 23 20 54 68 69 73 20 73 6f 66  es..#.# This sof
0080: 74 77 61 72 65 20 69 73 20 6c 69 63 65 6e 73 65  tware is license
0090: 64 20 61 73 20 64 65 73 63 72 69 62 65 64 20 69  d as described i
00a0: 6e 20 74 68 65 20 66 69 6c 65 20 4c 49 43 45 4e  n the file LICEN
00b0: 53 45 2c 20 77 68 69 63 68 0a 23 20 79 6f 75 20  SE, which.# you 
00c0: 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65  should have rece
00d0: 69 76 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  ived as part of 
00e0: 74 68 69 73 20 64 69 73 74 72 69 62 75 74 69 6f  this distributio
00f0: 6e 2e 0a 23 0a 23 20 54 68 69 73 20 73 6f 66 74  n..#.# This soft
0100: 77 61 72 65 20 63 6f 6e 73 69 73 74 73 20 6f 66  ware consists of
0110: 20 76 6f 6c 75 6e 74 61 72 79 20 63 6f 6e 74 72   voluntary contr
0120: 69 62 75 74 69 6f 6e 73 20 6d 61 64 65 20 62 79  ibutions made by
0130: 20 6d 61 6e 79 0a 23 20 69 6e 64 69 76 69 64 75   many.# individu
0140: 61 6c 73 2e 20 20 46 6f 72 20 65 78 61 63 74 20  als.  For exact 
0150: 63 6f 6e 74 72 69 62 75 74 69 6f 6e 20 68 69 73  contribution his
0160: 74 6f 72 79 2c 20 73 65 65 20 74 68 65 20 72 65  tory, see the re
0170: 76 69 73 69 6f 6e 0a 23 20 68 69 73 74 6f 72 79  vision.# history
0180: 20 61 6e 64 20 6c 6f 67 73 2c 20 61 76 61 69 6c   and logs, avail
0190: 61 62 6c 65 20 61 74 20 68 74 74 70 3a 2f 2f 66  able at http://f
01a0: 6f 73 73 69 6c 2d 73 63 6d 2e 68 77 61 63 69 2e  ossil-scm.hwaci.
01b0: 63 6f 6d 2f 66 6f 73 73 69 6c 0a 23 20 23 20 23  com/fossil.# # #
01c0: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23  # ### ##### ####
01d0: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23  #### ###########
01e0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23  ## #############
01f0: 23 23 23 23 23 23 23 23 0a 0a 23 23 20 50 61 73  ########..## Pas
0200: 73 20 6d 61 6e 61 67 65 72 2e 20 41 6c 6c 20 70  s manager. All p
0210: 61 73 73 65 73 20 72 65 67 69 73 74 65 72 20 68  asses register h
0220: 65 72 65 2c 20 77 69 74 68 20 63 6f 64 65 2c 20  ere, with code, 
0230: 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 61 6e 64  description, and
0240: 0a 23 23 20 63 61 6c 6c 62 61 63 6b 73 20 28 2e  .## callbacks (.
0250: 2e 2e 20 73 65 74 75 70 2c 20 72 75 6e 2c 20 66  .. setup, run, f
0260: 69 6e 61 6c 69 7a 65 29 2e 20 4f 70 74 69 6f 6e  inalize). Option
0270: 20 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20   processing and 
0280: 68 65 6c 70 0a 23 23 20 71 75 65 72 79 20 74 68  help.## query th
0290: 69 73 20 6d 61 6e 61 67 65 72 20 74 6f 20 64 79  is manager to dy
02a0: 6e 61 6d 69 63 61 6c 6c 79 20 63 72 65 61 74 65  namically create
02b0: 20 74 68 65 20 72 65 6c 65 76 61 6e 74 20 74 65   the relevant te
02c0: 78 74 73 2e 0a 0a 23 20 23 20 23 23 20 23 23 23  xts...# # ## ###
02d0: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20   ##### ######## 
02e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23  ############# ##
02f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0300: 23 23 23 0a 23 23 20 52 65 71 75 69 72 65 6d 65  ###.## Requireme
0310: 6e 74 73 0a 0a 70 61 63 6b 61 67 65 20 72 65 71  nts..package req
0320: 75 69 72 65 20 54 63 6c 20 38 2e 34 20 20 20 20  uire Tcl 8.4    
0330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0340: 20 20 20 20 20 20 20 20 3b 20 23 20 52 65 71 75          ; # Requ
0350: 69 72 65 64 20 72 75 6e 74 69 6d 65 2e 0a 70 61  ired runtime..pa
0360: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 73 6e  ckage require sn
0370: 69 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  it              
0380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0390: 20 3b 20 23 20 4f 4f 20 73 79 73 74 65 6d 2e 0a   ; # OO system..
03a0: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20  package require 
03b0: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f  vc::fossil::impo
03c0: 72 74 3a 3a 63 76 73 3a 3a 73 74 61 74 65 20 20  rt::cvs::state  
03d0: 20 20 20 3b 20 23 20 53 74 61 74 65 20 73 74 6f     ; # State sto
03e0: 72 61 67 65 0a 70 61 63 6b 61 67 65 20 72 65 71  rage.package req
03f0: 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a  uire vc::fossil:
0400: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 69 6e  :import::cvs::in
0410: 74 65 67 72 69 74 79 20 3b 20 23 20 53 74 61 74  tegrity ; # Stat
0420: 65 20 69 6e 74 65 67 72 69 74 79 20 63 68 65 63  e integrity chec
0430: 6b 73 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75  ks..package requ
0440: 69 72 65 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6d  ire vc::tools::m
0450: 69 73 63 20 20 20 20 20 20 20 20 20 20 20 20 20  isc             
0460: 20 20 20 20 20 20 20 3b 20 23 20 54 65 78 74 20         ; # Text 
0470: 66 6f 72 6d 61 74 74 69 6e 67 0a 70 61 63 6b 61  formatting.packa
0480: 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 74  ge require vc::t
0490: 6f 6f 6c 73 3a 3a 74 72 6f 75 62 6c 65 20 20 20  ools::trouble   
04a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20                ; 
04b0: 23 20 45 72 72 6f 72 20 72 65 70 6f 72 74 69 6e  # Error reportin
04c0: 67 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69  g..package requi
04d0: 72 65 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f  re vc::tools::lo
04e0: 67 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  g               
04f0: 20 20 20 20 20 20 3b 20 23 20 55 73 65 72 20 66        ; # User f
0500: 65 65 64 62 61 63 6b 2e 0a 70 61 63 6b 61 67 65  eedback..package
0510: 20 72 65 71 75 69 72 65 20 73 74 72 75 63 74 3a   require struct:
0520: 3a 6c 69 73 74 20 20 20 20 20 20 20 20 20 20 20  :list           
0530: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20              ; # 
0540: 50 6f 72 74 61 62 6c 65 20 6c 61 73 73 69 67 6e  Portable lassign
0550: 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23  ..# # ## ### ###
0560: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23  ## ######## ####
0570: 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23  ######### ######
0580: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
0590: 23 23 0a 0a 73 6e 69 74 3a 3a 74 79 70 65 20 3a  ##..snit::type :
05a0: 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70  :vc::fossil::imp
05b0: 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 20 7b  ort::cvs::pass {
05c0: 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20  .    # # ## ### 
05d0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23  ##### ######## #
05e0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20  ############.   
05f0: 20 23 23 20 50 75 62 6c 69 63 20 41 50 49 2c 20   ## Public API, 
0600: 4d 65 74 68 6f 64 73 20 28 53 65 74 75 70 2c 20  Methods (Setup, 
0610: 71 75 65 72 79 29 0a 0a 20 20 20 20 74 79 70 65  query)..    type
0620: 6d 65 74 68 6f 64 20 64 65 66 69 6e 65 20 7b 6e  method define {n
0630: 61 6d 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20  ame description 
0640: 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 09 69 6e 74 65  command} {..inte
0650: 67 72 69 74 79 20 61 73 73 65 72 74 20 7b 0a 09  grity assert {..
0660: 20 20 20 20 21 5b 69 6e 66 6f 20 65 78 69 73 74      ![info exist
0670: 73 20 6d 79 64 65 73 63 28 24 6e 61 6d 65 29 5d  s mydesc($name)]
0680: 0a 09 7d 20 7b 4d 75 6c 74 69 70 6c 65 20 64 65  ..} {Multiple de
0690: 66 69 6e 69 74 69 6f 6e 73 20 66 6f 72 20 70 61  finitions for pa
06a0: 73 73 20 63 6f 64 65 20 27 24 6e 61 6d 65 27 7d  ss code '$name'}
06b0: 0a 09 6c 61 70 70 65 6e 64 20 6d 79 70 61 73 73  ..lappend mypass
06c0: 65 73 20 24 6e 61 6d 65 0a 09 73 65 74 20 6d 79  es $name..set my
06d0: 64 65 73 63 28 24 6e 61 6d 65 29 20 24 64 65 73  desc($name) $des
06e0: 63 72 69 70 74 69 6f 6e 0a 09 73 65 74 20 6d 79  cription..set my
06f0: 63 6d 64 28 24 6e 61 6d 65 29 20 20 24 63 6f 6d  cmd($name)  $com
0700: 6d 61 6e 64 0a 09 72 65 74 75 72 6e 0a 20 20 20  mand..return.   
0710: 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68   }..    typemeth
0720: 6f 64 20 68 65 6c 70 20 7b 7d 20 7b 0a 09 74 72  od help {} {..tr
0730: 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 0a 09 74  ouble info ""..t
0740: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 43 6f 6e  rouble info "Con
0750: 76 65 72 73 69 6f 6e 20 70 61 73 73 65 73 3a 22  version passes:"
0760: 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22  ..trouble info "
0770: 22 0a 09 73 65 74 20 6e 20 30 0a 0a 09 73 65 74  "..set n 0...set
0780: 20 63 6c 65 6e 20 5b 6d 61 78 20 5b 73 74 72 75   clen [max [stru
0790: 63 74 3a 3a 6c 69 73 74 20 6d 61 70 20 24 6d 79  ct::list map $my
07a0: 70 61 73 73 65 73 20 7b 73 74 72 69 6e 67 20 6c  passes {string l
07b0: 65 6e 67 74 68 7d 5d 5d 0a 09 73 65 74 20 63 66  ength}]]..set cf
07c0: 6d 74 20 25 2d 24 7b 63 6c 65 6e 7d 73 0a 09 73  mt %-${clen}s..s
07d0: 65 74 20 6e 66 6d 74 20 25 5b 73 74 72 69 6e 67  et nfmt %[string
07e0: 20 6c 65 6e 67 74 68 20 5b 6c 6c 65 6e 67 74 68   length [llength
07f0: 20 24 6d 79 70 61 73 73 65 73 5d 5d 73 0a 0a 09   $mypasses]]s...
0800: 66 6f 72 65 61 63 68 20 63 6f 64 65 20 24 6d 79  foreach code $my
0810: 70 61 73 73 65 73 20 7b 0a 09 20 20 20 20 74 72  passes {..    tr
0820: 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 5b 66  ouble info "  [f
0830: 6f 72 6d 61 74 20 24 6e 66 6d 74 20 24 6e 5d 3a  ormat $nfmt $n]:
0840: 20 5b 66 6f 72 6d 61 74 20 24 63 66 6d 74 20 24   [format $cfmt $
0850: 63 6f 64 65 5d 20 3a 20 24 6d 79 64 65 73 63 28  code] : $mydesc(
0860: 24 63 6f 64 65 29 22 0a 09 20 20 20 20 69 6e 63  $code)"..    inc
0870: 72 20 6e 0a 09 7d 0a 09 74 72 6f 75 62 6c 65 20  r n..}..trouble 
0880: 69 6e 66 6f 20 22 22 0a 09 72 65 74 75 72 6e 0a  info ""..return.
0890: 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 23      }..    # # #
08a0: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23  # ### ##### ####
08b0: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23  #### ###########
08c0: 23 23 0a 20 20 20 20 23 23 20 50 75 62 6c 69 63  ##.    ## Public
08d0: 20 41 50 49 2c 20 4d 65 74 68 6f 64 73 20 28 45   API, Methods (E
08e0: 78 65 63 75 74 69 6f 6e 29 0a 0a 20 20 20 20 74  xecution)..    t
08f0: 79 70 65 6d 65 74 68 6f 64 20 73 65 6c 65 63 74  ypemethod select
0900: 20 7b 70 61 73 73 64 65 66 7d 20 7b 0a 09 73 65   {passdef} {..se
0910: 74 20 70 6c 20 5b 73 70 6c 69 74 20 24 70 61 73  t pl [split $pas
0920: 73 64 65 66 20 3a 5d 0a 09 69 66 20 7b 5b 6c 6c  sdef :]..if {[ll
0930: 65 6e 67 74 68 20 24 70 6c 5d 20 3e 20 32 7d 20  ength $pl] > 2} 
0940: 7b 0a 09 20 20 20 20 74 72 6f 75 62 6c 65 20 66  {..    trouble f
0950: 61 74 61 6c 20 22 42 61 64 20 70 61 73 73 20 64  atal "Bad pass d
0960: 65 66 69 6e 69 74 69 6f 6e 20 27 24 70 61 73 73  efinition '$pass
0970: 64 65 66 27 22 0a 09 20 20 20 20 74 72 6f 75 62  def'"..    troub
0980: 6c 65 20 66 61 74 61 6c 20 22 45 78 70 65 63 74  le fatal "Expect
0990: 65 64 20 61 74 20 6d 6f 73 74 20 6f 6e 65 20 27  ed at most one '
09a0: 3a 27 22 0a 09 7d 20 65 6c 73 65 69 66 20 7b 5b  :'"..} elseif {[
09b0: 6c 6c 65 6e 67 74 68 20 24 70 6c 5d 20 3d 3d 20  llength $pl] == 
09c0: 32 7d 20 7b 0a 09 20 20 20 20 73 74 72 75 63 74  2} {..    struct
09d0: 3a 3a 6c 69 73 74 20 61 73 73 69 67 6e 20 24 70  ::list assign $p
09e0: 6c 20 73 74 61 72 74 20 65 6e 64 0a 0a 09 20 20  l start end...  
09f0: 20 20 69 66 20 7b 28 24 73 74 61 72 74 20 65 71    if {($start eq
0a00: 20 22 22 29 20 26 26 20 28 24 65 6e 64 20 65 71   "") && ($end eq
0a10: 20 22 22 29 7d 20 7b 0a 09 09 74 72 6f 75 62 6c   "")} {...troubl
0a20: 65 20 66 61 74 61 6c 20 22 53 70 65 63 69 66 79  e fatal "Specify
0a30: 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 20 6f 66   at least one of
0a40: 20 73 74 61 72 74 2d 20 6f 72 20 65 6e 64 2d 70   start- or end-p
0a50: 61 73 73 22 0a 09 09 73 65 74 20 6f 6b 20 30 0a  ass"...set ok 0.
0a60: 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09  .    } else {...
0a70: 73 65 74 20 6f 6b 20 31 0a 09 09 4f 6b 3f 20 24  set ok 1...Ok? $
0a80: 73 74 61 72 74 20 73 74 61 72 74 20 6f 6b 0a 09  start start ok..
0a90: 09 4f 6b 3f 20 24 65 6e 64 20 20 20 65 6e 64 20  .Ok? $end   end 
0aa0: 20 20 6f 6b 0a 09 20 20 20 20 7d 0a 0a 09 20 20    ok..    }...  
0ab0: 20 20 69 66 20 7b 24 6f 6b 7d 20 7b 0a 09 09 73    if {$ok} {...s
0ac0: 65 74 20 6d 79 73 74 61 72 74 20 5b 43 6f 6e 76  et mystart [Conv
0ad0: 65 72 74 20 24 73 74 61 72 74 20 30 5d 0a 09 09  ert $start 0]...
0ae0: 73 65 74 20 6d 79 65 6e 64 20 20 20 5b 43 6f 6e  set myend   [Con
0af0: 76 65 72 74 20 24 65 6e 64 20 20 20 5b 65 78 70  vert $end   [exp
0b00: 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 6d 79 70  r {[llength $myp
0b10: 61 73 73 65 73 5d 20 2d 20 31 7d 5d 5d 0a 09 09  asses] - 1}]]...
0b20: 69 66 20 7b 24 6d 79 73 74 61 72 74 20 3e 20 24  if {$mystart > $
0b30: 6d 79 65 6e 64 7d 20 7b 0a 09 09 20 20 20 20 74  myend} {...    t
0b40: 72 6f 75 62 6c 65 20 66 61 74 61 6c 20 22 53 74  rouble fatal "St
0b50: 61 72 74 20 70 61 73 73 20 69 73 20 61 66 74 65  art pass is afte
0b60: 72 20 65 6e 64 20 70 61 73 73 22 0a 09 09 7d 0a  r end pass"...}.
0b70: 09 20 20 20 20 7d 0a 09 7d 20 65 6c 73 65 69 66  .    }..} elseif
0b80: 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 70 6c 5d 20   {[llength $pl] 
0b90: 3c 20 32 7d 20 7b 0a 09 20 20 20 20 73 65 74 20  < 2} {..    set 
0ba0: 73 74 61 72 74 20 5b 6c 69 6e 64 65 78 20 24 70  start [lindex $p
0bb0: 6c 20 30 5d 0a 09 20 20 20 20 4f 6b 3f 20 24 73  l 0]..    Ok? $s
0bc0: 74 61 72 74 20 22 22 20 5f 5f 64 75 6d 6d 79 5f  tart "" __dummy_
0bd0: 5f 20 30 0a 09 20 20 20 20 73 65 74 20 6d 79 73  _ 0..    set mys
0be0: 74 61 72 74 20 5b 49 64 20 24 73 74 61 72 74 5d  tart [Id $start]
0bf0: 0a 09 20 20 20 20 73 65 74 20 6d 79 65 6e 64 20  ..    set myend 
0c00: 20 20 24 6d 79 73 74 61 72 74 0a 09 7d 0a 20 20    $mystart..}.  
0c10: 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74    }..    typemet
0c20: 68 6f 64 20 72 75 6e 20 7b 7d 20 7b 0a 09 69 66  hod run {} {..if
0c30: 20 7b 24 6d 79 73 74 61 72 74 20 3c 20 30 7d 20   {$mystart < 0} 
0c40: 7b 73 65 74 20 6d 79 73 74 61 72 74 20 30 7d 0a  {set mystart 0}.
0c50: 09 69 66 20 7b 24 6d 79 65 6e 64 20 20 20 3c 20  .if {$myend   < 
0c60: 30 7d 20 7b 73 65 74 20 6d 79 65 6e 64 20 5b 65  0} {set myend [e
0c70: 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 6d  xpr {[llength $m
0c80: 79 70 61 73 73 65 73 5d 20 2d 20 31 7d 5d 7d 0a  ypasses] - 1}]}.
0c90: 0a 09 73 65 74 20 73 6b 69 70 70 65 64 20 5b 6c  ..set skipped [l
0ca0: 72 61 6e 67 65 20 24 6d 79 70 61 73 73 65 73 20  range $mypasses 
0cb0: 30 20 5b 65 78 70 72 20 7b 24 6d 79 73 74 61 72  0 [expr {$mystar
0cc0: 74 20 2d 20 31 7d 5d 5d 0a 09 73 65 74 20 72 75  t - 1}]]..set ru
0cd0: 6e 20 20 20 20 20 5b 6c 72 61 6e 67 65 20 24 6d  n     [lrange $m
0ce0: 79 70 61 73 73 65 73 20 24 6d 79 73 74 61 72 74  ypasses $mystart
0cf0: 20 24 6d 79 65 6e 64 5d 0a 09 73 65 74 20 64 65   $myend]..set de
0d00: 66 65 72 65 64 20 5b 6c 72 61 6e 67 65 20 24 6d  fered [lrange $m
0d10: 79 70 61 73 73 65 73 20 5b 65 78 70 72 20 7b 24  ypasses [expr {$
0d20: 6d 79 65 6e 64 20 2b 20 31 7d 5d 20 65 6e 64 5d  myend + 1}] end]
0d30: 0a 0a 09 66 6f 72 65 61 63 68 20 70 20 24 73 6b  ...foreach p $sk
0d40: 69 70 70 65 64 20 7b 0a 09 20 20 20 20 6c 6f 67  ipped {..    log
0d50: 20 77 72 69 74 65 20 30 20 70 61 73 73 20 22 53   write 0 pass "S
0d60: 6b 69 70 20 20 24 70 22 0a 09 20 20 20 20 43 61  kip  $p"..    Ca
0d70: 6c 6c 20 24 70 20 6c 6f 61 64 0a 09 7d 0a 09 66  ll $p load..}..f
0d80: 6f 72 65 61 63 68 20 70 20 24 72 75 6e 20 7b 0a  oreach p $run {.
0d90: 09 20 20 20 20 6c 6f 67 20 77 72 69 74 65 20 30  .    log write 0
0da0: 20 70 61 73 73 20 22 53 65 74 75 70 20 24 70 22   pass "Setup $p"
0db0: 0a 09 20 20 20 20 43 61 6c 6c 20 24 70 20 73 65  ..    Call $p se
0dc0: 74 75 70 0a 09 7d 0a 09 66 6f 72 65 61 63 68 20  tup..}..foreach 
0dd0: 70 20 24 72 75 6e 20 7b 0a 09 20 20 20 20 6c 6f  p $run {..    lo
0de0: 67 20 77 72 69 74 65 20 30 20 70 61 73 73 20 22  g write 0 pass "
0df0: 42 65 67 69 6e 20 24 70 22 0a 09 20 20 20 20 73  Begin $p"..    s
0e00: 65 74 20 73 65 63 62 65 67 69 6e 20 5b 63 6c 6f  et secbegin [clo
0e10: 63 6b 20 73 65 63 6f 6e 64 73 5d 0a 09 20 20 20  ck seconds]..   
0e20: 20 43 61 6c 6c 20 24 70 20 72 75 6e 0a 09 20 20   Call $p run..  
0e30: 20 20 73 65 74 20 73 65 63 73 74 6f 70 20 20 5b    set secstop  [
0e40: 63 6c 6f 63 6b 20 73 65 63 6f 6e 64 73 5d 0a 09  clock seconds]..
0e50: 20 20 20 20 6c 6f 67 20 77 72 69 74 65 20 30 20      log write 0 
0e60: 70 61 73 73 20 22 44 6f 6e 65 20 20 24 70 22 0a  pass "Done  $p".
0e70: 09 20 20 20 20 54 69 6d 65 20 24 70 20 5b 65 78  .    Time $p [ex
0e80: 70 72 20 7b 24 73 65 63 73 74 6f 70 20 2d 20 24  pr {$secstop - $
0e90: 73 65 63 62 65 67 69 6e 7d 5d 0a 09 20 20 20 20  secbegin}]..    
0ea0: 74 72 6f 75 62 6c 65 20 61 62 6f 72 74 3f 0a 09  trouble abort?..
0eb0: 7d 0a 09 66 6f 72 65 61 63 68 20 70 20 24 64 65  }..foreach p $de
0ec0: 66 65 72 65 64 20 7b 0a 09 20 20 20 20 6c 6f 67  fered {..    log
0ed0: 20 77 72 69 74 65 20 30 20 70 61 73 73 20 22 44   write 0 pass "D
0ee0: 65 66 65 72 20 24 70 22 0a 09 20 20 20 20 43 61  efer $p"..    Ca
0ef0: 6c 6c 20 24 70 20 64 69 73 63 61 72 64 0a 09 7d  ll $p discard..}
0f00: 0a 0a 09 73 74 61 74 65 20 72 65 6c 65 61 73 65  ...state release
0f10: 0a 09 53 68 6f 77 54 69 6d 65 73 0a 09 72 65 74  ..ShowTimes..ret
0f20: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74  urn.    }..    t
0f30: 79 70 65 6d 65 74 68 6f 64 20 63 75 72 72 65 6e  ypemethod curren
0f40: 74 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d  t {} { return $m
0f50: 79 63 75 72 72 65 6e 74 70 61 73 73 20 7d 0a 0a  ycurrentpass }..
0f60: 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23      # # ## ### #
0f70: 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23  #### ######## ##
0f80: 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20  ###########.    
0f90: 23 23 20 49 6e 74 65 72 6e 61 6c 20 6d 65 74 68  ## Internal meth
0fa0: 6f 64 73 0a 0a 20 20 20 20 70 72 6f 63 20 54 69  ods..    proc Ti
0fb0: 6d 65 20 7b 70 61 73 73 20 73 65 63 6f 6e 64 73  me {pass seconds
0fc0: 7d 20 7b 0a 09 3a 3a 76 61 72 69 61 62 6c 65 20  } {..::variable 
0fd0: 6d 79 74 69 6d 65 0a 09 6c 61 70 70 65 6e 64 20  mytime..lappend 
0fe0: 20 20 20 6d 79 74 69 6d 65 20 24 70 61 73 73 20     mytime $pass 
0ff0: 24 73 65 63 6f 6e 64 73 0a 09 53 68 6f 77 54 69  $seconds..ShowTi
1000: 6d 65 20 20 20 20 20 20 20 20 20 20 24 70 61 73  me          $pas
1010: 73 20 24 73 65 63 6f 6e 64 73 0a 09 72 65 74 75  s $seconds..retu
1020: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 72  rn.    }..    pr
1030: 6f 63 20 53 68 6f 77 54 69 6d 65 73 20 7b 7d 20  oc ShowTimes {} 
1040: 7b 0a 09 3a 3a 76 61 72 69 61 62 6c 65 20 6d 79  {..::variable my
1050: 74 69 6d 65 0a 09 73 65 74 20 74 6f 74 61 6c 20  time..set total 
1060: 30 0a 09 66 6f 72 65 61 63 68 20 7b 70 61 73 73  0..foreach {pass
1070: 20 73 65 63 6f 6e 64 73 7d 20 24 6d 79 74 69 6d   seconds} $mytim
1080: 65 20 7b 0a 09 20 20 20 20 53 68 6f 77 54 69 6d  e {..    ShowTim
1090: 65 20 24 70 61 73 73 20 24 73 65 63 6f 6e 64 73  e $pass $seconds
10a0: 0a 09 20 20 20 20 69 6e 63 72 20 74 6f 74 61 6c  ..    incr total
10b0: 20 24 73 65 63 6f 6e 64 73 0a 09 7d 0a 09 53 68   $seconds..}..Sh
10c0: 6f 77 54 69 6d 65 20 54 6f 74 61 6c 20 24 74 6f  owTime Total $to
10d0: 74 61 6c 0a 09 72 65 74 75 72 6e 0a 20 20 20 20  tal..return.    
10e0: 7d 0a 0a 20 20 20 20 70 72 6f 63 20 53 68 6f 77  }..    proc Show
10f0: 54 69 6d 65 20 7b 70 61 73 73 20 73 65 63 6f 6e  Time {pass secon
1100: 64 73 7d 20 7b 0a 09 69 66 20 7b 24 73 65 63 6f  ds} {..if {$seco
1110: 6e 64 73 20 3e 20 33 36 30 30 7d 20 7b 0a 09 20  nds > 3600} {.. 
1120: 20 20 20 73 65 74 20 68 72 20 20 5b 65 78 70 72     set hr  [expr
1130: 20 7b 24 73 65 63 6f 6e 64 73 20 2f 20 33 36 30   {$seconds / 360
1140: 30 7d 5d 0a 09 20 20 20 20 73 65 74 20 6d 69 6e  0}]..    set min
1150: 20 5b 65 78 70 72 20 7b 24 73 65 63 6f 6e 64 73   [expr {$seconds
1160: 20 25 20 33 36 30 30 7d 5d 0a 09 20 20 20 20 73   % 3600}]..    s
1170: 65 74 20 73 65 63 20 5b 65 78 70 72 20 7b 24 6d  et sec [expr {$m
1180: 69 6e 20 25 20 36 30 7d 5d 0a 09 20 20 20 20 73  in % 60}]..    s
1190: 65 74 20 6d 69 6e 20 5b 65 78 70 72 20 7b 24 6d  et min [expr {$m
11a0: 69 6e 20 2f 20 36 30 7d 5d 0a 0a 09 20 20 20 20  in / 60}]...    
11b0: 6c 6f 67 20 77 72 69 74 65 20 30 20 70 61 73 73  log write 0 pass
11c0: 20 22 5b 66 6f 72 6d 61 74 20 25 38 64 20 24 73   "[format %8d $s
11d0: 65 63 6f 6e 64 73 5d 20 73 65 63 2f 24 70 61 73  econds] sec/$pas
11e0: 73 20 28 5b 6e 73 70 20 24 68 72 20 68 6f 75 72  s ([nsp $hr hour
11f0: 5d 20 5b 6e 73 70 20 24 6d 69 6e 20 6d 69 6e 75  ] [nsp $min minu
1200: 74 65 5d 20 5b 6e 73 70 20 24 73 65 63 20 73 65  te] [nsp $sec se
1210: 63 6f 6e 64 5d 29 22 0a 09 7d 20 65 6c 73 65 69  cond])"..} elsei
1220: 66 20 7b 24 73 65 63 6f 6e 64 73 20 3e 20 36 30  f {$seconds > 60
1230: 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 6d 69 6e  } {..    set min
1240: 20 5b 65 78 70 72 20 7b 24 73 65 63 6f 6e 64 73   [expr {$seconds
1250: 20 2f 20 36 30 7d 5d 0a 09 20 20 20 20 73 65 74   / 60}]..    set
1260: 20 73 65 63 20 5b 65 78 70 72 20 7b 24 73 65 63   sec [expr {$sec
1270: 6f 6e 64 73 20 25 20 36 30 7d 5d 0a 0a 09 20 20  onds % 60}]...  
1280: 20 20 6c 6f 67 20 77 72 69 74 65 20 30 20 70 61    log write 0 pa
1290: 73 73 20 22 5b 66 6f 72 6d 61 74 20 25 38 64 20  ss "[format %8d 
12a0: 24 73 65 63 6f 6e 64 73 5d 20 73 65 63 2f 24 70  $seconds] sec/$p
12b0: 61 73 73 20 28 5b 6e 73 70 20 24 6d 69 6e 20 6d  ass ([nsp $min m
12c0: 69 6e 75 74 65 5d 20 5b 6e 73 70 20 24 73 65 63  inute] [nsp $sec
12d0: 20 73 65 63 6f 6e 64 5d 29 22 0a 09 7d 20 65 6c   second])"..} el
12e0: 73 65 20 7b 0a 09 20 20 20 20 6c 6f 67 20 77 72  se {..    log wr
12f0: 69 74 65 20 30 20 70 61 73 73 20 22 5b 66 6f 72  ite 0 pass "[for
1300: 6d 61 74 20 25 38 64 20 24 73 65 63 6f 6e 64 73  mat %8d $seconds
1310: 5d 20 73 65 63 2f 24 70 61 73 73 22 0a 09 7d 0a  ] sec/$pass"..}.
1320: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20  .return.    }.. 
1330: 20 20 20 70 72 6f 63 20 4f 6b 3f 20 7b 63 6f 64     proc Ok? {cod
1340: 65 20 6c 61 62 65 6c 20 6f 76 20 7b 65 6d 70 74  e label ov {empt
1350: 79 6f 6b 20 31 7d 7d 20 7b 0a 09 75 70 76 61 72  yok 1}} {..upvar
1360: 20 31 20 24 6f 76 20 6f 6b 0a 09 3a 3a 76 61 72   1 $ov ok..::var
1370: 69 61 62 6c 65 20 6d 79 64 65 73 63 0a 09 69 66  iable mydesc..if
1380: 20 7b 24 65 6d 70 74 79 6f 6b 20 26 26 20 28 24   {$emptyok && ($
1390: 63 6f 64 65 20 65 71 20 22 22 29 7d 20 72 65 74  code eq "")} ret
13a0: 75 72 6e 0a 09 69 66 20 7b 5b 69 6e 66 6f 20 65  urn..if {[info e
13b0: 78 69 73 74 73 20 6d 79 64 65 73 63 28 24 63 6f  xists mydesc($co
13c0: 64 65 29 5d 7d 20 72 65 74 75 72 6e 0a 09 69 66  de)]} return..if
13d0: 20 7b 24 6c 61 62 65 6c 20 6e 65 20 22 22 7d 20   {$label ne ""} 
13e0: 7b 61 70 70 65 6e 64 20 6c 61 62 65 6c 20 22 20  {append label " 
13f0: 22 7d 0a 09 74 72 6f 75 62 6c 65 20 66 61 74 61  "}..trouble fata
1400: 6c 20 22 42 61 64 20 24 7b 6c 61 62 65 6c 7d 70  l "Bad ${label}p
1410: 61 73 73 20 63 6f 64 65 20 24 63 6f 64 65 22 0a  ass code $code".
1420: 09 73 65 74 20 6f 6b 20 30 0a 09 72 65 74 75 72  .set ok 0..retur
1430: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 6f  n.    }..    pro
1440: 63 20 43 6f 6e 76 65 72 74 20 7b 63 6f 64 65 20  c Convert {code 
1450: 64 65 66 61 75 6c 74 7d 20 7b 0a 09 3a 3a 76 61  default} {..::va
1460: 72 69 61 62 6c 65 20 6d 79 70 61 73 73 65 73 0a  riable mypasses.
1470: 09 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 28  .return [expr {(
1480: 24 63 6f 64 65 20 65 71 20 22 22 29 20 3f 20 24  $code eq "") ? $
1490: 64 65 66 61 75 6c 74 20 3a 20 5b 49 64 20 24 63  default : [Id $c
14a0: 6f 64 65 5d 7d 5d 0a 20 20 20 20 7d 0a 0a 20 20  ode]}].    }..  
14b0: 20 20 70 72 6f 63 20 49 64 20 7b 63 6f 64 65 7d    proc Id {code}
14c0: 20 7b 0a 09 3a 3a 76 61 72 69 61 62 6c 65 20 6d   {..::variable m
14d0: 79 70 61 73 73 65 73 0a 09 72 65 74 75 72 6e 20  ypasses..return 
14e0: 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74 20  [lsearch -exact 
14f0: 24 6d 79 70 61 73 73 65 73 20 24 63 6f 64 65 5d  $mypasses $code]
1500: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 6f 63  .    }..    proc
1510: 20 43 61 6c 6c 20 7b 63 6f 64 65 20 61 72 67 73   Call {code args
1520: 7d 20 7b 0a 09 3a 3a 76 61 72 69 61 62 6c 65 20  } {..::variable 
1530: 6d 79 63 6d 64 0a 09 73 65 74 20 63 6d 64 20 24  mycmd..set cmd $
1540: 6d 79 63 6d 64 28 24 63 6f 64 65 29 0a 09 66 6f  mycmd($code)..fo
1550: 72 65 61 63 68 20 61 20 24 61 72 67 73 20 7b 20  reach a $args { 
1560: 6c 61 70 70 65 6e 64 20 63 6d 64 20 24 61 20 7d  lappend cmd $a }
1570: 0a 09 65 76 61 6c 20 24 63 6d 64 0a 09 72 65 74  ..eval $cmd..ret
1580: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23  urn.    }..    #
1590: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20   # ## ### ##### 
15a0: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23  ######## #######
15b0: 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 49 6e  ######.    ## In
15c0: 74 65 72 6e 61 6c 2c 20 73 74 61 74 65 0a 0a 20  ternal, state.. 
15d0: 20 20 20 74 79 70 65 76 61 72 69 61 62 6c 65 20     typevariable 
15e0: 6d 79 70 61 73 73 65 73 20 20 20 20 20 20 7b 7d  mypasses      {}
15f0: 20 3b 20 23 20 4c 69 73 74 20 6f 66 20 72 65 67   ; # List of reg
1600: 69 73 74 65 72 65 64 20 70 61 73 73 65 73 20 28  istered passes (
1610: 63 6f 64 65 73 29 2e 0a 20 20 20 20 74 79 70 65  codes)..    type
1620: 76 61 72 69 61 62 6c 65 20 6d 79 64 65 73 63 20  variable mydesc 
1630: 2d 61 72 72 61 79 20 7b 7d 20 3b 20 23 20 50 61  -array {} ; # Pa
1640: 73 73 20 64 65 73 63 72 69 70 74 69 6f 6e 73 20  ss descriptions 
1650: 28 6f 6e 65 20 6c 69 6e 65 29 2e 0a 20 20 20 20  (one line)..    
1660: 74 79 70 65 76 61 72 69 61 62 6c 65 20 6d 79 63  typevariable myc
1670: 6d 64 20 20 2d 61 72 72 61 79 20 7b 7d 20 3b 20  md  -array {} ; 
1680: 23 20 50 61 73 73 20 63 61 6c 6c 62 61 63 6b 20  # Pass callback 
1690: 63 6f 6d 6d 61 6e 64 2e 0a 0a 20 20 20 20 74 79  command...    ty
16a0: 70 65 76 61 72 69 61 62 6c 65 20 6d 79 73 74 61  pevariable mysta
16b0: 72 74 20 20 20 20 20 20 20 2d 31 0a 20 20 20 20  rt       -1.    
16c0: 74 79 70 65 76 61 72 69 61 62 6c 65 20 6d 79 65  typevariable mye
16d0: 6e 64 20 20 20 20 20 20 20 20 20 2d 31 0a 20 20  nd         -1.  
16e0: 20 20 74 79 70 65 76 61 72 69 61 62 6c 65 20 6d    typevariable m
16f0: 79 74 69 6d 65 20 20 20 20 20 20 20 20 7b 7d 20  ytime        {} 
1700: 3b 20 23 20 54 69 6d 69 6e 67 20 64 61 74 61 20  ; # Timing data 
1710: 66 6f 72 20 65 61 63 68 20 65 78 65 63 75 74 65  for each execute
1720: 64 20 70 61 73 73 2e 0a 20 20 20 20 74 79 70 65  d pass..    type
1730: 76 61 72 69 61 62 6c 65 20 6d 79 63 75 72 72 65  variable mycurre
1740: 6e 74 70 61 73 73 20 7b 7d 20 3b 20 23 20 50 61  ntpass {} ; # Pa
1750: 73 73 20 63 75 72 72 65 6e 74 6c 79 20 72 75 6e  ss currently run
1760: 6e 69 6e 67 2e 0a 0a 20 20 20 20 23 20 23 20 23  ning...    # # #
1770: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23  # ### ##### ####
1780: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23  #### ###########
1790: 23 23 0a 20 20 20 20 23 23 20 43 6f 6e 66 69 67  ##.    ## Config
17a0: 75 72 61 74 69 6f 6e 0a 0a 20 20 20 20 70 72 61  uration..    pra
17b0: 67 6d 61 20 2d 68 61 73 69 6e 73 74 61 6e 63 65  gma -hasinstance
17c0: 73 20 20 20 6e 6f 20 3b 20 23 20 73 69 6e 67 6c  s   no ; # singl
17d0: 65 74 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 20  eton.    pragma 
17e0: 2d 68 61 73 74 79 70 65 69 6e 66 6f 20 20 20 20  -hastypeinfo    
17f0: 6e 6f 20 3b 20 23 20 6e 6f 20 69 6e 74 72 6f 73  no ; # no intros
1800: 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 72 61 67  pection.    prag
1810: 6d 61 20 2d 68 61 73 74 79 70 65 64 65 73 74 72  ma -hastypedestr
1820: 6f 79 20 6e 6f 20 3b 20 23 20 69 6d 6d 6f 72 74  oy no ; # immort
1830: 61 6c 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23  al..    # # ## #
1840: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23  ## ##### #######
1850: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  # #############.
1860: 7d 0a 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61  }..namespace eva
1870: 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a  l ::vc::fossil::
1880: 69 6d 70 6f 72 74 3a 3a 63 76 73 20 7b 0a 20 20  import::cvs {.  
1890: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f    namespace expo
18a0: 72 74 20 70 61 73 73 0a 20 20 20 20 6e 61 6d 65  rt pass.    name
18b0: 73 70 61 63 65 20 65 76 61 6c 20 70 61 73 73 20  space eval pass 
18c0: 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70  {..namespace imp
18d0: 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c  ort ::vc::fossil
18e0: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 73  ::import::cvs::s
18f0: 74 61 74 65 0a 09 6e 61 6d 65 73 70 61 63 65 20  tate..namespace 
1900: 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f 73  import ::vc::fos
1910: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73  sil::import::cvs
1920: 3a 3a 69 6e 74 65 67 72 69 74 79 0a 09 6e 61 6d  ::integrity..nam
1930: 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a  espace import ::
1940: 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 3a  vc::tools::misc:
1950: 3a 2a 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d  :*..namespace im
1960: 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73  port ::vc::tools
1970: 3a 3a 74 72 6f 75 62 6c 65 0a 09 6e 61 6d 65 73  ::trouble..names
1980: 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63  pace import ::vc
1990: 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 0a 09 6c 6f  ::tools::log..lo
19a0: 67 20 72 65 67 69 73 74 65 72 20 70 61 73 73 0a  g register pass.
19b0: 20 20 20 20 7d 0a 7d 0a 0a 23 20 23 20 23 23 20      }.}..# # ## 
19c0: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23  ### ##### ######
19d0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23  ## #############
19e0: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
19f0: 23 23 23 23 23 23 0a 23 23 20 52 65 61 64 79 0a  ######.## Ready.
1a00: 0a 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65  .package provide
1a10: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70   vc::fossil::imp
1a20: 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 20 31  ort::cvs::pass 1
1a30: 2e 30 0a 72 65 74 75 72 6e 0a                    .0.return.