usr/src/grub/grub-0.97/stage2/iso9660.h
author William Kucharski <William.Kucharski@Sun.COM>
Fri, 07 Nov 2008 21:36:41 -0700
changeset 8044 b3af80bbf173
parent 0 usr/src/grub/grub-0.95/stage2/iso9660.h@68f95e015346
permissions -rw-r--r--
6731552 GRUB should have the ability to overlay a logo on the graphical splash screen 6762035 GRUB needs to understand new ext3 256 Byte inodes 6762243 GRUB should be updated to version 0.97
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
 *  ISO 9660 filesystem backend for GRUB (GRand Unified Bootloader)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *  including Rock Ridge Extensions support
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     5
 *  Copyright (C) 1998, 1999  Kousuke Takai  <[email protected]>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     6
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 *  This program is free software; you can redistribute it and/or modify
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 *  it under the terms of the GNU General Public License as published by
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 *  the Free Software Foundation; either version 2 of the License, or
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 *  (at your option) any later version.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 *  This program is distributed in the hope that it will be useful,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 *  GNU General Public License for more details.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 *  You should have received a copy of the GNU General Public License
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 *  along with this program; if not, write to the Free Software
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
 *  References:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
 *	linux/fs/isofs/rock.[ch]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
 *	mkisofs-1.11.1/diag/isoinfo.c
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
 *	mkisofs-1.11.1/iso9660.h
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
 *		(all are written by Eric Youngdale)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
