#!/bin/ksh
##
## AIX: Extended ldd(1) - Add support shared objects in archives (*.a)
## Copyright (c) 2013 SATOH Fumiyasu @ OSS Technology Corp., Japan
##               <http://www.OSSTech.co.jp/>
##               <https://fumiyas.github.io/>
##
## License: GNU General Public License version 3
##

set -u
export PATH="/usr/bin"

pwd="$PWD"
tmpdir="/tmp/${0##*/}.$$.$RANDOM.tmp"

mkdir -m 0700 "$tmpdir" || exit 1
trap 'cd /; rm -r "$tmpdir"' EXIT
cd "$tmpdir" || exit 1

for arg in "$@"; do
  case "$arg" in
  *.a)
    if [[ -z ${arg##/*} ]]; then
      ao="$arg"
    else
      ao="$pwd/$arg"
    fi
    sos=$(ar t "$ao" |egrep '\.so(\..*)?$')
    if [[ -z $sos ]]; then
      echo "${0##*/}: $arg: No shared object in archive." 1>&2
      continue
    fi
    ar x "$ao" $sos
    for so in $sos; do
      ldd "$so" |sed "1s#^#$arg: #"
    done
    rm $sos
    ;;
  *)
    ldd "$arg"
    ;;
  esac
done

exit 0

