:
#
# $Header: oerr.sh.pp 01-oct-99.11:14:05 mdenney Exp $
# Copyright (c) 1994, 1999, Oracle Corporation.  All rights reserved.
#

# 
# Usage: oerr facility error
#
# This shell script is used to get the description and the cause and action
# of an error from a message text file when a list of error numbers are passed
# to it.  It supports different language environments and errors from different
# facilities.
#

if [ "$ORACLE_TRACE" = "T" ]; then
	set -x
fi

if [ "$#" != "2" ]; then
	echo "Usage: $0 facility error"
	echo ""
	echo "Facility is identified by the three-letter prefix in the error"
	echo "string.  For example, if you get ORA-7300, \"ora\" is the facility"
	echo "and \"7300\" is the error.  So you should type \"oerr ora 7300\"."
	echo "If you get LCD-111, type \"oerr lcd 111\", and so on."
	echo ""
	exit 
fi

# 
# If ORACLE_HOME is not set, we will not be able to locate
# the message text file.
#
if [ ! "$ORACLE_HOME" ]; then
	echo "ORACLE_HOME not set!"
	echo "Please set ORACLE_HOME and try again."
	exit 1
fi

FAC=`echo $1 | tr '[A-Z]' '[a-z]'`

case $FAC in
	ora)
		PRODUCT=rdbms
		;;
	exp)
		PRODUCT=rdbms
		;;
	imp)
		PRODUCT=rdbms 
		;;
	bbed)
		PRODUCT=rdbms
		;;
	dbv)
		PRODUCT=rdbms
		;;
	lcd)
		PRODUCT=rdbms
		;;
	mig)
		PRODUCT=rdbms
		;;
	opw)
		PRODUCT=rdbms
		;;
	ul)
		PRODUCT=rdbms
		;;
	rman)
		PRODUCT=rdbms
		;;
	kop)
		PRODUCT=rdbms
		;;
	oci)
		PRODUCT=rdbms
		;;
	qsm)
		PRODUCT=rdbms
		;;
	prc)
		PRODUCT=opsm
		;;
	epc)
		PRODUCT=otrace
		;;
	img)
		PRODUCT=ord
		;;
	ts)
		PRODUCT=ord
		;;
	vir)
		PRODUCT=ord
		;;
	cpy)
		PRODUCT=sqlplus
		;;
	sp1)
		PRODUCT=sqlplus
		;;
	sp2)
		PRODUCT=sqlplus
		;;
	drg)
		PRODUCT=ctx
		;;
	sdo)
		PRODUCT=md
		;;
	md)
		PRODUCT=md
		FAC=sdo
		;;
	ebu)
		PRODUCT=obackup
		;;
	obk)
		PRODUCT=obackup
		FAC=ebu
		;;
	pls)
		PRODUCT=plsql
		;;
	pcm)
		PRODUCT=plsql
		;;
	lfi)
		PRODUCT=oracore
		;;
	lpm)
		PRODUCT=oracore
		;;
	tlem)
		PRODUCT=oracore
		;;
	ldt)
		PRODUCT=oracore
		;;
	lmm)
		PRODUCT=oracore
		;;
	lem)
		PRODUCT=oracore
		;;
	o2f)
		PRODUCT=precomp
		;;
	o2i)
		PRODUCT=precomp
		;;
	o2u)
		PRODUCT=precomp
		;;
	o2)
		PRODUCT=precomp
		;;
	pcbe)
		PRODUCT=precomp
		;;
	pcb)
		PRODUCT=precomp
		;;
	pgo)
		PRODUCT=precomp
		;;
	pro)
		PRODUCT=precomp
		;;
	pm)
		PRODUCT=precomp
		;;
	pmx)
		PRODUCT=precomp
		;;
	pr2)
		PRODUCT=precomp
		;;
	ppe)
		PRODUCT=precomp
		;;
	pcs)
		PRODUCT=precomp
		;;
	pg2)
		PRODUCT=precomp
		;;
	pcf)
		PRODUCT=precomp
		;;
	px)
		PRODUCT=slax
		;;
	pgp)
		PRODUCT=precomp
		;;
	pci)
		PRODUCT=precomp
		;;
	pcp)
		PRODUCT=precomp
		;;
	sql)
		PRODUCT=precomp
		;;
	iac)
		PRODUCT=forms
		;;
	iad)
		PRODUCT=forms
		;;
	iap)
		PRODUCT=forms
		;;
	iag)
		PRODUCT=forms
		;;
	typ)
		PRODUCT=forms
		;;
	srw)
		PRODUCT=sqlreport
		;;
	tns)
		PRODUCT=network
		;;
	snl)
		PRODUCT=network
		;;
	nl)
		PRODUCT=network
		;;
	nnc)
		PRODUCT=network
		;;
	nnf)
		PRODUCT=network
		;;
	nnl)
		PRODUCT=network
		;;
	nno)
		PRODUCT=network
		;;
	nmc)
		PRODUCT=network
		;;
	nmo)
		PRODUCT=network
		;;
	nmp)
		PRODUCT=network
		;;
	nms)
		PRODUCT=network
		;;
	smamp)
		PRODUCT=network
		;;
	wa)
		PRODUCT=network
		;;
	nmr)
		PRODUCT=network
		;;
	nmz)
		PRODUCT=network
		;;
	npl)
		PRODUCT=network
		;;
	tnl)
		PRODUCT=network
		;;
	tnpl)
		PRODUCT=network
		;;
	nci)	
		PRODUCT=network
		;;
	ncr)
		PRODUCT=network
		;;
	nlt)
		PRODUCT=network
		;;
	nmcpi)
		PRODUCT=network
		;;
	osnq)
		PRODUCT=network
		;;
	osn)
		PRODUCT=network
		;;
	nauk)
		PRODUCT=network
		;;
	ncx)
		PRODUCT=network
		;;
	net)
		PRODUCT=network
		;;
	niq)
		PRODUCT=network
		;;
	nz)
		PRODUCT=network
		;;
	pxu)
		PRODUCT=network
		;;
        dah)
                PRODUCT=office
                FAC=dah
                ;;
        dac)
                PRODUCT=office
                FAC=dac
                ;;
        da)
                PRODUCT=office
                FAC=da
                ;;
        dal)
                PRODUCT=office
                FAC=dal
                ;;
        ds)
                PRODUCT=office
                FAC=ds
                ;;
        dsp)
                PRODUCT=office
                FAC=dsp
                ;;
        ds2)
                PRODUCT=office
                FAC=ds2
                ;;
        dsw)
                PRODUCT=office
                FAC=dsw
                ;;
        dsz)
                PRODUCT=office
                FAC=dsz
                ;;
        oao)
                PRODUCT=office
                FAC=oao
                ;;
        ofc)
                PRODUCT=office
                FAC=ofc
                ;;
        omapi)
                PRODUCT=office
                FAC=omapi
                ;;
	oma)
		PRODUCT=office
		FAC=oma
		;;
	omb)
		PRODUCT=office
		FAC=omb
		;;
        omd)
                PRODUCT=office
                FAC=omd
                ;;
        omgut)
                PRODUCT=office
                FAC=omgut
                ;;
        omkt)
                PRODUCT=office
                FAC=omkt
                ;;
        omu)
                PRODUCT=office
                FAC=omu
                ;;
        omv)
                PRODUCT=office
                FAC=omv
                ;;
        sch)
                PRODUCT=office
                FAC=sch
                ;;
        oae)
                PRODUCT=oacore
                FAC=oae
                ;;
	mgr)
		PRODUCT=svrmgr
		;;
	srw2)
		PRODUCT=reports20
		;;
	fmc)
		PRODUCT=forms40
		;;
	fmd)
		PRODUCT=forms40
		;;
	fmf)
		PRODUCT=forms40
		;;
	fmg)
		PRODUCT=forms40
		;;
	fmm)
		PRODUCT=forms40
		;;
	tix)
		PRODUCT=sqltr
		;;
	txu)
		PRODUCT=sqltr
		;;
	txr)
		PRODUCT=sqltr
		;;
        ows)
                PRODUCT=ows
                ;;
	brw)
		PRODUCT=browser
		;;
	*)	
		echo $0: Unknown facility: $1
		exit 1
		;;
