summaryrefslogtreecommitdiff
path: root/usr.sbin/periodic/periodic.sh
diff options
context:
space:
mode:
authorBrian Somers <brian@FreeBSD.org>2000-09-16 21:59:34 +0000
committerBrian Somers <brian@FreeBSD.org>2000-09-16 21:59:34 +0000
commit15ef3dc00516f5456e980071b2f86bfcf536737f (patch)
tree4b70fddca206f8dd3d856c45a0b6eec628960d94 /usr.sbin/periodic/periodic.sh
parent3cea59524893fcf7cf98909cbcc4f35b067d008d (diff)
downloadsrc-test2-15ef3dc00516f5456e980071b2f86bfcf536737f.tar.gz
src-test2-15ef3dc00516f5456e980071b2f86bfcf536737f.zip
Notes
Diffstat (limited to 'usr.sbin/periodic/periodic.sh')
-rw-r--r--usr.sbin/periodic/periodic.sh97
1 files changed, 54 insertions, 43 deletions
diff --git a/usr.sbin/periodic/periodic.sh b/usr.sbin/periodic/periodic.sh
index f3b5d2294360..06f14bb71008 100644
--- a/usr.sbin/periodic/periodic.sh
+++ b/usr.sbin/periodic/periodic.sh
@@ -25,28 +25,6 @@ if [ -r /etc/defaults/periodic.conf ]; then
source_periodic_confs
fi
-dirlist=
-
-# If a full path was not specified, check the standard cron areas
-
-for dir
-do
- case "$dir" in
- /*)
- if [ -d "$dir" ]
- then
- dirlist="$dirlist $dir"
- else
- echo "$0: $dir not found" >&2
- fi;;
- *)
- for top in /etc/periodic ${local_periodic}
- do
- [ -d $top/$dir ] && dirlist="$dirlist $top/$dir"
- done;;
- esac
-done
-
host=`hostname`
export host
tmp_output=/var/run/periodic.$$
@@ -55,35 +33,68 @@ tmp_output=/var/run/periodic.$$
# set, assume the user didn't really want us to muck with it (it's a
# README file or has been disabled).
-for dir in $dirlist
+for arg
do
- eval output=\$${dir##*/}_output
+ # Where's our output going ?
+ eval output=\$${arg##*/}_output
case "$output" in
/*) pipe="cat >>$output";;
- *) pipe="mail -s '$host ${dir##*/} run output' ${output:-root}";;
+ *) pipe="mail -s '$host ${arg##*/} run output' ${output:-root}";;
esac
success=YES info=YES badconfig=NO # Defaults when ${run}_* aren't YES/NO
for var in success info badconfig
do
- case $(eval echo "\$${dir##*/}_show_$var") in
- [Yy][Ee][Ss]) eval $var=YES;;
- [Nn][Oo]) eval $var=NO;;
- esac
+ case $(eval echo "\$${arg##*/}_show_$var") in
+ [Yy][Ee][Ss]) eval $var=YES;;
+ [Nn][Oo]) eval $var=NO;;
+ esac
done
- for file in $dir/*
- do
- if [ -x $file -a ! -d $file ]
- then
- $file </dev/null >$tmp_output 2>&1
- case $? in
- 0) [ $success = YES ] && cat $tmp_output;;
- 1) [ $info = YES ] && cat $tmp_output;;
- 2) [ $badconfig = YES ] && cat $tmp_output;;
- *) cat $tmp_output;;
- esac
- rm -f $tmp_output
- fi
- done | eval $pipe
+ case $arg in
+ /*) if [ -d "$arg" ]
+ then
+ dirlist="$arg"
+ else
+ echo "$0: $arg not found" >&2
+ continue
+ fi;;
+ *) dirlist=
+ for top in /etc/periodic ${local_periodic}
+ do
+ [ -d $top/$arg ] && dirlist="$dirlist $top/$arg"
+ done;;
+ esac
+
+ {
+ empty=TRUE
+ processed=0
+ for dir in $dirlist
+ do
+ for file in $dir/*
+ do
+ if [ -x $file -a ! -d $file ]
+ then
+ output=TRUE
+ processed=$(($processed + 1))
+ $file </dev/null >$tmp_output 2>&1
+ if [ -s $tmp_output ]
+ then
+ case $? in
+ 0) [ $success = NO ] && output=FALSE;;
+ 1) [ $info = NO ] && output=FALSE;;
+ 2) [ $badconfig = NO ] && output=FALSE;;
+ esac
+ [ $output = TRUE ] && { cat $tmp_output; empty=FALSE; }
+ fi
+ rm -f $tmp_output
+ fi
+ done
+ done
+ if [ $empty = TRUE ]
+ then
+ [ $processed = 1 ] && plural= || plural=s
+ echo "No output from the $processed file$plural processed"
+ fi
+ } | eval $pipe
done