comparison cutils/shasum.py @ 185:f04d4b1c14b3

FIX: "digest" had overwritteh the digest module
author Franz Glasner <fzglas.hg@dom66.de>
date Tue, 14 Jan 2025 11:35:18 +0100
parents ffd14e2de130
children 48430941c18c
comparison
equal deleted inserted replaced
184:6154b8e4ba94 185:f04d4b1c14b3
22 import re 22 import re
23 import sys 23 import sys
24 24
25 from . import (__version__, __revision__) 25 from . import (__version__, __revision__)
26 from . import util 26 from . import util
27 from .util import digest 27 from .util import digest as digestmod
28 28
29 29
30 def main(argv=None): 30 def main(argv=None):
31 aparser = argparse.ArgumentParser( 31 aparser = argparse.ArgumentParser(
32 description="Python implementation of shasum", 32 description="Python implementation of shasum",
175 dirnames.sort() 175 dirnames.sort()
176 dirfiles.sort() 176 dirfiles.sort()
177 for fn in dirfiles: 177 for fn in dirfiles:
178 path = os.path.join(dirpath, fn) 178 path = os.path.join(dirpath, fn)
179 out(opts.dest or sys.stdout, 179 out(opts.dest or sys.stdout,
180 digest.compute_digest_file( 180 digestmod.compute_digest_file(
181 opts.algorithm[0], path, use_mmap=opts.mmap), 181 opts.algorithm[0], path, use_mmap=opts.mmap),
182 path, 182 path,
183 opts.algorithm[1], 183 opts.algorithm[1],
184 True, 184 True,
185 opts.base64) 185 opts.base64)
191 msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) 191 msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
192 source = sys.stdin 192 source = sys.stdin
193 else: 193 else:
194 source = sys.stdin.buffer 194 source = sys.stdin.buffer
195 out(sys.stdout, 195 out(sys.stdout,
196 digest.compute_digest_stream(opts.algorithm[0], source), 196 digestmod.compute_digest_stream(opts.algorithm[0], source),
197 None, 197 None,
198 opts.algorithm[1], 198 opts.algorithm[1],
199 True, 199 True,
200 opts.base64) 200 opts.base64)
201 else: 201 else:
202 for fn in opts.files: 202 for fn in opts.files:
203 out(opts.dest or sys.stdout, 203 out(opts.dest or sys.stdout,
204 digest.compute_digest_file( 204 digestmod.compute_digest_file(
205 opts.algorithm[0], fn, use_mmap=opts.mmap), 205 opts.algorithm[0], fn, use_mmap=opts.mmap),
206 fn, 206 fn,
207 opts.algorithm[1], 207 opts.algorithm[1],
208 True, 208 True,
209 opts.base64) 209 opts.base64)
265 if pl is None: 265 if pl is None:
266 exit_code = 1 266 exit_code = 1
267 print("-: MISSING", file=dest) 267 print("-: MISSING", file=dest)
268 else: 268 else:
269 tag, algo, cl_filename, cl_digest = pl 269 tag, algo, cl_filename, cl_digest = pl
270 computed_digest = digest.compute_digest_stream(algo, source) 270 computed_digest = digestmod.compute_digest_stream(algo, source)
271 if compare_digests_equal(computed_digest, cl_digest, algo): 271 if compare_digests_equal(computed_digest, cl_digest, algo):
272 res = "OK" 272 res = "OK"
273 else: 273 else:
274 res = "FAILED" 274 res = "FAILED"
275 exit_code = 1 275 exit_code = 1
281 if pl is None: 281 if pl is None:
282 print("{}: MISSING".format(fn), file=dest) 282 print("{}: MISSING".format(fn), file=dest)
283 exit_code = 1 283 exit_code = 1
284 else: 284 else:
285 tag, algo, cl_filename, cl_digest = pl 285 tag, algo, cl_filename, cl_digest = pl
286 computed_digest = digest.compute_digest_file( 286 computed_digest = digestmod.compute_digest_file(
287 algo, fn, use_mmap=opts.mmap) 287 algo, fn, use_mmap=opts.mmap)
288 if compare_digests_equal(computed_digest, cl_digest, algo): 288 if compare_digests_equal(computed_digest, cl_digest, algo):
289 res = "OK" 289 res = "OK"
290 else: 290 else:
291 exit_code = 1 291 exit_code = 1
338 tag, algo, fn, digest = parts 338 tag, algo, fn, digest = parts
339 if tag in ("SIZE", "TIMESTAMP"): 339 if tag in ("SIZE", "TIMESTAMP"):
340 assert opts.allow_distinfo 340 assert opts.allow_distinfo
341 return (None, None, tag) 341 return (None, None, tag)
342 try: 342 try:
343 d = digest.compute_digest_file(algo, fn, use_mmap=opts.mmap) 343 d = digestmod.compute_digest_file(algo, fn, use_mmap=opts.mmap)
344 if compare_digests_equal(d, digest, algo): 344 if compare_digests_equal(d, digest, algo):
345 return ("ok", fn, tag) 345 return ("ok", fn, tag)
346 else: 346 else:
347 return ("failed", fn, tag) 347 return ("failed", fn, tag)
348 except EnvironmentError: 348 except EnvironmentError: