# This hook applies patches from "patches" directory.

_process_patch() {
	local _args= _patch= i=$1

	_args="-Np1"
	_patch=${i##*/}

	if [ -f "$PATCHESDIR/${_patch}.args" ]; then
		_args=$(<"$PATCHESDIR/${_patch}.args")
	elif [ -n "$patch_args" ]; then
		_args=$patch_args
	fi
	cp -f "$i" "$wrksrc"

	# Try to guess if its a compressed patch.
	if [[ $i =~ .gz$ ]]; then
		gunzip "$wrksrc/${_patch}"
		_patch=${_patch%%.gz}
	elif [[ $i =~ .bz2$ ]]; then
		bunzip2 "$wrksrc/${_patch}"
		_patch=${_patch%%.bz2}
	elif [[ $i =~ .diff$ ]]; then
		:
	elif [[ $i =~ .patch$ ]]; then
		:
	else
		msg_warn "$pkgver: unknown patch type: $i.\n"
		return 0
	fi

	cd "$wrksrc"
	msg_normal "$pkgver: patching: ${_patch}.\n"
	patch -s ${_args} <"${_patch}" 2>/dev/null
}

hook() {
	if [ ! -d "$wrksrc" ]; then
		return 0
	fi
	if [ -r $PATCHESDIR/series ]; then
		while read -r f; do
			_process_patch "$PATCHESDIR/$f"
		done < $PATCHESDIR/series
	else
		for f in $PATCHESDIR/*; do
			[ ! -f "$f" ] && continue
			if [[ $f =~ ^.*.args$ ]]; then
				continue
			fi
			_process_patch "$f"
		done
	fi
}
