#!/bin/sh
#
# convert - 1.5 to 2.0 conversion script
#
# modification history
# --------------------
#
# SYNOPSIS
# convert file [...]
#
# DESCRIPTION
# This tool converts, or marks, routines differing in calling
# sequence and/or naming conventions from UniWorks 1.5 to UniWorks 2.0.
#
# A routine that has had only a name change is simply
# replaced with the new name.
# A routine that has had a parameter list change is replaced
# with "##", the new/same name, the new parameter list, "##",
# and the old parameter list.
# The "##"'s are inserted to cause compiler errors flagging routines
# which cannot be automatically converted.
#
# This script has 3 parts.  The Bourne shell section at the
# beginning, followed by a sed script, followed by a text table
# of name transformations (provided solely for informational
# purposes).
#
# EXAMPLE
#
#     % convert test.c
#     convert: processing test.c
#     %     
#
# FILES
#  file.converted	output file
#  /tmp/convert.*	intermediate 'sed' files
#
# INTERNAL
# convert generates an intermediate 'sed' script.
#
#*/

tool=`basename $0`
usage="usage: $tool filename"
p1=/tmp/$tool.1.$$
tmps="$p1"

trap "rm -f $tmps; exit" 1 2 3 15

# crack parameters

if (test $# -lt 1) then
    echo $usage
    exit
fi

readoptions=true
while ($readoptions) do

    case $1 in
    -*)		echo "$tool: invalid option $1"; exit;;
    *)		readoptions=false; ;;
    esac

    if ($readoptions) then
	shift
    fi
done

