1*84d9c625SLionel Sambuc#!/bin/sh 2*84d9c625SLionel Sambuc# $NetBSD: checkoldver,v 1.3 2008/04/30 13:10:50 martin Exp $ 3*84d9c625SLionel Sambuc# 4*84d9c625SLionel Sambuc# Copyright (c) 2002 The NetBSD Foundation, Inc. 5*84d9c625SLionel Sambuc# All rights reserved. 6*84d9c625SLionel Sambuc# 7*84d9c625SLionel Sambuc# This code is derived from software contributed to The NetBSD Foundation 8*84d9c625SLionel Sambuc# by Christos Zoulas. 9*84d9c625SLionel Sambuc# 10*84d9c625SLionel Sambuc# Redistribution and use in source and binary forms, with or without 11*84d9c625SLionel Sambuc# modification, are permitted provided that the following conditions 12*84d9c625SLionel Sambuc# are met: 13*84d9c625SLionel Sambuc# 1. Redistributions of source code must retain the above copyright 14*84d9c625SLionel Sambuc# notice, this list of conditions and the following disclaimer. 15*84d9c625SLionel Sambuc# 2. Redistributions in binary form must reproduce the above copyright 16*84d9c625SLionel Sambuc# notice, this list of conditions and the following disclaimer in the 17*84d9c625SLionel Sambuc# documentation and/or other materials provided with the distribution. 18*84d9c625SLionel Sambuc# 19*84d9c625SLionel Sambuc# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20*84d9c625SLionel Sambuc# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21*84d9c625SLionel Sambuc# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22*84d9c625SLionel Sambuc# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23*84d9c625SLionel Sambuc# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24*84d9c625SLionel Sambuc# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25*84d9c625SLionel Sambuc# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26*84d9c625SLionel Sambuc# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27*84d9c625SLionel Sambuc# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28*84d9c625SLionel Sambuc# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29*84d9c625SLionel Sambuc# POSSIBILITY OF SUCH DAMAGE. 30*84d9c625SLionel Sambuc# 31*84d9c625SLionel Sambuc# checkoldver [dir ...] 32*84d9c625SLionel Sambuc# 33*84d9c625SLionel Sambuc# Looks in the given directories for old shared libraries and lists them 34*84d9c625SLionel Sambuc# Useful for: 'checkoldver /usr/lib | xargs rm -f' 35*84d9c625SLionel Sambuc 36*84d9c625SLionel Sambucdelete() { 37*84d9c625SLionel Sambuc obsol="$1.so" 38*84d9c625SLionel Sambuc if [ ! -z "$2" ] 39*84d9c625SLionel Sambuc then 40*84d9c625SLionel Sambuc obsol="$obsol.$2" 41*84d9c625SLionel Sambuc fi 42*84d9c625SLionel Sambuc if [ ! -z "$3" ] 43*84d9c625SLionel Sambuc then 44*84d9c625SLionel Sambuc obsol="$obsol.$3" 45*84d9c625SLionel Sambuc fi 46*84d9c625SLionel Sambuc if [ ! -z "$4" ] 47*84d9c625SLionel Sambuc then 48*84d9c625SLionel Sambuc obsol="$obsol.$4" 49*84d9c625SLionel Sambuc fi 50*84d9c625SLionel Sambuc echo $PWD/$obsol 51*84d9c625SLionel Sambuc} 52*84d9c625SLionel Sambuc 53*84d9c625SLionel Sambuccomparelib() { 54*84d9c625SLionel Sambuc OIFS="$IFS" 55*84d9c625SLionel Sambuc IFS="$IFS." 56*84d9c625SLionel Sambuc set -- $1 57*84d9c625SLionel Sambuc IFS="$OIFS" 58*84d9c625SLionel Sambuc if [ "$3" = "[0-9]*" ] 59*84d9c625SLionel Sambuc then 60*84d9c625SLionel Sambuc return 61*84d9c625SLionel Sambuc fi 62*84d9c625SLionel Sambuc 63*84d9c625SLionel Sambuc if [ -z "$libmajor" ] 64*84d9c625SLionel Sambuc then 65*84d9c625SLionel Sambuc libname="$1" 66*84d9c625SLionel Sambuc libmajor="$3" 67*84d9c625SLionel Sambuc libminor="$4" 68*84d9c625SLionel Sambuc libtiny="$5" 69*84d9c625SLionel Sambuc return 70*84d9c625SLionel Sambuc fi 71*84d9c625SLionel Sambuc if [ "$libmajor" -lt "$3" ] 72*84d9c625SLionel Sambuc then 73*84d9c625SLionel Sambuc delete "$libname" "$libmajor" "$libminor" "$libtiny" 74*84d9c625SLionel Sambuc libmajor="$3" 75*84d9c625SLionel Sambuc libminor="$4" 76*84d9c625SLionel Sambuc libtiny="$5" 77*84d9c625SLionel Sambuc return 78*84d9c625SLionel Sambuc elif [ "$3" -lt "$libmajor" ] 79*84d9c625SLionel Sambuc then 80*84d9c625SLionel Sambuc delete "$libname" "$3" "$4" "$5" 81*84d9c625SLionel Sambuc return 82*84d9c625SLionel Sambuc fi 83*84d9c625SLionel Sambuc 84*84d9c625SLionel Sambuc if [ -z "$libminor" ] 85*84d9c625SLionel Sambuc then 86*84d9c625SLionel Sambuc return 87*84d9c625SLionel Sambuc fi 88*84d9c625SLionel Sambuc if [ "$libminor" -lt "$4" ] 89*84d9c625SLionel Sambuc then 90*84d9c625SLionel Sambuc delete "$libname" "$libmajor" "$libminor" "$libtiny" 91*84d9c625SLionel Sambuc libmajor="$3" 92*84d9c625SLionel Sambuc libminor="$4" 93*84d9c625SLionel Sambuc libtiny="$5" 94*84d9c625SLionel Sambuc return 95*84d9c625SLionel Sambuc elif [ "$4" -lt "$libminor" ] 96*84d9c625SLionel Sambuc then 97*84d9c625SLionel Sambuc delete "$libname" "$3" "$4" "$5" 98*84d9c625SLionel Sambuc return 99*84d9c625SLionel Sambuc fi 100*84d9c625SLionel Sambuc 101*84d9c625SLionel Sambuc if [ -z "$libtiny" ] 102*84d9c625SLionel Sambuc then 103*84d9c625SLionel Sambuc return 104*84d9c625SLionel Sambuc fi 105*84d9c625SLionel Sambuc if [ "$libtiny" -lt "$5" ] 106*84d9c625SLionel Sambuc then 107*84d9c625SLionel Sambuc delete "$libname" "$libmajor" "$libminor" "$libtiny" 108*84d9c625SLionel Sambuc libmajor="$3" 109*84d9c625SLionel Sambuc libminor="$4" 110*84d9c625SLionel Sambuc libtiny="$5" 111*84d9c625SLionel Sambuc return 112*84d9c625SLionel Sambuc elif [ "$5" -lt "$libminor" ] 113*84d9c625SLionel Sambuc then 114*84d9c625SLionel Sambuc delete "$libname" "$3" "$4" "$5" 115*84d9c625SLionel Sambuc return 116*84d9c625SLionel Sambuc fi 117*84d9c625SLionel Sambuc} 118*84d9c625SLionel Sambuc 119*84d9c625SLionel Sambucprocessonedir() { 120*84d9c625SLionel Sambuc cd "$1" 121*84d9c625SLionel Sambuc for lib in lib*.so 122*84d9c625SLionel Sambuc do 123*84d9c625SLionel Sambuc lib="${lib#lib}" 124*84d9c625SLionel Sambuc lib="${lib%.so}" 125*84d9c625SLionel Sambuc 126*84d9c625SLionel Sambuc libmajor= 127*84d9c625SLionel Sambuc libminor= 128*84d9c625SLionel Sambuc libtiny= 129*84d9c625SLionel Sambuc for link in lib$lib.so.[0-9]*.[0-9]*.[0-9]* 130*84d9c625SLionel Sambuc do 131*84d9c625SLionel Sambuc comparelib "$link" 132*84d9c625SLionel Sambuc done 133*84d9c625SLionel Sambuc 134*84d9c625SLionel Sambuc libmajor= 135*84d9c625SLionel Sambuc libminor= 136*84d9c625SLionel Sambuc libtiny= 137*84d9c625SLionel Sambuc for link in lib$lib.so.[0-9]*.[0-9]* 138*84d9c625SLionel Sambuc do 139*84d9c625SLionel Sambuc comparelib "$link" 140*84d9c625SLionel Sambuc done 141*84d9c625SLionel Sambuc 142*84d9c625SLionel Sambuc libmajor= 143*84d9c625SLionel Sambuc libminor= 144*84d9c625SLionel Sambuc libtiny= 145*84d9c625SLionel Sambuc for link in lib$lib.so.[0-9]* 146*84d9c625SLionel Sambuc do 147*84d9c625SLionel Sambuc comparelib "$link" 148*84d9c625SLionel Sambuc done 149*84d9c625SLionel Sambuc done 150*84d9c625SLionel Sambuc} 151*84d9c625SLionel Sambuc 152*84d9c625SLionel Sambucfor i 153*84d9c625SLionel Sambucdo 154*84d9c625SLionel Sambuc processonedir "$i" 155*84d9c625SLionel Sambucdone 156