Net::FTP : How to check whether chdir succeeded?

R

Ronald Fischer

Does anyone know a reliable way to detect, whether Net::FTP#chdir was
successful? Even if the directory does not exist, no exception is
thrown.

Ronald
--=20
Ronald Fischer <[email protected]>
Phone: +49-89-452133-162
=20
 
D

Daniel Berger

Does anyone know a reliable way to detect, whether Net::FTP#chdir was
successful? Even if the directory does not exist, no exception is
thrown.

That's odd. I tried running this snippet, connecting from a Windows XP
Pro box to a RHEL box:

ftp = FTP.new(host, user, passwd)
ftp.chdir('/totally/bogus')
ftp.close

It raised an exception for me:

C:/ruby/lib/ruby/1.8/net/ftp.rb:243:in `getresp': 550 Failed to change
directory. (Net::FTPPermError)
from C:/ruby/lib/ruby/1.8/net/ftp.rb:251:in `voidresp'
from C:/ruby/lib/ruby/1.8/net/ftp.rb:274:in `voidcmd'
from C:/ruby/lib/ruby/1.8/monitor.rb:238:in `synchronize'
from C:/ruby/lib/ruby/1.8/net/ftp.rb:272:in `voidcmd'
from C:/ruby/lib/ruby/1.8/net/ftp.rb:677:in `chdir'
from ftp_test.rb:5

Can you tell use more about the platform you're connecting to? Maybe
it's not sending back an expected (or any) response with chdir. You
can tinker with FTP#sendcmd as well to see how it behaves. Or, just
ftp manually, and try to chdir to a bogus directory and see what it
does.

Regards,

Dan
 
R

Ronald Fischer

=20
You should be able to check with Net::FTP#pwd.=20

I think this does not work when the directory chdir'ed to is
reached via a symlink, and I also don't see an easy way,
how to check it with pwd for the cases the directory is
given via a relative path. Note that a general solution
must deal with cases such as

chdir "foo/bar"=20
chdir "foo/.." # pwd after chdir will be the same as before

Ronald
--=20
Ronald Fischer <[email protected]>
Phone: +49-89-452133-162
=20
 
R

Ronald Fischer

Does anyone know a reliable way to detect, whether=20
Net::FTP#chdir was
=20
That's odd. I tried running this snippet, connecting from a Windows XP
Pro box to a RHEL box:
=20
ftp =3D FTP.new(host, user, passwd)
ftp.chdir('/totally/bogus')
ftp.close
=20
It raised an exception for me:

For me too. Sorry, my fault. I should have first stripped down my
example to
the most simple case. I had, without noticing, caught that exception
before
passing control on to the caller.

Ronald
 

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

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,020
Latest member
GenesisGai

Latest Threads

Top