|
|
1.1 ! root 1: #ifndef _ISO9660_FS_H ! 2: #define _ISO9660_FS_H ! 3: ! 4: /* this file has been copied from linux 2.6.26 */ ! 5: ! 6: /* ! 7: * The isofs filesystem constants/structures ! 8: */ ! 9: ! 10: /* This part borrowed from the bsd386 isofs */ ! 11: #define ISODCL(from, to) (to - from + 1) ! 12: ! 13: struct iso_volume_descriptor { ! 14: char type[ISODCL(1,1)]; /* 711 */ ! 15: char id[ISODCL(2,6)]; ! 16: char version[ISODCL(7,7)]; ! 17: char data[ISODCL(8,2048)]; ! 18: }; ! 19: ! 20: /* volume descriptor types */ ! 21: #define ISO_VD_PRIMARY 1 ! 22: #define ISO_VD_SUPPLEMENTARY 2 ! 23: #define ISO_VD_END 255 ! 24: ! 25: #define ISO_STANDARD_ID "CD001" ! 26: ! 27: struct iso_primary_descriptor { ! 28: char type [ISODCL ( 1, 1)]; /* 711 */ ! 29: char id [ISODCL ( 2, 6)]; ! 30: char version [ISODCL ( 7, 7)]; /* 711 */ ! 31: char unused1 [ISODCL ( 8, 8)]; ! 32: char system_id [ISODCL ( 9, 40)]; /* achars */ ! 33: char volume_id [ISODCL ( 41, 72)]; /* dchars */ ! 34: char unused2 [ISODCL ( 73, 80)]; ! 35: char volume_space_size [ISODCL ( 81, 88)]; /* 733 */ ! 36: char unused3 [ISODCL ( 89, 120)]; ! 37: char volume_set_size [ISODCL (121, 124)]; /* 723 */ ! 38: char volume_sequence_number [ISODCL (125, 128)]; /* 723 */ ! 39: char logical_block_size [ISODCL (129, 132)]; /* 723 */ ! 40: char path_table_size [ISODCL (133, 140)]; /* 733 */ ! 41: char type_l_path_table [ISODCL (141, 144)]; /* 731 */ ! 42: char opt_type_l_path_table [ISODCL (145, 148)]; /* 731 */ ! 43: char type_m_path_table [ISODCL (149, 152)]; /* 732 */ ! 44: char opt_type_m_path_table [ISODCL (153, 156)]; /* 732 */ ! 45: char root_directory_record [ISODCL (157, 190)]; /* 9.1 */ ! 46: char volume_set_id [ISODCL (191, 318)]; /* dchars */ ! 47: char publisher_id [ISODCL (319, 446)]; /* achars */ ! 48: char preparer_id [ISODCL (447, 574)]; /* achars */ ! 49: char application_id [ISODCL (575, 702)]; /* achars */ ! 50: char copyright_file_id [ISODCL (703, 739)]; /* 7.5 dchars */ ! 51: char abstract_file_id [ISODCL (740, 776)]; /* 7.5 dchars */ ! 52: char bibliographic_file_id [ISODCL (777, 813)]; /* 7.5 dchars */ ! 53: char creation_date [ISODCL (814, 830)]; /* 8.4.26.1 */ ! 54: char modification_date [ISODCL (831, 847)]; /* 8.4.26.1 */ ! 55: char expiration_date [ISODCL (848, 864)]; /* 8.4.26.1 */ ! 56: char effective_date [ISODCL (865, 881)]; /* 8.4.26.1 */ ! 57: char file_structure_version [ISODCL (882, 882)]; /* 711 */ ! 58: char unused4 [ISODCL (883, 883)]; ! 59: char application_data [ISODCL (884, 1395)]; ! 60: char unused5 [ISODCL (1396, 2048)]; ! 61: }; ! 62: ! 63: /* Almost the same as the primary descriptor but two fields are specified */ ! 64: struct iso_supplementary_descriptor { ! 65: char type [ISODCL ( 1, 1)]; /* 711 */ ! 66: char id [ISODCL ( 2, 6)]; ! 67: char version [ISODCL ( 7, 7)]; /* 711 */ ! 68: char flags [ISODCL ( 8, 8)]; /* 853 */ ! 69: char system_id [ISODCL ( 9, 40)]; /* achars */ ! 70: char volume_id [ISODCL ( 41, 72)]; /* dchars */ ! 71: char unused2 [ISODCL ( 73, 80)]; ! 72: char volume_space_size [ISODCL ( 81, 88)]; /* 733 */ ! 73: char escape [ISODCL ( 89, 120)]; /* 856 */ ! 74: char volume_set_size [ISODCL (121, 124)]; /* 723 */ ! 75: char volume_sequence_number [ISODCL (125, 128)]; /* 723 */ ! 76: char logical_block_size [ISODCL (129, 132)]; /* 723 */ ! 77: char path_table_size [ISODCL (133, 140)]; /* 733 */ ! 78: char type_l_path_table [ISODCL (141, 144)]; /* 731 */ ! 79: char opt_type_l_path_table [ISODCL (145, 148)]; /* 731 */ ! 80: char type_m_path_table [ISODCL (149, 152)]; /* 732 */ ! 81: char opt_type_m_path_table [ISODCL (153, 156)]; /* 732 */ ! 82: char root_directory_record [ISODCL (157, 190)]; /* 9.1 */ ! 83: char volume_set_id [ISODCL (191, 318)]; /* dchars */ ! 84: char publisher_id [ISODCL (319, 446)]; /* achars */ ! 85: char preparer_id [ISODCL (447, 574)]; /* achars */ ! 86: char application_id [ISODCL (575, 702)]; /* achars */ ! 87: char copyright_file_id [ISODCL (703, 739)]; /* 7.5 dchars */ ! 88: char abstract_file_id [ISODCL (740, 776)]; /* 7.5 dchars */ ! 89: char bibliographic_file_id [ISODCL (777, 813)]; /* 7.5 dchars */ ! 90: char creation_date [ISODCL (814, 830)]; /* 8.4.26.1 */ ! 91: char modification_date [ISODCL (831, 847)]; /* 8.4.26.1 */ ! 92: char expiration_date [ISODCL (848, 864)]; /* 8.4.26.1 */ ! 93: char effective_date [ISODCL (865, 881)]; /* 8.4.26.1 */ ! 94: char file_structure_version [ISODCL (882, 882)]; /* 711 */ ! 95: char unused4 [ISODCL (883, 883)]; ! 96: char application_data [ISODCL (884, 1395)]; ! 97: char unused5 [ISODCL (1396, 2048)]; ! 98: }; ! 99: ! 100: ! 101: #define HS_STANDARD_ID "CDROM" ! 102: ! 103: struct hs_volume_descriptor { ! 104: char foo [ISODCL ( 1, 8)]; /* 733 */ ! 105: char type [ISODCL ( 9, 9)]; /* 711 */ ! 106: char id [ISODCL ( 10, 14)]; ! 107: char version [ISODCL ( 15, 15)]; /* 711 */ ! 108: char data[ISODCL(16,2048)]; ! 109: }; ! 110: ! 111: ! 112: struct hs_primary_descriptor { ! 113: char foo [ISODCL ( 1, 8)]; /* 733 */ ! 114: char type [ISODCL ( 9, 9)]; /* 711 */ ! 115: char id [ISODCL ( 10, 14)]; ! 116: char version [ISODCL ( 15, 15)]; /* 711 */ ! 117: char unused1 [ISODCL ( 16, 16)]; /* 711 */ ! 118: char system_id [ISODCL ( 17, 48)]; /* achars */ ! 119: char volume_id [ISODCL ( 49, 80)]; /* dchars */ ! 120: char unused2 [ISODCL ( 81, 88)]; /* 733 */ ! 121: char volume_space_size [ISODCL ( 89, 96)]; /* 733 */ ! 122: char unused3 [ISODCL ( 97, 128)]; /* 733 */ ! 123: char volume_set_size [ISODCL (129, 132)]; /* 723 */ ! 124: char volume_sequence_number [ISODCL (133, 136)]; /* 723 */ ! 125: char logical_block_size [ISODCL (137, 140)]; /* 723 */ ! 126: char path_table_size [ISODCL (141, 148)]; /* 733 */ ! 127: char type_l_path_table [ISODCL (149, 152)]; /* 731 */ ! 128: char unused4 [ISODCL (153, 180)]; /* 733 */ ! 129: char root_directory_record [ISODCL (181, 214)]; /* 9.1 */ ! 130: }; ! 131: ! 132: /* We use this to help us look up the parent inode numbers. */ ! 133: ! 134: struct iso_path_table{ ! 135: unsigned char name_len[2]; /* 721 */ ! 136: char extent[4]; /* 731 */ ! 137: char parent[2]; /* 721 */ ! 138: char name[0]; ! 139: } __attribute__((packed)); ! 140: ! 141: /* high sierra is identical to iso, except that the date is only 6 bytes, and ! 142: there is an extra reserved byte after the flags */ ! 143: ! 144: struct iso_directory_record { ! 145: char length [ISODCL (1, 1)]; /* 711 */ ! 146: char ext_attr_length [ISODCL (2, 2)]; /* 711 */ ! 147: char extent [ISODCL (3, 10)]; /* 733 */ ! 148: char size [ISODCL (11, 18)]; /* 733 */ ! 149: char date [ISODCL (19, 25)]; /* 7 by 711 */ ! 150: char flags [ISODCL (26, 26)]; ! 151: char file_unit_size [ISODCL (27, 27)]; /* 711 */ ! 152: char interleave [ISODCL (28, 28)]; /* 711 */ ! 153: char volume_sequence_number [ISODCL (29, 32)]; /* 723 */ ! 154: unsigned char name_len [ISODCL (33, 33)]; /* 711 */ ! 155: char name [0]; ! 156: } __attribute__((packed)); ! 157: ! 158: #define ISOFS_BLOCK_BITS 11 ! 159: #define ISOFS_BLOCK_SIZE (1 << ISOFS_BLOCK_BITS) ! 160: ! 161: #endif /* _ISO9660_FS_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.