#!/usr/bin/busybox sh

# remove links that has been relocated or removed
# - generate a list of all symlinks in bin dirs and a list with all busybox
#   applets
# - sort the list and print all lines that are unique. This is the list of
#   symlinks that does not exist in the busybox applets list.
# - use stat to find the target of those symlinks printed as:
#     '/path/to/symlink' -> '/path/to/target'
#   The "2>/dev/null" is used to stop "can't stat" warnings appearing on
#   the console for each new command added by the new version of the
#   busybox package.
# - use awk to print the symlinks that points to '/bin/busybox'
# - use sed to strip the leading and training ' chars
# - finally pass the list to rm for removing the symlinks that points to
#   busybox but does not exist in the `busybox --list-all` list. On /usr-merged
#   systems find duplicates some of the symlinks, so pass -f to silence the
#   errors.
#   TODO: remove the -f flag after busybox is installed solely under /usr,
#   see #17423 and #17642
{ find bin sbin usr/bin usr/sbin -maxdepth 1 -type l; busybox --list-all; } \
	| sort | uniq -u \
	| xargs -r stat -c "%N" 2>/dev/null \
	| awk "\$3 == \"'/bin/busybox'\" {print \$1}" \
	| sed "s/^'//; s/'$//" \
	| xargs -r rm -f

# We need the symlinks early
/usr/bin/busybox --install -s || exit 1

exit 0
