Hello together, the function `Sys.readlink` uses the system's readlink command to resolve symlink paths. On OSX/BSD the command has a different meaning than on Linux [1]. There exists the tool 'realpath', which seems suitable for the task, at least applied at the command line level [2]. It is used in `normalizePath`. I suggest (at least the latter) to * use realpath instead readlink within Sys.readlink (do_readlink -> do_normalizepath) * link to `normalizePath` in the Rd document, eventually mentioning the difference Many thanks, Sven [1] see https://www.freebsd.org/cgi/man.cgi?query=readlink vs http://linux.die.net/man/1/readlink [2] https://www.freebsd.org/cgi/man.cgi?query=realpath http://linux.die.net/man/1/realpath --------------------------- Sven E. Templer Bioinformatics Core Group Max Planck Institute for Biology of Ageing Joseph-Stelzmann-Strasse 9b 50931 Cologne, Germany Phone: 0049 (0)221 37970 325 templer at age.mpg.de http://www.age.mpg.de/the-science/core-facilities/bioinformatics/
On 29.02.2016 10:34, Sven E. Templer wrote:> Hello together, > > the function `Sys.readlink` uses the system's readlink command to resolve symlink paths. On OSX/BSD the command has a different meaning than on Linux [1]. > > There exists the tool 'realpath', which seems suitable for the task, at least applied at the command line level [2]. It is used in `normalizePath`. > > I suggest (at least the latter) to > * use realpath instead readlink within Sys.readlink (do_readlink -> do_normalizepath) > * link to `normalizePath` in the Rd document, eventually mentioning the difference > > Many thanks, > Sven > > [1] see > https://www.freebsd.org/cgi/man.cgi?query=readlink > vs > http://linux.die.net/man/1/readlink > > [2] > https://www.freebsd.org/cgi/man.cgi?query=realpath > http://linux.die.net/man/1/realpathWhat do you mean by "different meaning"? How are the command line tools [1] relevant when R is using the C function 'readlink'? http://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html https://www.freebsd.org/cgi/man.cgi?query=readlink&sektion=2 http://man7.org/linux/man-pages/man2/readlink.2.html -- Mikko Korpela Aalto University School of Science Department of Computer Science
Hello,
sorry for not being clear enough.
My problem is represented with the following code, running on OSX:
mkdir ~/test
ln -s ~/test ~/testlink
touch ~/test/foo
Rscript -e 'Sys.readlink(c("~/test/foo",
"~/testlink/foo"));
normalizePath(c("~/test/foo","~/testlink/foo"))'
I expected `Sys.readlink` to show the same output as `normalizePath`.
Also, I think the readlink.h imported to R to be the same as from the
system's `readlink` command, thus mimicking the command line difference.
Am I wrong with the latter? Anyway, the behaviour is irritating, thus the
request to at least mention `normalizePath` in the Rd of `Sys.readlink`.
Best,
Sven
> On 29 Feb 2016, at 11:44, Mikko Korpela <mikko.korpela at aalto.fi>
wrote:
>
> On 29.02.2016 10:34, Sven E. Templer wrote:
>> Hello together,
>>
>> the function `Sys.readlink` uses the system's readlink command to
resolve symlink paths. On OSX/BSD the command has a different meaning than on
Linux [1].
>>
>> There exists the tool 'realpath', which seems suitable for the
task, at least applied at the command line level [2]. It is used in
`normalizePath`.
>>
>> I suggest (at least the latter) to
>> * use realpath instead readlink within Sys.readlink (do_readlink ->
do_normalizepath)
>> * link to `normalizePath` in the Rd document, eventually mentioning the
difference
>>
>> Many thanks,
>> Sven
>>
>> [1] see
>> https://www.freebsd.org/cgi/man.cgi?query=readlink
>> vs
>> http://linux.die.net/man/1/readlink
>>
>> [2]
>> https://www.freebsd.org/cgi/man.cgi?query=realpath
>> http://linux.die.net/man/1/realpath
>
> What do you mean by "different meaning"? How are the command line
tools
> [1] relevant when R is using the C function 'readlink'?
>
> http://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html
> https://www.freebsd.org/cgi/man.cgi?query=readlink&sektion=2
> http://man7.org/linux/man-pages/man2/readlink.2.html
>
> --
> Mikko Korpela
> Aalto University School of Science
> Department of Computer Science