public static DinodeD32 ReadFromStream(Stream s) { var di = new DinodeD32 { Mode = (InodeMode)s.ReadUInt16LE(), Nlink = s.ReadUInt16LE(), Flags = (InodeFlags)s.ReadUInt32LE(), Size = s.ReadInt64LE(), SizeCompressed = s.ReadInt64LE(), Time1_sec = s.ReadInt64LE(), Time2_sec = s.ReadInt64LE(), Time3_sec = s.ReadInt64LE(), Time4_sec = s.ReadInt64LE(), Time1_nsec = s.ReadUInt32LE(), Time2_nsec = s.ReadUInt32LE(), Time3_nsec = s.ReadUInt32LE(), Time4_nsec = s.ReadUInt32LE(), Uid = s.ReadUInt32LE(), Gid = s.ReadUInt32LE(), Unk1 = s.ReadUInt64LE(), Unk2 = s.ReadUInt64LE(), Blocks = s.ReadUInt32LE() }; for (var i = 0; i < 12; i++) { di.db[i] = s.ReadInt32LE(); } for (var i = 0; i < 5; i++) { di.ib[i] = s.ReadInt32LE(); } return(di); }
inode MakeInode(InodeMode Mode, uint Blocks, long Size = 0, long SizeCompressed = 0, ushort Nlink = 1, uint Number = 0, InodeFlags Flags = 0) { inode ret; if (properties.Sign) { ret = new DinodeS32() { Mode = Mode, Blocks = Blocks, Size = Size, SizeCompressed = SizeCompressed, Nlink = Nlink, Number = Number, Flags = Flags | InodeFlags.unk2 | InodeFlags.unk3, }; } else { ret = new DinodeD32() { Mode = Mode, Blocks = Blocks, Size = Size, SizeCompressed = SizeCompressed, Nlink = Nlink, Number = Number, Flags = Flags }; } ret.SetTime(properties.FileTime); return(ret); }