diff options
Diffstat (limited to 'SunOS5/replace')
-rwxr-xr-x | SunOS5/replace | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/SunOS5/replace b/SunOS5/replace new file mode 100755 index 0000000000000..e903894ce769c --- /dev/null +++ b/SunOS5/replace @@ -0,0 +1,137 @@ +#!/bin/ksh +SBIN=/usr/sbin +debug=echo +undo=0 + +update() { + echo "UPDATE $1 $2 $3" + base=$1 + dir=$2 + file=$3 + Z=$IFS + IFS=: + set $file + if [[ -z $2 ]] ; then + o=$1 + n=$1 + else + o=$1 + n=$2 + fi + set $dir + sdir=$1 + ddir=$2 + IFS=$Z + + if [[ -z ${sdir} && ! -d ${base}/${ddir} ]] ; then + ddir= + fi + + sprog=${cpudir}/${sdir}/${n} + dprog=${base}/${ddir}/${o} + + if [[ $undo -eq 0 ]] ; then + if [[ -d ${base}/${ddir} ]] ; then + if [[ ! -f ${dprog}.dist ]] ; then + $debug /bin/mv ${dprog} ${dprog}.dist + $debug /bin/cp -p ${dprog}.dist ${dprog} + fi + $debug /bin/cp ${sprog} ${dprog} + else + links=$(/bin/ls -dl ${dprog} | awk ' { print $2; } ' -) + if [[ $links -eq 1 ]] ; then + if [[ ! -f ${dprog}.dist ]] ; then + $debug /bin/mv ${dprog} ${dprog}.dist + $debug /bin/cp -p ${dprog}.dist ${dprog} + fi + $debug /bin/cp ${sprog} ${dprog} + fi + fi + else + if [[ -f ${dprog}.dist ]] ; then + $debug /bin/mv -f ${dprog}.dist ${dprog} + fi + fi +} + +while [[ $# -gt 0 ]] ; do + case $1 in + undo) + undo=1 + ;; + -f) + debug= + ;; + -d) + debug=echo + ;; + esac + shift +done + +case $(pwd) in +*/SunOS5) + ;; +*/SunOS5/*) + exit 1 + ;; +*) + cd SunOS5 + ;; +esac +cpu=`uname -p` +cpudir=${cpu}-`uname -r` + +if [[ -d ${cpudir}/amd64 ]] ; then + big=amd64 +fi +if [[ -d ${cpudir}/sparcv9 ]] ; then + big=sparcv9 +fi +if [[ -d ${cpudir}/i86 ]] ; then + small=i86 +fi +if [[ -d ${cpudir}/sparc ]] ; then + small=sparc +fi +echo "$cpudir.$big.$small." + +if [[ -n ${big} ]] ; then + for i in ipf:ipf.exe ipfs ipfstat ipmon ipnat ippool; do + update $SBIN ${big}:${big} $i + done + update /usr/lib/ipf ${big}:${big} ipftest + update /usr/kernel/drv ${big}:${big} ipf +fi +if [[ -n ${small} ]] ; then + for i in ipf:ipf.exe ipfs ipfstat ipmon ipnat ippool; do + update $SBIN ${small}:${small} $i + done + update /usr/lib/ipf ${small}:${small} ipftest + update /usr/kernel/drv "${small}:" ipf +fi +if [[ -z ${small} && -z ${big} ]] ; then + if [[ -z ${small} ]] ; then + case ${cpu} in + i386) + small=i86 + ;; + sparc) + small=sparc + ;; + esac + fi + for i in ipf:ipf.exe ipfs ipfstat ipmon ipnat ippool; do + update $SBIN :${small} $i + done + update /usr/lib/ipf :${small} ipftest + update /usr/kernel/drv :${small} ipf +fi + +cpudir=.. +for i in ip_compat.h ip_fil.h ipl.h ip_nat.h ip_state.h ip_sync.h ip_scan.h \ + ip_pool.h ip_lookup.h; do + update /usr/include/netinet : $i + update /usr/sfw/lib/gcc/i386-pc-solaris2.10/3.4.3/include/netinet/ : $i +done +exit 0 |