private synchronized void savePasswd() throws IOException {
      if (passwdFile != null) {
         FileOutputStream fos = new FileOutputStream(passwdFile);
         PrintWriter pw = null;
         try {
            pw = new PrintWriter(fos);
            String key;
            String[] fields;
            StringBuffer sb;
            Enumeration keys = entries.keys();
            while (keys.hasMoreElements()) {
               key = (String) keys.nextElement();
               fields = (String[]) entries.get(key);
               sb = new StringBuffer(fields[0]);
               for (int i = 1; i < fields.length; i++) {
                  sb.append(":"+fields[i]);
               }
               pw.println(sb.toString());
            }
         } finally {
            if (pw != null) {
               try {
                  pw.flush();
               } finally {
                  pw.close();
               }
            }
            if (fos != null) {
               try {
                  fos.close();
               } catch (IOException ignored) {
               }
            }
            lastmod = passwdFile.lastModified();
         }
      }
   }