Add missing field in SVD structure. Document correspondencies with ECMA 119

better.
This commit is contained in:
rocky
2006-05-06 16:08:06 +00:00
parent fcabaf3da6
commit 5d3ef6fa82
2 changed files with 70 additions and 53 deletions

View File

@@ -1,9 +1,8 @@
/* /*
$Id: iso9660.h,v 1.92 2006/03/26 15:03:54 rocky Exp $ $Id: iso9660.h,v 1.93 2006/05/06 16:08:06 rocky Exp $
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2003, 2004, 2005, 2006 Rocky Bernstein Copyright (C) 2003, 2004, 2005, 2006 Rocky Bernstein <rocky@gnu.org>
<rockyb@users.sourceforge.net>
See also iso9660.h by Eric Youngdale (1993). See also iso9660.h by Eric Youngdale (1993).
@@ -301,9 +300,12 @@ struct iso9660_pvd_s {
table */ table */
iso732_t opt_type_m_path_table; /**< first sector of optional iso732_t opt_type_m_path_table; /**< first sector of optional
M Path table */ M Path table */
iso9660_dir_t root_directory_record; /**< See section 9.1 of iso9660_dir_t root_directory_record; /**< See 8.4.18 and
section 9.1 of
ISO 9660 spec. */ ISO 9660 spec. */
char root_directory_filename; /**< Is '\\0' */ char root_directory_filename; /**< Is '\\0' or root
directory. Also pads previous
field to 34 bytes */
dchar_t volume_set_id[ISO_MAX_VOLUMESET_ID]; /**< Volume Set of dchar_t volume_set_id[ISO_MAX_VOLUMESET_ID]; /**< Volume Set of
which the volume is which the volume is
a member. See a member. See
@@ -390,8 +392,10 @@ struct iso9660_svd_s {
*/ */
iso711_t version; /**< value 1 */ iso711_t version; /**< value 1 */
char flags; /**< Section 8.5.3 */ char flags; /**< Section 8.5.3 */
achar_t system_id[ISO_MAX_SYSTEM_ID]; /**< each char is an achar */ achar_t system_id[ISO_MAX_SYSTEM_ID]; /**< Section 8.5.4; each char
dchar_t volume_id[ISO_MAX_VOLUME_ID]; /**< each char is a dchar */ is an achar */
dchar_t volume_id[ISO_MAX_VOLUME_ID]; /**< Section 8.5.5; each char
is a dchar */
char unused2[8]; char unused2[8];
iso733_t volume_space_size; /**< total number of iso733_t volume_space_size; /**< total number of
sectors */ sectors */
@@ -399,30 +403,39 @@ struct iso9660_svd_s {
iso723_t volume_set_size; /**< often 1 */ iso723_t volume_set_size; /**< often 1 */
iso723_t volume_sequence_number; /**< often 1 */ iso723_t volume_sequence_number; /**< often 1 */
iso723_t logical_block_size; /**< sector size, e.g. 2048 */ iso723_t logical_block_size; /**< sector size, e.g. 2048 */
iso733_t path_table_size; /**< bytes in path table */ iso733_t path_table_size; /**< 8.5.7; bytes in path
iso731_t type_l_path_table; /**< first sector of little- table */
endian path table */ iso731_t type_l_path_table; /**< 8.5.8; first sector of
iso731_t opt_type_l_path_table; /**< first sector of optional
little-endian path table */ little-endian path table */
iso732_t type_m_path_table; /**< first sector of big- iso731_t opt_type_l_path_table; /**< 8.5.9; first sector of
endian path table */ optional little-endian
iso732_t opt_type_m_path_table; /**< first sector of optional path table */
iso732_t type_m_path_table; /**< 8.5.10; first sector of
big-endian path table */ big-endian path table */
iso9660_dir_t root_directory_record; /**< See section 9.1 of iso732_t opt_type_m_path_table; /**< 8.5.11; first sector of
ISO 9660 spec. */ optional big-endian path
dchar_t volume_set_id[ISO_MAX_VOLUMESET_ID]; /**< dchars */ table */
achar_t publisher_id[ISO_MAX_PUBLISHER_ID]; /**< Publisher of iso9660_dir_t root_directory_record; /**< See section 8.5.12 and
volume. If the first 9.1 of ISO 9660 spec. */
character is '_' 0x5F, char root_directory_filename; /**< Is '\\0' or root
directory. Also pads previous
field to 34 bytes */
dchar_t volume_set_id[ISO_MAX_VOLUMESET_ID]; /**< 8.5.13;
dchars */
achar_t publisher_id[ISO_MAX_PUBLISHER_ID]; /**<
Publisher of volume.
If the first char-
aracter is '_' 0x5F,
the remaining bytes the remaining bytes
specify a file specify a file
containing the user. containing the user.
If all bytes are " " If all bytes are " "
(0x20) no publisher (0x20) no publisher
is specified. See is specified. See
section 8.4.20 of section 8.5.14 of
ECMA 119 */ ECMA 119 */
achar_t preparer_id[ISO_MAX_PREPARER_ID]; /**< preparer of achar_t preparer_id[ISO_MAX_PREPARER_ID]; /**<
Data preparer of
volume. If the first volume. If the first
character is '_' 0x5F, character is '_' 0x5F,
the remaining bytes the remaining bytes
@@ -431,7 +444,7 @@ struct iso9660_svd_s {
If all bytes are " " If all bytes are " "
(0x20) no preparer (0x20) no preparer
is specified. is specified.
See section 8.4.21 See section 8.5.15
of ECMA 119 */ of ECMA 119 */
achar_t application_id[ISO_MAX_APPLICATION_ID]; /**< application achar_t application_id[ISO_MAX_APPLICATION_ID]; /**< application
use to create the use to create the
@@ -443,19 +456,19 @@ struct iso9660_svd_s {
If all bytes are " " If all bytes are " "
(0x20) no application (0x20) no application
is specified. is specified.
See section of 8.4.22 See section of 8.5.16
of ECMA 119 */ of ECMA 119 */
dchar_t copyright_file_id[37]; /**< Name of file for dchar_t copyright_file_id[37]; /**< Name of file for
copyright info. If copyright info. If
all bytes are " " all bytes are " "
(0x20), then no file (0x20), then no file
is identified. See is identified. See
section 8.4.23 of ECMA 119 section 8.5.17 of ECMA 119
9660 spec. */ 9660 spec. */
dchar_t abstract_file_id[37]; /**< See section 8.4.24 of dchar_t abstract_file_id[37]; /**< See section 8.5.18 of
ECMA 119. */
dchar_t bibliographic_file_id[37]; /**< See section 8.5.19 of
ECMA 119. */ ECMA 119. */
dchar_t bibliographic_file_id[37]; /**< See section 7.5 of
ISO 9660 spec. */
iso9660_ltime_t creation_date; /**< date and time of volume iso9660_ltime_t creation_date; /**< date and time of volume
creation. See section 8.4.26.1 creation. See section 8.4.26.1
of the ECMA 119 spec. */ of the ECMA 119 spec. */
@@ -472,7 +485,7 @@ struct iso9660_svd_s {
spec. */ spec. */
iso711_t file_structure_version; /**< value 1 for ECMA 119 */ iso711_t file_structure_version; /**< value 1 for ECMA 119 */
uint8_t unused4[1]; /**< unused - value 0 */ uint8_t unused4[1]; /**< unused - value 0 */
char application_data[512]; /**< Application can put char application_data[512]; /**< 8.5.20 Application can put
whatever it wants here. */ whatever it wants here. */
uint8_t unused5[653]; /**< Unused - value 0 */ uint8_t unused5[653]; /**< Unused - value 0 */
} GNUC_PACKED; } GNUC_PACKED;