#ifndef _ISO9660_H_
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
#define _ISO9660_H_
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
#define ISO_SECTOR_BITS              (11)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
#define ISO_SECTOR_SIZE              (1<<ISO_SECTOR_BITS)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
#define	ISO_REGULAR	1	/* regular file	*/
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
#define	ISO_DIRECTORY	2	/* directory	*/
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
#define	ISO_OTHER	0	/* other file (with Rock Ridge) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
#define	RR_FLAG_PX	0x01	/* have POSIX file attributes */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
#define RR_FLAG_PN	0x02	/* POSIX devices */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
#define RR_FLAG_SL	0x04	/* Symbolic link */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
#define	RR_FLAG_NM	0x08	/* have alternate file name   */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
#define RR_FLAG_CL	0x10	/* Child link */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
#define RR_FLAG_PL	0x20	/* Parent link */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
#define RR_FLAG_RE	0x40	/* Relocation directory */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
#define RR_FLAG_TF	0x80	/* Timestamps */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
/* POSIX file attributes for Rock Ridge extensions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
#define	POSIX_S_IFMT	0xF000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
#define	POSIX_S_IFREG	0x8000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
#define	POSIX_S_IFDIR	0x4000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
/* volume descriptor types */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
#define ISO_VD_PRIMARY 1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
#define ISO_VD_END 255
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
#define ISO_STANDARD_ID "CD001"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
#ifndef ASM_FILE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
#ifndef __sun
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
#ifndef	__BIT_TYPES_DEFINED__
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
typedef		 int	 int8_t	__attribute__((mode(QI)));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
typedef unsigned int   u_int8_t	__attribute__((mode(QI)));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
typedef		 int	int16_t	__attribute__((mode(HI)));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
typedef unsigned int  u_int16_t	__attribute__((mode(HI)));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
typedef		 int	int32_t	__attribute__((mode(SI)));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
typedef unsigned int  u_int32_t	__attribute__((mode(SI)));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
#else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
#ifndef GRUB_UTIL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
typedef		 char  int8_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
typedef		 short int16_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
typedef		 int   int32_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
#endif /* ! GRUB_UTIL */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
typedef unsigned char  u_int8_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
typedef unsigned short u_int16_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
typedef unsigned int   u_int32_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
#endif /* __sun */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
typedef	union {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
  u_int8_t l,b;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
}	iso_8bit_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
struct __iso_16bit {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
  u_int16_t l, b;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
} __attribute__ ((packed));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
typedef	struct __iso_16bit iso_16bit_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
struct __iso_32bit {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
  u_int32_t l, b;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
} __attribute__ ((packed));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
typedef	struct __iso_32bit iso_32bit_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
typedef u_int8_t		iso_date_t[7];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
struct iso_directory_record {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
  iso_8bit_t	length;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
  iso_8bit_t	ext_attr_length;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
  iso_32bit_t	extent;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
  iso_32bit_t	size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
  iso_date_t	date;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
  iso_8bit_t	flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
  iso_8bit_t	file_unit_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
  iso_8bit_t	interleave;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
  iso_16bit_t	volume_seq_number;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
  iso_8bit_t	name_len;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
  u_int8_t	name[1];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
} __attribute__ ((packed));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
struct iso_primary_descriptor {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
  iso_8bit_t	type;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
  u_int8_t	id[5];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
  iso_8bit_t	version;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
  u_int8_t	_unused1[1];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
  u_int8_t	system_id[32];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
  u_int8_t	volume_id[32];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
  u_int8_t	_unused2[8];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
  iso_32bit_t	volume_space_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
  u_int8_t	_unused3[32];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
  iso_16bit_t	volume_set_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
  iso_16bit_t	volume_seq_number;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
  iso_16bit_t	logical_block_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
  iso_32bit_t	path_table_size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
  u_int8_t	type_l_path_table[4];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
  u_int8_t	opt_type_l_path_table[4];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
  u_int8_t	type_m_path_table[4];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
  u_int8_t	opt_type_m_path_table[4];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
  struct iso_directory_record root_directory_record;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
  u_int8_t	volume_set_id[128];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
  u_int8_t	publisher_id[128];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
  u_int8_t	preparer_id[128];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
  u_int8_t	application_id[128];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
  u_int8_t	copyright_file_id[37];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
  u_int8_t	abstract_file_id[37];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
  u_int8_t	bibliographic_file_id[37];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
  u_int8_t	creation_date[17];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
  u_int8_t	modification_date[17];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
  u_int8_t	expiration_date[17];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
  u_int8_t	effective_date[17];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
  iso_8bit_t	file_structure_version;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
  u_int8_t	_unused4[1];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
  u_int8_t	application_data[512];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
  u_int8_t	_unused5[653];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
} __attribute__ ((packed));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
struct rock_ridge {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
  u_int16_t	signature;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
  u_int8_t	len;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
  u_int8_t	version;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
  union {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
    struct SP {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
      u_int16_t	magic;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
      u_int8_t	skip;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
    } sp;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
    struct CE {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
      iso_32bit_t	extent;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
      iso_32bit_t	offset;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
      iso_32bit_t	size;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
    } ce;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
    struct ER {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
      u_int8_t	len_id;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
      u_int8_t	len_des;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
      u_int8_t	len_src;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
      u_int8_t	ext_ver;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
      u_int8_t	data[0];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
    } er;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
    struct RR {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
      iso_8bit_t	flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
    } rr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
    struct PX {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
      iso_32bit_t	mode;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
      iso_32bit_t	nlink;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
      iso_32bit_t	uid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
      iso_32bit_t	gid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
    } px;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
    struct PN {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
      iso_32bit_t	dev_high;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
      iso_32bit_t	dev_low;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
    } pn;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
    struct SL {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
      iso_8bit_t flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
      struct SL_component {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
	iso_8bit_t	flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
	u_int8_t		len;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
	u_int8_t		text[0];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
      } link;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
    } sl;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
    struct NM {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
      iso_8bit_t	flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
      u_int8_t	name[0];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
    } nm;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
    struct CL {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
      iso_32bit_t	location;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
    } cl;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
    struct PL {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
      iso_32bit_t	location;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
    } pl;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
    struct TF {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
      iso_8bit_t	flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   201
      iso_date_t	times[0];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   202
    } tf;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   203
  } u;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   204
} __attribute__ ((packed));
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   205
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   206
typedef	union RR_ptr {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   207
  struct rock_ridge *rr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
  char		  *ptr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
  int		   i;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
} RR_ptr_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
#define	RRMAGIC(c1, c2)	((c1)|(c2) << 8)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
#define	CHECK2(ptr, c1, c2) \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
	(*(unsigned short *)(ptr) == (((c1) | (c2) << 8) & 0xFFFF))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
#endif /* !ASM_FILE */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
#endif /* _ISO9660_H_ */