#!/bin/bash

## Copyright (C) 2012 - 2024 ENCRYPTED SUPPORT LP <adrelanos@whonix.org>
## See the file COPYING for copying conditions.

set -o errexit
set -o nounset
set -o errtrace
set -o pipefail

write_pid_file() {
  [[ -z "${TMP:-}" ]] && error "TMP is unset"
  safe-rm -rf "$TMP/security-misc-apt-get-update-pid";
  install -m644 /dev/null "$TMP/security-misc-apt-get-update-pid"
  echo "$$" | sponge -- "$TMP/security-misc-apt-get-update-pid"
}

sigterm_trap() {
   if [ "$lastpid" = "" ]; then
      exit 143
   fi
   ps -p "$lastpid" >/dev/null 2>&1
   if [ ! "$?" = "0" ]; then
      ## Already terminated.
      exit 143
   fi
   kill -s sigterm "$lastpid"
   exit 143
}

trap "sigterm_trap" SIGTERM SIGINT

[[ -v timeout_after ]] || timeout_after="600"
[[ -v kill_after ]] || kill_after="10"

write_pid_file

timeout \
   --kill-after="$kill_after" \
   "$timeout_after" \
   apt-get update --error-on=any "$@" &

lastpid="$!"
wait "$lastpid"

exit "$?"
