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