/// <summary> /// Create a file information object by parsing a raw file descriptor sector. /// </summary> /// <param name="raw">Array containing the data from the file descriptor sector.</param> /// <param name="filename">Filename.</param> /// <returns>File information object.</returns> public static OS9FileInfo Parse(byte[] raw, string filename) { if (raw == null) { throw new ArgumentNullException(); } byte attributes = raw[0]; int owner = (raw[1] << 8) | raw[2]; int links = raw[8]; int size = (raw[9] << 24) | (raw[10] << 16) | (raw[11] << 8) | raw[12]; var modifiedTime = new Timestamp(raw[3] + 1900, raw[4], raw[5], raw[6], raw[7], 0); var createdTime = new Timestamp(raw[13] + 1900, raw[14], raw[15], 0, 0, 0); var segments = new List <OS9FileSegment>(); for (int i = 0; i < 48; i++) { var segment = new OS9FileSegment(raw, 16 + i * OS9FileSegment.SegmentSize); if (segment.IsLastSegment) { break; } segments.Add(segment); } return(new OS9FileInfo(filename, size, (OS9FileAttributes)attributes, createdTime, modifiedTime, owner, links, segments.ToArray())); }
public OS9FileInfo(string name, int size, OS9FileAttributes attributes, Timestamp createdTime, Timestamp modifiedTime, int owner, int links, OS9FileSegment[] segments) { Name = name; Size = size; Attributes = attributes; CreateTime = createdTime; ModifiedTime = modifiedTime; OwnerId = owner; LinkCount = links; Segments = segments; }
/// <summary> /// Create a file information object by parsing a raw file descriptor sector. /// </summary> /// <param name="raw">Array containing the data from the file descriptor sector.</param> /// <param name="filename">Filename.</param> /// <returns>File information object.</returns> public static OS9FileInfo Parse(byte[] raw, string filename) { if (raw == null) throw new ArgumentNullException(); byte attributes = raw[0]; int owner = (raw[1] << 8) | raw[2]; int links = raw[8]; int size = (raw[9] << 24) | (raw[10] << 16) | (raw[11] << 8) | raw[12]; var modifiedTime = new Timestamp(raw[3] + 1900, raw[4], raw[5], raw[6], raw[7], 0); var createdTime = new Timestamp(raw[13] + 1900, raw[14], raw[15], 0, 0, 0); var segments = new List<OS9FileSegment>(); for (int i = 0; i < 48; i++ ) { var segment = new OS9FileSegment(raw, 16 + i*OS9FileSegment.SegmentSize); if (segment.IsLastSegment) break; segments.Add(segment); } return new OS9FileInfo(filename, size, (OS9FileAttributes)attributes, createdTime, modifiedTime ,owner, links, segments.ToArray()); }