home *** CD-ROM | disk | FTP | other *** search
/ Dream 49 / Amiga_Dream_49.iso / beos / utils / mkisofs-1.000 / mkisofs-1.11-beos / iso9660.h < prev    next >
C/C++ Source or Header  |  1997-04-09  |  6KB  |  158 lines

  1. /*
  2.  * Header file iso9660.h - assorted structure definitions and typecasts.
  3.  * specific to iso9660 filesystem.
  4.  
  5.    Written by Eric Youngdale (1993).
  6.  
  7.    Copyright 1993 Yggdrasil Computing, Incorporated
  8.  
  9.    This program is free software; you can redistribute it and/or modify
  10.    it under the terms of the GNU General Public License as published by
  11.    the Free Software Foundation; either version 2, or (at your option)
  12.    any later version.
  13.  
  14.    This program is distributed in the hope that it will be useful,
  15.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.    GNU General Public License for more details.
  18.  
  19.    You should have received a copy of the GNU General Public License
  20.    along with this program; if not, write to the Free Software
  21.    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  22.  
  23. /*
  24.  *     $Id: iso9660.h,v 1.1 1997/02/23 15:55:25 eric Rel $
  25.  */
  26.  
  27. #ifndef _ISOFS_FS_H
  28. #define _ISOFS_FS_H
  29.  
  30. /*
  31.  * The isofs filesystem constants/structures
  32.  */
  33.  
  34. /* This part borrowed from the bsd386 isofs */
  35. #define ISODCL(from, to) (to - from + 1)
  36.  
  37. struct iso_volume_descriptor {
  38.     char type[ISODCL(1,1)]; /* 711 */
  39.     char id[ISODCL(2,6)];
  40.     char version[ISODCL(7,7)];
  41.     char data[ISODCL(8,2048)];
  42. };
  43.  
  44. /* volume descriptor types */
  45. #define ISO_VD_PRIMARY 1
  46. #define ISO_VD_END 255
  47.  
  48. #define ISO_STANDARD_ID "CD001"
  49.  
  50. #define EL_TORITO_ID "EL TORITO SPECIFICATION"
  51. #define EL_TORITO_ARCH_x86 0
  52. #define EL_TORITO_ARCH_PPC 1
  53. #define EL_TORITO_ARCH_MAC 2
  54. #define EL_TORITO_BOOTABLE 0x88
  55. #define EL_TORITO_MEDIA_NOEMUL 0
  56. #define EL_TORITO_MEDIA_12FLOP  1
  57. #define EL_TORITO_MEDIA_144FLOP 2
  58. #define EL_TORITO_MEDIA_288FLOP 3
  59. #define EL_TORITO_MEDIA_HD      4
  60.  
  61. struct iso_primary_descriptor {
  62.     char type            [ISODCL (  1,   1)]; /* 711 */
  63.     char id                [ISODCL (  2,   6)];
  64.     char version            [ISODCL (  7,   7)]; /* 711 */
  65.     char unused1            [ISODCL (  8,   8)];
  66.     char system_id            [ISODCL (  9,  40)]; /* achars */
  67.     char volume_id            [ISODCL ( 41,  72)]; /* dchars */
  68.     char unused2            [ISODCL ( 73,  80)];
  69.     char volume_space_size        [ISODCL ( 81,  88)]; /* 733 */
  70.     char unused3            [ISODCL ( 89, 120)];
  71.     char volume_set_size        [ISODCL (121, 124)]; /* 723 */
  72.     char volume_sequence_number    [ISODCL (125, 128)]; /* 723 */
  73.     char logical_block_size        [ISODCL (129, 132)]; /* 723 */
  74.     char path_table_size        [ISODCL (133, 140)]; /* 733 */
  75.     char type_l_path_table        [ISODCL (141, 144)]; /* 731 */
  76.     char opt_type_l_path_table    [ISODCL (145, 148)]; /* 731 */
  77.     char type_m_path_table        [ISODCL (149, 152)]; /* 732 */
  78.     char opt_type_m_path_table    [ISODCL (153, 156)]; /* 732 */
  79.     char root_directory_record    [ISODCL (157, 190)]; /* 9.1 */
  80.     char volume_set_id        [ISODCL (191, 318)]; /* dchars */
  81.     char publisher_id        [ISODCL (319, 446)]; /* achars */
  82.     char preparer_id        [ISODCL (447, 574)]; /* achars */
  83.     char application_id        [ISODCL (575, 702)]; /* achars */
  84.     char copyright_file_id        [ISODCL (703, 739)]; /* 7.5 dchars */
  85.     char abstract_file_id        [ISODCL (740, 776)]; /* 7.5 dchars */
  86.     char bibliographic_file_id    [ISODCL (777, 813)]; /* 7.5 dchars */
  87.     char creation_date        [ISODCL (814, 830)]; /* 8.4.26.1 */
  88.     char modification_date        [ISODCL (831, 847)]; /* 8.4.26.1 */
  89.     char expiration_date        [ISODCL (848, 864)]; /* 8.4.26.1 */
  90.     char effective_date        [ISODCL (865, 881)]; /* 8.4.26.1 */
  91.     char file_structure_version    [ISODCL (882, 882)]; /* 711 */
  92.     char unused4            [ISODCL (883, 883)];
  93.     char application_data        [ISODCL (884, 1395)];
  94.     char unused5            [ISODCL (1396, 2048)];
  95. };
  96.  
  97. /* El Torito Boot Record Volume Descriptor */
  98. struct eltorito_boot_descriptor {
  99.         char id                       [ISODCL (  1,    1)]; /* 711 */
  100.     char id2            [ISODCL (  2,    6)];
  101.     char version            [ISODCL (  7,    7)]; /* 711 */
  102.     char system_id            [ISODCL (  8,   39)];
  103.     char unused2            [ISODCL ( 40,   71)];
  104.         char bootcat_ptr                [ISODCL ( 72 ,  75)];
  105.     char unused5            [ISODCL ( 76, 2048)];
  106. };
  107.  
  108. /* Validation entry for El Torito */
  109. struct eltorito_validation_entry {
  110.         char headerid                  [ISODCL (  1,    1)]; /* 711 */
  111.     char arch            [ISODCL (  2,    2)];
  112.     char pad1            [ISODCL (  3,    4)]; /* 711 */
  113.     char id              [ISODCL (  5,   28)];
  114.     char cksum            [ISODCL ( 29,   30)];
  115.         char key1                       [ISODCL ( 31,   31)];
  116.     char key2            [ISODCL ( 32,   32)];
  117. };
  118.  
  119. /* El Torito initial/default entry in boot catalog */
  120. struct eltorito_defaultboot_entry {
  121.         char boot_id                   [ISODCL (  1,    1)]; /* 711 */
  122.     char boot_media            [ISODCL (  2,    2)];
  123.     char loadseg            [ISODCL (  3,    4)]; /* 711 */
  124.     char arch              [ISODCL (  5,    5)];
  125.     char pad1            [ISODCL (  6,    6)];
  126.         char nsect                      [ISODCL (  7,    8)];
  127.     char bootoff            [ISODCL (  9,   12)];
  128.         char pad2                       [ISODCL ( 13,   32)];
  129. };
  130.  
  131.  
  132. /* We use this to help us look up the parent inode numbers. */
  133.  
  134. struct iso_path_table{
  135.     unsigned char  name_len[2];    /* 721 */
  136.     char extent[4];        /* 731 */
  137.     char  parent[2];    /* 721 */
  138.     char name[1];
  139. };
  140.  
  141. struct iso_directory_record {
  142.     unsigned char length            [ISODCL (1, 1)]; /* 711 */
  143.     char ext_attr_length        [ISODCL (2, 2)]; /* 711 */
  144.     char extent            [ISODCL (3, 10)]; /* 733 */
  145.     char size            [ISODCL (11, 18)]; /* 733 */
  146.     char date            [ISODCL (19, 25)]; /* 7 by 711 */
  147.     char flags            [ISODCL (26, 26)];
  148.     char file_unit_size        [ISODCL (27, 27)]; /* 711 */
  149.     char interleave            [ISODCL (28, 28)]; /* 711 */
  150.     char volume_sequence_number    [ISODCL (29, 32)]; /* 723 */
  151.     unsigned char name_len        [ISODCL (33, 33)]; /* 711 */
  152.     char name            [34]; /* Not really, but we need something here */
  153. };
  154. #endif
  155.  
  156.  
  157.  
  158.