1#!/bin/sh 2# Create a symlink tree. 3# 4# Syntax: symlink-tree srcdir "ignore1 ignore2 ..." 5# 6# where srcdir is the directory to create a symlink tree to, 7# and "ignoreN" is a list of files/directories to ignore. 8 9prog=$0 10srcdir=$1 11ignore="$2" 12 13if test $# -lt 1; then 14 echo "symlink-tree error: Usage: symlink-tree srcdir \"ignore1 ignore2 ...\"" 15 exit 1 16fi 17 18ignore_additional=". .. CVS" 19 20# If we were invoked with a relative path name, adjust ${prog} to work 21# in subdirs. 22case ${prog} in 23/*) ;; 24*) prog=../${prog} ;; 25esac 26 27# Set newsrcdir to something subdirectories can use. 28case ${srcdir} in 29/*) newsrcdir=${srcdir} ;; 30*) newsrcdir=../${srcdir} ;; 31esac 32 33for f in `ls -a ${srcdir}`; do 34 if [ -d ${srcdir}/$f ]; then 35 found= 36 for i in ${ignore} ${ignore_additional}; do 37 if [ "$f" = "$i" ]; then 38 found=yes 39 fi 40 done 41 if [ -z "${found}" ]; then 42 echo "$f ..working in" 43 if [ -d $f ]; then true; else mkdir $f; fi 44 (cd $f; ${prog} ${newsrcdir}/$f "${ignore}") 45 fi 46 else 47 echo "$f ..linked" 48 rm -f $f 49 ln -s ${srcdir}/$f . 50 fi 51done 52 53exit 0 54