This file is indexed.

/usr/include/rabdef.h is in libdnet-dev 2.64build2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
/* <rabdef.h>
 *
 *	RMS Record Access Block (rab) definitions
 */
#ifndef _RABDEF_H
#define _RABDEF_H

/*
   There is one rab per connected stream it is used for all communications
   between the user and rms concerning operations on the stream.
 */
#define RAB$C_BID	1	/* code for rab */
/* special ISI fields for process permanent files */
#define RAB$V_PPF_RAT	6
#define RAB$M_PPF_RAT	0x3FC0
#define RAB$S_PPF_RAT	8
#define RAB$V_PPF_IND	14
#define RAB$M_PPF_IND	0x4000
#define RAB$V_PPISI	15
#define RAB$M_PPISI	0x8000
/* record options (ROP) mask bits */
#define RAB$V_ASY	0
#define RAB$V_TPT	1
#define RAB$V_REA	2
#define RAB$V_RRL	3
#define RAB$V_UIF	4
#define RAB$V_MAS	5
#define RAB$V_FDL	6
#ifndef NO_VMS_V6
#define RAB$V_REV	7
#endif
#ifndef ONLY_VMS_V6
#define RAB$V_HSH	7
#endif
#define RAB$V_EOF	8
#define RAB$V_RAH	9
#define RAB$V_WBH	10
#define RAB$V_BIO	11
#define RAB$V_CDK	12
#define RAB$V_LV2	12
#define RAB$V_LOA	13
#define RAB$V_LIM	14
#define RAB$V_SYNCSTS	15
#define RAB$V_LOC	16
#define RAB$V_WAT	17
#define RAB$V_ULK	18
#define RAB$V_RLK	19
#define RAB$V_NLK	20
#define RAB$V_KGE	21
#define RAB$V_EQNXT	RAB$V_KGE	/* 21 */
#define RAB$V_KGT	22
#define RAB$V_NXT	RAB$V_KGT	/* 22 */
#define RAB$V_NXR	23
#define RAB$V_RNE	24
#define RAB$V_TMO	25
#define RAB$V_CVT	26
#define RAB$V_RNF	27
#define RAB$V_ETO	28
#define RAB$V_PTA	29
#define RAB$V_PMT	30
#define RAB$V_CCO	31
#define RAB$M_ASY	(1<<RAB$V_ASY)		/* 0x01 */
#define RAB$M_TPT	(1<<RAB$V_TPT)		/* 0x02 */
#define RAB$M_REA	(1<<RAB$V_REA)		/* 0x04 */
#define RAB$M_RRL	(1<<RAB$V_RRL)		/* 0x08 */
#define RAB$M_UIF	(1<<RAB$V_UIF)		/* 0x10 */
#define RAB$M_MAS	(1<<RAB$V_MAS)		/* 0x20 */
#define RAB$M_FDL	(1<<RAB$V_FDL)		/* 0x40 */
#ifndef NO_VMS_V6
#define RAB$M_REV	(1<<RAB$V_REV)		/* 0x80 */
#endif
#ifndef ONLY_VMS_V6
#define RAB$M_HSH	(1<<RAB$V_HSH)		/* 0x80 */
#endif
#define RAB$M_EOF	(1<<RAB$V_EOF)		/* 0x0100 */
#define RAB$M_RAH	(1<<RAB$V_RAH)		/* 0x0200 */
#define RAB$M_WBH	(1<<RAB$V_WBH)		/* 0x0400 */
#define RAB$M_BIO	(1<<RAB$V_BIO)		/* 0x0800 */
#define RAB$M_CDK	(1<<RAB$V_CDK)		/* 0x1000 */
#define RAB$M_LV2	(1<<RAB$V_LV2)		/* 0x1000 */
#define RAB$M_LOA	(1<<RAB$V_LOA)		/* 0x2000 */
#define RAB$M_LIM	(1<<RAB$V_LIM)		/* 0x4000 */
#define RAB$M_SYNCSTS	(1<<RAB$V_SYNCSTS)	/* 0x8000 */
#define RAB$M_LOC	(1<<RAB$V_LOC)		/* 0x010000 */
#define RAB$M_WAT	(1<<RAB$V_WAT)		/* 0x020000 */
#define RAB$M_ULK	(1<<RAB$V_ULK)		/* 0x040000 */
#define RAB$M_RLK	(1<<RAB$V_RLK)		/* 0x080000 */
#define RAB$M_NLK	(1<<RAB$V_NLK)		/* 0x100000 */
#define RAB$M_KGE	(1<<RAB$V_KGE)		/* 0x200000 */
#define RAB$M_EQNXT	(1<<RAB$V_EQNXT)	/* 0x00200000 */
#define RAB$M_KGT	(1<<RAB$V_KGT)		/* 0x400000 */
#define RAB$M_NXT	(1<<RAB$V_NXT)		/* 0x00400000 */
#define RAB$M_NXR	(1<<RAB$V_NXR)		/* 0x800000 */
#define RAB$M_RNE	(1<<RAB$V_RNE)		/* 0x01000000 */
#define RAB$M_TMO	(1<<RAB$V_TMO)		/* 0x02000000 */
#define RAB$M_CVT	(1<<RAB$V_CVT)		/* 0x04000000 */
#define RAB$M_RNF	(1<<RAB$V_RNF)		/* 0x08000000 */
#define RAB$M_ETO	(1<<RAB$V_ETO)		/* 0x10000000 */
#define RAB$M_PTA	(1<<RAB$V_PTA)		/* 0x20000000 */
#define RAB$M_PMT	(1<<RAB$V_PMT)		/* 0x40000000 */
#define RAB$M_CCO	(1<<RAB$V_CCO)		/* 0x80000000 */
/* record access (RAC) codes */
#define RAB$C_SEQ	0	/* sequential access */
#define RAB$C_KEY	1	/* keyed access */
#define RAB$C_RFA	2	/* rfa access */
#define RAB$C_STM	3	/* stream access (valid only for sequential org) */
#define RAB$C_MAXRAC	2	/* maximum RAC value currently supported by RMS [sic] */

