comparison shasum.py @ 19:2f9e702e3f7a

Convert backslashes in filenames to forward slashes when creating digests
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 05 Dec 2020 00:13:27 +0100
parents 285848db0b52
children 8f0241ed4a00
comparison
equal deleted inserted replaced
18:285848db0b52 19:2f9e702e3f7a
254 254
255 """ 255 """
256 if filename is None: 256 if filename is None:
257 print(digest, file=dest) 257 print(digest, file=dest)
258 else: 258 else:
259 print("{} ({}) = {}".format(digestname, filename, digest), 259 print("{} ({}) = {}".format(digestname,
260 normalize_filename(filename),
261 digest),
260 file=dest) 262 file=dest)
261 263
262 264
263 def out_std(dest, digest, filename, digestname, binary): 265 def out_std(dest, digest, filename, digestname, binary):
264 """Coreutils format (:command:`shasum` et al.) 266 """Coreutils format (:command:`shasum` et al.)
265 267
266 """ 268 """
267 print("{} {}{}".format(digest, 269 print("{} {}{}".format(
268 '*' if binary else ' ', 270 digest,
269 '-' if filename is None else filename), 271 '*' if binary else ' ',
272 '-' if filename is None else normalize_filename(filename)),
270 file=dest) 273 file=dest)
271 274
272 275
273 def compute_digest(hashobj, instream): 276 def compute_digest(hashobj, instream):
274 """ 277 """
287 break 290 break
288 h.update(buf) 291 h.update(buf)
289 return h.hexdigest() 292 return h.hexdigest()
290 293
291 294
295 def normalize_filename(filename, strip_leading_dot_slash=False):
296 filename = filename.replace("\\", "/")
297 if strip_leading_dot_slash:
298 while filename.startswith("./"):
299 filename = filename[2:]
300 return filename
301
302
292 if __name__ == "__main__": 303 if __name__ == "__main__":
293 sys.exit(main()) 304 sys.exit(main())