#!/bin/bash
#
# BRUNIE
#
# Interrupt an laufende GT.M-MUMPS-Prozesse senden
#
#

###############################################################################
# Grundeinstellungen
###############################################################################

GTM_DIR="/usr/gtm"
BRUNIE_USER="brunie"

###############################################################################
# Benutzer prfen
###############################################################################

if [ "$(id -un)" != "${BRUNIE_USER}" ]; then
    echo
    echo "  Nur unter Benutzer '${BRUNIE_USER}' zugelassen!"
    echo
    exit 1
fi

###############################################################################
# Parameter prfen
###############################################################################

if [ $# -ne 1 ]; then
    echo
    echo "  Verwendung:"
    echo "    $0 <PID>"
    echo
    exit 1
fi

EXCLUDE_PID="$1"

if ! [[ "${EXCLUDE_PID}" =~ ^[0-9]+$ ]]; then
    echo
    echo "  FEHLER: Ungltige PID: ${EXCLUDE_PID}"
    echo
    exit 1
fi

###############################################################################
# GT.M prfen
###############################################################################

if [ ! -x "${GTM_DIR}/mumps" ]; then
    echo
    echo "  FEHLER: GT.M MUMPS wurde nicht gefunden:"
    echo "    ${GTM_DIR}/mumps"
    echo
    exit 1
fi

if [ ! -x "${GTM_DIR}/mupip" ]; then
    echo
    echo "  FEHLER: GT.M MUPIP wurde nicht gefunden:"
    echo "    ${GTM_DIR}/mupip"
    echo
    exit 1
fi

###############################################################################
# GT.M Umgebung
###############################################################################

export gtm_dist="${GTM_DIR}"
export gtmroutines="${GTM_DIR}"
export gtm_ztrap_form="adaptive"
export PATH="${PATH}:${GTM_DIR}"

###############################################################################
# Interrupt ber %BRUNIE senden
###############################################################################

for proc in $(ps --no-headers -o pid= -C mumps)
do

    if [ "${proc}" != "${EXCLUDE_PID}" ]; then

        "${GTM_DIR}/mumps" -run SETJOB^%BRUNIE "${proc}"

    fi

done

###############################################################################
# MUPIP Interrupt senden
###############################################################################

for proc in $(ps --no-headers -o pid= -C mumps)
do

    if [ "${proc}" != "${EXCLUDE_PID}" ]; then

        echo "doing ${proc}..."

        "${GTM_DIR}/mupip" intrpt "${proc}"

    fi

done

###############################################################################
# Ende
###############################################################################

echo "ready"