#!/bin/sh

# PimenTech 1999 : $Revision: 1.1.1.1 $

case $DEBUG in
  1) set -x
     ;;
  *)
     ;;
esac

bak_dir="replace_bak"

while true
do
  case $1 in
    -r)	regexp=`echo "$2" | sed 's/\//\\\\\//g'`
        shift 2
        ;;
    -s) substitute=`echo "$2" | sed 's/\//\\\\\//g'`
        shift 2
        ;;
    -f)	files="$2"
	shift 2
	;;
    -b) bak_dir="$2"
        shift 2
	;;
    -h) echo "usage : replace.sh -r 'sed regexp' -s 'sed substitute string' -f 'files' -b 'backup dir'"
	echo "example : replace.sh -r 'n\([0-9]\)' -s 'number\1' -f '*/*.cc'"
	exit 0
	;;
     *)
	break
	;;
  esac
done

mkdir -p ${bak_dir}

bak_operation_dirs=`ls -r ${bak_dir}`
bak_operation_dir="1"

for dir in ${bak_operation_dirs} # pas beau
do
  bak_operation_dir="`expr ${dir} + 1`"    
  break
done

for file in ${files}
do
  if [ -f $file ]
  then
    sed "s/${regexp}/${substitute}/g" ${file} > ${file}.new
    diff ${file} ${file}.new > /dev/null
    if [ $? -ne 0 ]
    then
      dir=`dirname ${file}`
      mkdir -p ${bak_dir}/${bak_operation_dir}/${dir}
      mv -f ${file} ${bak_dir}/${bak_operation_dir}/${dir}
      mv -f ${file}.new ${file}
    else
      rm -f ${file}.new 
    fi
  fi
done

