1/* GNU Emacs VMS directory definition file.
2   Copyright (C) 1986 Free Software Foundation, Inc.
3
4This file is part of GNU Emacs.
5
6GNU Emacs is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 1, or (at your option)
9any later version.
10
11GNU Emacs is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14GNU 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
52typedef 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
72typedef 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
88typedef
89struct dir$_linkname {
90  char    dir$t_linkname[];
91} dir$_dirdef2;
92
93#endif
94