> ------------------------------------------------
> On Thu, 10 Jul 2003 21:56:17 +0100, "Rob Dixon" 
> <[EMAIL PROTECTED]> wrote:
> 
> > [EMAIL PROTECTED] wrote:
> > > ----- Original Message -----
> > > From: Rob Dixon <[EMAIL PROTECTED]>
> > > Date: Thursday, July 10, 2003 11:36 am
> > > Subject: Re: Net::FTP
> > >
> > > > Dan Muey wrote:
> > > > > > > What I'd like to do is simply:
> > > > > > > (WHERE exists() is hopefully a solution to my first
> > > > > > > question)
> > > > > > >
> > > > > > >  if($ftp->exists($file)) {
> > > > > > > $ftp->delete($file);
> > > > > > > if($ftp->exists($file)) { print "Could not delete 
> $file"; } 
> > > > > > > else { print "$file is all gone"; }  } else { 
> print "$file 
> > > > > > > does
> > > > > > not exist so
> > > > > > > I did not even try to delete it" }
> > > > > >
> > > > > > 'size' is the way to do it, but remember that it 
> will return 
> > > > > > zero for a file of zero size. What you need is 'defined'.
> > > > > >
> > > > > > This little subroutine will fulfil your wishes and make the 
> > > > > > code above work.
> > > > > >
> > > > > >   sub Net::FTP::exists {
> > > > > >     my $ftp = shift;
> > > > > >     defined $ftp->size(@_);
> > > > > >   }
> > > > > >
> > > > > > HTH,
> > > > >
> > > > > As always Rob a huge help. I'll play around with that. It's 
> > > > > makes so much sense when you think about it! I'll 
> tuck that one 
> > > > > away under my big hat too!
> > > > >
> > > >
> > > > Glad to help. FTP's a pain: as far as I know there's no way of 
> > > > telling whether a filename is a plain file or a 
> directory either, 
> > > > without either trying to 'cwd' to it or parsing the output or 
> > > > 'dir'.
> > > you probebly can tell if its a directory. just grab the 
> first 1024 
> > > bytes, and look inside it. Will be eassy if its laying on 
> top of UFS 
> > > or FFS
> > 
> > That depends on your file system. I don't think
> > most would let you open a directory as a plain file.
> > 
> > What I'm pining for is something like
> > 
> >   $ftp->stat('entity');
> > 
> > Dan will tell us when he's written it :)
> > 
> 
> Which was going to be my question when Dan started talking 
> about it, I think it would be cool to have, but what is being 
> talked about being implemented is really outside of the 
> Net::FTP scope since a) it isn't part of the FTP RFC, and 2) 
> the reason it isn't is probably because of the wide range of 
> FTP implementations.

Hmm, could be but my stuff is just some routines that use Net::FTP functions.
What if the name reflected that issue, like Net::FTP::FileTest or something.
That way if they don't have a file system then it wouldn't make much sense to use 
FileTest
But if they do then it might be perfect for them. I don't know I'll have to look into 
it more.

Thanks for the info.

Dan

> 
> The phrase "That depends on the file system" depends on there 
> being a file system to begin with, which is really my point, 
> what about FTP servers on systems without the notions of 
> directories, or even files, aka they deal with data sets and 
> are line rather than file based.  All of a sudden you need 
> some way of marking the system type in the FTP connection 
> object such that calling a 'stat' on a data set doesn't tell 
> you the wrong information (or worse throws an exception, 
> though they can be caught so maybe that is the best solution) 
> for a system that isn't file based, etc. but to the best of 
> my knowledge there is no way to deduce that from the FTP 
> server's responses (at least not a standard way).
> 
> I am certainly not an expert on those types of systems so 
> that doesn't mean there isn't a way, but I know it is easy to 
> get caught up in the file system notion because most widely 
> used OS'es depend on one (I myself am young enough to have 
> already had this happen) that building on top of something 
> that is not RFC compliant can lead to issues.
> 
> Any of the older gurus in the crowd that have dealt with line 
> based FTP servers wish to comment?
> 
http://danconia.org

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to