# Sourced ...
# Secure temp file (BAD)
TMP=`tempfile`
# Secure target directory
mkdir -p $RUNDIR_ACTIVE

# Based on run-parts --nonexec code from Debian sarge /etc/X11/Xsession
# This version only echo file names without parent directory name.
# Also this version list hidden dot preceded filenames

parts_active () {
  # until run-parts --noexec is implemented
  if [ -z "$1" ]; then
    echo "run_parts() called without an argument." >&2
  fi
  if [ ! -d "$1" ]; then
    echo "run_parts() called, but \"$1\" does not exist or is" \
                      "not a directory." >&2
  fi
  for F in $(ls $1); do
    if expr "$F" : '^[[:alnum:]_-]\+$' > /dev/null 2>&1; then
      if [ -f "$1/$F" ]; then
        #echo "$1/$F"
        echo "$F"
      fi
    fi
  done
}
parts_hidden () {
  # until run-parts --noexec is implemented
  if [ -z "$1" ]; then
    echo "run_parts() called without an argument." >&2
  fi
  if [ ! -d "$1" ]; then
    echo "run_parts() called, but \"$1\" does not exist or is" \
                      "not a directory." >&2
  fi
  for F in $(ls -A $1); do
    if expr "$F" : '^\.[[:alnum:]_-]\+$' > /dev/null 2>&1; then
      if [ -f "$1/$F" ]; then
        #echo "$1/$F"
        echo "$F"
      fi
    fi
  done
}

# Calculate choices $RUNDIR_TEMPLATE should be clean without backup etc.
RUNDIR_SOURCES=$(ls $RUNDIR_TEMPLATE )
RUNDIR_CHOICES=$( ( parts_active $RUNDIR_ACTIVE ; parts_hidden $RUNDIR_ACTIVE ; ls $RUNDIR_TEMPLATE ; ) | sed -e 's/^\.//' | sort -u )
# Create menu screen
MENU_COMMAND="$RUNDIR_MENUCOM --title \"$RUNDIR_TITLE\" --checklist \"$RUNDIR_MESSAGE\" $RUNDIR_H_W_MH"
# Ask to overwrite with system default if available
MENU_COMMAND="$MENU_COMMAND force-default \"Discard previous user modifications\" off"

# Add list and choice to menu
for x in $RUNDIR_CHOICES ; do
  # do check on $RUNDIR_ACTIVE/$x, if not and checked copy files
  if [ -x $RUNDIR_ACTIVE/$x ]; then
    MENU_COMMAND="$MENU_COMMAND $x \"$(sed -ne '2,3s/^# *//p' <$RUNDIR_ACTIVE/$x)\" on"
  elif [ -f $RUNDIR_ACTIVE/$x ]; then
    MENU_COMMAND="$MENU_COMMAND $x \"$(sed -ne '1,2s/^# *//p' <$RUNDIR_ACTIVE/$x)\" on"
  elif [ -x $RUNDIR_ACTIVE/.$x ]; then
    MENU_COMMAND="$MENU_COMMAND $x \"$(sed -ne '2,3s/^# *//p' <$RUNDIR_ACTIVE/.$x)\" off"
  elif [ -f $RUNDIR_ACTIVE/.$x ]; then
    MENU_COMMAND="$MENU_COMMAND $x \"$(sed -ne '1,2s/^# *//p' <$RUNDIR_ACTIVE/.$x)\" off"
  else
    # If not exist, create one from template
    cp --preserve=mode $RUNDIR_TEMPLATE/$x $RUNDIR_ACTIVE/.$x
    if [ -x $RUNDIR_ACTIVE/.$x ]; then
      MENU_COMMAND="$MENU_COMMAND $x \"$(sed -ne '2,3s/^# *//p' <$RUNDIR_ACTIVE/.$x)\" off"
    else
      MENU_COMMAND="$MENU_COMMAND $x \"$(sed -ne '1,2s/^# *//p' <$RUNDIR_ACTIVE/.$x)\" off"
    fi
  fi
done

# Display selection and get selection
eval $MENU_COMMAND 2> $TMP

RUNDIR_SELECTION=$(cat $TMP)
