namespace SabreTools.Data.Models.ISO9660 { /// /// ISO9660 constant values and arrays /// /// public static class Constants { #region Volume Descriptor Constants /// /// Minimum size of a logical sector /// public const int MinimumSectorSize = 2048; /// /// Number of logical sectors in the System Area /// public const int SystemAreaSectors = 16; /// /// Identifier used for ISO9660, "CD001" /// public static readonly byte[] StandardIdentifier = [0x43, 0x44, 0x30, 0x30, 0x31]; /// /// File Identifier of the current directory /// public static readonly byte[] CurrentDirectory = [0x00]; /// /// File Identifier of the parent directory /// public static readonly byte[] ParentDirectory = [0x01]; #endregion #region CD-i Constants /// /// Identifier present on non-ISO9660 CD-i discs, "CD-I " /// public static readonly byte[] StandardIdentifierCDI = [0x43, 0x44, 0x2D, 0x49, 0x20]; #endregion #region Primary/Supplementary Volume Descriptors Constants /// /// Character used for separating a file name from a file extension, Fullstop character "." /// This value is used in Primary Volume Descriptors /// public const byte Separator1 = 0x2E; /// /// Character used for separating the file name/extension, from the file version number, Semicolon character ";" /// This value is used in Primary Volume Descriptors /// public const byte Separator2 = 0x3B; /// /// Character used for padding a byte array on the right, Space character " " /// This value is used in Primary/Supplementary Volume Descriptors /// public const byte Filler = 0x20; /// /// Valid a-characters: A subset of 57 ASCII characters including A-Z, 0-9, and some special characters (0x20-0x22, 0x25-0x3F, 0x41-0x5A, 0x5F) /// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _ ! " % & ' ( ) * + , - . / : ; < = > ? /// Note: a1-characters are a user-defined subset of c-characters (UCS-2) /// Note: Joliet extension implies all MSB UCS-2 characters except control characters and * / : ; ? \ (0x0000-0x001F, 0x002A, 0x002F, 0x003A, 0x003B, 0x003F, 0x005C) /// public static readonly byte[] ValidACharacters = [ 0x20, 0x21, 0x22, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5F ]; /// /// Valid d-characters: A subset of 37 ASCII characters including A-Z, 0-9, and underscore only (0x30-0x3F, 0x41-0x5A, 0x5F) /// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _ /// Note: d1-characters are a user-defined subset of c-characters (UCS-2) /// Note: Joliet extension implies all MSB UCS-2 characters except control characters and * / : ; ? \ (0x0000-0x001F, 0x002A, 0x002F, 0x003A, 0x003B, 0x003F, 0x005C) /// public static readonly byte[] ValidDCharacters = [ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x78, 0x59, 0x5A, 0x5F ]; #endregion #region Joliet Extension Constants /// /// UCS-2 Character used for separating a file name from a file extension, Fullstop character "." /// This is used in Joliet-style Enhanced Volume Descriptors /// public static readonly byte[] JolietSeparator1 = [0x00, 0x2E]; /// /// UCS-2 Character used for separating the file name/extension, from the file version number, Semicolon character ";" /// This is used in Joliet-style Enhanced Volume Descriptors /// public static readonly byte[] JolietSeparator2 = [0x00, 0x3B]; /// /// Character used for padding a byte array on the right, null character /// This is used in Joliet-style Enhanced Volume Descriptors /// public const byte JolietFiller = 0x20; /// /// Joliet extension uses Enhanced Volume Descriptor with this VolumeFlags value /// public const byte JolietVolumeFlags = 0x00; /// /// Joliet extension uses Enhanced Volume Descriptor with this EscapeSequences value /// Escape Sequences: (25 2F 40) (25 2F 43) (25 2F 45) /// public static readonly byte[] JolietEscapeSequences = [ 0x25, 0x2F, 0x40, 0x25, 0x2F, 0x43, 0x25, 0x2F, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ]; #endregion } }