#!/bin/sh # run-parts - concept taken from Debian # # modified for PLD by Pawel Wilk # # NOTE: # 1.) run-parts is now able to get arguments! # 2.) relative pathname of the invoked directory can be # obtained by reading RUNPARTS_DIR env. variable # 3.) absolute pathname of the invoked directory can be # obtained by reading RUNPARTS_ADIR env. variable # # 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 [-u] " exit 1 fi if [ ! -d $1 ]; then echo "Is not a directory: $1" echo "Usage: run-parts [-u] " exit 1 fi # assign passed dir name RUNPARTS_DIR=$1 # assign absolute dir name olddir=`pwd` cd $RUNPARTS_DIR RUNPARTS_ADIR=`pwd` cd $olddir unset olddir # export directories for our descendants export RUNPARTS_ADIR RUNPARTS_DIR # shift args shift # 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