#!/bin/sh
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id: /var/cvsroot/gentoo-src/portage/bin/find-requires,v 1.5 2004/10/04 13:56:50 vapier Exp $

# note this works for both a.out and ELF executables
# it also auto-generates requirment lines for shell scripts

ulimit -c 0

filelist=$(sed "s/['\"]/\\\&/g")
exelist=$(echo $filelist | $XARGS file | grep ":.*executable" | cut -d: -f1 )
scriptlist=$(echo $filelist | $XARGS file | egrep ":.* (commands|script) " | cut -d: -f1 )
liblist=$(echo $filelist | $XARGS file | grep ":.*shared object" | cut -d : -f1 )

for f in $exelist; do
    if [ -x $f ]; then
	ldd $f | awk '/=>/ { print $1 }'
    fi
done | sort -u | sed "s/['\"]/\\\&/g" | $XARGS -n 1 basename | grep -v 'libNoVersion.so' | sort -u

for f in $liblist; do
    ldd $f | awk '/=>/ { print $1 }'
done | sort -u | sed "s/['\"]/\\\&/g" | $XARGS -n 1 basename | grep -v 'libNoVersion.so' | sort -u

for f in $scriptlist; do
    if [ -x $f ]; then
	head -1 $f | sed -e 's/^\#\![ 	]*//' | cut -d" " -f1
    fi
done | sort -u

#for f in $liblist $exelist ; do
#    objdump -p $f | awk '
#	BEGIN { START=0; LIBNAME=""; }
#	/Version References:/ { START=1; }
#	/required from/ && (START==1) {
#	    sub(/:/, "", $3);
#	    LIBNAME=$3;
#	}
#	(START==1) && (LIBNAME!="") && ($4~/^GLIBC_*/) { print LIBNAME "(" $4 ")"; }
#	/^$/ { START=0; }
#    '
#done | sort -u

