head	1.2;
access;
symbols
	RELEASE_8_3_0:1.2
	RELEASE_9_0_0:1.2
	RELEASE_7_4_0:1.2
	RELEASE_8_2_0:1.2
	RELEASE_6_EOL:1.2
	RELEASE_8_1_0:1.2
	RELEASE_7_3_0:1.2
	RELEASE_8_0_0:1.2
	RELEASE_7_2_0:1.2
	RELEASE_7_1_0:1.2
	RELEASE_6_4_0:1.2
	RELEASE_5_EOL:1.2
	RELEASE_7_0_0:1.2
	RELEASE_6_3_0:1.2
	PRE_XORG_7:1.2
	RELEASE_4_EOL:1.2
	RELEASE_6_2_0:1.2
	RELEASE_6_1_0:1.2
	RELEASE_5_5_0:1.2
	RELEASE_6_0_0:1.2
	RELEASE_5_4_0:1.1
	RELEASE_4_11_0:1.1
	RELEASE_5_3_0:1.1;
locks; strict;
comment	@# @;


1.2
date	2005.07.11.08.27.18;	author sem;	state Exp;
branches;
next	1.1;

1.1
date	2004.07.02.16.43.22;	author eik;	state Exp;
branches;
next	;


desc
@@


1.2
log
@- Sync with master port update

PR:		ports/83181
Submitted by:	Vsevolod Stakhov <vsevolod@@highsecure.ru>
@
text
@This utility is a wrapper for the md5(3), sha1(3), rmd160(3), and
tiger hash routines.  It is remarkably similar to the digest package,
except that it can recursively checksum directory trees.

While a simple checksum on a tar file is usually satisfactory, once
said archive has been extracted, it is virtually impossible to
repackage the extracted tree in a form that can yield a repeatable
checksum.  To be specific, changes in timestamps and ownership, and
changes in file ordering within directories can affect the checksum of
the archive, while not really impacting the actual code at all.

The algorithm used to checksum a directory in this implementation
is considers only the files' pathnames, the files' types (ie,
directory vs.  file vs. symbolic link), and their contents (for
the latter two).  It is described in greater detail in the man
page.
@


1.1
log
@Add NetBSD rdigest from
  <ftp://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/pkgtools/rdigest/README.html>
@
text
@d1 3
a3 5
This utility is a wrapper for the md5(3), sha1(3) and rmd160(3)
routines.

It is remarkably similar to the digest package, except that it
can recursively checksum directory trees.
d12 5
a16 34
The algorithm used to checksum a directory in this implementation is
as follows:

	cd into directory
	initialize MASTER_HASH
	walk directory tree, sorting all entries
	foreach entry
		if it is a directory:
			skip it if it is named "RCS", "CVS", or "SCCS"
			initialize SLAVE_HASH
			add the string "d " into SLAVE_HASH
			add the pathname of the directory into SLAVE_HASH
			finish SLAVE_HASH
			fold the hexified SLAVE_HASH result into MASTER_HASH
		if it is a file:
			initialize SLAVE_HASH
			add the string "f " into SLAVE_HASH
			add the pathname of the file into SLAVE_HASH
			finish SLAVE_HASH
			fold the hexified SLAVE_HASH result into MASTER_HASH
			initialize SLAVE_HASH
			add the contents of the file into SLAVE_HASH
			finish SLAVE_HASH
			fold the hexified SLAVE_HASH result into MASTER_HASH
		if it is a symbolic link
			initialize SLAVE_HASH
			add the string "l " into SLAVE_HASH
			add the pathname of the link into SLAVE_HASH
			finish SLAVE_HASH
			fold the hexified SLAVE_HASH result into MASTER_HASH
			initialize SLAVE_HASH
			add the contents of the link into SLAVE_HASH
			finish SLAVE_HASH
			fold the hexified SLAVE_HASH result into MASTER_HASH
@

