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