#!/bin/sh -efu
file=
handler()
{
	local rc=$?
	trap - EXIT
	[ -z "$file" ] || rm -f -- "$file"
	exit $rc
}
trap handler EXIT HUP INT QUIT PIPE TERM
file=`mktemp -t find-requires.XXXXXXXXXX`

ProcessFile()
{
	local f="$1" && shift

	local t interp
	[ -f "$f" ] || return 0
	t="$(file -b "$f")" || return 0
	if [ -z "${t##*ELF* executable*uses shared libs*}" ]; then
		interp="$(
			readelf -l "$f" |
			sed -ne 's,^[[:space:]]*\[Requesting program interpreter: \(/[^]]\+\)\]$,\1,p'
		)" || return
		if [ -n "$interp" ] && [ -z "${interp##*/klibc-*.so}" ]; then
			printf '%s\n' "$interp" >>"$file"
		fi
	fi
}

(
	while IFS= read -r f; do
		printf '%s\n' "$f"
		ProcessFile "$f"
	done
) | "$@"

LC_ALL=C sort -u < "$file"
