#!/bin/bash
# run-parts - concept taken from Debian
# modified by Beth


# keep going when something fails
set +e

if [ $# -lt 1 ]; then
        echo "Usage: run-parts <dir>"
        exit 1
fi

if [ ! -d $1 ]; then
        echo "Not a directory: $1"
        exit 1
fi

# Ignore *~ and *, scripts
( for i in $1/*[^~,] ; do
        [ -d $i ] && continue
        # Don't run *.{rpmsave,rpmorig,rpmnew,swp} scripts
        [ "${i%.rpmsave}" != "${i}" ] && continue
        [ "${i%.rpmorig}" != "${i}" ] && continue
        [ "${i%.rpmnew}" != "${i}" ] && continue
        [ "${i%.swp}" != "${i}" ] && continue
        [ "${i%,v}" != "${i}" ] && continue

        if [ -x $i ]; then
            tempfile="/tmp/cron-$(date +%s).$$"
            $i 1> "$tempfile" 2> "$tempfile"
            j=$?
            if [ $j -gt 0 ]; then
                printf "%-20s PROBLEM: return code %s, output:\n" $i $j
                cat $tempfile
            fi
            rm "$tempfile"
        fi
done ) | awk -v "hostname=`hostname -s`" \
'{ 
  if (mailcmd) 
    print $0 | mailcmd;
  else
    if ($0) {
      mailcmd = sprintf("mail -s \047%d cron job %s on %s\047 root", errs, errword, hostname);
      print "These cron jobs failed on " hostname ":\n\n" acc | mailcmd;
      print $0 | mailcmd;
    }
}'

exit 0