View File

@@ -1,8 +1,8 @@
/* /*
$Id: iso9660.c,v 1.25 2006/03/18 02:35:07 rocky Exp $ $Id: iso9660.c,v 1.26 2006/05/06 16:08:06 rocky Exp $
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2003, 2004, 2005, 2006 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004, 2005, 2006 Rocky Bernstein <rocky@gnu.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@@ -54,7 +54,7 @@ const char ISO_STANDARD_ID[] = {'C', 'D', '0', '0', '1'};
#include <errno.h> #include <errno.h>
#endif #endif
static const char _rcsid[] = "$Id: iso9660.c,v 1.25 2006/03/18 02:35:07 rocky Exp $"; static const char _rcsid[] = "$Id: iso9660.c,v 1.26 2006/05/06 16:08:06 rocky Exp $";
/* Variables to hold debugger-helping enumerations */ /* Variables to hold debugger-helping enumerations */
enum iso_enum1_s iso_enums1; enum iso_enum1_s iso_enums1;
@@ -541,12 +541,16 @@ iso9660_set_pvd(void *pd,
memcpy(&(ipd.root_directory_record), root_dir, memcpy(&(ipd.root_directory_record), root_dir,
sizeof(ipd.root_directory_record)); sizeof(ipd.root_directory_record));
ipd.root_directory_filename='\0'; ipd.root_directory_filename='\0';
ipd.root_directory_record.length = 33+1; ipd.root_directory_record.length = sizeof(ipd.root_directory_record)+1;
iso9660_strncpy_pad (ipd.volume_set_id, VOLUME_SET_ID, 128, ISO9660_DCHARS); iso9660_strncpy_pad (ipd.volume_set_id, VOLUME_SET_ID,
ISO_MAX_VOLUMESET_ID, ISO9660_DCHARS);
iso9660_strncpy_pad (ipd.publisher_id, publisher_id, 128, ISO9660_ACHARS); iso9660_strncpy_pad (ipd.publisher_id, publisher_id, ISO_MAX_PUBLISHER_ID,
iso9660_strncpy_pad (ipd.preparer_id, preparer_id, 128, ISO9660_ACHARS); ISO9660_ACHARS);
iso9660_strncpy_pad (ipd.application_id, application_id, 128, ISO9660_ACHARS); iso9660_strncpy_pad (ipd.preparer_id, preparer_id, ISO_MAX_PREPARER_ID,
ISO9660_ACHARS);
iso9660_strncpy_pad (ipd.application_id, application_id,
ISO_MAX_APPLICATION_ID, ISO9660_ACHARS);
iso9660_strncpy_pad (ipd.copyright_file_id , "", 37, ISO9660_DCHARS); iso9660_strncpy_pad (ipd.copyright_file_id , "", 37, ISO9660_DCHARS);
iso9660_strncpy_pad (ipd.abstract_file_id , "", 37, ISO9660_DCHARS); iso9660_strncpy_pad (ipd.abstract_file_id , "", 37, ISO9660_DCHARS);