#!/bin/bash

full_kver="$1"

function generate_patch {
  local status

  {
    diff -up "$1" "$2"
    status=$?
    if [ "$status" -gt 1 ]; then
      return "$status"
    fi
  } > "$3"
}

if [ "${full_kver}" = "" ]; then
  echo "Error: missing kernel version argument."
  exit 1
fi

krel=${full_kver/^*}

if [ ! -e qla2xxx-orig/"${krel}" ]; then
  "$(dirname "$0")/extract-qla2xxx-orig" "${full_kver}" || exit $?
fi

mkdir -p in-tree-patches/"${krel}"

for g in Kconfig *.[ch]; do
  f1="qla2xxx-orig/${krel}/$g"
  f2="$g"
  f3="in-tree-patches/${krel}/$g.patch"
  if [ "$f1" -nt "$f3" -o "$f2" -nt "$f3" ]; then
    if [ -e "$f1" ]; then
      generate_patch "$f1" "$f2" "$f3" || exit $?
    else
      generate_patch /dev/null "$f2" "$f3" || exit $?
    fi
  fi
done

for g in Makefile; do
  f1="qla2xxx-orig/${krel}/$g"
  f2="${g}_in-tree"
  f3="in-tree-patches/${krel}/$g.patch"
  if [ "$f1" -nt "$f3" -o "$f2" -nt "$f3" ]; then
    generate_patch "$f1" "$f2" "$f3" || exit $?
  fi
done
