mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-10 11:05:54 +02:00
Bumping across one of our scripts with very long trailing whitespaces, I thought it might be a good idea to clean these up. Doing so, some missing or inconsistent licence headers were fixed. There is no need in shipping all these files en bloc, as their functionality won't change. Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
103 lines
3.0 KiB
Bash
103 lines
3.0 KiB
Bash
#!/bin/bash
|
|
###############################################################################
|
|
# #
|
|
# IPFire.org - A linux based firewall #
|
|
# Copyright (C) 2007-2022 IPFire Team <info@ipfire.org> #
|
|
# #
|
|
# This program is free software: you can redistribute it and/or modify #
|
|
# it under the terms of the GNU General Public License as published by #
|
|
# the Free Software Foundation, either version 3 of the License, or #
|
|
# (at your option) any later version. #
|
|
# #
|
|
# This program is distributed in the hope that it will be useful, #
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
# GNU General Public License for more details. #
|
|
# #
|
|
# You should have received a copy of the GNU General Public License #
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
|
# #
|
|
###############################################################################
|
|
|
|
PATHS=(
|
|
/usr/lib
|
|
/lib
|
|
)
|
|
|
|
main() {
|
|
local dry_run="false"
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case "${1}" in
|
|
--dry-run)
|
|
dry_run="true"
|
|
;;
|
|
|
|
*)
|
|
echo "${0}: Invalid argument: ${1}" >&2
|
|
return 2
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# Update the runtime linker cache (this may fix any broken symlinks)
|
|
ldconfig
|
|
|
|
local path
|
|
for path in ${PATHS[@]}; do
|
|
echo "Searching in ${path}..."
|
|
|
|
# Find all files called libsomething.so.N
|
|
local lib
|
|
for lib in $(find "${path}" -maxdepth 1 -type l -name "lib*.so.*" | sort); do
|
|
# Ignore some libraries
|
|
case "${lib}" in
|
|
*/libboost*)
|
|
continue
|
|
;;
|
|
esac
|
|
|
|
# Read the name of the linked library
|
|
local link="$(readlink -m "${lib}")"
|
|
|
|
# We have two versioning schemas that we need to distinguish...
|
|
local files=()
|
|
case "${link}" in
|
|
# Libraries called libsomething-N.so
|
|
*/lib*-*.so)
|
|
files+=( ${link%-*}-* )
|
|
;;
|
|
|
|
# Libraries called libsomething.so.N.*
|
|
*)
|
|
files+=( ${lib}* )
|
|
;;
|
|
esac
|
|
|
|
# Remove all files that have the same base name than
|
|
# the library we are looking at, apart from the symlink
|
|
# and the linked file itself.
|
|
local file
|
|
for file in ${files[@]}; do
|
|
case "${file}" in
|
|
# Ignore these files
|
|
${lib}|${link})
|
|
;;
|
|
|
|
*)
|
|
echo "Removing ${file}..."
|
|
|
|
# Actually remove the file (maybe)
|
|
if [ "${dry_run}" = "false" ]; then
|
|
unlink "${file}"
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
done
|
|
done
|
|
}
|
|
|
|
main "$@" || exit $?
|