Use iterative MD5 hashing.

This commit is contained in:
John Kleint 2012-07-09 13:27:47 -04:00
parent b1b0e45413
commit b11f23750f
3 changed files with 45 additions and 38 deletions

View file

@ -30,14 +30,10 @@ import syslog
import tempfile
try:
import hashlib
HAVE_HASHLIB=True
except ImportError:
import md5
HAVE_HASHLIB=False
from hashlib import md5 as _md5
except ImportError:
from md5 import md5 as _md5
# Since hashlib is only available in 2.5 and onwards, this module
# uses md5 which is available in 2.4.
# ===========================================
# Support methods
@ -66,13 +62,18 @@ def write_temp_file(data):
return path
def md5(filename):
''' compute md5sum, return None if file is not present '''
if not os.path.exists(filename):
return None
if HAVE_HASHLIB:
return hashlib.md5(file(filename).read()).hexdigest()
else:
return md5.new(file(filename).read()).hexdigest()
''' Return MD5 hex digest of local file, or None if file is not present. '''
if not os.path.exists(filename):
return None
digest = _md5()
blocksize = 64 * 1024
infile = open(filename, 'rb')
block = infile.read(blocksize)
while block:
digest.update(block)
block = infile.read(blocksize)
infile.close()
return digest.hexdigest()
# ===========================================

27
copy
View file

@ -25,11 +25,9 @@ import shutil
import syslog
try:
import hashlib
HAVE_HASHLIB=True
except ImportError:
import md5
HAVE_HASHLIB=False
from hashlib import md5 as _md5
except ImportError:
from md5 import md5 as _md5
# ===========================================
# convert arguments of form a=b c=d
@ -46,13 +44,18 @@ def exit_kv(rc=0, **kwargs):
sys.exit(rc)
def md5(filename):
''' compute md5sum, return None if file is not present '''
if not os.path.exists(filename):
return None
if HAVE_HASHLIB:
return hashlib.md5(file(filename).read()).hexdigest()
else:
return md5.new(file(filename).read()).hexdigest()
''' Return MD5 hex digest of local file, or None if file is not present. '''
if not os.path.exists(filename):
return None
digest = _md5()
blocksize = 64 * 1024
infile = open(filename, 'rb')
block = infile.read(blocksize)
while block:
digest.update(block)
block = infile.read(blocksize)
infile.close()
return digest.hexdigest()
# ===========================================

27
setup
View file

@ -34,11 +34,9 @@ import traceback
import syslog
try:
import hashlib
HAVE_HASHLIB=True
except ImportError:
import md5
HAVE_HASHLIB=False
from hashlib import md5 as _md5
except ImportError:
from md5 import md5 as _md5
try:
import selinux
@ -319,13 +317,18 @@ def ansible_facts():
return facts
def md5(filename):
''' compute md5sum, return None if file is not present '''
if not os.path.exists(filename):
return None
if HAVE_HASHLIB:
return hashlib.md5(file(filename).read()).hexdigest()
else:
return md5.new(file(filename).read()).hexdigest()
''' Return MD5 hex digest of local file, or None if file is not present. '''
if not os.path.exists(filename):
return None
digest = _md5()
blocksize = 64 * 1024
infile = open(filename, 'rb')
block = infile.read(blocksize)
while block:
digest.update(block)
block = infile.read(blocksize)
infile.close()
return digest.hexdigest()
# ===========================================