#!/bin/sh 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 '\|\.k\{0,1\}o\(\.\(cm\)\{0,1\}d\)\{0,1\}$|d' \ -e '\|\.mod\(\.c\)\{0,1\}$|d' \ -e '\|/conftest/.*/result-.*\.txt$|d' \ -e '\|/modules\.order$|d' \ -e '\,/Module\.\(symver\|marker\)s$,d' \ -e '\,/\.tmp_versions\(/\|$\),d' ) fi } if [ $# = 0 ]; then list_source_files "$PWD" else for d in "$@"; do list_source_files "$d"; done fi