[pacman-dev] [PATCH] repo-add: bash implementation of realpath

Xavier shiningxc at gmail.com
Mon Feb 16 05:10:08 EST 2009


On Mon, Feb 16, 2009 at 10:50 AM, Sebastian Nowicki <sebnow at gmail.com> wrote:
>
> On 16/02/2009, at 6:25 PM, Xavier wrote:
>
>> Before moving forward, I have a question :
>> is there any good and portable way to convert between absolute and
>> relative paths?
>> I don't see any reason for doing any symlinks resolution anywhere.
>> The only thing we need is to convert a given path (which can be either
>> absolute or relative) to an absolute path.
>> We need this because we are changing directories, and these paths have
>> to stay valid so have to be absolute.
>
> After a bit of Googling I haven't been able to find a solution. On the
> contrary, many posts indicate that there is no cross-platform way - at least
> not without introducing huge dependencies (python/ruby/etc). It's weird
> considering that there's a standard C function[1] which does exactly this. A
> semi-ugly solution would be to provide an executable which simply calls this
> function, as part of the pacman package. However, if the speed difference is
> not that important, the bash implementation is a nicer solution.
>
> [1]: http://www.opengroup.org/onlinepubs/000095399/functions/realpath.html
>

That's so crazy and disappointing..
But well, since we are considering to implement our own thing in bash,
maybe we could just go with a simpler bash function that just builds
the absolute path?
I saw several implementations in bash using a combination of dirname,
basename, cd and pwd. Hopefully these 4 tools are portable. Otherwise
dirname and basename can be reimplemented as well without too much
complexity.


More information about the pacman-dev mailing list