gt: 		int length = in.readInt();
context: /* This file is part of "MidpSSH".
   * Copyright (c) 2004 Karl von Randow.
   * 
   * MidpSSH is based upon Telnet Floyd and FloydSSH by Radek Polak.
   *
   * --LICENSE NOTICE--
   * This program is free software; you can redistribute it and/or
   * modify it under the terms of the GNU General Public License
   * as published by the Free Software Foundation; either version 2
   * of the License, or (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   *
   * You should have received a copy of the GNU General Public License
   * along with this program; if not, write to the Free Software
   * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   * --LICENSE NOTICE--
   *
   */
  package app;
  
  import java.io.DataInputStream;
  import java.io.DataOutputStream;
  import java.io.IOException;
  import java.util.Vector;
  
  /**
   * @author Karl von Randow
   */
  public class Settings extends MyRecordStore {
  
  	public static final int DEFAULT_BGCOLOR = 0x000000,
  			DEFAULT_FGCOLOR = 0xffffff;
  
  	public static final int ROT_NORMAL = 0;
  
  	public static final int ROT_270 = 1;
  
  	public static final int ROT_90 = 2;
  
  	public static final int FONT_NORMAL = 0;
  
  	public static final int FONT_DEVICE = 1;
  	
  	private static final String RMS_NAME = "settings";
  
  	public static int bgcolor, fgcolor;
  
  	public static int terminalCols, terminalRows;
  
  	public static String terminalType;
  
  	//#ifdef midp2
  	public static int terminalRotated;
  	//#endif
  	
  	public static int fontMode;
  	
  	//#ifndef nofonts
  	//#ifdef midp2
  	public static byte lcdFontMode;
  	//#endif
  	//#endif
  
  	private static Settings me = new Settings();
  
  	//#ifdef midp2
  	public static boolean terminalFullscreen;
  	//#endif
  	
  	public static String sessionsImportUrl;
  
  	//#ifdef ssh2
  	public static int sshVersionPreferred;
  
  	public static boolean ssh2StoreKey;
  
  	public static byte[] ssh2x, ssh2y;
  	
  	public static byte[] x, y;
  
  	public static int ssh2KeySize;
  	//#endif
  
  	public static boolean pollingIO;
  
  	//#ifdef midp2
  	public static boolean predictiveText;
  	//#endif
  	
  	public static String httpProxy;
  
  	public static int httpProxyMode;
  
  	public static void init() {
  		defaults();
  		me.load(RMS_NAME, false);
  	}
  
  	/**
  	 * @param settings2
  	 */
  	public static void saveSettings() {
  		Vector v = new Vector();
  		v.addElement(null); // doesn't matter what we pass through, it just
  							// calls write()
  		me.save(RMS_NAME, v);
  	}
  
  	public static void defaults() {
  		bgcolor = DEFAULT_BGCOLOR;
  		fgcolor = DEFAULT_FGCOLOR;
  		terminalCols = 0;
  		terminalRows = 0;
  		terminalType = "";
  		//#ifdef midp2
  		terminalRotated = ROT_NORMAL;
  		//#endif
  		fontMode = FONT_NORMAL;
  		//#ifdef midp2
  		terminalFullscreen = false;
  		//#endif
  		//#ifdef ssh2
  		sshVersionPreferred = 1;
  		//#endif
  		sessionsImportUrl = "http://";
  		//#ifdef ssh2
  		ssh2StoreKey = true;
  		ssh2x = null;
  		ssh2y = null;
  		ssh2KeySize = 512;
  		//#endif
  		pollingIO = false;
  		//#ifdef midp2
  		predictiveText = true;
  		//#endif
  		//#ifdef ssh2
  		x = null;
  		y = null;
  		//#endif
  		//#ifndef nofonts
  		//#ifdef midp2
  		lcdFontMode = 0;
  		//#endif
  		//#endif
  		httpProxy = "";
  		httpProxyMode = 0;
  	}
  
  	/*
  	 * (non-Javadoc)
  	 * 
  	 * @see app.MyRecordStore#read(java.io.DataInputStream)
  	 */
  	protected Object read(DataInputStream in) throws IOException {
  		fgcolor = in.readInt();
  		bgcolor = in.readInt();
  		terminalCols = in.readInt();
  		terminalRows = in.readInt();
  		terminalType = in.readUTF();
  		//#ifdef midp2
  		terminalRotated = in.readInt();
  		//#endif
  		fontMode = in.readInt();
  		//#ifdef midp2
  		terminalFullscreen = in.readBoolean();
  		//#endif
  		//#ifdef ssh2
  		sshVersionPreferred = in.readInt();
  		//#endif
  		sessionsImportUrl = in.readUTF();
  		//#ifdef ssh2
  		ssh2StoreKey = in.readBoolean();
  		ssh2x = readByteArray(in);
  		ssh2y = readByteArray(in);
  		ssh2KeySize = in.readInt();
  		//#endif
  		pollingIO = in.readBoolean();
  		//#ifdef midp2
  		predictiveText = in.readBoolean();
  		//#endif
  		//#ifdef ssh2
  		x = readByteArray(in);
  		y = readByteArray(in);
  		//#endif
  		//#ifndef nofonts
  		//#ifdef midp2
  		lcdFontMode = in.readByte();
  		//#endif
  		//#endif
  		httpProxy = in.readUTF();
  		httpProxyMode = in.readByte();
  		return null;
  	}
  
  	/*
  	 * (non-Javadoc)
  	 * 
  	 * @see app.MyRecordStore#write(java.io.DataOutputStream, java.lang.Object)
  	 */
  	protected void write(DataOutputStream out, Object ob) throws IOException {
  		out.writeInt(fgcolor);
  		out.writeInt(bgcolor);
  		out.writeInt(terminalCols);
  		out.writeInt(terminalRows);
  		out.writeUTF(terminalType);
  		//#ifdef midp2
  		out.writeInt(terminalRotated);
  		//#endif
  		out.writeInt(fontMode);
  		//#ifdef midp2
  		out.writeBoolean(terminalFullscreen);
  		//#endif
  		//#ifdef ssh2
  		out.writeInt(sshVersionPreferred);
  		//#endif
  		out.writeUTF(sessionsImportUrl);
  		//#ifdef ssh2
  		out.writeBoolean(ssh2StoreKey);
  		writeByteArray(out, ssh2x);
  		writeByteArray(out, ssh2y);
  		out.writeInt(ssh2KeySize);
  		//#endif
  		out.writeBoolean(pollingIO);
  		//#ifdef midp2
  		out.writeBoolean(predictiveText);
  		//#endif
  		//#ifdef ssh2
  		writeByteArray(out, x);
  		writeByteArray(out, y);
  		//#endif
  		//#ifndef nofonts
  		//#ifdef midp2
  		out.writeByte(lcdFontMode);
  		//#endif
  		//#endif
  		out.writeUTF(httpProxy);
  		out.writeByte(httpProxyMode);
  	}
  
  	//#ifdef ssh2
  	private byte[] readByteArray(DataInputStream in) throws IOException {
  