# Allow executing init.d scripts as upstart jobs

# Operate against system upstart, not session
unset UPSTART_SESSION

# Bail if there is an upstart job, and called via RC
_RC_SCRIPT=${0#/etc/rc?.d/[KS]??*}
if [ -r "/etc/init/${_RC_SCRIPT}.conf" ] && which initctl >/dev/null \
   && initctl version 2>/dev/null | grep -q upstart
then
   exit 0
fi

_UPSTART_JOB=${0#/etc/init.d/}
if [ -r "/etc/init/${_UPSTART_JOB}.conf" ] && which initctl >/dev/null \
   && initctl version 2>/dev/null | grep -q upstart \
   && initctl status ${_UPSTART_JOB} 2>/dev/null 1>/dev/null
then
   # Upstart configuration exists for this job and we're running under upstart
   case "${1:-}" in
      start|stop|status|reload)
         # Action is a valid upstart action
         exec ${1} ${_UPSTART_JOB}
      ;;
      restart|force-reload)
        # Map restart to the usual sysvinit behavior.
         stop ${_UPSTART_JOB} || :
         exec start ${_UPSTART_JOB}
      ;;
   esac
fi
