#!/bin/sh

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

if [ -n "$LD_LIBRARY_PATH" ]; then \
    if [ `echo $LD_LIBRARY_PATH | grep "$extra" | wc -l` -ne "1" ]; then \
        LD_LIBRARY_PATH="$extra:$LD_LIBRARY_PATH"
    fi
else
    LD_LIBRARY_PATH=$extra
fi;

if [ -n "$MONO_GAC_PREFIX" ]; then \
    if [ `echo $MONO_GAC_PREFIX | grep "/usr" | wc -l` -ne "1" ]; then \
        MONO_GAC_PREFIX="/usr:$MONO_GAC_PREFIX"
    fi
    if [ `echo $MONO_GAC_PREFIX | grep "/usr/lib64/pkgconfig/../.." | wc -l` -ne "1" ]; then \
        MONO_GAC_PREFIX="/usr/lib64/pkgconfig/../..:$MONO_GAC_PREFIX"
    fi
else
    MONO_GAC_PREFIX="/usr/lib64/pkgconfig/../..:/usr"
fi;

if [ "$MONO_CFG_DIR" = "" ] ; then \
    if [ -e "/usr/etc/mono/config" ]; then \
        MONO_CFG_DIR="/usr/etc"
    fi
    if [ -e "/etc//usr/lib64/pkgconfig/../.." ]; then \
        MONO_CFG_DIR="/etc//usr/lib64/pkgconfig/../..:$MONO_CFG_DIR"
    fi
fi;

if [ -n "$MONO_PATH" ]; then \
    if [ `echo $MONO_PATH | grep "/usr/lib/zmd:/usr/lib/zmd/modules" | wc -l` -ne "1" ]; then \
        MONO_PATH="/usr/lib/zmd:/usr/lib/zmd/modules:$MONO_PATH"
    fi
else
    MONO_PATH="/usr/lib/zmd:/usr/lib/zmd/modules"
fi;

if [ -f "/usr/lib64/pkgconfig/../../lib/mono/1.0/mscorlib.dll" ]; then \
    if [ `echo $MONO_PATH | grep "/usr/lib64/pkgconfig/../../lib/mono/1.0:/usr/lib64/pkgconfig/../../lib/mono/2.0" | wc -l` -ne "1" ]; then \
        MONO_PATH="/usr/lib64/pkgconfig/../../lib/mono/1.0:/usr/lib64/pkgconfig/../../lib/mono/2.0:$MONO_PATH"
    fi
fi;

if [ -n "$PATH" ]; then \
    if [ `echo $PATH | grep ":/usr/bin" | wc -l ` -ne "1" ]; then \
        PATH="$PATH:/usr/bin"
    fi
    if [ `echo $PATH | grep ":/usr/lib64/pkgconfig/../../bin" | wc -l ` -ne "1" ]; then \
        PATH="/usr/lib64/pkgconfig/../../bin:$PATH"
    fi
else
    PATH="/usr/lib64/pkgconfig/../../bin:/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;    

if [ `arch` = "ia64" ]; then
    MONO_MANAGED_WATCHER=1
    export MONO_MANAGED_WATCHER
fi

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