if(entry.name.equals(".") || entry.name.equals(".."))
if(entry == null || entry.name.equals(".") || entry.name.equals(".."))
	public VFS.DirectoryEntry[] _listDirectory(VFSSession session, String url,		Component comp) throws IOException	{		VFS.DirectoryEntry[] directory = DirectoryCache.getCachedDirectory(url);		if(directory != null)			return directory;		FtpAddress address = new FtpAddress(url);		FtpClient client = _getFtpClient(session,address,false,comp);		if(client == null)			return null;		BufferedReader in = null;		Vector directoryVector = new Vector();		try		{			client.dataPort();			Reader _in = client.list(address.path);			if(_in == null)			{				String[] args = { url, client.getResponse().toString() };				VFSManager.error(comp,"vfs.ftp.list-error",args);				return null;			}			in = new BufferedReader(_in);			String line;			while((line = in.readLine()) != null)			{				if(line.startsWith("total"))					continue;				VFS.DirectoryEntry entry = lineToDirectoryEntry(line);				if(entry.name.equals(".") || entry.name.equals(".."))					continue;				directoryVector.addElement(entry);			}			in.close();			for(int i = 0; i < directoryVector.size(); i++)			{				VFS.DirectoryEntry entry = (VFS.DirectoryEntry)					directoryVector.elementAt(i);				if(entry.type == __LINK)					resolveSymlink(session,url,entry,comp);				else				{					// prepend directory to create full path					entry.path = constructPath(url,entry.name);					entry.deletePath = entry.path;				}			}			directory = new VFS.DirectoryEntry[directoryVector.size()];			directoryVector.copyInto(directory);			DirectoryCache.setCachedDirectory(url,directory);			return directory;		}		finally		{			if(in != null)			{				try				{					in.close();				}				catch(Exception e)				{					Log.log(Log.ERROR,this,e);				}			}		}	}