#!/bin/bash
#
# BRUNIE
#
# Cache-Gre einstellen
#
# Angepasst fr:
#   - GT.M 7.1
#   - systemd
#

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

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

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

if [ "$(id -un)" != "${BRUNIE_USER}" ]; then

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

    exec su -s /bin/bash "${BRUNIE_USER}" -c \
        "\"$0\" \"$1\""
fi

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

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

CACHE_SIZE="$1"

if ! [[ "${CACHE_SIZE}" =~ ^[0-9]+$ ]]; then
    echo
    echo "FEHLER: Die Cache-Gre muss eine positive Zahl sein."
    echo
    exit 1
fi

if [ "${CACHE_SIZE}" -eq 0 ]; then
    echo
    echo "FEHLER: Die Cache-Gre darf nicht 0 sein."
    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}"

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

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

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

###############################################################################
# BRUNIE-Verzeichnis
###############################################################################

if [ ! -d "${BRUNIE_DIR}" ]; then
    echo
    echo "FEHLER: BRUNIE-Verzeichnis wurde nicht gefunden:"
    echo "  ${BRUNIE_DIR}"
    echo
    exit 1
fi

cd "${BRUNIE_DIR}" || {
    echo
    echo "FEHLER: Kann nicht nach ${BRUNIE_DIR} wechseln."
    echo
    exit 1
}

###############################################################################
# Cache-Gre anzeigen
###############################################################################

echo
echo "   Changing size of cachebuffers to ${CACHE_SIZE}:"
echo

###############################################################################
# Datenbanken suchen
###############################################################################

shopt -s nullglob

DB_FILES=(
    *.dat
    *.tmp
    *.db
)

if [ ${#DB_FILES[@]} -eq 0 ]; then
    echo "   Keine Datenbanken gefunden."
    echo
    shopt -u nullglob
    exit 0
fi

###############################################################################
# Cache-Gre fr alle Datenbanken setzen
###############################################################################

for db in "${DB_FILES[@]}"
do

    echo "   - Datenbank: ${db}"

    ###########################################################################
    # MUPIP
    ###########################################################################

    if ! "${GTM_DIR}/mupip" set \
        -FILE \
        -G="${CACHE_SIZE}" \
        "${db}"
    then
        echo
        echo "FEHLER: Cache-Gre konnte fr ${db} nicht gesetzt werden."
        echo
        shopt -u nullglob
        exit 1
    fi

    ###########################################################################
    # Global Directory
    ###########################################################################

    export gtmgbldir="${db}"
    export gtmroutines="${GTM_DIR}"

    ###########################################################################
    # GDE
    ###########################################################################

    if ! "${GTM_DIR}/mumps" ^GDE
    then
        echo
        echo "FEHLER: GDE konnte fr ${db} nicht ausgefhrt werden."
        echo
        shopt -u nullglob
        exit 1
    fi

done

shopt -u nullglob

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

echo
echo "   Cache-Gre wurde fr alle Datenbanken auf"
echo "   ${CACHE_SIZE} gesetzt."
echo