for (Enumeration enum = zf.entries (); enum.hasMoreElements (); )
for (Enumeration zfEnum = zf.entries (); zfEnum.hasMoreElements (); )
	Driver [] scanDriversOLD (String line)	{		long start = System.currentTimeMillis ();		Set paths = new HashSet ();		Set driverClasses = new HashSet ();		for (StringTokenizer tok = new StringTokenizer (			System.getProperty ("java.ext.dirs"),			System.getProperty ("path.separator"));			tok.hasMoreTokens (); )		{			File [] files = new File (tok.nextToken ()).listFiles ();			for (int i = 0; files != null && i < files.length; i++)				paths.add (files [i].getAbsolutePath ());		}		for (StringTokenizer tok = new StringTokenizer (			System.getProperty ("java.class.path"),			System.getProperty ("path.separator"));			tok.hasMoreTokens (); )		{			paths.add (new File (tok.nextToken ()).getAbsolutePath ());		}		for (Iterator i = paths.iterator (); i.hasNext (); )		{			File f = new File ((String)i.next ());			output (color ().pad (loc ("scanning", f.getAbsolutePath ()), 60),				false);			try			{				ZipFile zf = new ZipFile (f);				int total = zf.size ();				int index = 0;				for (Enumeration enum = zf.entries ();					enum.hasMoreElements (); )				{					ZipEntry entry = (ZipEntry)enum.nextElement ();					String name = entry.getName ();					progress (index++, total);					if (name.endsWith (".class"))					{						name = name.replace ('/', '.');						name = name.substring (0, name.length () - 6);						try						{							// check for the string "driver" in the class							// to see if we should load it. Not perfect, but							// it is far too slow otherwise.							if (name.toLowerCase ().indexOf ("driver") != -1)							{								Class c = Class.forName (name, false,									getClass ().getClassLoader ());								if (Driver.class.isAssignableFrom (c)									&& !(Modifier.isAbstract (										c.getModifiers ())))								{									try									{										// load and initialize										Class.forName (name);									}									catch (Exception e)									{									}									driverClasses.add (c.newInstance ());								}							}						}						catch (Throwable t) { }					}				}				progress (total, total);			}			catch (Exception e) { }		}