/* Ported to GNU C openVMS/Alpha by Klaus Kämpf, kkaempf@progis.de */ /* * * RMS file header characteristics xab definitions */ #ifndef _XABFHCDEF_H #define _XABFHCDEF_H #ifdef __cplusplus extern "C" { #endif #define XAB$C_FHC 29 /* xabfhc ID code */ #define XAB$V_FTN 0 #define XAB$V_CR 1 #define XAB$V_PRN 2 #define XAB$V_BLK 3 #define XAB$M_FTN (1< #endif #ifdef __ALPHA #define XABFHC xabfhcdef #else struct XABFHC { __XABSTART_FIELDS unsigned char xab$b_rfo; /* record format and file org */ unsigned char xab$b_atr; /* record attributes */ unsigned short xab$w_lrl; /* longest record's length */ unsigned long xab$l_hbk; /* hi vbn allocated (n.b. reversed on disk!) */ unsigned long xab$l_ebk; /* eof vbn (n.b. reversed on disk) */ unsigned short xab$w_ffb; /* first free byte in eof block */ unsigned char xab$b_bkz; /* bucket size */ unsigned char xab$b_hsz; /* header size for vfc */ unsigned short xab$w_mrz; /* max record size */ unsigned short xab$w_dxq; /* default extend quantity */ unsigned short xab$w_gbc; /* global buffer count */ unsigned : 32, : 32; /* spares (pad to last word) */ unsigned short xab$w_verlimit; /* version limit for file. */ /*- end of old XABFHC -*/ unsigned long xab$l_sbn; /* starting lbn if contiguous */ } __attribute__ ((packed)); #endif struct xabfhcdef { __XABSTART_FIELDS unsigned char xab$b_rfo; /* record format and file org */ union { unsigned char xab$b_atr; /* record attributes */ #define xab$b_atr xab$r_atr_overlay.xab$b_atr struct { unsigned char xab$v_ftn : 1; /* fortran carriage-ctl */ unsigned char xab$v_cr : 1; /* lf-record-cr carriage ctl */ unsigned char xab$v_prn : 1; /* print-file carriage ctl */ unsigned char xab$v_blk : 1; /* records don't cross block boundaries */ unsigned char : 4; } xab$r_atr_bits; #define xab$v_ftn xab$r_atr_overlay.xab$r_atr_bits.xab$v_ftn #define xab$v_cr xab$r_atr_overlay.xab$r_atr_bits.xab$v_cr #define xab$v_prn xab$r_atr_overlay.xab$r_atr_bits.xab$v_prn #define xab$v_blk xab$r_atr_overlay.xab$r_atr_bits.xab$v_blk } xab$r_atr_overlay; unsigned short xab$w_lrl; /* longest record's length */ union { unsigned long xab$l_hbk; /* hi vbn allocated (n.b. reversed on disk!) */ #define xab$l_hbk xab$r_hbk_overlay.xab$l_hbk struct { unsigned short xab$w_hbk0; unsigned short xab$w_hbk2; } xab$r_hbk_fields; #define xab$w_hbk0 xab$r_hbk_overlay.xab$r_hbk_fields.xab$w_hbk0 #define xab$w_hbk2 xab$r_hbk_overlay.xab$r_hbk_fields.xab$w_hbk2 } xab$r_hbk_overlay; union { unsigned long xab$l_ebk; /* eof vbn (n.b. reversed on disk) */ #define xab$l_ebk xab$r_ebk_overlay.xab$l_ebk struct { unsigned short xab$w_ebk0; unsigned short xab$w_ebk2; } xab$r_ebk_fields; #define xab$w_ebk0 xab$r_ebk_overlay.xab$r_ebk_fields.xab$w_ebk0 #define xab$w_ebk2 xab$r_ebk_overlay.xab$r_ebk_fields.xab$w_ebk2 } xab$r_ebk_overlay; unsigned short xab$w_ffb; /* first free byte in eof block */ unsigned char xab$b_bkz; /* bucket size for fhc (common to $xaball) */ unsigned char xab$b_hsz; /* header size for vfc */ unsigned short xab$w_mrz; /* max record size */ unsigned short xab$w_dxq; /* default extend quantity */ unsigned short xab$w_gbc; /* global buffer count */ unsigned char : 8; char : 8; char : 8; char : 8; /* char fill[8]; spares (pad to last word) */ char : 8; char : 8; char : 8; char : 8; unsigned short xab$w_verlimit; /* version limit for file. */ /*- end of old XABFHC -*/ unsigned long xab$l_sbn; /* starting lbn if contiguous */ } __attribute__ ((packed)); /* declare initialized prototype data structure */ #ifdef __ALPHA extern struct XABFHC *cc$rms_xabfhc_ptr __asm("DECC$GA_RMS_XABFHC"); #define cc$rms_xabfhc (*cc$rms_xabfhc_ptr) #else extern struct XABFHC cc$rms_xabfhc __asm("_$$PsectAttributes_GLOBALSYMBOL$$cc$rms_xabfhc"); /* globalref struct XABFHC cc$rms_xabfhc; */ #endif #ifdef __cplusplus } #endif #endif /*_XABFHCDEF_H*/