xref: /minix3/lib/checkoldver (revision 84d9c625bfea59e274550651111ae9edfdc40fbd)
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