FileUtils.ln cross platform?

T

Trans

What happens when you use FileUtils.ln on a Windows system. Does it
fail? Is that why Jim Weirich uses #safe_ln, eg.

LINKING_SUPPORTED = [true]

# Attempt to do a normal file link, but fall back
# to a copy if the link fails.
def safe_ln(*args)
unless LINKING_SUPPORTED[0]
cp(*args)
else
begin
ln(*args)
rescue Errno::EOPNOTSUPP
LINKING_SUPPORTED[0] = false
cp(*args)
end
end
end

If so, is there a better way? Or why wouldn't this be built into Ruby.

Thanks,
T.
 
D

Daniel Berger

What happens when you use FileUtils.ln on a Windows system. Does it
fail? Is that why Jim Weirich uses #safe_ln, eg.

LINKING_SUPPORTED = [true]

# Attempt to do a normal file link, but fall back
# to a copy if the link fails.
def safe_ln(*args)
unless LINKING_SUPPORTED[0]
cp(*args)
else
begin
ln(*args)
rescue Errno::EOPNOTSUPP
LINKING_SUPPORTED[0] = false
cp(*args)
end
end
end

If so, is there a better way? Or why wouldn't this be built into Ruby.

Thanks,
T.

With 1.8.5 FileUtils.ln simply copied the file. Without digging into
changelogs, I can only speculate that it may have been an unsupported
op in earlier versions of Ruby, and that's why Jim added extra code.

Note that with the advent of Vista the issue of symlinks on Windows
will need to be revisited.

Regards,

Dan
 
T

Trans

What happens when you use FileUtils.ln on a Windows system. Does it
fail? Is that why Jim Weirich uses #safe_ln, eg.
LINKING_SUPPORTED = [true]
# Attempt to do a normal file link, but fall back
# to a copy if the link fails.
def safe_ln(*args)
unless LINKING_SUPPORTED[0]
cp(*args)
else
begin
ln(*args)
rescue Errno::EOPNOTSUPP
LINKING_SUPPORTED[0] = false
cp(*args)
end
end
end
If so, is there a better way? Or why wouldn't this be built into Ruby.
Thanks,
T.

With 1.8.5 FileUtils.ln simply copied the file. Without digging into
changelogs, I can only speculate that it may have been an unsupported
op in earlier versions of Ruby, and that's why Jim added extra code.

Excellent. Glad I don;t have to mess with it. Thanks Dan!
Note that with the advent of Vista the issue of symlinks on Windows
will need to be revisited.

Indeed. I heard it supports them, but later heard that they aren't
really the same thing. Are you using Vista yet. Do you know?

T.
 
D

Daniel Berger

Indeed. I heard it supports them, but later heard that they aren't
really the same thing. Are you using Vista yet. Do you know?

T.- Hide quoted text -

I don't have Vista yet. I'm waiting until Leopard is released, at
which point I'll setup a dual boot config on my Mac tower. Hopefully,
SP 1 will be out by then.

As for whether or not they're the same thing, the docs for
CreateSymbolicLink() sure seem to indicate they are:

http://msdn2.microsoft.com/en-us/library/aa363866.aspx

Regards,

Dan
 
T

Trans

I don't have Vista yet. I'm waiting until Leopard is released, at
which point I'll setup a dual boot config on my Mac tower. Hopefully,
SP 1 will be out by then.

As for whether or not they're the same thing, the docs for
CreateSymbolicLink() sure seem to indicate they are:

http://msdn2.microsoft.com/en-us/library/aa363866.aspx

Yup. You are right.

"Microsoft has implemented its symbolic links to function just like
UNIX links."

-- http://msdn2.microsoft.com/en-us/library/aa365680.aspx

Somewhere I picked up some bad info. Thanks for setting me straight.

T.
 

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
474,261
Messages
2,571,308
Members
47,976
Latest member
AlanaKeech

Latest Threads

Top