#!/bin/sh
# Written by Andrew Myers, February 1997

cmd="/bin/mv -i"
usage='Usage: mvsed [-d] [-c <cmd>] [.ef=.et | s/<from>/<to>/[g] | -f <filt>]
<pattern> <file> ...'
 
if test "x$TMPDIR" = x
then
  TMPDIR=/tmp
fi
t1="$TMPDIR/mvsed.tmp.$$"
rm -f "$t1"
dup=n

while test $# != 0
do
    case "$1" in
	-c) cmd=$2;
	    shift;;
	--) break;;
	-e) break;;
	-f) break;;
	-d) dup=y;;
	-*) echo $usage 1>&2; exit 1;;
	*) break;;
    esac
    shift
done

if test $# = 0
then
    echo $usage 1>&2
    exit 1
fi

pat="$1"
file=0
shift

if test "$pat" = "-f"
then
  skip=1
  file=2
  pat=""
  filt="$1"
  shift
fi
   
while test $# != 0 && test "$pat" = '-e'
do
   skip=1
   file=1
   if test $# = 0; then echo $usage 1>&2; exit 1; fi
   echo "$1" >> $t1
   if test $? != 0; then
      echo "Cannot write temporary file" 1>&2; exit 1; fi
   shift
   pat="$1"
   if test "$pat" = -e; then shift; fi
done

case "x$pat" in
    xs*) skip=1;;
esac

if test x$skip != x1
then
    ext1=`echo "$pat" | awk -F= '{print $1}'`;
    ext2=`echo "$pat" | awk -F= '{print $2}'`;
    if [ "x$ext1" = x ]; then echo $usage 1>&2; exit 1;
    elif [ "x$ext2" = x ]; then echo $usage 1>&2; exit 1; fi
    ext1=`echo "$ext1" | sed 's/\\./\\\\./g' | sed 's/\*/.\*/'`
    ext2=`echo "$ext2" | sed 's/\\./\\\\./g' | sed 's/\*/.\*/'`
    pat=s/"$ext1"/"$ext2"/;
fi

while test $# != 0
do
    f="$1";
    case "$file" in
	0) g=`echo "$f" | sed "$pat"`;;
	1) g=`echo "$f" | sed -f "$t1"`;;
	2) g=`echo "$f" | $filt`;;
    esac
    if test \( "$f" != "$g" \) -o \( "$dup" = y \)
    then
	$cmd "$f" "$g"
    else
	echo "mvsed: $f unchanged by substitution"
    fi
    shift
done
rm -f $t1

exit 0
