#!/bin/bash
scan_dirs() {
	tmpfile=$(mktemp)
	find "$@" -maxdepth 1 -type f -exec file {} + | grep -E "ELF.*shared object" | cut -f 1 -d : > $tmpfile
	while read FILE; do
		SONAME=$(readelf -d $FILE | grep SONAME | cut -d'[' -f2 | cut -d']' -f1)
		TARGET="${FILE##*/}"
		LINK="${FILE%/*}/$SONAME"
		case "$FILE" in
		/lib/*|/usr/lib/*|/usr/local/lib/*) ;;
		*) [ -h "$LINK" -o ! -e "$LINK" ] && ln -sf "$TARGET" "$LINK"
		esac
	done < $tmpfile
	rm $tmpfile
	return 0
}
# eat ldconfig options
while getopts "nNvXvf:C:r:" opt; do
	:
done
shift $(( $OPTIND - 1 ))
[ $# -gt 0 ] && scan_dirs "$@"
