#!/bin/sh
# Copyright (c) 2019-2024 Griefer@Work
#
# This software is provided 'as-is', without any express or implied
# warranty. In no event will the authors be held liable for any damages
# arising from the use of this software.
#
# Permission is granted to anyone to use this software for any purpose,
# including commercial applications, and to alter it and redistribute it
# freely, subject to the following restrictions:
#
# 1. The origin of this software must not be misrepresented; you must not
#    claim that you wrote the original software. If you use this software
#    in a product, an acknowledgement (see the following) in the product
#    documentation is required:
#    Portions Copyright (c) 2019-2024 Griefer@Work
# 2. Altered source versions must be plainly marked as such, and must not be
#    misrepresented as being the original software.
# 3. This notice may not be removed or altered from any source distribution.

while test $# -gt 0; do
	case "$1" in
	--h | --he | --hel | --help)
		echo "Usage: ldd [OPTION]... FILE..."
		echo "      --help              print this help and exit"
		exit 0
		;;
	--)
		shift
		break
		;;
	-*)
		echo "ldd: unrecognized option \`$1'" >&2
		echo "Try \`ldd --help' for more information." >&2
		exit 1
		;;
	*)
		break
		;;
	esac
done

if test $# -eq 0; then
	echo 'ldd: missing file arguments' >&2
	echo "Try \`ldd --help' for more information." >&2
	exit 1
fi

# This right here is the magic that activates option tracking
export LD_TRACE_LOADED_OBJECTS=1

while test $# -gt 0; do
	file="$1"
	case "$file" in
	*/*)
		;;
	*)
		file="./$file"
		;;
	esac
	case $# in
	1)
		exec "$file"
		;;
	*)
		"$file"
		;;
	esac
	shift
done
exit 0
