#!/bin/sh
set -eu

script_path=$0
while [ -L "$script_path" ]; do
  script_dir=$(CDPATH= cd -- "$(dirname -- "$script_path")" && pwd)
  link_target=$(readlink "$script_path")
  case "$link_target" in
    /*) script_path=$link_target ;;
    *) script_path=$script_dir/$link_target ;;
  esac
done
app_dir=$(CDPATH= cd -- "$(dirname -- "$script_path")" && pwd)
app_binary="$app_dir/netMail.bin"

show_error() {
  message=$1
  printf '%s\n' "$message" >&2
  if command -v zenity >/dev/null 2>&1; then
    zenity --error --title='netMail' --width=520 --text="$message" >/dev/null 2>&1 || true
  fi
}

if [ "$(id -u)" -eq 0 ]; then
  show_error "netMail darf nicht mit sudo oder als root gestartet werden.

Bitte netMail als normaler Desktop-Benutzer über das Anwendungsmenü oder mit dem Befehl netmail starten. Nur die Installation des DEB-/RPM-Pakets benötigt sudo."
  exit 1
fi

if [ ! -x "$app_binary" ]; then
  show_error "Die netMail-Programmdatei fehlt: $app_binary"
  exit 126
fi

loader_report=$(
  LD_LIBRARY_PATH="$app_dir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" \
    ldd "$app_binary" "$app_dir/libsk4d.so" 2>&1 || true
)
if printf '%s\n' "$loader_report" | grep -Eq 'not found|version .* not found'; then
  missing=$(printf '%s\n' "$loader_report" | grep -E 'not found|version .* not found' | sort -u)
  show_error "netMail kann eine Linux-Laufzeitbibliothek nicht laden:

$missing

Ubuntu/Debian: Bitte das netMail-DEB-Paket verwenden oder install.sh erneut mit sudo starten."
  exit 127
fi

log_dir=${XDG_CACHE_HOME:-$HOME/.cache}/netmail
umask 077
mkdir -p "$log_dir"
log_file="$log_dir/startup.log"
if [ -f "$log_file" ] && [ "$(wc -c <"$log_file")" -gt 1048576 ]; then
  mv -f "$log_file" "$log_file.previous"
fi

set +e
env LD_LIBRARY_PATH="$app_dir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" \
  "$app_binary" "$@" >>"$log_file" 2>&1
status=$?
set -e
if [ "$status" -ne 0 ]; then
  show_error "netMail wurde unerwartet beendet (Fehlercode $status).

Das Startprotokoll liegt unter:
$log_file"
fi
exit "$status"
