#!/bin/sh

if [ "/usr/lib64" = "/usr/lib" ]; then
    extra="/usr/lib64/zmd:/usr/lib64"
else
    extra="/usr/lib64/zmd:/usr/lib64:/usr/lib/zmd"
fi

if [ -n "$LD_LIBRARY_PATH" ]; then
    LD_LIBRARY_PATH="$extra:$LD_LIBRARY_PATH"
else
    LD_LIBRARY_PATH=$extra
fi

if [ -n "$MONO_GAC_PREFIX" ]; then
    MONO_GAC_PREFIX="/usr:$MONO_GAC_PREFIX"
else
    MONO_GAC_PREFIX="/usr"
fi

if [ "$MONO_CFG_DIR" = "" ] && [ -e "/usr/etc/mono/config" ]; then
    MONO_CFG_DIR="/usr/etc"
fi

if [ -n "$MONO_PATH" ]; then
    MONO_PATH="/usr/lib/zmd:/usr/lib/zmd/modules:$MONO_PATH"
else
    MONO_PATH="/usr/lib/zmd:/usr/lib/zmd/modules"
fi

if [ -f "/usr/lib/mono/1.0/mscorlib.dll" ]; then
    MONO_PATH="$MONO_PATH:/usr/lib/mono/1.0:/usr/lib/mono/2.0"
fi

if [ -n "$PATH" ]; then
    PATH="$PATH:/usr/bin"
else
    PATH="/usr/bin"
fi

# We require LANG=C for e.g., correct date parsing in the logs
LANG=C
LC_ALL=C

#work around buggy filesystems
GC_RETRY_SIGNALS=1

if ! mkdir -p /var/run/zmd; then \
    echo "ERROR: could not create remoting socket directory" > /dev/stderr
    exit 1
fi;

if ! mkdir -p /var/log; then \
    echo "ERROR: could not create log directory" > /dev/stderr
    exit 1
fi;    

export LD_LIBRARY_PATH MONO_GAC_PREFIX LANG LC_ALL GC_RETRY_SIGNALS MONO_CFG_DIR MONO_PATH PATH
exec -a zmd /usr/lib64/zmd/zmd-bin $ZMD_MONO_ARGS /usr/lib/zmd/zmd.exe "$@"
