comparison cutils/shasum.py @ 79:8708c34e2723

Handle EINTR also in combination with EAGAIN and EWOULDBLOCK
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 28 Feb 2022 21:31:26 +0100
parents a31de3c65877
children 05e2bf4796fd
comparison
equal deleted inserted replaced
78:5d297069ab48 79:8708c34e2723
503 # No mmmap available -> use traditional low-level file IO 503 # No mmmap available -> use traditional low-level file IO
504 while True: 504 while True:
505 try: 505 try:
506 buf = os.read(fd, CHUNK_SIZE) 506 buf = os.read(fd, CHUNK_SIZE)
507 except OSError as e: 507 except OSError as e:
508 if e.errno not in (errno.EAGAIN, errno.EWOULDBLOCK): 508 if e.errno not in (errno.EAGAIN, errno.EWOULDBLOCK,
509 errno.EINTR):
509 raise 510 raise
510 else: 511 else:
511 if len(buf) == 0: 512 if len(buf) == 0:
512 break 513 break
513 h.update(buf) 514 h.update(buf)
558 h = hashobj() 559 h = hashobj()
559 while True: 560 while True:
560 try: 561 try:
561 buf = instream.read(CHUNK_SIZE) 562 buf = instream.read(CHUNK_SIZE)
562 except OSError as e: 563 except OSError as e:
563 if e.errno not in (errno.EAGAIN, errno.EWOULDBLOCK): 564 if e.errno not in (errno.EAGAIN, errno.EWOULDBLOCK, errno.EINTR):
564 raise 565 raise
565 else: 566 else:
566 if buf is not None: 567 if buf is not None:
567 if len(buf) == 0: 568 if len(buf) == 0:
568 break 569 break