diff options
author | joerg <joerg@FreeBSD.org> | 1995-01-16 17:03:29 +0000 |
---|---|---|
committer | joerg <joerg@FreeBSD.org> | 1995-01-16 17:03:29 +0000 |
commit | 21c4534499755e8a9532c806a9000f7b82f3b02d (patch) | |
tree | def197b76a0dbb2e02ce9cadbaf5ba6564e42704 /sys/isofs/cd9660/iso.h | |
parent | cd232c506dc892f127bbf3eb3bdb5a0f241536bd (diff) | |
download | FreeBSD-src-21c4534499755e8a9532c806a9000f7b82f3b02d.zip FreeBSD-src-21c4534499755e8a9532c806a9000f7b82f3b02d.tar.gz |
Roll in my changes to make the cd9660 code understand the older
(original "High Sierra") CD format. I've already implemented this for
1.1.5.1 (and posted to -hackers), but didn't get any response to it.
Perhaps i'm the only one who has such an old CD lying around...
Everything is done empirically, but i had three of them around (from
different vendors), so there's a high probability that i've got it
right. :)
Diffstat (limited to 'sys/isofs/cd9660/iso.h')
-rw-r--r-- | sys/isofs/cd9660/iso.h | 62 |
1 files changed, 53 insertions, 9 deletions
diff --git a/sys/isofs/cd9660/iso.h b/sys/isofs/cd9660/iso.h index 04b9acc..858dbb3 100644 --- a/sys/isofs/cd9660/iso.h +++ b/sys/isofs/cd9660/iso.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)iso.h 8.2 (Berkeley) 1/23/94 - * $Id: iso.h,v 1.2 1994/08/02 07:41:38 davidg Exp $ + * $Id: iso.h,v 1.3 1994/09/09 11:11:01 dfr Exp $ */ #define ISODCL(from, to) (to - from + 1) @@ -45,7 +45,11 @@ struct iso_volume_descriptor { char type[ISODCL(1,1)]; /* 711 */ char id[ISODCL(2,6)]; char version[ISODCL(7,7)]; - char data[ISODCL(8,2048)]; + char unused[ISODCL(8,8)]; + char type_sierra[ISODCL(9,9)]; /* 711 */ + char id_sierra[ISODCL(10,14)]; + char version_sierra[ISODCL(15,15)]; + char data[ISODCL(16,2048)]; }; /* volume descriptor types */ @@ -53,13 +57,15 @@ struct iso_volume_descriptor { #define ISO_VD_END 255 #define ISO_STANDARD_ID "CD001" -#define ISO_ECMA_ID "CDW01" +#define ISO_ECMA_ID "CDW01" + +#define ISO_SIERRA_ID "CDROM" struct iso_primary_descriptor { - char type [ISODCL ( 1, 1)]; /* 711 */ - char id [ISODCL ( 2, 6)]; - char version [ISODCL ( 7, 7)]; /* 711 */ - char unused1 [ISODCL ( 8, 8)]; + char type [ISODCL ( 1, 1)]; /* 711 */ + char id [ISODCL ( 2, 6)]; + char version [ISODCL ( 7, 7)]; /* 711 */ + char unused1 [ISODCL ( 8, 8)]; char system_id [ISODCL ( 9, 40)]; /* achars */ char volume_id [ISODCL ( 41, 72)]; /* dchars */ char unused2 [ISODCL ( 73, 80)]; @@ -92,6 +98,43 @@ struct iso_primary_descriptor { }; #define ISO_DEFAULT_BLOCK_SIZE 2048 +struct iso_sierra_primary_descriptor { + char unknown1 [ISODCL ( 1, 8)]; /* 733 */ + char type [ISODCL ( 9, 9)]; /* 711 */ + char id [ISODCL ( 10, 14)]; + char version [ISODCL ( 15, 15)]; /* 711 */ + char unused1 [ISODCL ( 16, 16)]; + char system_id [ISODCL ( 17, 48)]; /* achars */ + char volume_id [ISODCL ( 49, 80)]; /* dchars */ + char unused2 [ISODCL ( 81, 88)]; + char volume_space_size [ISODCL ( 89, 96)]; /* 733 */ + char unused3 [ISODCL ( 97, 128)]; + char volume_set_size [ISODCL (129, 132)]; /* 723 */ + char volume_sequence_number [ISODCL (133, 136)]; /* 723 */ + char logical_block_size [ISODCL (137, 140)]; /* 723 */ + char path_table_size [ISODCL (141, 148)]; /* 733 */ + char type_l_path_table [ISODCL (149, 152)]; /* 731 */ + char opt_type_l_path_table [ISODCL (153, 156)]; /* 731 */ + char unknown2 [ISODCL (157, 160)]; /* 731 */ + char unknown3 [ISODCL (161, 164)]; /* 731 */ + char type_m_path_table [ISODCL (165, 168)]; /* 732 */ + char opt_type_m_path_table [ISODCL (169, 172)]; /* 732 */ + char unknown4 [ISODCL (173, 176)]; /* 732 */ + char unknown5 [ISODCL (177, 180)]; /* 732 */ + char root_directory_record [ISODCL (181, 214)]; /* 9.1 */ + char volume_set_id [ISODCL (215, 342)]; /* dchars */ + char publisher_id [ISODCL (343, 470)]; /* achars */ + char preparer_id [ISODCL (471, 598)]; /* achars */ + char application_id [ISODCL (599, 726)]; /* achars */ + char copyright_id [ISODCL (727, 790)]; /* achars */ + char creation_date [ISODCL (791, 806)]; /* ? */ + char modification_date [ISODCL (807, 822)]; /* ? */ + char expiration_date [ISODCL (823, 838)]; /* ? */ + char effective_date [ISODCL (839, 854)]; /* ? */ + char file_structure_version [ISODCL (855, 855)]; /* 711 */ + char unused4 [ISODCL (856, 2048)]; +}; + struct iso_directory_record { char length [ISODCL (1, 1)]; /* 711 */ char ext_attr_length [ISODCL (2, 2)]; /* 711 */ @@ -129,7 +172,8 @@ struct iso_extended_attributes { }; /* CD-ROM Format type */ -enum ISO_FTYPE { ISO_FTYPE_DEFAULT, ISO_FTYPE_9660, ISO_FTYPE_RRIP, ISO_FTYPE_ECMA }; +enum ISO_FTYPE { ISO_FTYPE_DEFAULT, ISO_FTYPE_9660, ISO_FTYPE_RRIP, + ISO_FTYPE_ECMA, ISO_FTYPE_HIGH_SIERRA }; #ifndef ISOFSMNT_ROOT #define ISOFSMNT_ROOT 0 @@ -153,7 +197,7 @@ struct iso_mnt { char root[ISODCL (157, 190)]; int root_extent; int root_size; - enum ISO_FTYPE iso_ftype; + enum ISO_FTYPE iso_ftype; int rr_skip; int rr_skip0; |