xref: /netbsd/distrib/sets/makesums (revision bf9ec67e)
1#!/bin/sh
2#
3# $NetBSD: makesums,v 1.3 2002/03/31 15:17:58 bjh21 Exp $
4#
5# Make checksum files for files in ``tardir''.  Usage:
6# makesums [-t tardir] [ -all ] [setname ...]
7#
8# If -t is omitted, RELEASEDIR must be set and not empty.
9# The ``setname'' arguments comprise a list of files to checksum,
10# and may be omitted (in which case ``*.tgz'' is used).
11# If -all is given, then the list of sets is ignored, and ``*'' is used.
12#
13# After shell glob expansion, the list of sets is filtered to remove known
14# output file names (of the form *SUM and MD5), non-existent files, and
15# subdirectories. If this filtering leaves no files, then no output files are
16# produced. Otherwise the resulting list of files are checksummed and four
17# output files (BSDSUM, CKSUM, MD5, SYSVSUM) are produced.
18#
19
20# set defaults
21: ${CKSUM=cksum}
22: ${MAKE=make}	# XXX: what purpose does this serve??
23tars=$RELEASEDIR
24dash_all=no
25
26# handle args
27while : ; do
28	case $1 in
29	-all)
30		dash_all=yes
31		break
32		;;
33	-t*)
34		tars=$2; shift
35		;;
36	-*)
37		cat 1>&2 <<USAGE
38Usage: $0 [-t tars] [-all] [setname ...]
39	-t tars		\$RELEASEDIR		[$tars]
40	[setname ...]	sets to checksum 	[*.tgz]
41	-all		do all plain files instead of [setname ...]
42USAGE
43		exit 1
44		;;
45	*)
46		break
47		;;
48	esac
49	shift
50done
51
52if [ -z "$tars" ]; then
53	echo \$RELEASEDIR must be set
54	exit 1
55fi
56
57cd $tars
58pat="$*"
59if [ $dash_all = yes ]; then
60	pat='*'
61elif [ -z "$pat" ]; then
62	pat='*.tgz'
63fi
64lists=`find $pat -prune -type f \! -name '*SUM' \! -name MD5 2>/dev/null`
65if [ -n "$lists" ]; then
66	${CKSUM} -o1 $lists > BSDSUM
67	${CKSUM}     $lists > CKSUM
68	${CKSUM} -m  $lists > MD5
69	${CKSUM} -o2 $lists > SYSVSUM
70fi
71