esac

#
# Use NLS_LANG if set, if not then use LANGUAGE
#

LANGUAGE=`echo $NLS_LANG $LANGUAGE | awk '{print $1}' | tr '[A-Z]' '[a-z]'`

case $LANGUAGE in
	us*)
		ORALANG=us
		;;
	america*)
		ORALANG=us
		;;
	arabic*)
		ORALANG=ar
		;;
	catalan*)
		ORALANG=ca
		;;
	czech*)
		ORALANG=cs
		;;
	german*)
		ORALANG=d
		;;
	danish*)
		ORALANG=dk
		;;
	spanish*)
		ORALANG=e
		;;
	greek*)
		ORALANG=el
		;;
	french*)
		ORALANG=f
		;;
	hungarian*)
		ORALANG=hu
		;;
	italian*)
		ORALANG=i
		;;
	japanese*)
		ORALANG=ja
		;;
	korean*)
		ORALANG=ko
		;;
	norwegian*)
		ORALANG=n
		;;
	dutch*)
		ORALANG=nl
		;;
	polish*)
		ORALANG=pl
		;;
	portuguese*)
		ORALANG=pt
		;;
	brazilian*)
		ORALANG=ptb
		;;
	russian*)
		ORALANG=ru
		;;
	swedish*)
		ORALANG=s
		;;
	finnish*)
		ORALANG=sf
		;;
	slovak*)
		ORALANG=sk
		;;
	turkish*)
		ORALANG=tr
		;;
	simplified*)
		ORALANG=zhs
		;;
	traditional*)
		ORALANG=zht
		;;
	*)
		ORALANG=us
		;;
esac

ERRFILE=$ORACLE_HOME/$PRODUCT/mesg/${FAC}${ORALANG}.msg

if [ -r $ERRFILE ]
then
	shift
	for ERR in $*
	do
		awk "BEGIN	{ FOUND=0; }
		/^[0]*$ERR/ 	{ FOUND=1; print ; next;}
		/^\/\//		{ if (FOUND)
				  {
					print 
					next
				  }
	   			  else
					next;
				}
				{ if (FOUND)
					exit;
				   else
					next;
				} " $ERRFILE

	done
else
	echo Cannot find $ERRFILE file.
fi
