1 /* GNU Emacs VMS directory definition file.
2    Copyright (C) 1986 Free Software Foundation, Inc.
3 
4 This file is part of GNU Emacs.
5 
6 GNU Emacs is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 1, or (at your option)
9 any later version.
10 
11 GNU Emacs is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.  */
15 
16 /*
17  * Files-11 Ver. 2 directory structure (VMS V4.x - long names)
18  */
19 #ifndef DIR$K_LENGTH
20 
21 #define	DIR$C_FID	0
22 #define	DIR$C_LINKNAME	1
23 #define	DIR$K_LENGTH	6
24 #define	DIR$C_LENGTH	6
25 #define	DIR$S_DIRDEF	6
26 #define	DIR$W_SIZE	0
27 #define	DIR$W_VERLIMIT	2
28 #define	DIR$B_FLAGS	4
29 #define	DIR$S_TYPE	3
30 #define	DIR$V_TYPE	0
31 #define	DIR$V_NEXTREC	6
32 #define	DIR$V_PREVREC	7
33 #define	DIR$B_NAMECOUNT	5
34 #define	DIR$S_NAME	80
35 #define	DIR$T_NAME	6
36 
37 #define	DIR$K_VERSION	8
38 #define	DIR$C_VERSION	8
39 #define	DIR$S_DIRDEF1	8
40 #define	DIR$W_VERSION	0
41 #define	DIR$S_FID	6
42 #define	DIR$W_FID	2
43 #define	DIR$W_FID_NUM	2
44 #define	DIR$W_FID_SEQ	4
45 #define	DIR$W_FID_RVN	6
46 #define	DIR$B_FID_RVN	6
47 #define	DIR$B_FID_NMX	7
48 
49 #define	DIR$S_DIRDEF2	1
50 #define	DIR$T_LINKNAME	0
51 
52 typedef struct dir$_name {
53 /*  short dir$w_size;		/* if you read with RMS, it eats this... */
54   short dir$w_verlimit;			/* maximum number of versions */
55   union {
56     unsigned char dir_b_flags;
57 #define dir$b_flags dir__b_flags.dir_b_flags
58     struct {
59       unsigned char dir_v_type: DIR$S_TYPE;
60 #define dir$v_type dir__b_flags.dir___b_flags.dir_v_type
61       unsigned char: 3;
62       unsigned char dir_v_nextrec: 1;
63 #define dir$v_nextrec dir__b_flags.dir___b_flags.dir_v_nextrec
64       unsigned char dir_v_prevrec: 1;
65 #define dir$v_prevrec dir__b_flags.dir___b_flags.dir_v_prevrec
66     } dir___b_flags;
67   } dir__b_flags;
68   unsigned char dir$b_namecount;
69   char dir$t_name[];
70 } dir$_dirdef;		/* only the fixed first part */
71 
72 typedef struct dir$_version {
73   short dir$w_version;
74   short dir$w_fid_num;
75   short dir$w_fid_seq;
76   union {
77     short dir_w_fid_rvn;
78 #define dir$w_fid_rvn dir__w_fid_rvn.dir_w_fid_rvn
79     struct {
80       char dir_b_fid_rvn;
81 #define dir$b_fid_rvn dir__w_fid_rvn.dir___w_fid_rvn.dir_b_fid_rvn
82       char dir_b_fid_nmx;
83 #define dir$b_fid_nmx dir__w_fid_rvn.dir___w_fid_rvn.dir_b_fid_nmx
84     } dir___w_fid_rvn;
85   } dir__w_fid_rvn;
86 } dir$_dirdef1;		/* one for each version of the file */
87 
88 typedef
89 struct dir$_linkname {
90   char    dir$t_linkname[];
91 } dir$_dirdef2;
92 
93 #endif
94