comparison cutils/treesum.py @ 313:dbad01eb9d03

treesum: comments
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 10 Mar 2025 10:04:02 +0100
parents 652870b20f9e
children 1fbe9904b188
comparison
equal deleted inserted replaced
312:f5f54b9c3552 313:dbad01eb9d03
745 if self._utf8_mode: 745 if self._utf8_mode:
746 opath = walk.WalkDirEntry.alt_u8(opath) 746 opath = walk.WalkDirEntry.alt_u8(opath)
747 else: 747 else:
748 opath = walk.WalkDirEntry.alt_fs(opath) 748 opath = walk.WalkDirEntry.alt_fs(opath)
749 if eno == 0: 749 if eno == 0:
750 #
751 # treesum file could be read.
752 # Now check whether the infos we got from it are
753 # compatible with our current requirements
754 # (digest, size).
755 #
750 if self._size_only: 756 if self._size_only:
751 if collector.size is None: 757 if collector.size is None:
752 # This is a severe error here 758 #
759 # This is a severe error here: just the size
760 # is required, but we have not got one.
761 #
753 self._writer.write_error(util.b( 762 self._writer.write_error(util.b(
754 util.interpolate_bytes( 763 util.interpolate_bytes(
755 "No size in treesum-file `%s' while" 764 "No size in treesum-file `%s' while"
756 " requiring it", 765 " requiring it",
757 fpath), 766 fpath),
774 else: 783 else:
775 sz = collector.size 784 sz = collector.size
776 else: 785 else:
777 sz = None 786 sz = None
778 if collector.digest is None: 787 if collector.digest is None:
779 # This is really a severe error 788 #
789 # This is really a severe error. Most probably
790 # the treesum file was created with
791 # "--size-only" and contains no digest.
792 #
780 self._writer.write_error(util.b( 793 self._writer.write_error(util.b(
781 util.interpolate_bytes( 794 util.interpolate_bytes(
782 "No digest in treesum-file `%s' while" 795 "No digest in treesum-file `%s' while"
783 " it is required", 796 " it is required",
784 fpath), 797 fpath),
788 opath, 801 opath,
789 None, 802 None,
790 use_base64=self._use_base64, 803 use_base64=self._use_base64,
791 size=sz) 804 size=sz)
792 return (errno.ESRCH, None, None, None) 805 return (errno.ESRCH, None, None, None)
806 # We got all required infos without errors
793 if self._size_only: 807 if self._size_only:
794 self._writer.write_size(opath, collector.size) 808 self._writer.write_size(opath, collector.size)
795 else: 809 else:
796 self._writer.write_file_digest( 810 self._writer.write_file_digest(
797 collector.algorithm, opath, collector.digest, 811 collector.algorithm, opath, collector.digest,
799 return (0, 813 return (0,
800 collector.algorithm, 814 collector.algorithm,
801 collector.digest, 815 collector.digest,
802 collector.size) 816 collector.size)
803 else: 817 else:
818 #
819 # treesum file could not be read
820 #
804 self._writer.write_error(util.interpolate_bytes( 821 self._writer.write_error(util.interpolate_bytes(
805 "Cannot read treesum-file `%s' for directory" 822 "Cannot read treesum-file `%s' for directory"
806 "`%s': %s", 823 "`%s': %s",
807 fpath, 824 fpath,
808 opath, 825 opath,
812 else: 829 else:
813 self._writer.write_file_digest( 830 self._writer.write_file_digest(
814 self._algorithm[1], opath, None, 831 self._algorithm[1], opath, None,
815 use_base64=self._use_base64, size=None) 832 use_base64=self._use_base64, size=None)
816 return (eno, None, None, None) 833 return (eno, None, None, None)
834 #
835 # No treesum file: just process normally with digesting
836 #
817 if self._utf8_mode: 837 if self._utf8_mode:
818 fsobjects.sort(key=walk.WalkDirEntry.sort_key_u8) 838 fsobjects.sort(key=walk.WalkDirEntry.sort_key_u8)
819 else: 839 else:
820 fsobjects.sort(key=walk.WalkDirEntry.sort_key_fs) 840 fsobjects.sort(key=walk.WalkDirEntry.sort_key_fs)
821 dir_dgst = self._algorithm[0]() 841 dir_dgst = self._algorithm[0]()