Changeset 18


Ignore:
Timestamp:
Aug 1, 2002, 4:56:36 AM (18 years ago)
Author:
landonf (Landon Fuller)
Message:

Initial checksum implementation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/base/Tcl/portchecksum.1.0.tcl

    r13 r18  
    1414options portchecksum::options md5file
    1515
     16proc portchecksum::md5 {file} {
     17        global distpath
     18        set pipe [open "|md5 ${file}" r]
     19        set output [read $pipe]\n
     20        if {[llength $output] != 4} {
     21                # XXX clean this up, report errors better?
     22                puts "md5sum failed"
     23                return -1
     24        }
     25        return [lindex $output 3]
     26}
     27
     28proc portchecksum::dmd5 {file} {
     29        set fd [open [getval portchecksum::options md5file] r]
     30        while {[gets $fd line] >= 0} {
     31                if {[llength $line] != 4} {
     32                        # XXX clean this up
     33                        puts "failing checkmd5"
     34                }
     35
     36                if {[lindex $line 1] == "($file)"} {
     37                        close $fd
     38                        return [lindex $line 3]
     39                }
     40        }
     41        close $fd
     42        return -1
     43}
     44
    1645proc portchecksum::main {args} {
    17         global portname
    18         puts "Checksumming port: $portname"
     46        global distpath all_dist_files
     47        if ![isval portchecksum::options md5file] {
     48                setval portchecksum::options md5file distinfo
     49        }
     50
     51        if ![file isfile [getval portchecksum::options md5file]] {
     52                puts "No MD5 checksum file."
     53                return -1
     54        }
     55
     56        foreach distfile $all_dist_files {
     57                set checksum [md5 $distpath/$distfile]
     58                set dchecksum [dmd5 $distfile]
     59                if {$checksum == $dchecksum} {
     60                        puts "Checksum OK for $distfile"
     61                } else {
     62                        puts "Checksum mismatch for $distfile"
     63                        return -1
     64                }
     65        }
    1966        return 0
    2067}
Note: See TracChangeset for help on using the changeset viewer.