#!/bin/sh

# -*- sh -*-

. umlsetup.sh

KERN=$1
shift

patch20=false
patch22=false
patch24=false
patch26=false

. packaging/utils/kernelpatching.sh

case $KERN in
    2.0) kv=; patchname=os2_0; altname=fs2_0; patch20=true ;;
    2.2) kv=; patchname=os2_2; altname=fs2_2; patch22=true ;;
    2.4) kv=; patchname=os2_4; altname=fs2_4; patch24=true ;;
    2.6) kv=26; patchname=os2_6; altname=fs2_6; patch26=true ;;
    *) echo "Invalid kernel patch target: $KERN"; exit 1;;
esac

# make sure that sort gets the right locale.
LANG=C export LANG
LC_ALL=C export LC_ALL

updatepatch() {
	file=$1
	pfile=$2
	(
		cd $POOLSPACE/plain${kv}
		diff --unified=1 ${KERNPOOL}/${file} ${file}
	) > $pfile
}

updatefake() {
	doit=$1
	pfile=$2
	pname=$3

	if $doit
	then
		:
	else
		return 0;
	fi

	cp $POOLSPACE/plain${kv}/$pname $pfile
}

cd nat-t
find . -type f -print | grep -v CVS | egrep -v 'linux/Makefile' | sort | while read file 
do
  base=`basename $file`
  dir=`dirname $file`
  pname=`echo $file | sed -e 's,\.patch,,' -e 's,\.fs._.$,,' -e 's,\.os._.$,,'`

  #echo "File: $file" "PN: $pname"

  case $base in 
    TAGS) ;;
    tags) ;;
    .cvsignore) ;;
    .*.o.flags) ;;
    .\#*);;
    *.o) ;;
    *~) ;;
    version.in.c) ;;
    tagsfile.mak) ;;
    *.${patchname}.patch) updatepatch $pname $file;;
    *.${altname}.patch)   updatepatch $pname $file;;
    *.patch) ;;
    *.fs2_0) updatefake $patch20 $file $pname ;;
    *.fs2_2) updatefake $patch22 $file $pname ;;
    *.fs2_4) updatefake $patch24 $file $pname ;;
    *.fs2_6) updatefake $patch26 $file $pname ;;
    *.os2_0) updatefake $patch20 $file $pname ;;
    *.os2_2) updatefake $patch22 $file $pname ;;
    *.os2_4) updatefake $patch24 $file $pname ;;
    *.os2_6) updatefake $patch26 $file $pname ;;
    *) updatefake true $file $file ;;
  esac
done
