Skip to content

Commit 2ca430c

Browse files
lundmanilovezfs
authored andcommitted
Upstream: alternate recursive_cksum
1 parent dd3bc50 commit 2ca430c

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

tests/zfs-tests/tests/functional/rsend/rsend.kshlib

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -848,10 +848,24 @@ function recursive_cksum
848848
\; | sort | sha256 -q
849849
;;
850850
Darwin)
851-
find $1 -type f -exec sh -c 'sha256sum {}; xattr -lv {} | \
852-
sha256sum' \; | \
853-
sort -k 2 | awk '{ print $1 }' | sha256sum | \
854-
awk '{ print $1 }'
851+
# Posix makes no promise on the order of readdir entries
852+
# so sort the find. Alas, XNU's "xattr" also doesn't sort
853+
# so it becomes a hassle. Neither command can strip the
854+
# full path in filename.
855+
for name in $(find $1 -type f -print0 | sort -V -z | xargs -0)
856+
do
857+
# file's checksum
858+
filsum=$(sha256sum "${name}" | awk '{print $1}')
859+
# echo "${name}:${filsum}"
860+
echo "${filsum}"
861+
# sort xattrs too
862+
for a in $(xattr "${name}" | sort -V)
863+
do
864+
cksum=$(xattr -px "$a" "${name}" | sha256sum | awk '{print $1}')
865+
echo "${a}:${cksum}"
866+
# echo "${cksum}"
867+
done
868+
done | sha256sum | awk '{print $1}'
855869
;;
856870
*)
857871
find $1 -type f -exec sh -c 'sha256sum {}; getfattr \

0 commit comments

Comments
 (0)