mirror of
https://github.com/open-simh/simtools.git
synced 2026-02-12 10:58:41 +00:00
Too much to list all, but includes (in no particular order): - Cleanup for 64-bit builds, MSVC warnings. - Structured help - Help file compiler. - Supports volsets, writes/create work. - Support for I18n in messages, help. - Makefiles. - Initialize volume/volset - Command line editing/history Builds and works on Linux and Windows (VS). Not recently built or tested on other platforms, but not intentinonally broken.
399 lines
12 KiB
C
399 lines
12 KiB
C
/* RMS.h RMS routine definitions */
|
|
|
|
/*
|
|
* This is part of ODS2 written by Paul Nankervis,
|
|
* email address: Paulnank@au1.ibm.com
|
|
*
|
|
* ODS2 is distributed freely for all members of the
|
|
* VMS community to use. However all derived works
|
|
* must maintain comments in their source to acknowledge
|
|
* the contributions of the original author and
|
|
* subsequent contributors. This is free software; no
|
|
* warranty is offered, and while we believe it to be useful,
|
|
* you use it at your own risk.
|
|
*/
|
|
|
|
#ifndef _RMS_H
|
|
#define _RMS_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#include "ods2.h"
|
|
#include "f11def.h"
|
|
#include "vmstime.h"
|
|
|
|
#define NAM$C_MAXRSS 255u
|
|
#define NAM$M_SYNCHK 0x8u
|
|
#define NAM$S_DVI 32u
|
|
|
|
#define XAB$C_DAT 18u
|
|
#define XAB$C_ALL 20u
|
|
#define XAB$C_FHC 29u
|
|
#define XAB$C_PRO 19u
|
|
#define XAB$C_RDT 30u
|
|
#define XAB$C_ITM 36u
|
|
|
|
/* N.B. xab$l_nxt and xab$b_cod MUST have the same offsets in all XABs */
|
|
|
|
struct XABALL {
|
|
void *xab$l_nxt;
|
|
uint8_t xab$b_cod;
|
|
uint16_t xab$w_vol;
|
|
uint32_t xab$l_alq;
|
|
uint16_t xab$w_deq;
|
|
uint8_t xab$b_bkz;
|
|
};
|
|
|
|
#ifdef RMS$INITIALIZE
|
|
struct XABALL cc$rms_xaball = { NULL, XAB$C_ALL, 0,
|
|
0, 0, 0 };
|
|
#else
|
|
extern struct XABALL cc$rms_xaball;
|
|
#endif
|
|
|
|
struct XABRDT {
|
|
void *xab$l_nxt;
|
|
uint8_t xab$b_cod;
|
|
uint16_t xab$w_rvn;
|
|
VMSTIME xab$q_rdt;
|
|
};
|
|
#ifdef RMS$INITIALIZE
|
|
struct XABRDT cc$rms_xabrdt = { NULL, XAB$C_RDT, 0, VMSTIME_ZERO };
|
|
#else
|
|
extern struct XABRDT cc$rms_xabrdt;
|
|
#endif
|
|
|
|
struct XABDAT {
|
|
void *xab$l_nxt;
|
|
uint8_t xab$b_cod;
|
|
uint16_t xab$w_rvn;
|
|
VMSTIME xab$q_bdt;
|
|
VMSTIME xab$q_cdt;
|
|
VMSTIME xab$q_edt;
|
|
VMSTIME xab$q_rdt;
|
|
};
|
|
|
|
#ifdef RMS$INITIALIZE
|
|
struct XABDAT cc$rms_xabdat = { NULL, XAB$C_DAT, 0,
|
|
VMSTIME_ZERO, VMSTIME_ZERO,
|
|
VMSTIME_ZERO, VMSTIME_ZERO };
|
|
#else
|
|
extern struct XABDAT cc$rms_xabdat;
|
|
#endif
|
|
|
|
struct XABFHC {
|
|
void *xab$l_nxt;
|
|
uint8_t xab$b_cod;
|
|
uint8_t xab$b_atr;
|
|
uint16_t xab$w_ffb;
|
|
uint32_t xab$l_ebk;
|
|
uint32_t xab$l_hbk;
|
|
uint16_t xab$w_lrl;
|
|
uint16_t xab$w_dxq;
|
|
uint16_t xab$w_gbc;
|
|
uint16_t xab$w_verlimit;
|
|
uint8_t xab$b_bkz;
|
|
uint8_t xab$b_hsz;
|
|
};
|
|
|
|
#ifdef RMS$INITIALIZE
|
|
struct XABFHC cc$rms_xabfhc = { NULL, XAB$C_FHC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
|
#else
|
|
extern struct XABFHC cc$rms_xabfhc;
|
|
#endif
|
|
|
|
#define XAB$K_SENSEMODE 1u
|
|
#define XAB$K_SETMODE 2u
|
|
#define XAB$_UCHAR 128u
|
|
#define XAB$_UCHAR_NOBACKUP 130u /* (set, sense) FCH$V_NOBACKUP */
|
|
#define XAB$_UCHAR_WRITEBACK 131u /* (sense) FCH$V_WRITEBACK */
|
|
#define XAB$_UCHAR_READCHECK 132u /* (set, sense) FCH$V_READCHECK */
|
|
#define XAB$_UCHAR_WRITECHECK 133u /* (set, sense) FCH$V_WRITECHECK */
|
|
#define XAB$_UCHAR_CONTIGB 134u /* (set, sense) FCH$V_CONTIGB */
|
|
#define XAB$_UCHAR_LOCKED 135u /* (set, sense) FCH$V_LOCKED */
|
|
#define XAB$_UCHAR_CONTIG 136u /* (sense) FCH$V_CONTIG */
|
|
#define XAB$_UCHAR_SPOOL 138u /* (sense) FCH$V_SPOOL */
|
|
#define XAB$_UCHAR_DIRECTORY 139u /* (sense) FCH$V_DIRECTORY */
|
|
#define XAB$_UCHAR_BADBLOCK 140u /* (sense) FCH$V_BADBLOCK */
|
|
#define XAB$_UCHAR_MARKDEL 141u /* (sense) FCH$V_BADBLOCK */
|
|
|
|
struct item_list {
|
|
uint16_t code;
|
|
uint16_t length;
|
|
void *buffer;
|
|
uint16_t *retlen;
|
|
};
|
|
|
|
struct XABITM {
|
|
void *xab$l_nxt;
|
|
uint8_t xab$b_cod;
|
|
uint8_t xab$b_mode;
|
|
struct item_list *xab$l_itemlist;
|
|
};
|
|
|
|
#ifdef RMS$INITIALIZE
|
|
struct XABITM cc$rms_xabitm = {NULL, XAB$C_ITM, 0, NULL};
|
|
#else
|
|
extern struct XABITM cc$rms_xabitm;
|
|
#endif
|
|
|
|
#define xab$m_noread 1u
|
|
#define xab$m_nowrite 2u
|
|
#define xab$m_noexe 4u
|
|
#define xab$m_nodel 8u
|
|
#define xab$m_prot (xab$m_noread|xab$m_nowrite|xab$m_noexe|xab$m_nodel)
|
|
#define xab$v_system 0u
|
|
#define xab$v_owner 4u
|
|
#define xab$v_group 8u
|
|
#define xab$v_world 12u
|
|
|
|
struct XABPRO {
|
|
void *xab$l_nxt;
|
|
uint8_t xab$b_cod;
|
|
uint16_t xab$w_pro;
|
|
uint32_t xab$l_uic;
|
|
};
|
|
|
|
#ifdef RMS$INITIALIZE
|
|
struct XABPRO cc$rms_xabpro = { NULL, XAB$C_PRO, 0, 0 };
|
|
#else
|
|
extern struct XABPRO cc$rms_xabpro;
|
|
#endif
|
|
|
|
|
|
#define NAM$M_EXP_VER UINT32_C(0x00000001)
|
|
#define NAM$M_EXP_TYPE UINT32_C(0x00000002)
|
|
#define NAM$M_EXP_NAME UINT32_C(0x00000004)
|
|
#define NAM$M_WILD_VER UINT32_C(0x00000008)
|
|
#define NAM$M_WILD_TYPE UINT32_C(0x00000010)
|
|
#define NAM$M_WILD_NAME UINT32_C(0x00000020)
|
|
#define NAM$M_EXP_DIR UINT32_C(0x00000040)
|
|
#define NAM$M_EXP_DEV UINT32_C(0x00000080)
|
|
#define NAM$M_WILDCARD UINT32_C(0x00000100)
|
|
#define NAM$M_SEARCH_LIST UINT32_C(0x00000800)
|
|
#define NAM$M_CNCL_DEV UINT32_C(0x00001000)
|
|
#define NAM$M_ROOT_DIR UINT32_C(0x00002000)
|
|
#define NAM$M_LOWVER UINT32_C(0x00004000)
|
|
#define NAM$M_HIGHVER UINT32_C(0x00008000)
|
|
#define NAM$M_PPF UINT32_C(0x00010000)
|
|
#define NAM$M_NODE UINT32_C(0x00020000)
|
|
#define NAM$M_QUOTED UINT32_C(0x00040000)
|
|
#define NAM$M_GRP_MBR UINT32_C(0x00080000)
|
|
#define NAM$M_WILD_DIR UINT32_C(0x00100000)
|
|
#define NAM$M_DIR_LVLS UINT32_C(0x00e00000)
|
|
#define NAM$V_DIR_LVLS 20u
|
|
#define NAM$M_WILD_UFD UINT32_C(0x01000000)
|
|
#define NAM$M_WILD_SFD1 UINT32_C(0x02000000)
|
|
#define NAM$M_WILD_SFD2 UINT32_C(0x04000000)
|
|
#define NAM$M_WILD_SFD3 UINT32_C(0x08000000)
|
|
#define NAM$M_WILD_SFD4 UINT32_C(0x10000000)
|
|
#define NAM$M_WILD_SFD5 UINT32_C(0x20000000)
|
|
#define NAM$M_WILD_SFD6 UINT32_C(0x40000000)
|
|
#define NAM$M_WILD_SFD7 UINT32_C(0x80000000)
|
|
/* The following are aliased to WILD_UFD, WILD_SFD1 */
|
|
#define NAM$M_WILD_GRP UINT32_C(0x01000000)
|
|
#define NAM$M_WILD_MBR UINT32_C(0x02000000)
|
|
|
|
struct NAM {
|
|
char *nam$l_esa;
|
|
char *nam$l_rsa;
|
|
char *nam$l_dev;
|
|
char *nam$l_dir;
|
|
char *nam$l_name;
|
|
char *nam$l_type;
|
|
char *nam$l_ver;
|
|
struct NAM *nam$l_rlf;
|
|
void *nam$l_wcc;
|
|
struct fiddef nam$w_fid;
|
|
struct fiddef nam$w_did;
|
|
uint32_t nam$l_fnb;
|
|
char nam$t_dvi[1+NAM$S_DVI];
|
|
uint8_t nam$b_ess;
|
|
uint8_t nam$b_esl;
|
|
uint8_t nam$b_rss;
|
|
uint8_t nam$b_rsl;
|
|
uint8_t nam$b_dev;
|
|
uint8_t nam$b_dir;
|
|
uint8_t nam$b_name;
|
|
uint8_t nam$b_type;
|
|
uint8_t nam$b_ver;
|
|
uint8_t nam$b_nop;
|
|
};
|
|
|
|
#ifdef RMS$INITIALIZE
|
|
struct NAM cc$rms_nam = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
NULL, {0, 0, 0, 0}, {0, 0, 0, 0}, 0,
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
|
|
#else
|
|
extern struct NAM cc$rms_nam;
|
|
#endif
|
|
|
|
|
|
/* rab$b_rac */
|
|
#define RAB$C_SEQ 0u
|
|
#define RAB$C_RFA 2u
|
|
|
|
/* rab$l_rop */
|
|
#define RAB$M_TPT 2
|
|
#define RAB$M_EOF 256u
|
|
|
|
struct RAB {
|
|
struct RAB *rab$a__next;
|
|
struct FAB *rab$l_fab;
|
|
char *rab$l_ubf;
|
|
char *rab$l_rhb;
|
|
char *rab$l_rbf;
|
|
uint32_t rab$l_stv;
|
|
uint32_t rab$l_rop;
|
|
uint32_t rab$w_isi;
|
|
uint16_t rab$w_usz;
|
|
uint16_t rab$w_rsz;
|
|
uint8_t rab$b_rac;
|
|
uint16_t rab$w_rfa[3];
|
|
};
|
|
|
|
#ifdef RMS$INITIALIZE
|
|
struct RAB cc$rms_rab = { NULL, NULL, NULL, NULL, NULL,
|
|
0, 0, 0, 0, 0, 0, {0, 0, 0} };
|
|
#else
|
|
extern struct RAB cc$rms_rab;
|
|
#endif
|
|
|
|
|
|
/* FAB$B_ORG : N.B. These are all high nibble values for fat$b_rtype */
|
|
#define FAB$C_SEQ 0u
|
|
#define FAB$C_REL 16u
|
|
#define FAB$C_IDX 32u
|
|
#define FAB$C_HSH 48u
|
|
|
|
/* FAB$B_RAT : N.B. These are all low nibble values for fat$b_rtype */
|
|
#define FAB$M_FTN 0x1u
|
|
#define FAB$M_CR 0x2u
|
|
#define FAB$M_PRN 0x4u
|
|
#define FAB$M_BLK 0x8u
|
|
|
|
/* FAB$B_FAC */
|
|
#define FAB$M_PUT 0x1u
|
|
#define FAB$M_GET 0x2u
|
|
#define FAB$M_DEL 0x4u
|
|
#define FAB$M_UPD 0x8u
|
|
#define FAB$M_TRN 0x10u
|
|
#define FAB$M_BIO 0x20u
|
|
#define FAB$M_BRO 0x40u
|
|
#define FAB$M_EXE 0x80u
|
|
|
|
/* FAB$B_RFM */
|
|
#define FAB$C_UDF 0u
|
|
#define FAB$C_FIX 1u
|
|
#define FAB$C_VAR 2u
|
|
#define FAB$C_VFC 3u
|
|
#define FAB$C_STM 4u
|
|
#define FAB$C_STMLF 5u
|
|
#define FAB$C_STMCR 6u
|
|
|
|
/* FAB$L_FOP */
|
|
#define FAB$M_ASY UINT32_C(1)
|
|
#define FAB$M_MXV UINT32_C(2)
|
|
#define FAB$M_SUP UINT32_C(4)
|
|
#define FAB$M_TMP UINT32_C(8)
|
|
#define FAB$M_TMD UINT32_C(16)
|
|
#define FAB$M_DFW UINT32_C(32)
|
|
#define FAB$M_SQO UINT32_C(64)
|
|
#define FAB$M_RWO UINT32_C(128)
|
|
#define FAB$M_POS UINT32_C(256)
|
|
#define FAB$M_WCK UINT32_C(512)
|
|
#define FAB$M_NEF UINT32_C(1024)
|
|
#define FAB$M_RWC UINT32_C(2048)
|
|
#define FAB$M_DMO UINT32_C(4096)
|
|
#define FAB$M_SPL UINT32_C(8192)
|
|
#define FAB$M_SCF UINT32_C(16384)
|
|
#define FAB$M_DLT UINT32_C(32768)
|
|
#define FAB$M_NFS UINT32_C(65536)
|
|
#define FAB$M_UFO UINT32_C(131072)
|
|
#define FAB$M_PPF UINT32_C(262144)
|
|
#define FAB$M_INP UINT32_C(524288)
|
|
#define FAB$M_CTG UINT32_C(1048576)
|
|
#define FAB$M_CBT UINT32_C(2097152)
|
|
#define FAB$M_SYNCSTS UINT32_C(4194304)
|
|
#define FAB$M_RCK UINT32_C(8388608)
|
|
#define FAB$M_NAM UINT32_C(16777216)
|
|
#define FAB$M_CIF UINT32_C(33554432)
|
|
#define FAB$M_ESC UINT32_C(134217728)
|
|
#define FAB$M_TEF UINT32_C(268435456)
|
|
#define FAB$M_OFP UINT32_C(536870912)
|
|
#define FAB$M_KFO UINT32_C(1073741824)
|
|
|
|
struct FAB {
|
|
char *fab$l_fna;
|
|
char *fab$l_dna;
|
|
struct NAM *fab$l_nam;
|
|
void *fab$l_xab;
|
|
struct RAB *fab$a__rab;
|
|
uint32_t fab$l_isi;
|
|
uint32_t fab$l_alq;
|
|
uint32_t fab$l_fop;
|
|
uint32_t fab$l_openfop;
|
|
uint16_t fab$w_deq;
|
|
uint16_t fab$w_ifi;
|
|
uint16_t fab$w_gbc;
|
|
uint16_t fab$w_mrs;
|
|
uint8_t fab$b_fns;
|
|
uint8_t fab$b_dns;
|
|
uint8_t fab$b_bks;
|
|
uint8_t fab$b_fsz;
|
|
uint8_t fab$b_org;
|
|
uint8_t fab$b_rat;
|
|
uint8_t fab$b_rfm;
|
|
uint8_t fab$b_fac;
|
|
uint16_t fab__w_verlimit;
|
|
};
|
|
|
|
#ifdef RMS$INITIALIZE
|
|
struct FAB cc$rms_fab = {NULL, NULL, NULL, NULL, NULL,
|
|
0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0};
|
|
#else
|
|
extern struct FAB cc$rms_fab;
|
|
#endif
|
|
|
|
|
|
#ifndef NO_DOLLAR
|
|
#define sys$search sys_search
|
|
#define sys$parse sys_parse
|
|
#define sys$setddir sys_setddir
|
|
#define sys$connect sys_connect
|
|
#define sys$disconnect sys_disconnect
|
|
#define sys$get sys_get
|
|
#define sys$display sys_display
|
|
#define sys$close sys_close
|
|
#define sys$open sys_open
|
|
#define sys$create sys_create
|
|
#define sys$erase sys_erase
|
|
#define sys$rename sys_rename
|
|
#define sys$extend sys_extend
|
|
#endif
|
|
|
|
vmscond_t sys_close( struct FAB *fab );
|
|
vmscond_t sys_connect( struct RAB *rab );
|
|
vmscond_t sys_create( struct FAB *fab );
|
|
vmscond_t sys_disconnect( struct RAB *rab );
|
|
vmscond_t sys_display( struct FAB *fab );
|
|
vmscond_t sys_erase( struct FAB *fab );
|
|
vmscond_t sys_extend( struct FAB *fab );
|
|
vmscond_t sys_get( struct RAB *rab );
|
|
vmscond_t sys_initialize(void);
|
|
vmscond_t sys_open( struct FAB *fab );
|
|
vmscond_t sys_parse( struct FAB *fab );
|
|
vmscond_t sys_put( struct RAB *rab );
|
|
vmscond_t sys_rename( struct FAB *oldfab,
|
|
void *astrtn, void *astprm, struct FAB *newfab );
|
|
vmscond_t sys_search( struct FAB *fab );
|
|
vmscond_t sys_setddir( struct dsc_descriptor *newdir, uint16_t *oldlen,
|
|
struct dsc_descriptor *olddir );
|
|
|
|
#endif /* #ifndef _RMS_H */
|