// PART OF THE MACHINE SIMULATION. DO NOT CHANGE. package nachos.machine; /** * An <tt>OpenFile</tt> that maintains a current file position. */ public abstract class OpenFileWithPosition extends OpenFile { /** * Allocate a new <tt>OpenFileWithPosition</tt> with the specified name on * the specified file system. * * @param fileSystem the file system to which this file belongs. * @param name the name of the file, on that file system. */ public OpenFileWithPosition(FileSystem fileSystem, String name) { super(fileSystem, name); } /** * Allocate a new unnamed <tt>OpenFileWithPosition</tt> that is not * associated with any file system. */ public OpenFileWithPosition() { super(); } public void seek(int position) { this.position = position; } public int tell() { return position; } public int read(byte[] buf, int offset, int length) { int amount = read(position, buf, offset, length); if (amount == -1) return -1; position += amount; return amount; } public int write(byte[] buf, int offset, int length) { int amount = write(position, buf, offset, length); if (amount == -1) return -1; position += amount; return amount; } /** * The current value of the file pointer. */ protected int position = 0; }