iso9660.h
上传用户:xiejiait
上传日期:2007-01-06
资源大小:881k
文件大小:5k
- /* @(#)iso9660.h 1.4 99/10/18 Copyright 1996 J. Schilling */
- /*
- * Copyright (c) 1996 J. Schilling
- */
- /*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; see the file COPYING. If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- */
- #define _delta(from, to) ((to) - (from) + 1)
- #define VD_BOOT 0
- #define VD_PRIMARY 1
- #define VD_SUPPLEMENT 2
- #define VD_PARTITION 3
- #define VD_TERM 255
- #define VD_ID "CD001"
- struct iso9660_voldesc {
- char vd_type [_delta(1, 1)];
- char vd_id [_delta(2, 6)];
- char vd_version [_delta(7, 7)];
- char vd_fill [_delta(8, 2048)];
- };
- struct iso9660_boot_voldesc {
- char vd_type [_delta(1, 1)];
- char vd_id [_delta(2, 6)];
- char vd_version [_delta(7, 7)];
- char vd_bootsys [_delta(8, 39)];
- char vd_bootid [_delta(40, 71)];
- char vd_bootcode [_delta(72, 2048)];
- };
- struct iso9660_pr_voldesc {
- char vd_type [_delta( 1, 1)];
- char vd_id [_delta( 2, 6)];
- char vd_version [_delta( 7, 7)];
- char vd_unused1 [_delta( 8, 8)];
- char vd_system_id [_delta( 9, 40)];
- char vd_volume_id [_delta( 41, 72)];
- char vd_unused2 [_delta( 73, 80)];
- char vd_volume_space_size [_delta( 81, 88)];
- char vd_unused3 [_delta( 89, 120)];
- char vd_volume_set_size [_delta( 121, 124)];
- char vd_volume_seq_number [_delta( 125, 128)];
- char vd_lbsize [_delta( 129, 132)];
- char vd_path_table_size [_delta( 133, 140)];
- char vd_pos_path_table_l [_delta( 141, 144)];
- char vd_opt_pos_path_table_l [_delta( 145, 148)];
- char vd_pos_path_table_m [_delta( 149, 152)];
- char vd_opt_pos_path_table_m [_delta( 153, 156)];
- char vd_root_dir [_delta( 157, 190)];
- char vd_volume_set_id [_delta( 191, 318)];
- char vd_publisher_id [_delta( 319, 446)];
- char vd_data_preparer_id [_delta( 447, 574)];
- char vd_application_id [_delta( 575, 702)];
- char vd_copyr_file_id [_delta( 703, 739)];
- char vd_abstr_file_id [_delta( 740, 776)];
- char vd_bibl_file_id [_delta( 777, 813)];
- char vd_create_time [_delta( 814, 830)];
- char vd_mod_time [_delta( 831, 847)];
- char vd_expiry_time [_delta( 848, 864)];
- char vd_effective_time [_delta( 865, 881)];
- char vd_file_struct_vers [_delta( 882, 882)];
- char vd_reserved1 [_delta( 883, 883)];
- char vd_application_use [_delta( 884, 1395)];
- char vd_fill [_delta(1396, 2048)];
- };
- struct iso9660_dir {
- char dr_len [_delta( 1, 1)];
- char dr_eattr_len [_delta( 2, 2)];
- char dr_eattr_pos [_delta( 3, 10)];
- char dr_data_len [_delta( 11, 18)];
- char dr_recording_time [_delta( 19, 25)];
- char dr_file_flags [_delta( 26, 26)];
- char dr_file_unit_size [_delta( 27, 27)];
- char dr_interleave_gap [_delta( 28, 28)];
- char dr_volume_seq_number [_delta( 29, 32)];
- char dr_file_name_len [_delta( 33, 33)];
- char dr_file_name [_delta( 34, 34)];
- };
- struct iso9660_dtime {
- unsigned char dt_year;
- unsigned char dt_month;
- unsigned char dt_day;
- unsigned char dt_hour;
- unsigned char dt_minute;
- unsigned char dt_second;
- char dt_gmtoff;
- };
- struct iso9660_ltime {
- char lt_year [_delta( 1, 4)];
- char lt_month [_delta( 5, 6)];
- char lt_day [_delta( 7, 8)];
- char lt_hour [_delta( 9, 10)];
- char lt_minute [_delta( 11, 12)];
- char lt_second [_delta( 13, 14)];
- char lt_hsecond [_delta( 15, 16)];
- char lt_gmtoff [_delta( 17, 17)];
- };
- struct iso9660_path_table {
- char pt_di_len [_delta( 1, 1)];
- char pt_eattr_len [_delta( 2, 2)];
- char pt_eattr_pos [_delta( 3, 6)];
- char pt_di_parent [_delta( 7, 8)];
- char pt_name [_delta( 9, 9)];
- };
- struct iso9660_eattr {
- char ea_owner [_delta( 1, 4)];
- char ea_group [_delta( 5, 8)];
- char ea_perm [_delta( 9, 10)];
- char ea_ctime [_delta( 11, 27)];
- char ea_mtime [_delta( 28, 44)];
- char ea_extime [_delta( 45, 61)];
- char ea_eftime [_delta( 62, 78)];
- char ea_record_format [_delta( 79, 79)];
- char ea_record_attr [_delta( 80, 80)];
- char ea_record_len [_delta( 81, 84)];
- char ea_system_id [_delta( 85, 116)];
- char ea_system_use [_delta( 117, 180)];
- char ea_version [_delta( 181, 181)];
- char ea_esc_seq_len [_delta( 182, 182)];
- char ea_reserved1 [_delta( 183, 246)];
- char ea_appl_use_len [_delta( 247, 250)];
- char ea_appl_use [_delta( 251, 251)]; /* actually more */
- /* char ea_esc_seq [_delta( xxx, xxx)]; */
- };
- #define PERM_MB_ONE 0xAAAA
- #define PERM_RSYS 0x0001
- #define PERM_XSYS 0x0004
- #define PERM_RUSR 0x0010
- #define PERM_XUSR 0x0040
- #define PERM_RGRP 0x0100
- #define PERM_XGRP 0x0400
- #define PERM_ROTH 0x1000
- #define PERM_XOTH 0x4000
- #define GET_UBYTE(a) a_to_u_byte(a)
- #define GET_SBYTE(a) a_to_byte(a)
- #define GET_SHORT(a) a_to_u_2_byte(&((unsigned char *) (a))[0])
- #define GET_BSHORT(a) a_to_u_2_byte(&((unsigned char *) (a))[2])
- #define GET_INT(a) a_to_4_byte(&((unsigned char *) (a))[0])
- #define GET_LINT(a) la_to_4_byte(&((unsigned char *) (a))[0])
- #define GET_BINT(a) a_to_4_byte(&((unsigned char *) (a))[4])