#!/bin/sh
#g-inspector.  Generated from g-inspector.in by configure.

#
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
gtk_binary_version=2.10.0

ginspector_dir=~/.g-inspector
preloads_dir=${ginspector_dir}/preloads
plugins_dir=${ginspector_dir}/plugins


#
myname="g-inspector"
version="20050529"

mode="run-app"	# run-app, show-version
no_preloads="false"
no_plugins="false"

error_found="no"


#
usage()
{
  echo "usage: $myname [--no-preloads] [--no-plugins] [--] gtk-app [args ...]"
  echo "       $myname [--version]"
}

find_la()
{
  la_name="$1"

  dirs=""
  dirs="$dirs ${libdir}/gtk-2.0/${gtk_binary_version}/ginspector"
  dirs="$dirs ${libdir}"

  for d in $dirs;
  do
    if test -f "${d}/${la_name}"; then
      la="${d}/${la_name}"
      echo $la
      break;
    fi
  done
}

find_so_from_la()
{
  la="$1"
  dl=""

  if test -f "$la"; then
    dir=`dirname $la`
    dlname=`grep dlname= $la | sed -e "s/dlname='\([^']*\)'/\1/"`

    for d in $dir ${dir}/.libs ${dir}/_libs;
    do
      if test -f ${d}/${dlname}; then
        dl=${d}/${dlname}
        break
      fi
    done

    echo $dl
  fi
}

find_gtkmodule_ginspx_so()
{
  la=`find_la gtkmodule-ginspx.la`
  so=`find_so_from_la $la`

  echo $so
}

find_libginspx_preload_manager_so()
{
  la=`find_la libginspx-preload-manager.la`
  so=`find_so_from_la $la`

  echo $so
}


construct_ld_preload()
{
  libginspx_preload_manager_so=`find_libginspx_preload_manager_so`


  preloads=""

  if [ -d $preloads_dir ]; then
    l="`ls $preloads_dir 2>/dev/null`"
    for f in $l;
    do
      p="${preloads_dir}/${f}"
      preloads="$preloads $p"
    done
  fi

  if [ X"$preloads" != X"" ]; then
    preloads="$libginspx_preload_manager_so $preloads"
  fi

  tmp=""

  for p in $preloads;
  do
    if [ X"$tmp" = X"" ]; then
      tmp="$p"
    else
      tmp="$tmp:$p"
    fi
  done

  if [ X"$LD_PRELOAD" = X"" ]; then
    tmp="$tmp"
  else
    tmp="$LD_PRELOAD:$tmp"
  fi

  echo $tmp
}

construct_gtk_modules()
{
  gtkmodule_ginspx_so=`find_gtkmodule_ginspx_so`

  tmp="$gtkmodule_ginspx_so"

  if [ X"$GTK_MODULES" = X"" ]; then
    tmp="$tmp"
  else
    tmp="$tmp:$g_inspector_gtk_modules"
  fi

  echo $tmp
}

construct_g_inspector_plugins()
{
  plugins=""

  if [ -d $plugins_dir ]; then
    l="`ls $plugins_dir 2>/dev/null`"
    for f in $l;
    do
      p="${plugins_dir}/${f}"
      plugins="$plugins $p"
    done
  fi


  tmp=""

  for p in $plugins;
  do
    if [ X"$tmp" = X"" ]; then
      tmp="$p"
    else
      tmp="$tmp:$p"
    fi
  done

  echo $tmp
}



#
#
#


while [ $# -gt 0 ]
do
  a="$1"

  case "$a" in
      --version)
	  mode="show-version"
	  shift 1
	  ;;
	
      --run-app)
	  mode="run-app"
	  shift 1
	    ;;

      --no-preloads)
	  no_preloads="true"
	  shift 1
	  ;;
	
      --no-plugins)
	  no_plugins="true"
          shift 1
	  ;;

      --)
	  shift 1
	  break;
	  ;;

      -*)
	  error_found="yes"
	  break;
	  ;;
	
      *)
	  break
	  ;;
  esac
done

if test $mode = "run-app"; then
    if test $# -lt 1; then
	error_found="yes"
    fi
fi

if [ "$error_found" != "no" ]; then
    usage
    exit 1
fi


ld_preload=`construct_ld_preload`
gtk_modules=`construct_gtk_modules`
g_inspector_plugins=`construct_g_inspector_plugins`

case "$mode" in
  "show-version")
	echo $version
	;;

  "run-app")
	case "${no_preloads}-${no_plugins}" in
	    "true-true")
		GTK_MODULES="$gtk_modules" \
		    $*
		;;
	    "true-false")
		GTK_MODULES="$gtk_modules" \
		G_INSPECTOR_PLUGINS="$g_inspector_plugins" \
		    $*
		;;
	    "false-true")
		LD_PRELOAD="$ld_preload" \
		GTK_MODULES="$gtk_modules" \
		    $*
		;;
	    "false-false")
		LD_PRELOAD="$ld_preload" \
		GTK_MODULES="$gtk_modules" \
		G_INSPECTOR_PLUGINS="$g_inspector_plugins" \
		    $*
		;;
	esac
    ;;

  *)
    echo "$myname: internal error"
    exit 1
    ;;
esac
