* doc/internals.texi (Relaxing with a table) <after relaxation>:
[external/binutils.git] / symlink-tree
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
9 prog=$0
10 srcdir=$1
11 ignore="$2"
12
13 if test $# -lt 1; then
14   echo "symlink-tree error:  Usage: symlink-tree srcdir \"ignore1 ignore2 ...\""
15   exit 1
16 fi
17
18 ignore_additional=". .. CVS"
19
20 # If we were invoked with a relative path name, adjust ${prog} to work
21 # in subdirs.
22 case ${prog} in
23 /*) ;;
24 *) prog=../${prog} ;;
25 esac
26
27 # Set newsrcdir to something subdirectories can use.
28 case ${srcdir} in
29 /*) newsrcdir=${srcdir} ;;
30 *) newsrcdir=../${srcdir} ;;
31 esac
32
33 for 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
51 done
52
53 exit 0