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