#! /bin/sh

O_OPTIONS=OFF
. `dirname $0`/header

if [ $O_DEBUG = ON ] ; then
        Debug "NTDIST $NTDIST"
        Debug "UXDIST $UXDIST"
        Debug "TESTSCRIPTDIR $TESTSCRIPTDIR"
fi

if [ -d "$NSS_VER_DIR" ] ; then
    cd $NSS_VER_DIR
else
    glob_usage "cant cd to $NSS_VER_DIR Exiting"
fi

if [ -d "$NTDIST" ] ; then
    cd $NTDIST
    if [  ! -h WINNT5.0_DBG.OBJ -a ! -d WINNT5.0_DBG.OBJ ] ; then 
        ln -s WINNT4.0_DBG.OBJ WINNT5.0_DBG.OBJ
    fi
    if [  ! -h WINNT5.0_DBG.OBJD -a ! -d WINNT5.0_DBG.OBJD ] ; then 
        ln -s WINNT4.0_DBG.OBJD WINNT5.0_DBG.OBJD
    fi
    if [  ! -h WINNT5.0_OPT.OBJ -a ! -d WINNT5.0_OPT.OBJ ] ; then 
        ln -s WINNT4.0_OPT.OBJ WINNT5.0_OPT.OBJ
    fi
    if [  ! -h WINNT5.1_DBG.OBJ -a ! -d WINNT5.1_DBG.OBJ ] ; then 
        ln -s WINNT4.0_DBG.OBJ WINNT5.1_DBG.OBJ
    fi
    if [  ! -h WINNT5.1_DBG.OBJD -a ! -d WINNT5.1_DBG.OBJD ] ; then 
        ln -s WINNT4.0_DBG.OBJD WINNT5.1_DBG.OBJD
    fi
    if [  ! -h WINNT5.1_OPT.OBJ -a ! -d WINNT5.1_OPT.OBJ ] ; then 
        ln -s WINNT4.0_OPT.OBJ WINNT5.1_OPT.OBJ
    fi
    
    if [ $O_DEBUG = ON ] ; then
        tell
    fi
else
    if [ $O_DEBUG = ON ] ; then
        Debug "WARNING!!! cant cd to $NTDIST "
    fi
fi

if [ -d "$UXDIST" ]
then
    cd $UXDIST
else
    glob_usage "Error!!! cant cd to $UXDIST "
fi

ErrorFlag=0

#if [  ! -h OSF1V5.1_DBG.OBJ -a ! -d OSF1V5.1_DBG.OBJ ] ; then 
    #ln -s OSF1V4.0D_DBG.OBJ OSF1V5.1_DBG.OBJ || ErrorFlag=1
#fi
#if [  ! -h OSF1V5.1_OPT.OBJ -a ! -d OSF1V5.1_OPT.OBJ ] ; then 
    #ln -s OSF1V4.0D_OPT.OBJ OSF1V5.1_OPT.OBJ || ErrorFlag=1
#fi
#if [  ! -h OSF1V5.0_DBG.OBJ -a ! -d OSF1V5.0_DBG.OBJ ] ; then 
    #ln -s OSF1V4.0D_DBG.OBJ OSF1V5.0_DBG.OBJ || ErrorFlag=1
#fi
#if [  ! -h OSF1V5.0_OPT.OBJ -a ! -d OSF1V5.0_OPT.OBJ ] ; then 
    #ln -s OSF1V4.0D_OPT.OBJ OSF1V5.0_OPT.OBJ || ErrorFlag=1
#fi
if [  ! -h SunOS5.9_64_DBG.OBJ  -a ! -d  SunOS5.9_64_DBG.OBJ ] ; then 
    ln -s SunOS5.8_64_DBG.OBJ SunOS5.9_64_DBG.OBJ || ErrorFlag=1
fi
if [  ! -h SunOS5.9_64_OPT.OBJ  -a ! -d  SunOS5.9_64_OPT.OBJ ] ; then 
    ln -s SunOS5.8_64_OPT.OBJ SunOS5.9_64_OPT.OBJ || ErrorFlag=1
fi
if [  ! -h SunOS5.9_DBG.OBJ  -a ! -d  SunOS5.9_DBG.OBJ ] ; then 
    ln -s SunOS5.8_DBG.OBJ SunOS5.9_DBG.OBJ || ErrorFlag=1
fi
if [  ! -h SunOS5.9_OPT.OBJ  -a ! -d  SunOS5.9_OPT.OBJ ] ; then 
    ln -s SunOS5.8_OPT.OBJ SunOS5.9_OPT.OBJ || ErrorFlag=1
fi
#sonmi - still leaving the section in there so 3.3 and 3.2 will not break
#since 5.8 is the masterbuild it should never be executed
#additionally: only creat link if the slave build is present, but 
#master is not
#if [  ! -h SunOS5.8_DBG.OBJ -a ! -d  SunOS5.8_DBG.OBJ ]  ; then 
    #if [ -d SunOS5.6_DBG.OBJ ] ; then
        #ln -s SunOS5.6_DBG.OBJ SunOS5.8_DBG.OBJ || ErrorFlag=1
    #fi
#fi
#if [  ! -h SunOS5.8_OPT.OBJ -a ! -d  SunOS5.8_OPT.OBJ ] ; then 
    #if [ -d SunOS5.6_OPT.OBJ ] ; then
        #ln -s SunOS5.6_OPT.OBJ SunOS5.8_OPT.OBJ || ErrorFlag=1
    #fi
#fi
#if [ ! -h Linux2.4_x86_glibc_PTH_DBG.OBJ -a ! -d Linux2.4_x86_glibc_PTH_DBG.OBJ]
#then
    #ln -s Linux2.2_x86_glibc_PTH_DBG.OBJ Linux2.4_x86_glibc_PTH_DBG.OBJ || ErrorFlag=1
#fi
#if [ ! -h Linux2.4_x86_glibc_PTH_OPT.OBJ -a ! -d Linux2.4_x86_glibc_PTH_OPT.OBJ]
#then
    #ln -s Linux2.2_x86_glibc_PTH_OPT.OBJ Linux2.4_x86_glibc_PTH_OPT.OBJ || ErrorFlag=1
#fi

if [  ! -h SunOS5.9_i86pc_DBG.OBJ  -a ! -d SunOS5.9_i86pc_DBG.OBJ ] ; then 
    ln -s SunOS5.8_i86pc_DBG.OBJ SunOS5.9_i86pc_DBG.OBJ || ErrorFlag=1
fi
if [  ! -h SunOS5.9_i86pc_OPT.OBJ  -a ! -d SunOS5.9_i86pc_OPT.OBJ ] ; then 
    ln -s SunOS5.8_i86pc_OPT.OBJ SunOS5.9_i86pc_OPT.OBJ || ErrorFlag=1
fi

if [ $O_DEBUG = ON ] ; then
    tell
fi

exit $ErrorFlag #no cleanup here, no tempfiles
