#!/bin/ksh # # Copyright (c) 1998 The NetBSD Foundation, Inc. # All rights reserved. # # This code is derived from software contributed to The NetBSD Foundation # by Eric Haszlakiewicz. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: # This product includes software developed by the NetBSD # Foundation, Inc. and its contributors. # 4. Neither the name of The NetBSD Foundation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # #--------------------------------------------------------------------# # checkvers [-q] [systemlibdir [library name]] # # This is a wrapper script around checkver. It will find # all directories withing the current directory containing # a shlib_version file and call checkver for each. # # As with checkver, a list of directories of installed libraries # may be specified. This will replace the default of "/usr/lib" # and search there instead. # # A library name may also be specified. However, this script # will not work correctly if it finds shlib_version files # corresponding to a different library. # # This script produces no output if all library version are ok. # If the versions aren't ok the header will be displayed once # followed by a list of problematic libraries. # TMP=/tmp/check.$$ error=0 # Cleanup on exit. trap "exit 1" 1 2 3 4 5 6 7 8 10 11 12 13 14 15 trap "rm -rf $TMP" 0 Usage ( ) { echo "$1 [-q] [installedlibdir [library name]]" } if echo "$*" | egrep -q '([[:space:]]|^)-h([[:space:]]|$)|([[:space:]]|^)--help*' ; then Usage $0 exit 0 fi if [ "X$1" = "X-q" ] ; then # Supress header. QUIET="-q" shift else QUIET= fi if [ "X$1" != "X" ] ; then LIBDIR="$1" else LIBDIR="/usr/lib" fi if [ "X$2" != "X" ] ; then LIBNAME="$2" else LIBNAME= fi if ! mkdir -m 700 $TMP ; then echo "Unable to create temp directory." exit 1 fi EXECDIR=`eval "(cd \`dirname $0\` ; pwd)"` CWD=`pwd` VERFILES=`find $CWD -name shlib_version -print` for f in $VERFILES ; do (cd `dirname $f` ; "$EXECDIR"/checkver $QUIET "$LIBDIR" "$LIBNAME" ; exit $?) if [ $? -ne 0 ] ; then QUIET="-q" error=1 fi if [ "X$LIBNAME" = "X" ] ; then # Build the library name from the directory it's in. libname=`dirname $f` libname=`basename $libname` if ! echo $libname | grep -q "^lib" ; then libname="lib$libname" fi else libname="$LIBNAME" fi if [ -e $TMP/$libname ] ; then echo "Warning: $libname sources encountered multiple times." echo " Previous location: `cat $TMP/$libname`" echo " Current location: `dirname $f`" fi echo "`dirname $f`" > $TMP/$libname done exit 0