/* Copyright 1989, 1990, 1992 Digital Equipment Corporation All rights reserved. This software is furnished under a license and may be used and copied only in accordance with the terms of such license and with the inclusion of the above copyright notice. This software and any copies shall not be provided to any other person. No title to or ownership of the software is hereby transferred. The information in this software is subject to change without notice. DIGITAL assumes no responsibility for the use, functionality or reliability of its software on equipment which is not supplied by DIGITAL. xab.h PDP-11 C XAB -- Extended Attribute Block Definitions */ #ifndef __PDP11C$XAB_H #define __PDP11C$XAB_H #define XAB$B_COD (00) /* O$COD */ #define XAB$C_ALL (04) /* XB$ALL ALL block identifier */ #define XAB$B_BLN (01) /* O$BLN */ #define XAB$C_ALLLEN (034) /* XB$LAL ALL block length (bytes) */ #define XAB$K_ALLLEN (034) #define XAB$L_NXT (02) /* O$NXT */ #define XAB$B_AID (04) /* O$AID */ #define XAB$B_BKZ (05) /* O$BKZ */ #define XAB$W_VOL (06) /* O$VOL */ #define XAB$B_ALN (010) /* O$ALN */ #define XAB$C_CYL (01) /* XB$CYL Cylinder alignment */ #define XAB$C_LBN (02) /* XB$LBN Logical block allignment */ #define XAB$C_VBN (04) /* XB$VBN Virtual block alignment */ #define XAB$C_RFI (010) /* XB$RFI Allocate close to related file ID */ #define XAB$B_AOP (011) /* O$AOP */ #define XAB$V_HRD (00) #define XAB$M_HRD (1 << XAB$V_HRD) /* XB$HRD Hard area location */ #define XAB$V_CTG (01) #define XAB$M_CTG (1 << XAB$V_CTG) /* XB$CTG Contiguous allocation */ #define XAB$L_ALQ (012) /* O$ALQ */ #define XAB$L_ALQ0 (012) /* O$ALQ0 */ #define XAB$L_ALQ1 (014) /* O$ALQ1 */ #define XAB$W_DEQ (016) /* O$DEQ */ #define XAB$L_LOC (022) /* O$LOC */ #define XAB$L_LOC0 (022) /* O$LOC0 */ #define XAB$L_LOC1 (024) /* O$LOC1 */ #define XAB$C_DAT (02) /* XB$DAT DAT block identifier */ #define XAB$C_DATLEN (046) /* XB$DTL DAT block length (bytes) */ #define XAB$K_DATLEN (046) #define XAB$W_RVN (04) /* O$RVN */ #define XAB$Q_RDT (06) /* O$RDT */ #define XAB$Q_CDT (016) /* O$CDT */ #define XAB$Q_EDT (026) /* O$EDT */ #define XAB$Q_BDT (036) /* O$BDT */ #define XAB$C_KEY (01) /* XB$KEY block identifier */ #define XAB$C_KEYLEN (070) /* XB$KYL KEY block length (bytes) */ #define XAB$K_KEYLEN (070) #define XAB$B_REF (04) /* O$REF */ #define XAB$B_HAL (05) /* O$HAL */ #define XAB$B_LVL (05) /* O$LVL */ #define XAB$W_IFL (06) /* O$IFL */ #define XAB$W_DFL (010) /* O$DFL */ #define XAB$B_NUL (012) /* O$NUL */ #define XAB$B_IAN (013) /* O$IAN */ #define XAB$B_LAN (014) /* O$LAN */ #define XAB$B_DAN (015) /* O$DAN */ #define XAB$B_FLG (016) /* O$FLG */ #define XAB$V_DUP (00) #define XAB$M_DUP (1 << XAB$V_DUP) /* XB$DUP Duplicate record keys allowed */ #define XAB$V_CHG (01) #define XAB$M_CHG (1 << XAB$V_CHG) /* XB$CHG Record key changes allowed on update */ #define XAB$V_NUL (02) #define XAB$M_NUL (1 << XAB$V_NUL) /* XB$NUL Null record keys not enabled */ #define XAB$V_INI (04) #define XAB$M_INI (1 << XAB$V_INI) /* XB$INI No entries yet made in index */ #define XAB$B_DTP (017) /* O$DTP */ #define XAB$C_STG (00) /* XB$STG String */ #define XAB$C_IN2 (01) /* XB$IN2 15-bit signed integer */ #define XAB$C_BN2 (02) /* XB$BN2 16-bit unsigned integer */ #define XAB$C_IN4 (03) /* XB$IN4 31-bit signed integer */ #define XAB$C_BN4 (04) /* XB$BN4 32-bit unsigned integer */ #define XAB$C_PAC (05) /* XB$PAC Packed decimal number */ #define XAB$C_MAXDTP (05) /* Maximum legal data type */ #define XAB$L_KNM (020) /* O$KNM */ #define XAB$W_POS (022) /* O$POS */ #define xab$w_pos xab$w_pos0 /* Key segment positions */ #define XAB$W_POS0 (022) /* O$POS0 */ #define XAB$W_POS1 (024) /* O$POS1 */ #define XAB$W_POS2 (026) /* O$POS2 */ #define XAB$W_POS3 (030) /* O$POS3 */ #define XAB$W_POS4 (032) /* O$POS4 */ #define XAB$W_POS5 (034) /* O$POS5 */ #define XAB$W_POS6 (036) /* O$POS6 */ #define XAB$W_POS7 (040) /* O$POS7 */ #define XAB$B_SIZ (042) /* O$SIZ */ #define xab$b_siz xab$b_siz0 /* Key segment sizes (bytes) */ #define XAB$B_SIZ0 (042) /* O$SIZ0 */ #define XAB$B_SIZ1 (043) /* O$SIZ1 */ #define XAB$B_SIZ2 (044) /* O$SIZ2 */ #define XAB$B_SIZ3 (045) /* O$SIZ3 */ #define XAB$B_SIZ4 (046) /* O$SIZ4 */ #define XAB$B_SIZ5 (047) /* O$SIZ5 */ #define XAB$B_SIZ6 (050) /* O$SIZ6 */ #define XAB$B_SIZ7 (051) /* O$SIZ7 */ #define XAB$L_RVB (052) /* O$RVB */ #define XAB$L_DVB (056) /* O$DVB */ #define XAB$B_IBS (062) /* O$IBS */ #define XAB$B_DBS (063) /* O$DBS */ #define XAB$B_NSG (064) /* O$NSG */ #define XAB$B_TKS (065) /* O$BKS */ #define XAB$W_MRL (066) /* O$MRL */ #define XAB$C_PRO (03) /* XB$PRO PRO block identifier code */ #define XAB$C_PROLEN (012) /* XB$PRL PRO block length (bytes) */ #define XAB$K_PROLEN (012) #define XAB$W_PRG (04) /* O$PRG */ #define XAB$W_PRJ (06) /* O$PRJ */ #define XAB$W_PRO (10) /* O$PRO */ #define XAB$C_SUM (05) /* XB$SUM SUM block identifier code */ #define XAB$C_SUMLEN (012) /* XB$SML SUM block length (bytes) */ #define XAB$K_SUMLEN (012) #define XAB$B_NOK (04) /* O$NOK */ #define XAB$B_NOA (05) /* O$NOA */ #define XAB$B_NOR (06) /* O$NOR */ #define XAB$W_PVN (010) /* O$PVN */ #define XAB$C_ULB (06) /* XB$ULB User label */ #define XAB$C_FCB (07) /* XB$FCB Statistics from file mgr */ #define XAB$C_HDR (010) /* XB$HDR Complete file header */ #define XAB$C_USR (011) /* XB$USR User characteristics */ #define XAB$C_NAM (012) /* XB$NAM File name in header */ #define XAB$C_ACC (013) /* XB$ACC Access control list */ /* XABALL -- Allocation Control Extended Attribute Block Definitions */ struct XABALL { unsigned char xab$b_cod; /* ALL block identifier code */ unsigned char xab$b_bln; /* ALL block length */ char *xab$l_nxt; /* Next XAB address */ unsigned char xab$b_aid; /* Area number */ unsigned char xab$b_bkz; /* Area bucket size (blocks) */ unsigned short xab$w_vol; /* Reserved */ unsigned char xab$b_aln; /* Area alignment mask */ unsigned char xab$b_aop; /* Area option mask */ unsigned long xab$l_alq; /* Area allocation size (blocks) */ unsigned short xab$w_deq; /* Area default extension size (blocks) */ unsigned : 16; /* Reserved */ unsigned long xab$l_loc; /* Area location */ unsigned short xab$reserved[3]; /* Reserved */ }; /* The struct definition which follows this comment defines cc$rms_xaball as an instance of a XAB ALL block which is initialized to default values. If you wish to use it, you must include the following line in any module which refers to cc$rms_xaball: #define RMS_ALL$PROTOTYPE The definition must appear before the #include statement. */ #ifdef RMS_ALL$PROTOTYPE #define cc$rms_xaball CC$ALL /* 6 chars for TKB, cc$rms_xaball for VMS compatability */ extern struct XABALL cc$rms_xaball; /* Declare initialized prototype data structures */ #endif /* struct representing a 64-bit binary value expressing the date and time */ #define XAB_DATE_TIME {unsigned : 16;unsigned : 16;unsigned : 16;unsigned : 16;} /* XABDAT -- Date and Time Extended Attribute Block Definitions */ struct XABDAT { unsigned char xab$b_cod; /* DAT block identifier code */ unsigned char xab$b_bln; /* DAT block length (bytes) */ char *xab$l_nxt; /* Next XAB address */ unsigned short xab$w_rvn; /* File revision number */ struct XAB_DATE_TIME xab$q_rdt; /* File revision date */ struct XAB_DATE_TIME xab$q_cdt; /* File creation date */ struct XAB_DATE_TIME xab$q_edt; /* File expiration date */ struct XAB_DATE_TIME xab$q_bdt; /* Reserved */ }; /* The struct definition which follows this comment defines cc$rms_xabdat as an instance of a XAB DAT block which is initialized to default values. If you wish to use it, you must include the following line in any module which refers to cc$rms_xabdat: #define RMS_DAT$PROTOTYPE The definition must appear before the #include statement. */ #ifdef RMS_DAT$PROTOTYPE #define cc$rms_xabdat CC$DAT /* 6 chars for TKB, cc$rms_xabdat for VMS compatability */ extern struct XABDAT cc$rms_xabdat; /* Declare initialized prototype data structures */ #endif #undef XAB_DATE_TIME /* XABKEY -- Key Definition Extended Attribute Block Definitions */ struct XABKEY { unsigned char xab$b_cod; /* KEY block identifier code */ unsigned char xab$b_bln; /* KEY block length (bytes) */ char *xab$l_nxt; /* Next XAB address */ unsigned char xab$b_ref; /* Index reference number */ unsigned char xab$b_lvl; /* Number of index levels (not including data level */ unsigned short xab$w_ifl; /* Index bucket fill factor */ unsigned short xab$w_dfl; /* Data bucket fill factor */ unsigned char xab$b_nul; /* Null key character */ unsigned char xab$b_ian; /* Higher level index area number */ unsigned char xab$b_lan; /* Lowest index level area number */ unsigned char xab$b_dan; /* Data area number */ unsigned char xab$b_flg; /* Index option mask */ unsigned char xab$b_dtp; /* Key data type code */ char *xab$l_knm; /* Key name buffer address */ unsigned short xab$w_pos0; /* Key segment 0 position */ unsigned short xab$w_pos1; /* Key segment 1 position */ unsigned short xab$w_pos2; /* Key segment 2 position */ unsigned short xab$w_pos3; /* Key segment 3 position */ unsigned short xab$w_pos4; /* Key segment 4 position */ unsigned short xab$w_pos5; /* Key segment 5 position */ unsigned short xab$w_pos6; /* Key segment 6 position */ unsigned short xab$w_pos7; /* Key segment 7 position */ unsigned char xab$b_siz0; /* Key segment 0 size */ unsigned char xab$b_siz1; /* Key segment 1 size */ unsigned char xab$b_siz2; /* Key segment 2 size */ unsigned char xab$b_siz3; /* Key segment 3 size */ unsigned char xab$b_siz4; /* Key segment 4 size */ unsigned char xab$b_siz5; /* Key segment 5 size */ unsigned char xab$b_siz6; /* Key segment 6 size */ unsigned char xab$b_siz7; /* Key segment 7 size */ unsigned long xab$l_rvb; /* Root index bucket virtual block number */ unsigned long xab$l_dvb; /* First data bucket virtual block number */ unsigned char xab$b_ibs; /* Index area bucket size (blocks) */ unsigned char xab$b_dbs; /* Data area bucket size in (blocks) */ unsigned char xab$b_nsg; /* Key segment count */ unsigned char xab$b_tks; /* Total key size (sum of key segment sizes) (bytes */ unsigned short xab$w_mrl; /* Minimum length of record containing key (bytes) */ }; /* The struct definition which follows this comment defines cc$rms_xabkey as an instance of a XAB KEY block which is initialized to default values. If you wish to use it, you must include the following line in any module which refers to cc$rms_xabkey: #define RMS_KEY$PROTOTYPE The definition must appear before the #include statement. */ #ifdef RMS_KEY$PROTOTYPE #define cc$rms_xabkey CC$KEY /* 6 chars for TKB, cc$rms_xabkey for VMS compatability */ extern struct XABKEY cc$rms_xabkey; /* Declare initialized prototype data structures */ #endif #define XAB_PROT_FIELDS {unsigned:16;unsigned:16;unsigned:16;unsigned:16;} /* XABPRO -- File Protection Extended Attribute Block Definitions */ struct XABPRO { unsigned char xab$b_cod; /* PRO block identifier */ unsigned char xab$b_bln; /* PRO block length (bytes) */ char *xab$l_nxt; /* Next XAB in chain */ unsigned short xab$w_prg; /* Programmer or member portion of file owner code */ unsigned short xab$w_prj; /* Project or group portion of file owner code */ unsigned short xab$w_pro; /* File protection code */ }; /* The struct definition which follows this comment defines cc$rms_xabpro as an instance of a XAB PRO block which is initialized to default values. If you wish to use it, you must include the following line in any module which refers to cc$rms_xabpro: #define RMS_PRO$PROTOTYPE The definition must appear before the #include statement. */ #ifdef RMS_PRO$PROTOTYPE #define cc$rms_xabpro CC$PRO /* 6 chars for TKB, cc$rms_xabpro for VMS compatability */ extern struct XABPRO cc$rms_xabpro; /* Declare initialized prototype data structures */ #endif #undef XAB_PROT_FIELDS /* XABSUM -- Summary Extended Attribute Block Definitions */ struct XABSUM { unsigned char xab$b_cod; /* SUM block identifier */ unsigned char xab$b_bln; /* SUM block length (bytes) */ char *xab$l_nxt; /* Next XAB address */ unsigned char xab$b_nok; /* Number of indexes */ unsigned char xab$b_noa; /* Number of areas */ unsigned char xab$b_nor; /* Reserved */ unsigned : 8; /* Reserved */ unsigned short xab$w_pvn; /* Prologue version number */ }; /* The struct definition which follows this comment defines cc$rms_xabsum as an instance of a XAB SUM block which is initialized to default values. If you wish to use it, you must include the following line in any module which refers to cc$rms_xabsum: #define RMS_SUM$PROTOTYPE The definition must appear before the #include statement. */ #ifdef RMS_SUM$PROTOTYPE #define cc$rms_xabsum CC$SUM /* 6 chars for TKB, cc$rms_xabsum for VMS compatability */ extern struct XABSUM cc$rms_xabsum; /* Declare initialized prototype data structures */ #endif #endif