#define RAB$K_BLN	68	/* length of rab */
#define RAB$C_BLN	68

struct RAB {
    unsigned char  rab$b_bid;		/* block id */
    unsigned char  rab$b_bln;		/* block length */
    unsigned short rab$w_isi;		/* internal stream index */
    unsigned long  rab$l_rop;		/* record options */
    unsigned long  rab$l_sts;		/* status */
    unsigned long  rab$l_stv;		/* status value */
    unsigned short rab$w_rfa[3];	/* record's file address */
    unsigned		: 16;		/* (reserved - used for optimized MOVQ) */
    unsigned long  rab$l_ctx;		/* user context */
    unsigned		: 16;		/* (spare) */
    unsigned char  rab$b_rac;		/* record access */
    unsigned char  rab$b_tmo;		/* time-out period */
    unsigned short rab$w_usz;		/* user buffer size */
    unsigned short rab$w_rsz;		/* record buffer size */
    void	  *rab$l_ubf;		/* user buffer address */
    void	  *rab$l_rbf;		/* record buffer address */
    void	  *rab$l_rhb;		/* record header buffer addr */
    void	  *rab$l_kbf;		/* key buffer address */
    unsigned char  rab$b_ksz;		/* key buffer size */
    unsigned char  rab$b_krf;		/* key of reference */
    char	   rab$b_mbf;		/* multi-buffer count */
    unsigned char  rab$b_mbc;		/* multi-block count */
    unsigned long  rab$l_bkt;		/* bucket hash code, vbn, or rrn */
    void	  *rab$l_fab;		/* related fab for connect */
    void	  *rab$l_xab;		/* XAB address */
};

struct rabdef {
    unsigned char rab$b_bid;		/* block id */
    unsigned char rab$b_bln;		/* block length */
    union {
	unsigned short rab$w_isi;	/* internal stream index */
	struct {
	    unsigned		    : 6; /* move to bit 6 */
	    unsigned rab$v_ppf_rat  : 8; /* rat value for process-permanent files */
	    unsigned rab$v_ppf_ind  : 1; /* indirect access to process-permanent file */
	    unsigned rab$v_ppisi    : 1; /* indicates that this is process-permanent stream */
	} rab$r_isi_bits;
    } rab$r_isi_overlay;
    union {
	unsigned long rab$l_rop;	/* record options */
	struct {
	    unsigned rab$v_asy : 1;	/* asynchronous operations */
	    unsigned rab$v_tpt : 1;	/* truncate put - allow sequential put not at */
					/* eof, thus truncating file (seq. org only) */
/*
   These next two should be in the byte for bits
   input to $find or $get, but there is no room there.
 */
	    unsigned rab$v_rea : 1;	/* lock record for read only, allow other readers */
	    unsigned rab$v_rrl : 1;	/* read record regardless of lock */

	    unsigned rab$v_uif : 1;	/* update if existent */
	    unsigned rab$v_mas : 1;	/* mass-insert mode */
	    unsigned rab$v_fdl : 1;	/* fast record deletion */
#ifndef NO_VMS_V6
	    unsigned rab$v_rev : 1;	/* reverse-search - can only be set with NXT or EQNXT */
#ifndef ONLY_VMS_V6
#define  rab$v_hsh rab$v_rev
#endif
#else
	    unsigned rab$v_hsh : 1;	/* use hash code in bkt */
#endif

