# run-parts - concept taken from Debian
#
-# modified for PLD by Pawel Wilk <siefca@pld.org.pl>
+# modified for PLD Linux by Pawel Wilk <siefca@pld-linux.org>
#
# NOTE:
# 1.) run-parts is now able to get arguments!
# keep going when something fails
set +e
+if [ "$1" = "-u" ]; then
+ workasuser=yes
+ shift
+fi
+
# std checks
if [ $# -lt 1 ]; then
- echo "Usage: run-parts <dir> <args...>"
+ echo "Usage: run-parts [-u] <dir> <args...>"
exit 1
fi
if [ ! -d $1 ]; then
echo "Is not a directory: $1"
- echo "Usage: run-parts <dir> <args...>"
+ echo "Usage: run-parts [-u] <dir> <args...>"
exit 1
fi
RUNPARTS_DIR=$1
# assign absolute dir name
-olddir=`pwd`
+olddir=$(pwd)
cd $RUNPARTS_DIR
-RUNPARTS_ADIR=`pwd`
+RUNPARTS_ADIR=$(pwd)
cd $olddir
unset olddir
# shift args
shift
-# exec progs if any
-for i in $RUNPARTS_DIR/* ; do
- [ -d $i ] && continue
- if [ -x $i ]; then
- $i $*
+# Ignore *~ and *, scripts
+for i in $RUNPARTS_DIR/*[!~,] ; 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
+ runprog="$i $@"
+ if [ "$workasuser" = "yes" ]; then
+ runuser="$(/bin/ls -l "$i" | awk ' { print $3 } ' 2> /dev/null)"
+ [ -z "$runuser" ] && echo "Warning: Can't find owner for [$i] file. Not running." && continue
+ runprog="/bin/su $runuser -s /bin/sh -c $runprog"
+ fi
+ $runprog 2>&1 | awk -v "progname=$i" \
+ 'progname {
+ print progname ":\n"
+ progname="";
+ }
+ { print; }'
fi
done
exit 0
+
+# This must be last line !
+# vi:syntax=sh