mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-27 12:15:39 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| # rellns-sh - Simplified ln program to generate relative symbolic link.
 | |
| # Copyright (C) 1996-2017 Free Software Foundation, Inc.
 | |
| # Written by Ulrich Drepper <drepper@cygnus.com>, October 1996
 | |
| #
 | |
| # This program is free software; you can redistribute it and/or modify
 | |
| # it under the terms of the GNU General Public License as published by
 | |
| # the Free Software Foundation; either version 2, or (at your option)
 | |
| # any later version.
 | |
| #
 | |
| # This program is distributed in the hope that it will be useful,
 | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| # GNU General Public License for more details.
 | |
| #
 | |
| # You should have received a copy of the GNU General Public License
 | |
| # along with this program; if not, see <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| # With -p, instead of creating the link print the computed relative link
 | |
| # name.
 | |
| do_print=false
 | |
| case $1 in
 | |
|   -p)
 | |
|     do_print=true
 | |
|     shift
 | |
|     ;;
 | |
| esac
 | |
| if test $# -ne 2; then
 | |
|   echo "Usage: rellns [-p] SOURCE DEST" >&2
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| # Make both paths absolute.
 | |
| if test -d $1; then
 | |
|   to=`cd $1 && pwd -P`
 | |
| else
 | |
|   temp=`echo $1 | sed 's%/*[^/]*$%%'`
 | |
|   if test -z "$temp"; then
 | |
|     to=`pwd -P`
 | |
|   else
 | |
|     to=`cd $temp && pwd -P`
 | |
|   fi
 | |
|   to="$to/`echo $1 | sed 's%.*/\([^/][^/]*\)$%\1%'`"
 | |
| fi
 | |
| to=`echo $to | sed 's%^/%%'`
 | |
| 
 | |
| if test -d $2; then
 | |
|   from=`echo $2 | sed 's%/*$%%'`
 | |
| else
 | |
|   from=`echo $2 | sed 's%/*[^/]*$%%'`
 | |
| fi
 | |
| 
 | |
| if test -z "$from"; then
 | |
|   from=`pwd -P | sed 's%^/%%'`
 | |
| else
 | |
|   from=`cd $from && pwd -P | sed 's%^/%%'`
 | |
| fi
 | |
| 
 | |
| while test -n "$to" && test -n "$from"; do
 | |
|   preto=`echo $to | sed 's%^\([^/]*\)/.*%\1%'`
 | |
|   prefrom=`echo $from | sed 's%^\([^/]*\)/.*%\1%'`
 | |
| 
 | |
|   test "$preto" != "$prefrom" && break
 | |
| 
 | |
|   to=`echo $to | sed 's%^[^/]*/*\(.*\)$%\1%'`
 | |
|   from=`echo $from | sed 's%^[^/]*/*\(.*\)$%\1%'`
 | |
| done
 | |
| 
 | |
| while test -n "$from"; do
 | |
|   rfrom="../$rfrom"
 | |
|   from=`echo $from | sed 's%^[^/]*/*%%'`
 | |
| done
 | |
| 
 | |
| if $do_print; then
 | |
|   echo "$rfrom$to"
 | |
| else
 | |
|   ln -s $rfrom$to $2
 | |
| fi
 |