#!/bin/sh # # $NetBSD: makesums,v 1.11 2005/10/21 02:41:14 jmc Exp $ # # Make checksum files for files in ``tardir''. Usage: # makesums [-a] [-t tardir] [setname [...]] # # If -t is omitted, RELEASEDIR must be set and not empty. # The ``setname'' arguments comprise a list of files to checksum, # and may be omitted (in which case ``*.tgz'' is used). # If -A is given, then the checksum are appended to possibly existing files. # NOTE: Don't use this when running parallel jobs # If -a is given, then the list of sets is ignored, and ``*'' is used. # # After shell glob expansion, the list of sets is filtered to remove known # output file names (of the form *SUM, SHA512 and MD5), non-existent files, and # subdirectories. If this filtering leaves no files, then no output files are # produced. Otherwise the resulting list of files are checksummed and five # output files (BSDSUM, CKSUM, MD5, SHA512, SYSVSUM) are produced. # prog=${0##*/} # set defaults : ${CKSUM:=cksum} targetdir=$RELEASEDIR dash_all=no append=\> usage() { cat 1>&2 <\> ;; a) dash_all=yes ;; t) targetdir=${OPTARG} ;; *) usage ;; esac done shift $((${OPTIND} - 1)) if [ -z "$targetdir" ]; then echo 1>&2 '$RELEASEDIR must be set or provided with -t' exit 1 fi cd $targetdir pat="$*" if [ $dash_all = yes ]; then pat='*' elif [ -z "$pat" ]; then pat='*.tgz' fi lists=$(find $pat -prune \( -type f -o -type l \) \! -name '*SUM' \! -name MD5 \! -name SHA512 2>/dev/null) if [ -n "$lists" ]; then eval ${CKSUM} -o1 $lists $append BSDSUM eval ${CKSUM} $lists $append CKSUM eval ${CKSUM} -a md5 $lists $append MD5 eval ${CKSUM} -o2 $lists $append SYSVSUM eval ${CKSUM} -a sha512 $lists $append SHA512 fi