#!/bin/sh -efuC
set -o pipefail

# Usage example:
#
# diff -d <(grep-warnings --rpmb c <hsh.log.0 |sort) <(grep-warnings --rpmb c <hsh.log.1 |sort)

Usage()
{
	printf 'Usage: %s [--rpmb (p|c|i|STAGE)]\n' "$0"
}

RPMB=
if [ "$#" -eq 2 ]; then
	case "$1" in
		--rpmb) shift
				case "$1" in
					p) RPMB=prep
					   ;;
					c) RPMB=build
					   ;;
					i) RPMB=install
					   ;;
					?) { printf 'Unknown stage given for --rpmb: %s\n' "$1"
						 Usage
					   } >&2
					   exit 1
					   ;;
					*) RPMB="$1"
					   ;;
				esac
				shift
				;;
	esac
elif ! [ "$#" -eq 0 ]; then
	Usage >&2
	exit 1
fi
readonly RPMB

{ if [ -z "$RPMB" ]; then
	  cat
  else
	  sed -nre "/^Executing\(%$RPMB\)/,/^Executing\(%.*\)/ p"
  fi
} \
	| sed -nre '/warning|предупр/I { N; N; s,\n([[:blank:]]*[0-9]* |)?,!,g; p; }' \
	| { readonly LINE='[0-9]*'
		sed -r \
			-e "s!^(/usr/src/RPM/BUILD/[^/]*/)?([^:]*:)($LINE(:)| install:)!\2\4!" \
			-e "s!(^lcc: \".*\"), строка $LINE(:)!\1\2!"
	}

# dropping "install" is because of "libtool: install: warning" strings,
# where " install:" used not to be present.
