#! /bin/sh
#
PKG_INSTALL_PATCH=$ROOTDIR

PATH="/usr/bin:/usr/sbin:${PATH}"
export PATH
EXIT=0

ARCH="`uname -p`"

DEVLINKTB="${ROOTDIR}/etc/devlink.tab"

TMP=/tmp/$$

# This is for the remote console.  It checks for existence
# of the new device nodes, and creates them if necessary.  This
# code emulates what would otherwise occur in SUNWcsd/postinstall,
# it is a requirement that this code run before the reconfiguration
# reboot.
#

# ensures an entry is in /etc/name_to_major
if [ -f $ROOTDIR/kernel/drv/sysmsg ]; then
	$ROOTDIR/usr/sbin/add_drv -n -b $ROOTDIR sysmsg
else
	exit 0
fi

devnode=$ROOTDIR/devices/pseudo/sysmsg@0:sysmsg

grep sysmsg $ROOTDIR/etc/name_to_major >/dev/null 2>&1
if [ "$?" = "0" ]; then
	major_sysmsg=`grep sysmsg \
		$ROOTDIR/etc/name_to_major | nawk '{ print $2 }'`
else
	exit -1
fi
rm -f $devnode
mknod $devnode c $major_sysmsg 0
chmod 0600 $devnode
chown root:sys $devnode

devnode=../devices/pseudo/sysmsg@0:sysmsg

devlink=sysmsg
( cd $ROOTDIR/dev ; \
	rm -f $devlink ; ln -s $devnode $devlink )

devnode=$ROOTDIR/devices/pseudo/sysmsg@0:msglog
grep sysmsg $ROOTDIR/etc/name_to_major >/dev/null 2>&1
if [ "$?" = "0" ]; then
	major_sysmsg=`grep sysmsg \
		$ROOTDIR/etc/name_to_major | nawk '{ print $2 }'`
else
	exit -1
fi
rm -f $devnode
mknod $devnode c $major_sysmsg 1
chmod 0600 $devnode
chown root:sys $devnode

devnode=../devices/pseudo/sysmsg@0:msglog

devlink=msglog
( cd $ROOTDIR/dev ; \
	rm -f $devlink ; ln -s $devnode $devlink )

#
# add_devlink - adds an entry to ${DEVLINKTB}
#
add_devlink()
{
        PATTERN="$1"
        LINK="$2"

        grep -v "^$PATTERN      $LINK$" ${DEVLINKTB} >$TMP.devlink
        echo "$PATTERN\t$LINK" >>$TMP.devlink
        mv $TMP.devlink ${DEVLINKTB}
}

# The blank space between the [] is a space and a TAB.
# Each \ must be preceeded with two additional \\.
#
# While the devlink.tab file has a single tab character separating
# the fields, the regexp will match any amount of space/TAB whitespace
# between them in case the user has edited the file.
#
ctl1="^type=ddi_ctl:devctl;minor=initpcmcia[ 	]*pcmcia/\\\N0$"
ctl2="^type=ddi_ctl:devctl;minor=probepcmcia[ 	]*pcmcia/probe_\\\N0$"

if [ -f "$DEVLINKTB" -a `grep -c "$ctl1" "$DEVLINKTB"` = 0 ]
then
   add_devlink 'type=ddi_ctl:devctl;minor=initpcmcia' 'pcmcia/\N0'
fi
if [ -f "$DEVLINKTB" -a `grep -c "$ctl2" "$DEVLINKTB"` = 0 ]
then
   add_devlink 'type=ddi_ctl:devctl;minor=probepcmcia' 'pcmcia/probe_\N0'
fi

# Create allkmem pseudo device and symlink. 
# Get major number from name_to_major if mm driver is
# on the system.

if [ -f $ROOTDIR/kernel/drv/mm ]; then
        devnode=$ROOTDIR/devices/pseudo/mm@0:allkmem
        grep "^mm " $ROOTDIR/etc/name_to_major >/dev/null 2>&1
        if [ "$?" = "0" ]; then
                minor_mm=3
                major_mm=`grep "^mm " \
                $ROOTDIR/etc/name_to_major | nawk '{ print $2 }'`
        else
                exit -1
        fi
else 
        exit 0
fi

rm -f $devnode
mknod $devnode c $major_mm $minor_mm
chmod 0600 $devnode
chown root:sys $devnode

devnode=../devices/pseudo/mm@0:allkmem

devlink=allkmem
( cd $ROOTDIR/dev ; \
        rm -f $devlink ; ln -s $devnode $devlink )


exit 0
