#!/bin/bash

list_source_files() {
  local d r

  d="$(cd "$1" && echo "$PWD")"
  r="$d"
  while [ "$r" != "/" ] && [ ! -e "$r/.svn" ] && [ ! -e "$r/.git" ] &&
	[ ! -e "$r/.hg" ]; do
    r="$(dirname "$r")"
  done

  if [ -e "$r/.svn" ]; then
    (
      cd "$d" || exit $?
      svn status -v | \
      grep -vE '^[D?]|^Performing|^$' | \
      cut -c3- | \
      while read -r a b c f; do
        if [ -f "$f" ] || [ -h "$f" ]; then
	  echo "$a $b $c" >/dev/null
	  echo "$f"
        fi
      done
    )
  elif [ -e "$r/.git" ]; then
    subdir="${d#"${r}"}"
    if [ "$r" != "" ]; then
      ( cd "$d" && git ls-tree --name-only -r HEAD ) | sed "s|^$subdir/||"
    else
      echo "Ignored directory $1" >&2
    fi
  elif [ -e "$r/.hg" ]; then
    subdir="${d#"${r}"}"
    if [ -n "${subdir}" ]; then
      subdir="${subdir#/}/"
      hg manifest | sed -n "s|^$subdir||p"
    else
      hg manifest
    fi
  else
    (
      cd "$d" &&
      find . -type f -o -type l |
      sed -e 's/^\.\///'				\
	  -e '/\.depend_\(adm\|d\|f\)$/d'		\
	  -e '/\.o$/d'					\
	  -e '/\.o\.d$/d'				\
	  -e '/\.o\.cmd$/d'				\
	  -e '/\.ko$/d'					\
	  -e '/\.ko\.cmd$/d'				\
	  -e '/\.mod$/d'				\
	  -e '/\.mod\.c$/d'				\
	  -e '/\.mod\.cmd$/d'				\
	  -e '/\/Module\.\(symver\|marker\)s$/d'	\
	  -e '/\/\.Module\.symvers\.cmd$/d'		\
	  -e '/\/\.modules\.order\.cmd$/d'		\
	  -e '/\/\.tmp_versions\(\/\|$\)/d'		\
	  -e '/\/blib\//d'				\
	  -e '/\/conftest\/.*\/build-output-.*\.txt$/d'	\
	  -e '/\/conftest\/.*\/result-.*\.txt$/d'	\
	  -e '/\/modules\.order$/d'			\
	  -e '/\/rpmbuilddir\//d'			\
	  -e '/^iscsi-scst\/usr\/iscsi-scst-adm$/d'	\
	  -e '/^iscsi-scst\/usr\/iscsi-scstd$/d'	\
	  -e '/^rpmbuilddir\//d'			\
	  -e '/^usr\/fileio\/fileio_tgt$/d'		\
	  -e '/^usr\/stpgd\/stpgd$/d'			\
	  -e '/debian\/tmp\//d'				\
	  -e '/~$/d'
    )
  fi | sort
}

if [ $# = 0 ]; then
  list_source_files "$PWD"
else
  for d in "$@"; do list_source_files "$d"; done
fi
