Subject: Re: bug#10472: `realpath --relative-to=<path> /` outputs inconsistent trailing slash

From: Eric Blake <[email-masked]>
Date: Mon, 30 Jan 2012 14:10:45 -0700

On 01/10/2012 01:15 PM, Mike Frysinger wrote:
> however, if the last argument is just the root path:
> 	realpath --relative-to=/usr /
> 	realpath --relative-to=/usr/ /
> we end up with a trailing slash:
> 	../
> 
> for consistency, i don't think that should be the case
> 
> (reported by Ulrich Müller via https://bugs.gentoo.org/398339)

Another bug, on a system where // is distinct from /:

$ realpath --relative-to=/ //machine / // /bin
machine
.
.
bin
$ realpath --relative-to=// //machine / // /bin
machine
.
.
bin

when it should really be:

$ realpath --relative-to=/ //machine / // /bin
//machine
.
//
bin
$ realpath --relative-to=// //machine / // /bin
machine
/
.
/bin

We need to make realpath robust to correct leading // handling; I don't
know if we should follow the lead of 'dirname' in only doing it on
machines where // is special, or if it is easier to make it honor POSIX
by special-casing // everywhere even on machines where / and // are
identical.

-- 
Eric Blake   [email-masked]    +1-919-301-3266
Libvirt virtualization library http://libvirt.org