|
| 1 | +# ISO 9660 Base Structures |
| 2 | + |
| 3 | +Implemented the core data structures and constants for the ISO 9660 filesystem. |
| 4 | + |
| 5 | +## Changes |
| 6 | +- Created `Include/Kernel/Fs/ISO9660/` directory. |
| 7 | +- Added `iso9660_constants.h` with enums and general constants. |
| 8 | +- Added `volume_descriptor_header.h`. |
| 9 | +- Added `primary_volume_descriptor.h` with all PVD fields. |
| 10 | +- Added `directory_record.h` with fixed-size directory record structure. |
| 11 | +- Added `path_table_entry.h`. |
| 12 | +- Added helper structures for ISO 9660 specific types: |
| 13 | + - `iso9660_both_endian_uint16.h` |
| 14 | + - `iso9660_both_endian_uint32.h` |
| 15 | + - `iso9660_recording_time.h` |
| 16 | + - `iso9660_volume_time.h` |
| 17 | +- Implemented `Iso9660Volume` class (`iso9660_volume.h`/`.cpp`) for PVD/VDS parsing. |
| 18 | +- Implemented `Iso9660Parser` class (`iso9660_parser.h`/`.cpp`) for directory record parsing. |
| 19 | +- Implemented SUSP (System Use Sharing Protocol) v1.12: |
| 20 | + - Added `susp_entry_header.h`, `susp_continuation_area.h`, `susp_extension_reference.h`, `susp_extension_selector.h`. |
| 21 | + - Added `SuspParser` (`susp_parser.h`/`.cpp`) with support for continuation areas ('CE' entries). |
| 22 | +- Implemented Rock Ridge Interchange Protocol (RRIP) v1.12: |
| 23 | + - Added `rock_ridge_posix_file_attributes.h`. |
| 24 | + - Added `RockRidgeParser` (`rock_ridge_parser.h`/`.cpp`) for POSIX metadata ('PX') and long names ('NM'). |
| 25 | +- Implemented Joliet Unicode Extension: |
| 26 | + - Added `JolietParser` (`joliet_parser.h`/`.cpp`) for UTF-16 to UTF-8 filename conversion. |
| 27 | +- Implemented El Torito Bootable CD Extension: |
| 28 | + - Added `el_torito_boot_record.h`, `el_torito_validation_entry.h`, `el_torito_default_entry.h`. |
| 29 | + - Added `ElToritoParser` (`el_torito_parser.h`/`.cpp`) for boot catalog parsing. |
| 30 | + |
| 31 | +## Architectural Compliance |
| 32 | +- Adhered to the "ONE STRUCT/CLASS PER FILE" rule. |
| 33 | +- Used `[[gnu::packed]]` for all filesystem structures to ensure correct hardware mapping. |
| 34 | +- Placed all files in the appropriate domain-based directory structure. |
| 35 | +- Used `fk::core::Result` and `TRY` macro for robust error handling. |
| 36 | +- Followed PascalCase for classes and snake_case for files. |
0 commit comments