#!/bin/sh -e

. /usr/lib/s6-policy-common/lib/svctl-common.sh

if test -z "$1" ; then
  echo "svctl-start: usage: svctl-start service..." 1>&2
  exit 100
fi

timeout="$(svctl_timeout)"
rc=0
s6-rc -t "$timeout" -u change "$@" || rc=$?
if [ "$rc" -ne 0 ]; then
  echo "svctl-start: fatal: der Zustandswechsel ist fehlgeschlagen oder hat das Limit von" 1>&2
  echo "svctl-start:        ${timeout} ms gerissen (s6-rc rc=${rc})." 1>&2
  svctl_report_pending up "$@"
  exit "$rc"
fi

# s6-rc ist zufrieden -- das heisst noch nicht, dass der Dienst laeuft.
#
# Haelt der Supervisor einen Longrun unten, den s6-rc fuer aktiv fuehrt (nach
# einem "s6-svc -d" oder einer down-Datei), war der Zustandswechsel oben ein
# No-op: aus s6-rcs Sicht gab es nichts zu tun. Ohne diese Nachschau endete
# "svctl start" mit 0 und der Dienst blieb unten (Deploy, 22.09.2026, dd81a1b).
svctl_resume_held_down "$timeout" "$@" || exit 1
