#!/bin/sh

#
# (C) 2009 Bartosz Lis <bartoszl@ics.p.lodz.pl>
#

VERSION="1.1.0"

CHKPERM=/etc/chkperm
CHKDIRS=/etc/chkdirs

if [ x"$1" = x"-v" -o x"$1" = x"--version" ]; then
    echo "$VERSION"
    exit 0
fi

if [ x"$1" = x"-t" -o x"$1" = x"--test" ]; then
    istest=1
fi

if [ -f "$CHKDIRS" ]; then
    cat "$CHKDIRS"
else
    echo /
fi | while read DIR; do
    find "$DIR" -xdev \( \( -name tmp -o -name ".*" \) -prune \) -o \( \( -name "*.rpmnew" -o -name "*.rpmorig" \) -print \) 
done | while read F; do 
    G=${F%.*};
    if [ -n "$istest" ]; then
	echo "'$F' '$G'"
    else
	kdiff3 "$F" "$G";
	if [ -f "$G".orig ]; then 
	    chmod --reference="$F" "$G";
	    chown --reference="$F" "$G";
	    chgrp --reference="$F" "$G";
	    rm "$F" "$G".orig
	fi
    fi
done 2>/dev/null

if [ -f "$CHKPERM" ]; then
    cat "$CHKPERM"
else
    echo 3777 /var/mail
fi | while read PERM_CONF FILE; do
    if [ -e "$FILE" ]; then
	PERM_REAL=`stat -c "%a" "$FILE"`
	if [ "$PERM_REAL" -ne "$PERM_CONF" ]; then
	    echo -e "!!! Changing permissions on '$FILE' from $PERM_REAL to $PERM_CONF !!!"
	    chmod "$PERM_CONF" "$FILE"
	fi
    fi
done
