private void GenPathTableEx(IsoFolder parentFolder, IsoFolder thisFolder, bool lsb) { var di = new FieldValidator(this.generator); // Path table record ( ECMA-119 section 9.4 ) byte[] b_di = this.generator.IsoName(thisFolder.Name, true); di.Byte((byte)b_di.Length, 1); di.Byte(0, 2); // Extended Attribute Record Length if (lsb) { di.IntLSB(thisFolder.DataBlock, 3, 6); // Location of Extent di.ShortLSB(parentFolder.PathTableEntry, 7, 8); // Parent Directory Number } else { di.IntMSB(thisFolder.DataBlock, 3, 6); // Location of Extent di.ShortMSB(parentFolder.PathTableEntry, 7, 8); // Parent Directory Number } di.Bytes(b_di, 9, 8 + b_di.Length); // Directory Identifier if ((b_di.Length & 1) != 0) { di.Byte(0, 9 + b_di.Length); // optional padding if LEN_DI is odd } foreach (KeyValuePair <string, IsoEntry> it in thisFolder.entries) { if (it.Value.IsFolder) { GenPathTableEx(thisFolder, (IsoFolder)it.Value, lsb); } } }
private void GenPathTableEx(IsoFolder parentFolder, IsoFolder thisFolder, bool lsb) { var di = new FieldValidator(this.generator); // Path table record ( ECMA-119 section 9.4 ) byte[] b_di = this.generator.IsoName(thisFolder.Name, true); di.Byte((byte)b_di.Length, 1); di.Byte(0, 2); // Extended Attribute Record Length if (lsb) { di.IntLSB(thisFolder.DataBlock, 3, 6); // Location of Extent di.ShortLSB(parentFolder.PathTableEntry, 7, 8); // Parent Directory Number } else { di.IntMSB(thisFolder.DataBlock, 3, 6); // Location of Extent di.ShortMSB(parentFolder.PathTableEntry, 7, 8); // Parent Directory Number } di.Bytes(b_di, 9, 8 + b_di.Length); // Directory Identifier if ((b_di.Length & 1) != 0) di.Byte(0, 9 + b_di.Length); // optional padding if LEN_DI is odd foreach (KeyValuePair<string, IsoEntry> it in thisFolder.entries) if (it.Value.IsFolder) GenPathTableEx(thisFolder, (IsoFolder)it.Value, lsb); }