1/*
2  Copyright (c) 1990-2000 Info-ZIP.  All rights reserved.
3
4  See the accompanying file LICENSE, version 2000-Apr-09 or later
5  (the contents of which are also included in zip.h) for terms of use.
6  If, for some reason, all these files are missing, the Info-ZIP license
7  also may be found at:  ftp://ftp.info-zip.org/pub/infozip/license.html
8*/
9/*---------------------------------------------------------------------------
10
11  vmsdefs.h
12
13  Contents of three header files from Joe
14  Meadows' FILE program.  Used by vmsmunch
15
16        06-Apr-1994     Jamie Hanrahan  jeh@cmkrnl.com
17                        Moved "contents of three header files" from
18                        VMSmunch.h to VMSdefs.h .
19
20        16-Sep-1995     Christian Spieler
21                        Added #pragma (no)member_alignment directives
22                        to achieve compatibility with DEC C and Alpha AXP
23
24        05-Oct-1995     Christian Spieler
25                        Revised fatdef, fchdef, fjndef to achieve closer
26                        compatibility with DEC's system include header files
27                        supplied with C version 4.0 and newer.
28
29        10-Oct-1995     Christian Spieler
30                        Use lowercase filenames for vms specific sources
31                        (VMSmunch.? -> vmsmunch.?, VMSdefs.h -> vmsdefs.h)
32
33        15-Dec-1995     Christian Spieler
34                        Removed the last "tabs" from the source.
35
36        24-Jun-1997     Onno van der Linden / Chr. Spieler
37                        Modifications to support the VMS port of GNU C 2.x.
38
39        27-Jul-1999     Chr. Spieler
40                        Added Info-ZIP copyright note for identification.
41
42  ---------------------------------------------------------------------------*/
43
44#ifndef __vmsdefs_h
45#define __vmsdefs_h 1
46
47#if defined(__DECC) || defined(__DECCXX)
48#pragma __nostandard
49#endif /* __DECC || __DECCXX */
50
51#if defined(__DECC) || defined(__DECCXX)
52#pragma __member_alignment __save
53#pragma __nomember_alignment
54#endif /* __DECC || __DECCXX */
55
56#if !(defined(__VAXC) || defined(VAXC)) || defined(__GNUC__)
57#define __struct struct
58#define __union union
59#else
60#define __struct variant_struct
61#define __union variant_union
62#endif /* !(__VAXC || VAXC) || __GNUC__ */
63
64#ifdef __cplusplus
65    extern "C" {
66#endif
67
68/*---------------------------------------------------------------------------
69    fatdef.h
70  ---------------------------------------------------------------------------*/
71
72/* This header file was created by Joe Meadows, and is not copyrighted
73   in any way. No guarantee is made as to the accuracy of the contents
74   of this header file. This header file was last modified on Sep. 22th,
75   1987. (Modified to include this statement) */
76
77#define FAT$K_LENGTH 32
78#define FAT$C_LENGTH 32
79#define FAT$S_FATDEF 32
80
81struct fatdef {
82  __union  {
83    unsigned char fat$b_rtype;          /* record type                      */
84    __struct  {
85      unsigned fat$v_rtype : 4;         /* record type subfield             */
86      unsigned fat$v_fileorg : 4;       /* file organization                */
87    } fat$r_rtype_bits;
88  } fat$r_rtype_overlay;
89# define FAT$S_RTYPE 4
90# define FAT$V_RTYPE 0
91#   define FAT$C_UNDEFINED 0
92#   define FAT$C_FIXED 1
93#   define FAT$C_VARIABLE 2
94#   define FAT$C_VFC 3
95#   define FAT$C_STREAM 4
96#   define FAT$C_STREAMLF 5
97#   define FAT$C_STREAMCR 6
98# define FAT$S_FILEORG 4
99# define FAT$V_FILEORG 4
100#   define FAT$C_SEQUENTIAL 0
101#   define FAT$C_RELATIVE 1
102#   define FAT$C_INDEXED 2
103#   define FAT$C_DIRECT 3
104  __union  {
105    unsigned char fat$b_rattrib;        /* record attributes                */
106    __struct  {
107      unsigned fat$v_fortrancc : 1;
108      unsigned fat$v_impliedcc : 1;
109      unsigned fat$v_printcc : 1;
110      unsigned fat$v_nospan : 1;
111      unsigned fat$v_msbrcw : 1;
112    } fat$r_rattrib_bits;
113  } fat$r_rattrib_overlay;
114#   define FAT$V_FORTRANCC 0
115#   define FAT$M_FORTRANCC 1
116#   define FAT$V_IMPLIEDCC 1
117#   define FAT$M_IMPLIEDCC 2
118#   define FAT$V_PRINTCC 2
119#   define FAT$M_PRINTCC 4
120#   define FAT$V_NOSPAN 3
121#   define FAT$M_NOSPAN 8
122#   define FAT$V_MSBRCW 4
123#   define FAT$M_MSBRCW 16
124  unsigned short int fat$w_rsize;       /* record size in bytes             */
125  __union
126  {
127    unsigned long int fat$l_hiblk;      /* highest allocated VBN            */
128    __struct
129    {
130      unsigned short int fat$w_hiblkh;  /* high order word                  */
131      unsigned short int fat$w_hiblkl;  /* low order word                   */
132    } fat$r_hiblk_fields;
133  } fat$r_hiblk_overlay;
134  __union
135  {
136    unsigned long int fat$l_efblk;      /* end of file VBN                  */
137    __struct
138    {
139      unsigned short int fat$w_efblkh;  /* high order word                  */
140      unsigned short int fat$w_efblkl;  /* low order word                   */
141    } fat$r_efblk_fields;
142  } fat$r_efblk_overlay;
143  unsigned short int fat$w_ffbyte;      /* first free byte in EFBLK         */
144  unsigned char fat$b_bktsize;          /* bucket size in blocks            */
145  unsigned char fat$b_vfcsize;          /* # of control bytes in VFC record */
146  unsigned short int fat$w_maxrec;      /* maximum record size in bytes     */
147  unsigned short int fat$w_defext;      /* default extend quantity          */
148  unsigned short int fat$w_gbc;         /* global buffer count              */
149  char fat$fill[8];
150  unsigned short int fat$w_versions;
151};
152
153#if !(defined(__VAXC) || defined(VAXC)) || defined(__GNUC__)
154#define fat$b_rtype fat$r_rtype_overlay.fat$b_rtype
155#define fat$v_rtype fat$r_rtype_overlay.fat$r_rtype_bits.fat$v_rtype
156#define fat$v_fileorg fat$r_rtype_overlay.fat$r_rtype_bits.fat$v_fileorg
157#define fat$b_rattrib fat$r_rattrib_overlay.fat$b_rattrib
158#define fat$v_fortrancc fat$r_rattrib_overlay.fat$r_rattrib_bits.fat$v_fortrancc
159#define fat$v_impliedcc fat$r_rattrib_overlay.fat$r_rattrib_bits.fat$v_impliedcc
160#define fat$v_printcc fat$r_rattrib_overlay.fat$r_rattrib_bits.fat$v_printcc
161#define fat$v_nospan fat$r_rattrib_overlay.fat$r_rattrib_bits.fat$v_nospan
162#define fat$v_msbrcw fat$r_rattrib_overlay.fat$r_rattrib_bits.fat$v_msbrcw
163#define fat$l_hiblk fat$r_hiblk_overlay.fat$l_hiblk
164#define fat$w_hiblkh fat$r_hiblk_overlay.fat$r_hiblk_fields.fat$w_hiblkh
165#define fat$w_hiblkl fat$r_hiblk_overlay.fat$r_hiblk_fields.fat$w_hiblkl
166#define fat$l_efblk fat$r_efblk_overlay.fat$l_efblk
167#define fat$w_efblkh fat$r_efblk_overlay.fat$r_efblk_fields.fat$w_efblkh
168#define fat$w_efblkl fat$r_efblk_overlay.fat$r_efblk_fields.fat$w_efblkl
169#endif /* !(__VAXC || VAXC) || __GNUC__ */
170
171#define __FATDEF_LOADED 1       /* prevent inclusion of DECC's fatdef.h */
172
173/*---------------------------------------------------------------------------
174    fchdef.h
175  ---------------------------------------------------------------------------*/
176
177/* This header file was created by Joe Meadows, and is not copyrighted
178   in any way. No guarantee is made as to the accuracy of the contents
179   of this header file. This header file was last modified on Sep. 22th,
180   1987. (Modified to include this statement) */
181
182#define FCH$V_BADACL 0x00B
183#define FCH$M_BADACL (1 << FCH$V_BADACL)
184#define FCH$V_BADBLOCK 0x00E
185#define FCH$M_BADBLOCK (1 << FCH$V_BADBLOCK)
186#define FCH$V_CONTIG 0x007
187#define FCH$M_CONTIG (1 << FCH$V_CONTIG)
188#define FCH$V_CONTIGB 0x005
189#define FCH$M_CONTIGB (1 << FCH$V_CONTIGB)
190#define FCH$V_DIRECTORY 0x00D
191#define FCH$M_DIRECTORY (1 << FCH$V_DIRECTORY)
192#define FCH$V_ERASE 0x011
193#define FCH$M_ERASE (1 << FCH$V_ERASE)
194#define FCH$V_LOCKED 0x006
195#define FCH$M_LOCKED (1 << FCH$V_LOCKED)
196#define FCH$V_MARKDEL 0x00F
197#define FCH$M_MARKDEL (1 << FCH$V_MARKDEL)
198#define FCH$V_NOBACKUP 0x001
199#define FCH$M_NOBACKUP (1 << FCH$V_NOBACKUP)
200#define FCH$V_NOCHARGE 0x010
201#define FCH$M_NOCHARGE (1 << FCH$V_NOCHARGE)
202#define FCH$V_READCHECK 0x003
203#define FCH$M_READCHECK (1 << FCH$V_READCHECK)
204#define FCH$V_SPOOL 0x00C
205#define FCH$M_SPOOL (1 << FCH$V_SPOOL)
206#define FCH$V_WRITCHECK 0x004
207#define FCH$M_WRITCHECK (1 << FCH$V_WRITCHECK)
208#define FCH$V_WRITEBACK 0x002
209#define FCH$M_WRITEBACK (1 << FCH$V_WRITEBACK)
210
211struct fchdef  {
212  __union  {
213    int fch$$_fill_1;
214    __struct  {
215      unsigned fch$$_fill_31 : 8;
216      unsigned fch$v_vcc_state : 3;    /* VCC state bits              */
217      unsigned fch$$_fill_32 : 7;
218      unsigned fch$$_alm_state : 2;
219      unsigned fch$v_associated : 1;   /* ISO 9660 Associated file    */
220      unsigned fch$v_existence : 1;    /* ISO 9660 Existence file     */
221      unsigned fch$v_fill_6 : 2;
222    } fch$r_fill_1_chunks;
223    __struct  {
224      unsigned fch$v_wascontig : 1;
225      unsigned fch$v_nobackup : 1 ;
226      unsigned fch$v_writeback : 1;
227      unsigned fch$v_readcheck : 1;
228      unsigned fch$v_writcheck : 1;
229      unsigned fch$v_contigb : 1;
230      unsigned fch$v_locked : 1;
231      unsigned fch$v_contig : 1;
232      unsigned fch$$_fill_3 : 3;
233      unsigned fch$v_badacl : 1;
234      unsigned fch$v_spool : 1;
235      unsigned fch$v_directory : 1;
236      unsigned fch$v_badblock : 1;
237      unsigned fch$v_markdel : 1;
238      unsigned fch$v_nocharge : 1;
239      unsigned fch$v_erase : 1;
240      unsigned fch$$_fill_4 : 1;
241      unsigned fch$v_shelved : 1;
242      unsigned fch$v_scratch : 1;
243      unsigned fch$v_nomove : 1;
244      unsigned fch$v_noshelvable : 1;
245    } fch$r_fill_1_bits;
246  } fch$r_fch_union;
247};
248
249#if !(defined(__VAXC) || defined(VAXC)) || defined(__GNUC__)
250#define fch$v_vcc_state fch$r_fch_union.fch$r_fill_1_chunks.fch$v_vcc_state
251#define fch$v_associated fch$r_fch_union.fch$r_fill_1_chunks.fch$v_associated
252#define fch$v_existence fch$r_fch_union.fch$r_fill_1_chunks.fch$v_existence
253#define fch$v_wascontig fch$r_fch_union.fch$r_fill_1_bits.fch$v_wascontig
254#define fch$v_nobackup fch$r_fch_union.fch$r_fill_1_bits.fch$v_nobackup
255#define fch$v_writeback fch$r_fch_union.fch$r_fill_1_bits.fch$v_writeback
256#define fch$v_readcheck fch$r_fch_union.fch$r_fill_1_bits.fch$v_readcheck
257#define fch$v_writcheck fch$r_fch_union.fch$r_fill_1_bits.fch$v_writcheck
258#define fch$v_contigb fch$r_fch_union.fch$r_fill_1_bits.fch$v_contigb
259#define fch$v_locked fch$r_fch_union.fch$r_fill_1_bits.fch$v_locked
260#define fch$v_contig fch$r_fch_union.fch$r_fill_1_bits.fch$v_contig
261#define fch$v_badacl fch$r_fch_union.fch$r_fill_1_bits.fch$v_badacl
262#define fch$v_spool fch$r_fch_union.fch$r_fill_1_bits.fch$v_spool
263#define fch$v_directory fch$r_fch_union.fch$r_fill_1_bits.fch$v_directory
264#define fch$v_badblock fch$r_fch_union.fch$r_fill_1_bits.fch$v_badblock
265#define fch$v_markdel fch$r_fch_union.fch$r_fill_1_bits.fch$v_markdel
266#define fch$v_nocharge fch$r_fch_union.fch$r_fill_1_bits.fch$v_nocharge
267#define fch$v_erase fch$r_fch_union.fch$r_fill_1_bits.fch$v_erase
268#define fch$v_shelved fch$r_fch_union.fch$r_fill_1_bits.fch$v_shelved
269#define fch$v_scratch fch$r_fch_union.fch$r_fill_1_bits.fch$v_scratch
270#define fch$v_nomove fch$r_fch_union.fch$r_fill_1_bits.fch$v_nomove
271#define fch$v_noshelvable fch$r_fch_union.fch$r_fill_1_bits.fch$v_noshelvable
272#endif /* !(__VAXC || VAXC) || __GNUC__ */
273
274#define __FCHDEF_LOADED 1       /* prevent inclusion of DECC's fchdef.h */
275
276/*---------------------------------------------------------------------------
277    fjndef.h
278  ---------------------------------------------------------------------------*/
279
280/* This header file was created by Joe Meadows, and is not copyrighted
281   in any way. No guarantee is made as to the accuracy of the contents
282   of this header file. This header file was last modified on Sep. 22th,
283   1987. (Modified to include this statement) */
284
285#define FJN$M_ONLY_RU 1
286#define FJN$M_RUJNL 2
287#define FJN$M_BIJNL 4
288#define FJN$M_AIJNL 8
289#define FJN$M_ATJNL 16
290#define FJN$M_NEVER_RU 32
291#define FJN$M_JOURNAL_FILE 64
292#define FJN$S_FJNDEF 1
293struct fjndef  {
294  unsigned fjn$v_only_ru : 1;
295  unsigned fjn$v_rujnl : 1;
296  unsigned fjn$v_bijnl : 1;
297  unsigned fjn$v_aijnl : 1;
298  unsigned fjn$v_atjnl : 1;
299  unsigned fjn$v_never_ru : 1;
300  unsigned fjn$v_journal_file : 1;
301  unsigned fjn$v_fill_7 : 1;
302} ;
303
304#define __FJNDEF_LOADED 1       /* prevent inclusion of DECC's fjndef.h */
305
306/*---------------------------------------------------------------------------*/
307
308#ifdef __cplusplus
309    }
310#endif
311
312#if defined(__DECC) || defined(__DECCXX)
313#pragma __member_alignment __restore
314#endif /* __DECC || __DECCXX */
315
316#if defined(__DECC) || defined(__DECCXX)
317#pragma __standard
318#endif /* __DECC || __DECCXX */
319
320#endif /* !__vmsdefs_h */
321