if (test $# -lt 1) then
    echo $usage
    exit
fi

files=$*

# generate sed scripts from this file

sed -e "/^#START_SED1/,/^#END_SED1/!d" < $0 >$p1

for f in $files
do

# run sed scripts over input file

echo "$tool: processing $f"

in=$f
out=$f.converted

sed -f $p1 $in > $out

done

# clean up

rm -f $tmps

exit 0

#START_SED1
s/\([^a-zA-Z0-9_]\)fprintf\([^a-zA-Z0-9_]\)/\1fdprintf\2/g
s/^fprintf\([^a-zA-Z0-9_]\)/fdprintf\1/g
s/\([^a-zA-Z0-9_]\)fprintf$/\1fdprintf/g
s/^fprintf$/fdprintf/g
s/\([^a-zA-Z0-9_]\)remRcmd\([^a-zA-Z0-9_]\)/\1rcmd\2/g
s/^remRcmd\([^a-zA-Z0-9_]\)/rcmd\1/g
s/\([^a-zA-Z0-9_]\)remRcmd$/\1rcmd/g
s/^remRcmd$/rcmd/g
s/\([^a-zA-Z0-9_]\)remRresvport\([^a-zA-Z0-9_]\)/\1rresvport\2/g
s/^remRresvport\([^a-zA-Z0-9_]\)/rresvport\1/g
s/\([^a-zA-Z0-9_]\)remRresvport$/\1rresvport/g
s/^remRresvport$/rresvport/g
s/\([^a-zA-Z0-9_]\)time\([^a-zA-Z0-9_]\)/\1timeF\2/g
s/^time\([^a-zA-Z0-9_]\)/timeF\1/g
s/\([^a-zA-Z0-9_]\)time$/\1timeF/g
s/^time$/timeF/g
s/\([^a-zA-Z0-9_]\)timeN\([^a-zA-Z0-9_]\)/\1timeFN\2/g
s/^timeN\([^a-zA-Z0-9_]\)/timeFN\1/g
s/\([^a-zA-Z0-9_]\)timeN$/\1timeFN/g
s/^timeN$/timeFN/g
s/\([^a-zA-Z0-9_]\)vxWorks\([^a-zA-Z0-9_]\)/\1UniWorks\2/g
s/^vxWorks\([^a-zA-Z0-9_]\)/UniWorks\1/g
s/\([^a-zA-Z0-9_]\)vxWorks$/\1UniWorks/g
s/^vxWorks$/UniWorks/g
s/\([^a-zA-Z0-9_]\)VXWORKS\([^a-zA-Z0-9_]\)/\1UNIWORKS\2/g
s/^VXWORKS\([^a-zA-Z0-9_]\)/UNIWORKS\1/g
s/\([^a-zA-Z0-9_]\)VXWORKS$/\1UNIWORKS/g
s/^VXWORKS$/UNIWORKS/g
s/\([^a-zA-Z0-9_]\)vxFpProbe\([^a-zA-Z0-9_]\)/\1fppProbe\2/g
s/^vxFpProbe\([^a-zA-Z0-9_]\)/fppProbe\1/g
s/\([^a-zA-Z0-9_]\)vxFpProbe$/\1fppProbe/g
s/^vxFpProbe$/fppProbe/g
s/\([^a-zA-Z0-9_]\)vxFpProbeTrap\([^a-zA-Z0-9_]\)/\1fppProbeTrap\2/g
s/^vxFpProbeTrap\([^a-zA-Z0-9_]\)/fppProbeTrap\1/g
s/\([^a-zA-Z0-9_]\)vxFpProbeTrap$/\1fppProbeTrap/g
s/^vxFpProbeTrap$/fppProbeTrap/g
s/\([^a-zA-Z0-9_]\)vxFpProbeSup\([^a-zA-Z0-9_]\)/\1fppProbeSup\2/g
s/^vxFpProbeSup\([^a-zA-Z0-9_]\)/fppProbeSup\1/g
s/\([^a-zA-Z0-9_]\)vxFpProbeSup$/\1fppProbeSup/g
s/^vxFpProbeSup$/fppProbeSup/g
s/\([^a-zA-Z0-9_]\)vxFpSave\([^a-zA-Z0-9_]\)/\1fppSave\2/g
s/^vxFpSave\([^a-zA-Z0-9_]\)/fppSave\1/g
s/\([^a-zA-Z0-9_]\)vxFpSave$/\1fppSave/g
s/^vxFpSave$/fppSave/g
s/\([^a-zA-Z0-9_]\)vxFpRestore\([^a-zA-Z0-9_]\)/\1fppRestore\2/g
s/^vxFpRestore\([^a-zA-Z0-9_]\)/fppRestore\1/g
s/\([^a-zA-Z0-9_]\)vxFpRestore$/\1fppRestore/g
s/^vxFpRestore$/fppRestore/g
s/\([^a-zA-Z0-9_]\)movbuf\([^a-zA-Z0-9_]\)/\1cpybuf\2/g
s/^movbuf\([^a-zA-Z0-9_]\)/cpybuf\1/g
s/\([^a-zA-Z0-9_]\)movbuf$/\1cpybuf/g
s/^movbuf$/cpybuf/g
s/\([^a-zA-Z0-9_]\)movbytes\([^a-zA-Z0-9_]\)/\1cpybytes\2/g
s/^movbytes\([^a-zA-Z0-9_]\)/cpybytes\1/g
s/\([^a-zA-Z0-9_]\)movbytes$/\1cpybytes/g
s/^movbytes$/cpybytes/g

s/\([^a-zA-Z0-9_]\)VX_CONFIG_TABLE\([^a-zA-Z0-9_]\)/\1VRTX_CONFIG_TABLE\2/g
s/^VX_CONFIG_TABLE\([^a-zA-Z0-9_]\)/VRTX_CONFIG_TABLE\1/g
s/\([^a-zA-Z0-9_]\)VX_CONFIG_TABLE$/\1VRTX_CONFIG_TABLE/g
s/^VX_CONFIG_TABLE$/VRTX_CONFIG_TABLE/g
s/\([^a-zA-Z0-9_]\)VX_TCBX\([^a-zA-Z0-9_]\)/\1TCBX\2/g
s/^VX_TCBX\([^a-zA-Z0-9_]\)/TCBX\1/g
s/\([^a-zA-Z0-9_]\)VX_TCBX$/\1TCBX/g
s/^VX_TCBX$/TCBX/g
s/\([^a-zA-Z0-9_]\)VX_SUSPEND\([^a-zA-Z0-9_]\)/\1VRTX_SUSPEND\2/g
s/^VX_SUSPEND\([^a-zA-Z0-9_]\)/VRTX_SUSPEND\1/g
s/\([^a-zA-Z0-9_]\)VX_SUSPEND$/\1VRTX_SUSPEND/g
s/^VX_SUSPEND$/VRTX_SUSPEND/g
s/\([^a-zA-Z0-9_]\)VX_PEND\([^a-zA-Z0-9_]\)/\1VRTX_PEND\2/g
s/^VX_PEND\([^a-zA-Z0-9_]\)/VRTX_PEND\1/g
s/\([^a-zA-Z0-9_]\)VX_PEND$/\1VRTX_PEND/g
s/^VX_PEND$/VRTX_PEND/g
s/\([^a-zA-Z0-9_]\)VX_GETC\([^a-zA-Z0-9_]\)/\1VRTX_GETC\2/g
s/^VX_GETC\([^a-zA-Z0-9_]\)/VRTX_GETC\1/g
s/\([^a-zA-Z0-9_]\)VX_GETC$/\1VRTX_GETC/g
s/^VX_GETC$/VRTX_GETC/g
s/\([^a-zA-Z0-9_]\)VX_PUTC\([^a-zA-Z0-9_]\)/\1VRTX_PUTC\2/g
s/^VX_PUTC\([^a-zA-Z0-9_]\)/VRTX_PUTC\1/g
s/\([^a-zA-Z0-9_]\)VX_PUTC$/\1VRTX_PUTC/g
s/^VX_PUTC$/VRTX_PUTC/g
s/\([^a-zA-Z0-9_]\)VX_WAITC\([^a-zA-Z0-9_]\)/\1VRTX_WAITC\2/g
s/^VX_WAITC\([^a-zA-Z0-9_]\)/VRTX_WAITC\1/g
s/\([^a-zA-Z0-9_]\)VX_WAITC$/\1VRTX_WAITC/g
s/^VX_WAITC$/VRTX_WAITC/g
s/\([^a-zA-Z0-9_]\)VX_DELAY\([^a-zA-Z0-9_]\)/\1VRTX_DELAY\2/g
s/^VX_DELAY\([^a-zA-Z0-9_]\)/VRTX_DELAY\1/g
s/\([^a-zA-Z0-9_]\)VX_DELAY$/\1VRTX_DELAY/g
s/^VX_DELAY$/VRTX_DELAY/g
s/\([^a-zA-Z0-9_]\)VX_QPEND\([^a-zA-Z0-9_]\)/\1VRTX_QPEND\2/g
s/^VX_QPEND\([^a-zA-Z0-9_]\)/VRTX_QPEND\1/g
s/\([^a-zA-Z0-9_]\)VX_QPEND$/\1VRTX_QPEND/g
s/^VX_QPEND$/VRTX_QPEND/g

s/"vxLib.h"/"vrtx32.h"\
#include "taskLib.h"\
#include "taskVarLib.h"/

s/\([^a-zA-Z0-9_]\)iosFdSet\([^a-zA-Z0-9_]\)/\1##iosFdSet(fd,pDevHdr,name,value)##\2/g
s/^iosFdSet\([^a-zA-Z0-9_]\)/##iosFdSet(fd,pDevHdr,name,value)##\1/g
s/\([^a-zA-Z0-9_]\)iosFdSet$/\1##iosFdSet(fd,pDevHdr,name,value)##/g
s/^iosFdSet$/##iosFdSet(fd,pDevHdr,name,value)##/g
s/\([^a-zA-Z0-9_]\)open\([^a-zA-Z0-9_]\)/\1##open(name,flags,mode)##\2/g
s/^open\([^a-zA-Z0-9_]\)/##open(name,flags,mode)##\1/g
s/\([^a-zA-Z0-9_]\)open$/\1##open(name,flags,mode)##/g
s/^open$/##open(name,flags,mode)##/g
s/\([^a-zA-Z0-9_]\)ifconfig\([^a-zA-Z0-9_]\)/\1##ifconfig(name,"inet",addr,0,0,0,0)##\2/g
s/^ifconfig\([^a-zA-Z0-9_]\)/##ifconfig(name,"inet",addr,0,0,0,0)##\1/g
s/\([^a-zA-Z0-9_]\)ifconfig$/\1##ifconfig(name,"inet",addr,0,0,0,0)##/g
s/^ifconfig$/##ifconfig(name,"inet",addr,0,0,0,0)##/g
s/\([^a-zA-Z0-9_]\)vxDbgInstall\([^a-zA-Z0-9_]\)/\1##taskBpHookSet(bpHookRtn)##\2/g
s/^vxDbgInstall\([^a-zA-Z0-9_]\)/##taskBpHookSet(bpHookRtn)##\1/g
s/\([^a-zA-Z0-9_]\)vxDbgInstall$/\1##taskBpHookSet(bpHookRtn)##/g
s/^vxDbgInstall$/##taskBpHookSet(bpHookRtn)##/g
#END_SED1

# text table of name transformations

# 4.0		3.2

# rename but compatible parameters
#
# oldname	newname

fprintf		fdprintf
remRcmd		rcmd
remRresvport	rresvport
time		timeF
timeN		timeFN
vxWorks		UniWorks
VXWORKS		UNIWORKS
vxFpProbe	fppProbe
vxFpProbeTrap	fppProbeTrap
vxFpProbeSup	fppProbeSup
vxFpSave	fppSave
vxFpRestore	fppRestore

# include file names and defines
#
# oldname		newname

vxLib.h			vrtx32.h, taskLib.h and taskVarLib.h

VX_CONFIG_TABLE		VRTX_CONFIG_TABLE
VX_TCBX			TCBX
VX_PEND			VRTX_PEND
VX_GETC			VRTX_GETC
VX_PUTC			VRTX_PUTC
VX_WAITC		VRTX_WAITC
VX_DELAY		VRTX_DELAY
VX_QPEND		VRTX_QPEND

# parameter change
#
# name	"new parameter list"	"old parameter list"

iosFdSet	(fd,pDevHdr,name,value)	(fd,drvnum,name,value)
open		(name,flags,mode)	(name,mode)
ifconfig	(name,addr)		(name,addr,0,0,0,0)

# rename and parameter change
#
# newname	"new parameter list"	oldname	"old parameter list"

vxDbgInstall	(brkInstallRtn,brkRemoveRtn) taskBpHookSet (bpHookRtn)

