#! /bin/sh

case $# in
0) ;;
*) cd /usr/pkg/pkgdb/digest-20021220 ;;
esac

awk '
BEGIN	{ ex = 0 }
END	{ exit(ex) }
/^@cwd/	{ prefix = $2; next }
/^@/	{ next }
	{
	for (done = 0 ; !done ; ) {
		filename = prefix "/" $0;
		getline;
		if ($0 ~ /^@comment (MD5|SHA1):/) {
			alg = dig = $2;
			gsub(":.*", "", alg);
			gsub("[A-Za-z0-9]*:", "", dig);
			cmd = sprintf("s=`cat %s | /usr/pkg/bin/digest %s`; if test \"%s\" != \"$s\"; then echo \"Checksum mismatch (%s): expected %s, got $s\"; fi", filename, alg, dig, filename, dig);
			if (system(cmd) != 0) ex = 1
			done = 1;
		}
	}
}' +CONTENTS

awk '
BEGIN	{ ex = 0 }
END	{ exit(ex) }
          {
cmd = sprintf("s=`cat %s | /usr/pkg/bin/digest %s`; if test \"%s\" != \"$s\"; then echo \"Checksum mismatch (%s): expected %s, got $s\"; fi", $1, $2, $3, $1, $3);
if (system(cmd) != 0) ex = 1
}' << filesEOF
+COMMENT sha1 20da66ff5448ec984cd00fc4299ba9231b552fd8
+COMMENT sha512 08afa0b76700baefc42525f94747c3ac6ec9aa12eb2d07fe3288fb87ad2c89659cc0b5b03c49267be85770c76fd350ce04c769e583f9fa7c98a049359aec2301
+CONTENTS sha1 e6ec2628b01b1b4c62b0ffc56ae74bd72a0f9d31
+CONTENTS sha512 84d48504d812ba5c1091c73c043bdf173e0a550d9853c45fb04f849e6503f5a43fb3e75e16f2585c999ececbc879a8afd8db7a9e3f633451e56686ef308ef55a
+DESC sha1 f9c0ad47d58259455ae24b3b3911711a944a1881
+DESC sha512 b50ff3ab29fb5c06195bdfbe864dc5c5e5291be731f1dd966395b5c0fdfe7321c06a758d9d28b993a79cec3c2755f48b032c7554c1bbcde57d3ae864b5d29c05
+SIZE_ALL sha1 77f67cda19f50c89a7dfb0b17c6eb9cad45fd013
+SIZE_ALL sha512 14f87abef8a19c4df44503058a2018352aec0b7345baa8f7521c2535a1064c862225cffef2a923115c857dcc5077ccd7c880a607198697037088b0115ab1490b
+SIZE_PKG sha1 77f67cda19f50c89a7dfb0b17c6eb9cad45fd013
+SIZE_PKG sha512 14f87abef8a19c4df44503058a2018352aec0b7345baa8f7521c2535a1064c862225cffef2a923115c857dcc5077ccd7c880a607198697037088b0115ab1490b
filesEOF
