i.rOWconfig revision 7c478bd95313f5f23a4c958a745db2134aa03244
#!/bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License"). You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
#ident "%Z%%M% %I% %E% SMI"
#
# Copyright (c) 1997 by Sun Microsystems, Inc.
# All rights reserved.
#
#
# $new is the new version of the file in the package. Unused.
# $old is the old version of the OWconfig file. We rewrite this.
#
# We need to rewrite the following:
# directory names for PMI files that moved.
# Three different cases (x2 - one for vga? and one for 8514)
# where SUNW was placed in front of identifier - vga4, vga8, 8514
#
if [ -h /etc/openwin/server/etc/OWconfig -a -f /tmp/root/etc/openwin/server/etc/OWconfig ]
then
cp /tmp/root/etc/openwin/server/etc/OWconfig $PKG_INSTALL_ROOT/etc/openwin/server/etc/OWconfig
else
cat > /tmp/lookup_table <<EOT
gxe_43.pmi SUNWs3 number9/gxe-2.xqa mfreq/mfreq38.vda 8 ddxSUNWs3.so.1 SUNWs3Init
gxe_60.pmi SUNWs3 number9/gxe-2.xqa mfreq/mfreq48.vda 8 ddxSUNWs3.so.1 SUNWs3Init
gxe_70.pmi SUNWs3 number9/gxe-2.xqa mfreq/mfreq56.vda 8 ddxSUNWs3.so.1 SUNWs3Init
mach32_60.pmi SUNWati ati/ultrapro2.xqa mfreq/mfreq64.vda 8 ddxSUNWati.so.1 SUNWatiInit
mach32_70.pmi SUNWati ati/ultrapro2.xqa mfreq/mfreq64.vda 8 ddxSUNWati.so.1 SUNWatiInit
mach32_72.pmi SUNWati ati/ultrapro2.xqa mfreq/mfreq64.vda 8 ddxSUNWati.so.1 SUNWatiInit
mach32_76.pmi SUNWati ati/ultrapro2.xqa mfreq/mfreq80.vda 8 ddxSUNWati.so.1 SUNWatiInit
mach32_87.pmi SUNWati ati/ultrapro2.xqa mfreq/mfreq85.vda 8 ddxSUNWati.so.1 SUNWatiInit
mach32_95.pmi SUNWati ati/ultrapro2.xqa mfreq/mfreq85.vda 8 ddxSUNWati.so.1 SUNWatiInit
EOT
TMP_FILE=/tmp/`basename $0`.$$
trap 'rm -f $TMP_FILE /tmp/lookup_table' 0 1 2 3 15
while read new old
do
#
# If there is no existing file, don't do any of this stuff.
# in that case, $old will be /dev/null
#
if [ -f $old ]; then
echo "Converting old OWconfig file to new format."
cat $old |\
/usr/bin/sed -e 's?vesa/vga?devdata/svpmi/SUNWvga?' \
-e 's?vesa/8514?devdata/svpmi/SUNW8514?' \
-e 's?name=\"vga?name=\"SUNWvga?' \
-e 's?name=\"8514?name=\"SUNW8514?' \
-e 's?listOfScreens=\"vga?listOfScreens=\"SUNWvga?' \
-e 's?device=\"vga?device=\"SUNWvga?' \
-e 's?device=\"8514?device=\"SUNW8514?' \
-e 's?InitFunc=\"vga?InitFunc=\"SUNWvga?' \
-e 's?InitFunc=\"i8514?InitFunc=\"SUNW8514?' \
> /tmp/$$owconfig
/usr/bin/nawk -v LKUP_TBL="/tmp/lookup_table" '
BEGIN{
while (getline < LKUP_TBL > 0)
tab[$1] = $0 # Read entire lookup table
# in memory.
}
/XINPUT/,/;/ {print}
/XDISPLAY/,/;/ {print}
/XSCREENCONFIG/,/;/ { split($0, owcfgflds, " ")
for (i=1; i <= NF; i++)
{
if (owcfgflds[i] ~ /pmifile/)
j=split(owcfgflds[i], pmifld, "\"")
}
#
# Obtain the pmi filename (eg. ati.pmi)
# from its absolute path.
#
k=split(pmifld[j-1], pmi, "/")
pmifl = pmi[k]
#
# If pmifile does not exist in the
# lookup table then do not convert the
# OWconfig file.
#
if (tab[pmifl] == "") {print}
else
{
split(tab[pmifl], lkupflds, " ")
dev = lkupflds[2]
xqa = lkupflds[3]
vda = lkupflds[4]
dep = lkupflds[5]
ddx = lkupflds[6]
ddi = lkupflds[7]
for (l=1; l <= NF; l++)
{
if (owcfgflds[l] ~ /pmifile/) owcfgflds[l] = "board=""\""xqa"\" " "monitor=""\""vda"\""
if (owcfgflds[l] ~ /device/) owcfgflds[l] = "device=""\""dev"\""
printf "%s ", owcfgflds[l]
}
printf "\n"
#
# Create a new XSCREEN class
# corresponding to the modifications
# made to the XSCREENCONFIG class.
# Modifying the current XSCREEN class
# is extremely difficult when multiple
# instances of the XSCREENCONFIG class
# are present.
#
printf "class=\"XSCREEN\" "
printf "name=\"%s\" ", dev
printf "ddxHandler=\"%s\" ", ddx
printf "ddxInitFunc=\"%s\";\n", ddi
}
}
/XSCREEN"/,/;/ {print}
' /tmp/$$owconfig > $TMP_FILE
mv $TMP_FILE $old
rm -f /tmp/lookup_table
else
touch $old
rm -f $TMP_FILE /tmp/lookup_table
fi
done
fi
exit 0