--- /dev/null
+#!/bin/sh
+#
+# bug reports send to pzurowski@pld-linux.org or pld-devel-* lists
+#
+# 2004, GPL 2+
+#
+# >> PLACE STANDARD GPL DISCLAIMER H E R E . <<
+#
+CONFIG=/etc/sysconfig/banner
+
+####################################################### CONFIG ########
+
+# default paramaters
+##########################
+
+BANNERDIR="/var/lib/banner/"
+# egrep regexp
+EXCLUDEFILES="(rpmnew$|rpmsave$|~$)"
+
+
+# config paramaeters
+##########################
+
+if [ -r $CONFIG ]; then
+ . $CONFIG
+fi
+
+
+# override parameters
+##########################
+
+ALL_BANNERS=0
+BANNERS=""
+NOBANNERS=""
+BANNER_LIST=""
+CHOOSE_NEWER="no"
+CHOOSE_OLDER="no"
+EXCLUDE_FLAG=0
+NEED_BANNER_LIST=0
+NEED_MTIME_CHECK=0
+NEW_APPEND=0
+NEW_BANNER=""
+NEW_SHOW=0
+
+#################################################### FUNCTIONS ########
+
+Usage()
+{
+ cat << EOF
+Usage: $(basename $0) [opitions] [banners]
+EOF
+}
+Help()
+{
+ Usage
+ cat << EOF
+-a
+--all - all banners
+--delete - delete wanted banners
+-e
+--exclude - exclude following banners (usefull with -a)
+-h
+--help - shows this help
+-i
+--include - cancels effect of -e (EXCLUDED banners will remain excluded)
+-m
+--make - makes a brand-new banner named as following para [1] (from stdin)
+-M - same as above, but append if file exists
+-n
+--names - shows names of the banners
+--newer - all choosen banners should be newer than following para in seconds
+--older - all choosen banners should be older than following para in seconds
+-s
+--show - shows wanted banners
+-u
+--usage - shows short help
+
+[1] - if there will be no slash ('/') in name then config dir will be used,
+ else -- specified.
+EOF
+}
+Unknown_para()
+{
+ cat << EOF
+Unknown parameter $1
+EOF
+ Help
+}
+check_banner_name()
+{
+ echo "$1"|sed 's,.*/,,'
+}
+check_banners_mtime()
+{
+ BANNERS="$1"
+ OLDER="$2"
+ NEWER="$3"
+ DATE=$(date +%s)
+ for BANNER in $BANNERS;do
+ STAT=$(stat -c %Y "$BANNERDIR/$BANNER")
+ if [ $OLDER != "no" -a $(( $DATE - $STAT )) -lt $OLDER ]; then
+ BANNER=""
+ fi
+ if [ $NEWER != "no" -a $(( $DATE - $STAT )) -gt $NEWER ]; then
+ BANNER=""
+ fi
+ echo $BANNER
+ done
+}
+delete_banners()
+{
+ BANNERS="$1"
+ rm -rf $(get_banner_location_list "$BANNER")
+}
+get_all_banner_list()
+{
+ ls "$BANNERDIR" | grep -E -v "$EXCLUDEFILES"
+}
+get_banner_list()
+{
+ BANNERS="$1"
+ NOBANNERS="$2"
+ for BANNER in $BANNERS; do
+ if [ -r "$BANNERDIR/$BANNER" ];then
+ echo $NOBANNERS | grep -q $BANNER || echo $BANNER
+ fi
+ done
+}
+get_banner_location_list()
+{
+ BANNERS="$1"
+ for BANNER in $BANNERS; do
+ echo "$BANNERDIR/$BANNER"
+ done
+}
+make_banner()
+{
+ BANNER="$1"
+ SHOW="$2"
+ mkdir -p $(echo $BANNER|sed 's,/[^/]*$,,')
+ if [ $NEW_APPEND -eq 0 ]; then
+ cat > $BANNER
+ else
+ cat >> $BANNER
+ fi
+ if [ $SHOW -eq 1 ];then
+ cat $BANNER
+ fi
+}
+show_banner()
+{
+ cat $BANNERDIR/$1
+}
+show_banners()
+{
+ for BANNER in $*; do
+ show_banner $BANNER
+ done
+}
+######################################################## MAIN ########
+while [ ! -z $1 ]; do
+ case $1 in
+ -a|--all)
+ ALL_BANNERS=1
+ ;;
+ --delete)
+ NEED_BANNER_LIST=1
+ ACTION="delete"
+ ;;
+ -e|--exclude)
+ EXCLUDE_FLAG=1
+ ;;
+ -h|--help)
+ Help
+ exit 0
+ ;;
+ -i|--include)
+ EXCLUDE_FLAG=0
+ ;;
+ -m|--make|-M)
+ NEED_BANNER_LIST=0
+ if [ "$(check_banner_name $2)" == "$2" ]; then
+ NEW_BANNER=$BANNERDIR/$(check_banner_name "$2")
+ else
+ NEW_BANNER="$2"
+ fi
+ ACTION="make"
+ if [ "$1" == "-M" ];then
+ NEW_APPEND=1
+ else
+ NEW_APPEND=0
+ fi
+ if [ -z "$NEW_BANNER" ];then
+ Help
+ exit 2
+ fi
+ shift
+ ;;
+ -n|--names)
+ NEED_BANNER_LIST=1
+ ACTION="names"
+ ;;
+ --newer)
+ NEED_MTIME_CHECK=1
+ CHOOSE_NEWER="$2"
+ if [ -z "$CHOOSE_NEWER" ];then
+ Help
+ exit 2
+ fi
+ shift
+ ;;
+ --older)
+ NEED_MTIME_CHECK=1
+ CHOOSE_OLDER="$2"
+ if [ -z "$CHOOSE_OLDER" ];then
+ Help
+ exit 2
+ fi
+ shift
+ ;;
+ -s|--show)
+ NEED_BANNER_LIST=1
+ NEW_SHOW=1
+ ACTION="show"
+ ;;
+ -u|--usage)
+ Usage
+ exit 0
+ ;;
+ -*)
+ Unknown_para "$1"
+ exit 1
+ ;;
+ *)
+ if [ $EXCLUDE_FLAG -eq 0 ];then
+ BANNERS="$BANNERS $(check_banner_name $1)"
+ else
+ NOBANNERS="$NOBANNERS $(check_banner_name $1)"
+ fi
+ ;;
+ esac
+ shift
+done
+
+if [ $ALL_BANNERS -ne 0 ]; then
+ BANNERS=`get_all_banner_list`
+fi
+if [ $NEED_BANNER_LIST -ne 0 ];then
+ BANNER_LIST=`get_banner_list "$BANNERS" "$NOBANNERS"`
+fi
+if [ $NEED_MTIME_CHECK -ne 0 ];then
+ BANNER_LIST=`check_banners_mtime "$BANNER_LIST" "$CHOOSE_OLDER" "$CHOOSE_NEWER"`
+fi
+
+case $ACTION in
+ "delete")
+ delete_banners $BANNER_LIST;
+ ;;
+ "make")
+ make_banner $NEW_BANNER $NEW_SHOW;
+ ;;
+ "names")
+ echo $BANNER_LIST;
+ ;;
+ "show")
+ show_banners $BANNER_LIST;
+ ;;
+esac
+
+
+