X-Git-Url: http://git.pld-linux.org/?p=packages%2Frpm.git;a=blobdiff_plain;f=banner.sh;h=e4215562fc3166ad774684e7d3b5218d309a368b;hp=666f27539d537a89db1b12c7fe118361849231c0;hb=06dd2f752e640ec4d7cfb4a10fc30b998f5a311b;hpb=e2b2282bbe779af7590b7879fb844abbc7dd9aeb diff --git a/banner.sh b/banner.sh old mode 100644 new mode 100755 index 666f275..e421556 --- a/banner.sh +++ b/banner.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# bug reports send to pzurowski@pld-linux.org or pld-devel-* lists +# Please send bug reports to pzurowski@pld-linux.org or pld-devel-* lists # # 2004, GPL 2+ # @@ -10,15 +10,16 @@ CONFIG=/etc/sysconfig/banner ####################################################### CONFIG ######## -# default paramaters +# default parameters ########################## BANNERDIR="/var/lib/banner/" # egrep regexp EXCLUDEFILES="(rpmnew$|rpmsave$|~$)" +STDOUT="1" # stdout by default +#STDOUT="2" # stderr by default - -# config paramaeters +# config parameters ########################## if [ -r $CONFIG ]; then @@ -42,56 +43,50 @@ NEW_APPEND=0 NEW_BANNER="" NEW_SHOW=0 +case $STDOUT in + [1-9]) ;; + *) STDOUT="1" ;; +esac + #################################################### FUNCTIONS ######## -Usage() -{ +Usage() { cat << EOF -Usage: $(basename $0) [opitions] [banners] +Usage: $(basename $0) [options] [banners] EOF } -Help() -{ + +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 +-a, --all - all banners +-d, --delete - delete specified banners +-e, --exclude - exclude following banners (useful with -a) +-h, --help - show this help +-i, --include - cancel effect of -e (EXCLUDED banners will remain excluded) +-m, --make - make a brand-new banner named as following parameter [1] (from stdin) +-M - same as above, but append if file exists +-n, --names - show names of the banners +--newer - all choosen banners should be newer than following parameter in seconds +--older - all choosen banners should be older than following parameter in seconds +-s, --show - show specified banners +--stderr - send banner to stderr instead of stdout (or other) +--stdout - send banner to stdout instead of stderr (or other) +-u, --usage - show short help -[1] - if there will be no slash ('/') in name then config dir will be used, - else -- specified. +[1] if there is no slash ('/') in the given name default dir ($BANNERDIR) is used, + otherwise the one that's specified EOF } -Unknown_para() -{ + +Unknown_para() { cat << EOF Unknown parameter $1 EOF Help } -check_banner_name() -{ - echo "$1"|sed 's,.*/,,' -} -check_banners_mtime() -{ + +check_banners_mtime() { BANNERS="$1" OLDER="$2" NEWER="$3" @@ -107,63 +102,67 @@ check_banners_mtime() echo $BANNER done } -delete_banners() -{ + +delete_banners() { BANNERS="$1" rm -rf $(get_banner_location_list "$BANNER") } -get_all_banner_list() -{ + +get_all_banner_list() { ls "$BANNERDIR" | grep -E -v "$EXCLUDEFILES" } -get_banner_list() -{ + +get_banner_list() { BANNERS="$1" NOBANNERS="$2" for BANNER in $BANNERS; do - if [ -r "$BANNERDIR/$BANNER" ];then + if [ -r "$BANNERDIR/$BANNER" ]; then echo $NOBANNERS | grep -q $BANNER || echo $BANNER fi done } -get_banner_location_list() -{ + +get_banner_location_list() { BANNERS="$1" for BANNER in $BANNERS; do echo "$BANNERDIR/$BANNER" done } -make_banner() -{ + +make_banner() { BANNER="$1" SHOW="$2" - mkdir -p $(echo $BANNER|sed 's,/[^/]*$,,') + if [ ! -d "${BANNER%/*}" ]; then + mkdir -p "${BANNER%/*}" + fi + data=$(cat) if [ $NEW_APPEND -eq 0 ]; then - cat > $BANNER + echo "$data" > $BANNER else - cat >> $BANNER + echo "$data" >> $BANNER fi - if [ $SHOW -eq 1 ];then - cat $BANNER + if [ $SHOW -eq 1 ]; then + echo "$data" fi } -show_banner() -{ - cat $BANNERDIR/$1 + +show_banner() { + cat "$BANNERDIR/$1" >&$STDOUT } -show_banners() -{ + +show_banners() { for BANNER in $*; do show_banner $BANNER done } -######################################################## MAIN ######## -while [ ! -z $1 ]; do - case $1 in + +######################################################### MAIN ######## +while [ -n "$1" ]; do + case "$1" in -a|--all) ALL_BANNERS=1 ;; - --delete) + -d|--delete) NEED_BANNER_LIST=1 ACTION="delete" ;; @@ -179,18 +178,18 @@ while [ ! -z $1 ]; do ;; -m|--make|-M) NEED_BANNER_LIST=0 - if [ "$(check_banner_name $2)" == "$2" ]; then - NEW_BANNER=$BANNERDIR/$(check_banner_name "$2") + if [[ "$2" != */* ]]; then + NEW_BANNER="$BANNERDIR/${2##*/}" else NEW_BANNER="$2" fi ACTION="make" - if [ "$1" == "-M" ];then + if [ "$1" = "-M" ]; then NEW_APPEND=1 else NEW_APPEND=0 fi - if [ -z "$NEW_BANNER" ];then + if [ -z "$NEW_BANNER" ]; then Help exit 2 fi @@ -203,7 +202,7 @@ while [ ! -z $1 ]; do --newer) NEED_MTIME_CHECK=1 CHOOSE_NEWER="$2" - if [ -z "$CHOOSE_NEWER" ];then + if [ -z "$CHOOSE_NEWER" ]; then Help exit 2 fi @@ -212,7 +211,7 @@ while [ ! -z $1 ]; do --older) NEED_MTIME_CHECK=1 CHOOSE_OLDER="$2" - if [ -z "$CHOOSE_OLDER" ];then + if [ -z "$CHOOSE_OLDER" ]; then Help exit 2 fi @@ -223,6 +222,12 @@ while [ ! -z $1 ]; do NEW_SHOW=1 ACTION="show" ;; + --stdout) + STDOUT="1" + ;; + --stderr) + STDOUT="2" + ;; -u|--usage) Usage exit 0 @@ -232,10 +237,10 @@ while [ ! -z $1 ]; do exit 1 ;; *) - if [ $EXCLUDE_FLAG -eq 0 ];then - BANNERS="$BANNERS $(check_banner_name $1)" + if [ $EXCLUDE_FLAG -eq 0 ]; then + BANNERS="$BANNERS ${1##*/}" else - NOBANNERS="$NOBANNERS $(check_banner_name $1)" + NOBANNERS="$NOBANNERS ${1##*/}" fi ;; esac @@ -245,27 +250,27 @@ done if [ $ALL_BANNERS -ne 0 ]; then BANNERS=`get_all_banner_list` fi -if [ $NEED_BANNER_LIST -ne 0 ];then +if [ $NEED_BANNER_LIST -ne 0 ]; then BANNER_LIST=`get_banner_list "$BANNERS" "$NOBANNERS"` fi -if [ $NEED_MTIME_CHECK -ne 0 ];then +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; + delete_banners $BANNER_LIST ;; "make") - make_banner $NEW_BANNER $NEW_SHOW; + make_banner $NEW_BANNER $NEW_SHOW ;; "names") - echo $BANNER_LIST; + echo $BANNER_LIST ;; "show") - show_banners $BANNER_LIST; + show_banners $BANNER_LIST + ;; + "") + Help ;; esac - - -