diff options
author | James Turnbull <james@lovedthanlost.net> | 2008-02-15 13:17:12 +1100 |
---|---|---|
committer | James Turnbull <james@lovedthanlost.net> | 2008-02-15 13:17:12 +1100 |
commit | c004d2c081ef53952f7a30a32d0208e10747cbe0 (patch) | |
tree | 20afa250ff3ddc7936f6a9a1b9a585d3337ae836 /lib | |
parent | df3fbc77b52bde3ce643d25f4a0d28a2cd35ef52 (diff) | |
parent | 6013b2500d9e799f8aba9f614de15d4eb477860a (diff) | |
download | puppet-c004d2c081ef53952f7a30a32d0208e10747cbe0.tar.gz puppet-c004d2c081ef53952f7a30a32d0208e10747cbe0.tar.xz puppet-c004d2c081ef53952f7a30a32d0208e10747cbe0.zip |
Merge branch '0.24.x' of git://reductivelabs.com/puppet into 0.24.x
Diffstat (limited to 'lib')
-rw-r--r-- | lib/puppet/util/checksums.rb | 64 |
1 files changed, 51 insertions, 13 deletions
diff --git a/lib/puppet/util/checksums.rb b/lib/puppet/util/checksums.rb index 6f6ea59b5..598b3adfa 100644 --- a/lib/puppet/util/checksums.rb +++ b/lib/puppet/util/checksums.rb @@ -1,37 +1,75 @@ +# A stand-alone module for calculating checksums +# in a generic way. module Puppet::Util::Checksums + # Calculate a checksum using Digest::MD5. def md5(content) require 'digest/md5' Digest::MD5.hexdigest(content) end - def md5_file(filename) + # Calculate a checksum of the first 500 chars of the content using Digest::MD5. + def md5lite(content) + md5(content[0..511]) + end + + # Calculate a checksum of a file's content using Digest::MD5. + def md5_file(filename, lite = false) require 'digest/md5' - incr_digest = Digest::MD5.new() - File.open(filename, 'r') do |file| - file.each_line do |line| - incr_digest << line - end - end + digest = Digest::MD5.new() + return checksum_file(digest, filename, lite) + end + + # Calculate a checksum of the first 500 chars of a file's content using Digest::MD5. + def md5lite_file(filename) + md5_file(filename, true) + end - return incr_digest.hexdigest + # Return the :mtime timestamp of a file. + def mtime_file(filename) + File.stat(filename).send(:mtime) end + # Calculate a checksum using Digest::SHA1. def sha1(content) require 'digest/sha1' Digest::SHA1.hexdigest(content) end - def sha1_file(filename) + # Calculate a checksum of the first 500 chars of the content using Digest::SHA1. + def sha1lite(content) + sha1(content[0..511]) + end + + # Calculate a checksum of a file's content using Digest::SHA1. + def sha1_file(filename, lite = false) require 'digest/sha1' - incr_digest = Digest::SHA1.new() + digest = Digest::SHA1.new() + return checksum_file(digest, filename, lite) + end + + # Calculate a checksum of the first 500 chars of a file's content using Digest::SHA1. + def sha1lite_file(filename) + sha1_file(filename, true) + end + + # Return the :ctime of a file. + def timestamp_file(filename) + File.stat(filename).send(:ctime) + end + + private + + # Perform an incremental checksum on a file. + def checksum_file(digest, filename, lite = false) File.open(filename, 'r') do |file| - file.each_line do |line| - incr_digest << line + while content = file.read(512) + digest << content + break if lite end end - return incr_digest.hexdigest + return digest.hexdigest end end |