]> git.pld-linux.org Git - packages/rpm.git/blame - banner.sh
- ugly gcc hack not needed.
[packages/rpm.git] / banner.sh
CommitLineData
e2b2282b 1#!/bin/sh
2#
3# bug reports send to pzurowski@pld-linux.org or pld-devel-* lists
4#
5# 2004, GPL 2+
6#
7# >> PLACE STANDARD GPL DISCLAIMER H E R E . <<
8#
9CONFIG=/etc/sysconfig/banner
10
11####################################################### CONFIG ########
12
13# default paramaters
14##########################
15
16BANNERDIR="/var/lib/banner/"
17# egrep regexp
18EXCLUDEFILES="(rpmnew$|rpmsave$|~$)"
bbb3b084 19STDOUT="1" # stdout by default
20#STDOUT="2" # stderr by default
e2b2282b 21
22# config paramaeters
23##########################
24
25if [ -r $CONFIG ]; then
26 . $CONFIG
27fi
28
29
30# override parameters
31##########################
32
33ALL_BANNERS=0
34BANNERS=""
35NOBANNERS=""
36BANNER_LIST=""
37CHOOSE_NEWER="no"
38CHOOSE_OLDER="no"
39EXCLUDE_FLAG=0
40NEED_BANNER_LIST=0
41NEED_MTIME_CHECK=0
42NEW_APPEND=0
43NEW_BANNER=""
44NEW_SHOW=0
45
bbb3b084 46case $STDOUT in
47 [1-9]) ;;
48 *) STDOUT="1" ;;
49esac
50
e2b2282b 51#################################################### FUNCTIONS ########
52
53Usage()
54{
55 cat << EOF
56Usage: $(basename $0) [opitions] [banners]
57EOF
58}
59Help()
60{
61 Usage
62 cat << EOF
63-a
64--all - all banners
65--delete - delete wanted banners
66-e
67--exclude - exclude following banners (usefull with -a)
68-h
69--help - shows this help
70-i
71--include - cancels effect of -e (EXCLUDED banners will remain excluded)
72-m
73--make - makes a brand-new banner named as following para [1] (from stdin)
74-M - same as above, but append if file exists
75-n
76--names - shows names of the banners
77--newer - all choosen banners should be newer than following para in seconds
78--older - all choosen banners should be older than following para in seconds
79-s
80--show - shows wanted banners
bbb3b084 81--stderr - send banner to stderr instead of stdout (or other)
82--stdout - send banner to stdout instead of stderr (or other)
e2b2282b 83-u
84--usage - shows short help
85
86[1] - if there will be no slash ('/') in name then config dir will be used,
87 else -- specified.
88EOF
89}
90Unknown_para()
91{
92 cat << EOF
93Unknown parameter $1
94EOF
95 Help
96}
97check_banner_name()
98{
99 echo "$1"|sed 's,.*/,,'
100}
101check_banners_mtime()
102{
103 BANNERS="$1"
104 OLDER="$2"
105 NEWER="$3"
106 DATE=$(date +%s)
107 for BANNER in $BANNERS;do
108 STAT=$(stat -c %Y "$BANNERDIR/$BANNER")
109 if [ $OLDER != "no" -a $(( $DATE - $STAT )) -lt $OLDER ]; then
110 BANNER=""
111 fi
112 if [ $NEWER != "no" -a $(( $DATE - $STAT )) -gt $NEWER ]; then
113 BANNER=""
114 fi
115 echo $BANNER
116 done
117}
118delete_banners()
119{
120 BANNERS="$1"
121 rm -rf $(get_banner_location_list "$BANNER")
122}
123get_all_banner_list()
124{
125 ls "$BANNERDIR" | grep -E -v "$EXCLUDEFILES"
126}
127get_banner_list()
128{
129 BANNERS="$1"
130 NOBANNERS="$2"
131 for BANNER in $BANNERS; do
132 if [ -r "$BANNERDIR/$BANNER" ];then
133 echo $NOBANNERS | grep -q $BANNER || echo $BANNER
134 fi
135 done
136}
137get_banner_location_list()
138{
139 BANNERS="$1"
140 for BANNER in $BANNERS; do
141 echo "$BANNERDIR/$BANNER"
142 done
143}
144make_banner()
145{
146 BANNER="$1"
147 SHOW="$2"
148 mkdir -p $(echo $BANNER|sed 's,/[^/]*$,,')
149 if [ $NEW_APPEND -eq 0 ]; then
150 cat > $BANNER
151 else
152 cat >> $BANNER
153 fi
154 if [ $SHOW -eq 1 ];then
155 cat $BANNER
156 fi
157}
158show_banner()
159{
bbb3b084 160 cat $BANNERDIR/$1 >&$STDOUT
e2b2282b 161}
162show_banners()
163{
164 for BANNER in $*; do
165 show_banner $BANNER
166 done
167}
168######################################################## MAIN ########
169while [ ! -z $1 ]; do
170 case $1 in
171 -a|--all)
172 ALL_BANNERS=1
173 ;;
174 --delete)
175 NEED_BANNER_LIST=1
176 ACTION="delete"
177 ;;
178 -e|--exclude)
179 EXCLUDE_FLAG=1
180 ;;
181 -h|--help)
182 Help
183 exit 0
184 ;;
185 -i|--include)
186 EXCLUDE_FLAG=0
187 ;;
188 -m|--make|-M)
189 NEED_BANNER_LIST=0
190 if [ "$(check_banner_name $2)" == "$2" ]; then
191 NEW_BANNER=$BANNERDIR/$(check_banner_name "$2")
192 else
193 NEW_BANNER="$2"
194 fi
195 ACTION="make"
196 if [ "$1" == "-M" ];then
197 NEW_APPEND=1
198 else
199 NEW_APPEND=0
200 fi
201 if [ -z "$NEW_BANNER" ];then
202 Help
203 exit 2
204 fi
205 shift
206 ;;
207 -n|--names)
208 NEED_BANNER_LIST=1
209 ACTION="names"
210 ;;
211 --newer)
212 NEED_MTIME_CHECK=1
213 CHOOSE_NEWER="$2"
214 if [ -z "$CHOOSE_NEWER" ];then
215 Help
216 exit 2
217 fi
218 shift
219 ;;
220 --older)
221 NEED_MTIME_CHECK=1
222 CHOOSE_OLDER="$2"
223 if [ -z "$CHOOSE_OLDER" ];then
224 Help
225 exit 2
226 fi
227 shift
228 ;;
229 -s|--show)
230 NEED_BANNER_LIST=1
231 NEW_SHOW=1
232 ACTION="show"
233 ;;
bbb3b084 234 --stdout)
235 STDOUT="1"
236 ;;
237 --stderr)
238 STDOUT="2"
239 ;;
e2b2282b 240 -u|--usage)
241 Usage
242 exit 0
243 ;;
244 -*)
245 Unknown_para "$1"
246 exit 1
247 ;;
248 *)
249 if [ $EXCLUDE_FLAG -eq 0 ];then
250 BANNERS="$BANNERS $(check_banner_name $1)"
251 else
252 NOBANNERS="$NOBANNERS $(check_banner_name $1)"
253 fi
254 ;;
255 esac
256 shift
257done
258
259if [ $ALL_BANNERS -ne 0 ]; then
260 BANNERS=`get_all_banner_list`
261fi
262if [ $NEED_BANNER_LIST -ne 0 ];then
263 BANNER_LIST=`get_banner_list "$BANNERS" "$NOBANNERS"`
264fi
265if [ $NEED_MTIME_CHECK -ne 0 ];then
266 BANNER_LIST=`check_banners_mtime "$BANNER_LIST" "$CHOOSE_OLDER" "$CHOOSE_NEWER"`
267fi
268
269case $ACTION in
270 "delete")
271 delete_banners $BANNER_LIST;
272 ;;
273 "make")
274 make_banner $NEW_BANNER $NEW_SHOW;
275 ;;
276 "names")
277 echo $BANNER_LIST;
278 ;;
279 "show")
280 show_banners $BANNER_LIST;
281 ;;
282esac
283
284
285
This page took 0.053388 seconds and 4 git commands to generate.