import java.io.*;
import java.util.*;
public class INIFile
{
 Properties iniProperty = new Properties();
 public INIFile(File f) { this( f.getPath() ); }
 public INIFile(String fname) throws IOException { loadFile( fname ); }
 private void loadFile( String fname ) throws IOException
 {
  BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fname)));
  try
    {
     String section = "";
     String line;
     while( (line = br.readLine())!=null )
       {
        if( line.startsWith(";") ) continue;
        if( line.startsWith("[") )
          {
           section = line.substring(1,line.lastIndexOf("]")).trim();
           continue;
          }
        addProperty(section,line);
       }
    }
  finally { br.close(); }
 }
 private void addProperty(String section,String line)
 {
  int equalIndex = line.indexOf("=");
  if( equalIndex > 0 )
    {
     String name = section+'.'+line.substring(0,equalIndex).trim();
     String value = line.substring(equalIndex+1).trim();
     iniProperty.put(name,value);
    }
 }
 public String getProperty(String section,String var,String def)
 {
  return iniProperty.getProperty(section+'.'+var,def);
 }
 public int getProperty(String section,String var,int def)
 {
  String sval = getProperty(section,var,Integer.toString(def));
  return Integer.decode(sval).intValue();
 }
 public boolean getProperty(String section,String var,boolean def)
 {
  String sval = getProperty(section,var,def ? "True":"False");
  return sval.equalsIgnoreCase("Yes") || sval.equalsIgnoreCase("True");
 }
}