#! /bin/sh -- # # $NetBSD: checkflist,v 1.25 2004/01/08 01:31:57 lukem Exp $ # # Verify output of makeflist against contents of $DESTDIR. if [ -z "$DESTDIR" ]; then echo "DESTDIR must be set" exit 1 fi prog=${0##*/} : ${HOST_SH=sh} : ${MKTEMP=mktemp} SDIR=$(${MKTEMP} -d /tmp/${prog}.XXXXXX) es=0 cleanup() { /bin/rm -rf $SDIR if [ $es -gt 255 ] ; then es=255 fi exit $es } trap cleanup 0 2 3 13 # EXIT INT QUIT PIPE origin=. xargs="" dargs="" metalog= allowextra=false allowmissing=false # handle args while getopts xbM:em ch; do case ${ch} in x) xargs="-x" origin="./etc/X11 ./etc/fonts ./usr/X11R6" ;; b) xargs="-b" ;; M) metalog=${OPTARG} ;; e) allowextra=true ;; m) allowmissing=true ;; *) cat 1>&2 < $SDIR/flist ( cd $DESTDIR find $origin \( -type d -o -type f -o -type l \) -print ) | ( while read line; do case "$line" in $metalog) ;; *) echo $line ;; esac done ) | sort > $SDIR/files comm -23 $SDIR/flist $SDIR/files > $SDIR/missing comm -13 $SDIR/flist $SDIR/files > $SDIR/extra if [ -s $SDIR/extra ]; then count=$(awk 'END {print NR}' $SDIR/extra) echo "" echo "============ ${count} extra files ===============" echo "Files in DESTDIR but missing from flist." echo "File is obsolete or flist is out of date ?" if ${allowextra}; then echo "This is non-fatal." else es=1 fi echo "------------------------------------------" cat $SDIR/extra echo "========= end of ${count} extra files ===========" echo "" fi if [ -s $SDIR/missing ]; then count=$(awk 'END {print NR}' $SDIR/missing) echo "" echo "=========== ${count} missing files ==============" echo "Files in flist but missing from DESTDIR." echo "File wasn't installed ?" if ${allowmissing}; then echo "This is non-fatal." else es=1 fi echo "------------------------------------------" cat $SDIR/missing echo "======== end of ${count} missing files ==========" echo "" fi exit 0 # cleanup will exit with $es