95 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
| Copyright (C) 2016-2019 The University of Notre Dame
 | |
| This software is distributed under the GNU General Public License.
 | |
| See the file LICENSE for details.
 | |
| */
 | |
| 
 | |
| #ifndef ISO9660_H
 | |
| #define ISO9660_H
 | |
| 
 | |
| #include "kernel/types.h"
 | |
| 
 | |
| #pragma pack(1)
 | |
| 
 | |
| struct iso_9660_directory_entry {
 | |
| 	uint8_t descriptor_length;
 | |
| 	uint8_t extended_sectors;
 | |
| 	uint32_t first_sector_little;
 | |
| 	uint32_t first_sector_big;
 | |
| 	uint32_t length_little;
 | |
| 	uint32_t length_big;
 | |
| 	uint8_t year;
 | |
| 	uint8_t month;
 | |
| 	uint8_t mday;
 | |
| 	uint8_t hour;
 | |
| 	uint8_t minute;
 | |
| 	uint8_t second;
 | |
| 	uint8_t timezone;
 | |
| 	uint8_t flags;
 | |
| 	uint8_t unit_size;
 | |
| 	uint8_t interleave_gap;
 | |
| 	uint16_t volume_sequence_little;
 | |
| 	uint16_t volume_sequence_big;
 | |
| 	uint8_t ident_length;
 | |
| 	char ident[1];
 | |
| };
 | |
| 
 | |
| #define ISO_9660_EXTENT_FLAG_HIDDEN     1
 | |
| #define ISO_9660_EXTENT_FLAG_DIRECTORY  2
 | |
| 
 | |
| struct iso_9660_time {
 | |
| 	char year[4];
 | |
| 	char month[2];
 | |
| 	char mday[2];
 | |
| 	char hour[2];
 | |
| 	char minute[2];
 | |
| 	char second[2];
 | |
| 	char subsec[2];
 | |
| 	char timezone;
 | |
| };
 | |
| 
 | |
| #define ISO_9660_VOLUME_TYPE_BOOT 0
 | |
| #define ISO_9660_VOLUME_TYPE_PRIMARY 1
 | |
| #define ISO_9660_VOLUME_TYPE_SUPPLEMENTARY 2
 | |
| #define ISO_9660_VOLUME_TYPE_PARTITION 3
 | |
| #define ISO_9660_VOLUME_TYPE_TERMINATOR 255
 | |
| 
 | |
| struct iso_9660_volume_descriptor {
 | |
| 	uint8_t type;
 | |
| 	char magic[5];
 | |
| 	char other[2];
 | |
| 	char system[32];
 | |
| 	char volume[32];
 | |
| 	char reserved1[8];
 | |
| 	uint32_t nsectors_little;
 | |
| 	uint32_t nsectors_big;
 | |
| 	char reserved2[32];
 | |
| 	uint16_t volume_set_size_little;
 | |
| 	uint16_t volume_set_size_big;
 | |
| 	uint16_t volume_sequence_number_little;
 | |
| 	uint16_t volume_sequence_number_big;
 | |
| 	uint16_t sector_size_little;
 | |
| 	uint16_t sector_size_big;
 | |
| 	uint32_t path_table_size_little;
 | |
| 	uint32_t path_table_size_big;
 | |
| 	uint32_t first_path_table_start_little;
 | |
| 	uint32_t second_path_table_start_little;
 | |
| 	uint32_t first_path_table_start_big;
 | |
| 	uint32_t second_path_table_start_big;
 | |
| 	struct iso_9660_directory_entry root;
 | |
| 	char volume_set[128];
 | |
| 	char publisher[128];
 | |
| 	char preparer[128];
 | |
| 	char application[128];
 | |
| 	char copyright_file[37];
 | |
| 	char abstract_file[37];
 | |
| 	char bibliography_file[37];
 | |
| 	struct iso_9660_time creation_time;
 | |
| 	struct iso_9660_time modify_time;
 | |
| 	struct iso_9660_time expire_time;
 | |
| 	struct iso_9660_time effective_time;
 | |
| 	char unknown[2];
 | |
| };
 | |
| 
 | |
| #endif
 |