#!/bin/bash

case $@ in
	'') echo "Input commands"
esac

OUTPUT=prog.list

rm -rf strace
mkdir -p strace
strace -o strace/out -ff -F -f -q -s 128 -e execve $@

declare -a PROGS
grep '^execve' strace/* |grep '0$' > $OUTPUT.tmp
count=0
while read LINE ; do
	CALLED=${LINE%%','*}
	CALLED=${CALLED##*'('}
	#echo $(eval echo $CALLED)
	case ${PROGS[@]} in
		*$(eval echo $CALLED)*) : ;;
		*) ((count++))
			PROGS[$count]=$(eval echo $CALLED)
		;;
	esac
done < $OUTPUT.tmp
#echo ${PROGS[@]}
rm $OUTPUT.tmp
for PROG in ${PROGS[@]} ; do
	echo $PROG >> $OUTPUT
done
#cat $OUTPUT
while read LINE ; do
	case $LINE in
		$@|'./conftest') : ;;
		*'../'*) echo $(readlink $LINE) ;;
		*) echo $LINE ;;
	esac
done < $OUTPUT
