Пример #1
0
        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);
                }
            }
        }
Пример #2
0
		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);
		}