1 #!/bin/sh 2 # Create a symlink tree. 3 # 4 # Copyright (C) 1995, 2000, 2003 Free Software Foundation, Inc. 5 # 6 # This file is free software; you can redistribute it and/or modify 7 # it under the terms of the GNU General Public License as published by 8 # the Free Software Foundation; either version 2 of the License, or 9 # (at your option) any later version. 10 # 11 # This program is distributed in the hope that it will be useful, 12 # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 # GNU General Public License for more details. 15 # 16 # You should have received a copy of the GNU General Public License 17 # along with this program; if not, write to the Free Software 18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, 19 # Boston, MA 02110-1301, USA. 20 # 21 # As a special exception to the GNU General Public License, if you 22 # distribute this file as part of a program that contains a 23 # configuration script generated by Autoconf, you may include it under 24 # the same distribution terms that you use for the rest of that program. 25 # 26 # Please report bugs to <gcc-bugs (at] gnu.org> 27 # and send patches to <gcc-patches (at] gnu.org>. 28 29 # Syntax: symlink-tree srcdir "ignore1 ignore2 ..." 30 # 31 # where srcdir is the directory to create a symlink tree to, 32 # and "ignoreN" is a list of files/directories to ignore. 33 34 prog=$0 35 srcdir=$1 36 ignore="$2" 37 38 if test $# -lt 1; then 39 echo "symlink-tree error: Usage: symlink-tree srcdir \"ignore1 ignore2 ...\"" 40 exit 1 41 fi 42 43 ignore_additional=". .. CVS" 44 45 # If we were invoked with a relative path name, adjust ${prog} to work 46 # in subdirs. 47 case ${prog} in 48 /* | [A-Za-z]:[\\/]*) ;; 49 *) prog=../${prog} ;; 50 esac 51 52 # Set newsrcdir to something subdirectories can use. 53 case ${srcdir} in 54 /* | [A-Za-z]:[\\/]*) newsrcdir=${srcdir} ;; 55 *) newsrcdir=../${srcdir} ;; 56 esac 57 58 for f in `ls -a ${srcdir}`; do 59 if [ -d ${srcdir}/$f ]; then 60 found= 61 for i in ${ignore} ${ignore_additional}; do 62 if [ "$f" = "$i" ]; then 63 found=yes 64 fi 65 done 66 if [ -z "${found}" ]; then 67 echo "$f ..working in" 68 if [ -d $f ]; then true; else mkdir $f; fi 69 (cd $f; ${prog} ${newsrcdir}/$f "${ignore}") 70 fi 71 else 72 echo "$f ..linked" 73 rm -f $f 74 ln -s ${srcdir}/$f . 75 fi 76 done 77 78 exit 0 79