[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
readlink(1) behavior
From: |
Eric Blake |
Subject: |
readlink(1) behavior |
Date: |
Thu, 10 Sep 2009 17:11:09 +0000 (UTC) |
User-agent: |
Loom/3.14 (http://gmane.org/) |
I think there are some infelicities in the canonicalization options of readlink.
readlink -fv file/ => correctly reports ENOTDIR
readlink -fv missing => lists /path/to/missing
readlink -fv missing/ => complains that missing is not a dir
readlink -mv file/ => lists /path/to/file
readlink -mv missing/ => lists /path/to/missing
I would like to see: 'readlink -fv missing/' list '/path/to/missing', on the
grounds that one could do 'mkdir missing' to bring the path into existence;
this matches the documentation that -f ignores a missing final element (nowhere
does it say the final element has to be a non-file).
Also, I think that -m should either be changed to reject paths that cannot
possibly exist given the current state of the file system (that is, in the
above case, 'readlink -mv file/' should fail with ENOTDIR), or we should create
a new option (in bewteen -f and -m) with that property. For an example of how
this mode might be useful:
Suppose we want to test whether 'mkdir -p a/b && touch a/b/c' will succeed,
without creating directories if it won't. 'readlink -f a/b/c' is insufficient,
since a/b might not yet exist. 'readlink -m a/b/c' is insufficient,
because 'a' might be a regular file or a symlink to itself.
Maybe such an option can be named -p/--possible.
As long as I'm discussing feature requests, it might be nice to add a new
option -r/--relative, which matches the behavior of Solaris resolvepath in
giving a relative answer provided the resolution did not leak into a parent
directory (well, it also matches Solaris 10 realpath, but that violates POSIX
which requires that realpath always give an absolute answer). For example:
ln -s b a
ln -s .. c
realpath -f a => /path/to/b
realpath -r a => b
realpath -f c => /path/to
realpath -r c => /path/to
Are any of these ideas worth dealing with prior to 7.6 (in particular, not
rejecting -f missing/)?
--
Eric Blake
- readlink(1) behavior,
Eric Blake <=
- Re: readlink(1) behavior, Jim Meyering, 2009/09/10
- Re: readlink(1) behavior, Eric Blake, 2009/09/10
- Re: readlink(1) behavior, Eric Blake, 2009/09/12
- Re: readlink(1) behavior, Dmitry V. Levin, 2009/09/18
- Re: readlink(1) behavior, Jim Meyering, 2009/09/18
- Re: readlink(1) behavior, Eric Blake, 2009/09/18
- Re: readlink(1) behavior, Jim Meyering, 2009/09/18
- Re: readlink(1) behavior, Jim Meyering, 2009/09/19
- Re: readlink(1) behavior, Dmitry V. Levin, 2009/09/19