summaryrefslogtreecommitdiff
path: root/gcc/fixinc.svr4
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1997-01-19 19:35:37 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1997-01-19 19:35:37 +0000
commit3ebc3de5e99829e1e8c26891964dfcb84fc349ed (patch)
treecd11b967d4367192e14387caba942e2b51280423 /gcc/fixinc.svr4
parent3507323475a352521585522f850c14e0b90bb0a0 (diff)
downloadgcc-3ebc3de5e99829e1e8c26891964dfcb84fc349ed.tar.gz
Fix problems with symlinks to ".".
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@13516 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fixinc.svr4')
-rwxr-xr-xgcc/fixinc.svr422
1 files changed, 18 insertions, 4 deletions
diff --git a/gcc/fixinc.svr4 b/gcc/fixinc.svr4
index 0a9c6f95ffa..c0418b69d59 100755
--- a/gcc/fixinc.svr4
+++ b/gcc/fixinc.svr4
@@ -1,7 +1,7 @@
#! /bin/sh
# Install modified versions of certain ANSI-incompatible
# native System V Release 4 system include files.
-# Copyright (C) 1994, 1996 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1996, 1997 Free Software Foundation, Inc.
# Contributed by Ron Guilmette (rfg@monkeys.com).
#
# This file is part of GNU CC.
@@ -73,7 +73,7 @@ fi
echo 'Making directories:'
cd ${INPUT}
if $LINKS; then
- files=`ls -LR | sed -n s/:$//p`
+ files=`find . -follow -type d -print 2>/dev/null | sed '/^.$/d'`
else
files=`find . -type d -print | sed '/^.$/d'`
fi
@@ -98,6 +98,7 @@ if $LINKS; then
# In case $dest is relative, get to $file's dir first.
cd ${INPUT}
cd `echo ./$file | sed -n 's&[^/]*$&&p'`
+ rwd=`pwd`
# Check that the target directory exists.
# Redirections changed to avoid bug in sh on Ultrix.
(cd $dest) > /dev/null 2>&1
@@ -107,7 +108,11 @@ if $LINKS; then
x=`pwd`
# If link leads back into ${INPUT},
# make a similar link here.
- if expr $x : "${INPUT}/.*" > /dev/null; then
+ if expr "$dest" : '[^/][^/]*' >/dev/null && [ ! -h $dest ]; then
+ echo $file '->' $dest': Making link'
+ rm -fr ${LIB}/$file > /dev/null 2>&1
+ ln -s $dest ${LIB}/$file > /dev/null 2>&1
+ elif expr $x : "${INPUT}/.*" > /dev/null; then
# Y gets the actual target dir name, relative to ${INPUT}.
y=`echo $x | sed -n "s&${INPUT}/&&p"`
# DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
@@ -116,6 +121,15 @@ if $LINKS; then
echo $file '->' $dots$y ': Making link'
rm -fr ${LIB}/$file > /dev/null 2>&1
ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
+ elif expr $x : "${rwd}/.*" > /dev/null; then
+ # Y gets the actual target dir name, relative to the directory where the link is.
+ y=`echo $x | sed -n "s&${rwd}/&&p"`
+ # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
+ dots=`echo "$file" |
+ sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
+ echo $file '->' $dots$y ': Making link'
+ rm -fr ${LIB}/$file > /dev/null 2>&1
+ ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
else
# If the link is to outside ${INPUT},
# treat this directory as if it actually contained the files.
@@ -1526,7 +1540,7 @@ if $LINKS; then
for file in $files; do
dest=`ls -ld $file | sed -n 's/.*-> //p'`
if expr "$dest" : '[^/].*' > /dev/null; then
- target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
+ target=${LIB}/`echo $file | sed "s|[^/]*\$|$dest|"`
if [ -f $target ]; then
ln -s $dest ${LIB}/$file >/dev/null 2>&1
fi