#!/bin/bash
has_dcop() {
	#test whether dcop is running for this user
	which dcop &>/dev/null
	if [ $? -ne 0 ]; then
		return 1
	else
		test `dcop --user ${USER} --list-sessions |wc -l` -gt 1
		return $?
	fi
}

export_info() {
	GPG_AGENT_INFO="$@"
	export GPG_AGENT_INFO
	if has_dcop; then
		echo "Setting the info in the klauncher startup environment"
		dcop klauncher klauncher setLaunchEnv GPG_AGENT_INFO "${GPG_AGENT_INFO}"
	fi
}

echo "Starting gpg-agent"
if [ -x /usr/bin/gpg-agent ]; then
  if [ -f ${HOME}/.gpg-agent-info ]; then
    OLD_GPG_AGENT=`cat ${HOME}/.gpg-agent-info`
    CHECK_PID=`echo ${OLD_GPG_AGENT}|cut -d ":" -f 2`
    PROG=`ps -p ${CHECK_PID} -o comm= |tail -n -1`
    if [ "${PROG}x" != "gpg-agentx" ]; then
      rm ${HOME}/.gpg-agent-info
    else
      export_info "${OLD_GPG_AGENT}"
#      export GPG_AGENT_INFO=${OLD_GPG_AGENT}
    fi
    unset OLD_GPG_AGENT
    unset CHECK_PID
    unset PROG
  fi
  if [ ! -f ${HOME}/.gpg-agent-info ]; then
    eval "`gpg-agent --daemon 2>${HOME}/.gpg-agent.log |cut -d \; -f 1`"
    export_info "${GPG_AGENT_INFO}"
    echo $GPG_AGENT_INFO >${HOME}/.gpg-agent-info
  fi
fi

unset has_dcop
unset export_info

