package org.araqne.log.api; import java.io.IOException; import java.nio.ByteBuffer; import java.util.Date; import org.araqne.log.api.WtmpEntry.Type; /** * HP-UX 11.23 or later */ public class WtmpEntryParserHpUx extends WtmpEntryParser { @Override public int getBlockSize() { return 652; } @Override public WtmpEntry parseEntry(ByteBuffer bb) throws IOException { bb.getInt(); byte[] ut_user = new byte[257]; bb.get(ut_user); byte[] padding = new byte[3]; bb.get(padding); int pid = bb.getInt(); byte[] idBlob = new byte[4]; bb.get(idBlob); byte[] lineBlob = new byte[65]; bb.get(lineBlob); padding = new byte[1]; bb.get(padding); int type = bb.getShort(); padding = new byte[12]; bb.get(padding); int time = bb.getInt(); byte[] pad = new byte[24]; bb.get(pad); byte[] hostBlob = new byte[257]; bb.get(hostBlob); return new WtmpEntry(getEntryType(type), new Date(time * 1000L), pid, readString(ut_user), readString(hostBlob), 0, readString(lineBlob), readString(idBlob)); } private Type getEntryType(int d) { switch (d) { case 0: return Type.Empty; case 1: return Type.RunLevel; case 2: return Type.BootTime; case 3: return Type.OldTime; case 4: return Type.NewTime; case 5: return Type.InitProcess; case 6: return Type.LoginProcess; case 7: return Type.UserProcess; case 8: return Type.DeadProcess; case 9: return Type.Accounting; default: return Type.Unknown; } } }