	    unsigned rab$v_eof : 1;	/* connect to eof */
	    unsigned rab$v_rah : 1;	/* read ahead */
	    unsigned rab$v_wbh : 1;	/* write behind */
	    unsigned rab$v_bio : 1;	/* connect for bio only */
	    unsigned rab$v_cdk : 1;	/* check for duplicate keys on $GET */
	    unsigned rab$v_loa : 1;	/* use bucket fill percentage */
	    unsigned rab$v_lim : 1;	/* compare for key limit reached on $get/$find seq. (idx only) */
	    unsigned rab$v_syncsts : 1; /* Synchronous status notification for asynchronous routines. */
/*
   The following bits are input to $find or $get, (see above also
   REA and RRL).  (separate byte)
 */
	    unsigned rab$v_loc : 1;	/* use locate mode */
	    unsigned rab$v_wat : 1;	/* wait if record not available */
	    unsigned rab$v_ulk : 1;	/* manual unlocking */
	    unsigned rab$v_rlk : 1;	/* allow readers for this locked record */
	    unsigned rab$v_nlk : 1;	/* do not lock record */
	    unsigned rab$v_kge : 1;	/* key > or = */
	    unsigned rab$v_kgt : 1;	/* key greater than */
	    unsigned rab$v_nxr : 1;	/* get non-existent record */
/*
    The following bits are terminal qualifiers only.  (separate byte)
 */
	    unsigned rab$v_rne : 1;	/* read no echo */
	    unsigned rab$v_tmo : 1;	/* use time-out period */
	    unsigned rab$v_cvt : 1;	/* convert to upper case */
	    unsigned rab$v_rnf : 1;	/* read no filter */
	    unsigned rab$v_eto : 1;	/* extended terminal operation */
	    unsigned rab$v_pta : 1;	/* purge type ahead */
	    unsigned rab$v_pmt : 1;	/* use prompt buffer */
	    unsigned rab$v_cco : 1;	/* cancel control o on output */
	} rab$r_rop_bits0;
	struct {
	    unsigned		 : 21;
	    unsigned rab$v_eqnxt : 1;	/* synonyms for KGE and */
	    unsigned rab$v_nxt	 : 1;	/*  KGT */
	    unsigned		 : 1;
	} rab$r_rop_bits1;
	struct {
	    unsigned	: 8;		/* char fill; */
	    unsigned char rab$b_rop1;	/* various options */
	    unsigned char rab$b_rop2;	/* get/find options (use of this field discouraged */
					/* due to REA and RRL being in a different byte) */
	    unsigned char rab$b_rop3;	/* terminal read options */
	} rab$r_rop_fields;
    } rab$r_rop_overlay;
    unsigned long rab$l_sts;		/* status */
    union {
	unsigned long rab$l_stv;	/* status value */
	struct {
	    unsigned short rab$w_stv0;	/* low word of stv */
	    unsigned short rab$w_stv2;	/* high word of stv */
	} rab$r_stv_fields;
    } rab$r_stv_overlay;
    union {
	unsigned short rab$w_rfa[3];	/* record's file address */
	struct {
	    unsigned long rab$l_rfa0;
	    unsigned short rab$w_rfa4;
	} rab$r_rfa_fields;
    } rab$r_rfa_overlay;
    unsigned	: 16;		/* short fill; (reserved - rms release 1 optimizes stores to the */
				/*  rfa field to be a move quad, overwriting this reserved word) */
    unsigned long rab$l_ctx;		/* user context */
    unsigned	: 16;			/* short fill; (spare) */
    unsigned char rab$b_rac;		/* record access */
    unsigned char rab$b_tmo;		/* time-out period */
    unsigned short rab$w_usz;		/* user buffer size */
    unsigned short rab$w_rsz;		/* record buffer size */
    unsigned long rab$l_ubf;		/* user buffer address */
    unsigned long rab$l_rbf;		/* record buffer address */
    unsigned long rab$l_rhb;		/* record header buffer addr */
    union {
	unsigned long rab$l_kbf;	/* key buffer address */
	unsigned long rab$l_pbf;	/* prompt buffer addr */
#define rab$l_pbf rab$l_kbf
    } rab$r_kbf_overlay;
    union {
	unsigned char rab$b_ksz;	/* key buffer size */
	unsigned char rab$b_psz;	/* prompt buffer size */
#define rab$l_psz rab$l_ksz
    } rab$r_ksz_overlay;
    unsigned char rab$b_krf;		/* key of reference */
    char rab$b_mbf;			/* multi-buffer count */
    unsigned char rab$b_mbc;		/* multi-block count */
    union {
	unsigned long rab$l_bkt;	/* bucket hash code, vbn, or rrn */
	unsigned long rab$l_dct;	/* duplicates count on key accessed on alternate key */
#define rab$l_dct rab$l_bkt
    } rab$r_bkt_overlay;
    unsigned long rab$l_fab;		/* related fab for connect */
    unsigned long rab$l_xab;		/* XAB address */
};

/* declare initialized prototype data structure */
extern struct RAB cc$rms_rab __asm("_$$PsectAttributes_GLOBALSYMBOL$$cc$rms_rab");
/* globalref struct RAB cc$rms_rab; */

#endif	/*_RABDEF_H*/