bug in FileUtils.ln_s ?

J

Joel VanderWerf

FileUtils.ln_s is supposed to do this:

ln_s(old, new, options = {})

Creates a symbolic link new which points to old. If new already
exists and it is a directory, creates a symbolic link +new/old+.
If new already exists and it is not a directory, raises
Errno::EEXIST. But if :force option is set, overwrite new.

But in this case something is wrong:

$ mkdir foo
$ echo 1>t.rb
$ ruby -r fileutils -e 'FileUtils.ln_s "t.rb", "foo/t.rb"'
$ ls -l foo
total 0
lrwxrwxrwx 1 vjoel vjoel 4 2009-06-12 14:47 t.rb -> t.rb

Why is this a cyclic link?

However, if the _old_ filename is in /tmp, there is no problem:

$ rm foo/t.rb
rm: remove symbolic link `foo/t.rb'? y
$ ruby -r fileutils -e 'FileUtils.ln_s "/tmp/t.rb", "foo/t.rb"'
$ ls -l foo
total 0
lrwxrwxrwx 1 vjoel vjoel 9 2009-06-12 14:48 t.rb -> /tmp/t.rb

This is with:

$ ruby -v
ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]
 
J

Joel VanderWerf

Joel said:
FileUtils.ln_s is supposed to do this:

ln_s(old, new, options = {})

Creates a symbolic link new which points to old. If new already
exists and it is a directory, creates a symbolic link +new/old+.
If new already exists and it is not a directory, raises
Errno::EEXIST. But if :force option is set, overwrite new.

But in this case something is wrong:

$ mkdir foo
$ echo 1>t.rb
$ ruby -r fileutils -e 'FileUtils.ln_s "t.rb", "foo/t.rb"'
$ ls -l foo
total 0
lrwxrwxrwx 1 vjoel vjoel 4 2009-06-12 14:47 t.rb -> t.rb

Why is this a cyclic link?

Bah, that's the way ln(1) behaves, and I forgot. Moral of the story,
it's a _symbolic_ link; #ln_s just creates a link to the string you give
it, without relativizing to the current dir or anything.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,999
Messages
2,570,243
Members
46,835
Latest member
lila30

Latest Threads

Top