diff options
author | Harald Hoyer <harald@redhat.com> | 2012-03-22 20:51:20 +0000 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2012-03-22 20:51:20 +0000 |
commit | 15b8318e93a947d1422e9a927f699eda1085cf0d (patch) | |
tree | d992d1a8f2dbc137446b6691c9144543c3e79cf6 /tests | |
parent | b1428e3152afa3139a2968dd530e507ddd312051 (diff) | |
download | coreutils-15b8318e93a947d1422e9a927f699eda1085cf0d.tar.xz |
ln: add the --relative option
With the "--relative --symbolic" options, ln computes the relative
symbolic link for the user.
So, ln works just as cp, but creates relative symbolic links instead
of copying the file.
I miss this feature since the beginning of using ln.
$ tree ./
/
`-- usr
|-- bin
`-- lib
`-- foo
`-- foo
4 directories, 1 file
$ ln -s -v --relative usr/lib/foo/foo usr/bin/foo
‘usr/bin/foo’ -> ‘../lib/foo/foo’
$ tree ./
/
`-- usr
|-- bin
| `-- foo -> ../lib/foo/foo
`-- lib
`-- foo
`-- foo
4 directories, 2 files
$ ln -s -v --relative usr/bin/foo usr/lib/foo/link-to-foo
‘usr/lib/foo/link-to-foo’ -> ‘foo’
$ tree ./
/
`-- usr
|-- bin
| `-- foo -> ../lib/foo/foo
`-- lib
`-- foo
|-- link-to-foo -> foo
`-- foo
4 directories, 3 files
* src/Makefile.am: Reference the relpath module.
* src/ln.c (usage): Mention the new option.
(do_link): Call the relative conversion if specified.
(convert_abs_rel): Perform the relative conversion
using the relpath module.
* tests/ln/relative: Add a new test.
* tests/Makefile.am: Reference the new test.
* doc/coreutils.texi: Document the new feature.
* NEWS: Mention the new feature.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rwxr-xr-x | tests/ln/relative | 32 |
2 files changed, 33 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index c72b17575..011051aa5 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -420,6 +420,7 @@ TESTS = \ ln/hard-backup \ ln/hard-to-sym \ ln/misc \ + ln/relative \ ln/sf-1 \ ln/slash-decorated-nonexistent-dest \ ln/target-1 \ diff --git a/tests/ln/relative b/tests/ln/relative new file mode 100755 index 000000000..cfc34691e --- /dev/null +++ b/tests/ln/relative @@ -0,0 +1,32 @@ +#!/bin/sh +# Test "ln --relative". + +# Copyright (C) 2012 Free Software Foundation, Inc. + +# 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 3 of the License, 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/>. + +. "${srcdir=.}/init.sh"; path_prepend_ ../src +print_ver_ ln + +mkdir -p usr/bin || framework_failure_ +mkdir -p usr/lib/foo || framework_failure_ +touch usr/lib/foo/foo || framework_failure_ + +ln -sr usr/lib/foo/foo usr/bin/foo +test $(readlink usr/bin/foo) = '../lib/foo/foo' || fail=1 + +ln -sr usr/bin/foo usr/lib/foo/link-to-foo +test $(readlink usr/lib/foo/link-to-foo) = 'foo' || fail=1 + +Exit $fail |