Files
open-simh.simtools/extracters/ods2/rms.h
Timothe Litt 61c8001044 Bug fixes and compiler warnings. Unix readline support, pass 1
Fix various compiler warnings.

Fix bug causing double free when a file isn't found.

Fix bug using uninitialized variable parsing null filename.

Fix bug causing crash when format 3 retrieval pointer encountered.

Add support for readline (command line editing and history on Unix)

Untangle NT I/O so it builds without the direct access SCSI API & works.

Report errors as text messages everywhere.

Add MSVC project files.

Implement most of dir/full

Partially implement XABITM

Add help to command tables.

Allow choice of VMS qualifiers or Unix options.
  mount /write // /dev/cdrom
or
  mount -write /dev/cdrom

Parse quoted strings as command parameters.
   Mount /write "/dev/cdrom"
   search [*...]*.txt "My words for you"

Resolve command, parameter & qualifier ambiguity from tables.

Consolidate the various makefiles into a common file with very small
platform-specific wrappers.  This simplifies maintenance.

Add diskio module to allow easy access to .iso images and simulator files.
Removes requirement for loop device or equivalent.  Builds as a separate
executable.

Writes to the ODS2 volumes are broken.
2016-02-26 17:46:46 -05:00

319 lines
7.6 KiB
C

/* RMS.h v1.3 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 contibution of the original author.
*/
#ifndef RMS$_RTB
#include "vmstime.h"
#define RMS$_RTB 98728
#define RMS$_EOF 98938
#define RMS$_FNF 98962
#define RMS$_NMF 99018
#define RMS$_WCC 99050
#define RMS$_BUG 99380
#define RMS$_DIR 99532
#define RMS$_ESS 99588
#define RMS$_FNM 99628
#define RMS$_IFI 99684
#define RMS$_NAM 99804
#define RMS$_RSS 99988
#define RMS$_RSZ 100004
#define RMS$_WLD 100164
#define RMS$_DNF 114762
#define NAM$C_MAXRSS 255
#define NAM$M_SYNCHK 1
#define XAB$C_DAT 18
#define XAB$C_FHC 29
#define XAB$C_PRO 19
#define XAB$C_ITM 36
struct XABDAT {
void *xab$l_nxt;
int xab$b_cod;
int 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;
int xab$b_cod;
int xab$b_atr;
int xab$b_bkz;
int xab$w_dxq;
int xab$l_ebk;
int xab$w_ffb;
int xab$w_gbc;
int xab$l_hbk;
int xab$b_hsz;
int xab$w_lrl;
int xab$w_verlimit;
};
#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 1
/* #define XAB$K_SETMODE 2 */
#define XAB$_UCHAR 128
#define XAB$_UCHAR_NOBACKUP 130 /* (set,sense) FCH$V_NOBACKUP */
#define XAB$_UCHAR_WRITEBACK 131 /* (sense) FCH$V_WRITEBACK */
#define XAB$_UCHAR_READCHECK 132 /* (set,sense) FCH$V_READCHECK */
#define XAB$_UCHAR_WRITECHECK 133 /* (set,sense) FCH$V_WRITECHECK */
#define XAB$_UCHAR_CONTIGB 134 /* (set,sense) FCH$V_CONTIGB */
#define XAB$_UCHAR_LOCKED 135 /* (set,sense) FCH$V_LOCKED */
#define XAB$_UCHAR_CONTIG 136 /* (sense) FCH$V_CONTIG */
#define XAB$_UCHAR_SPOOL 138 /* (sense) FCH$V_SPOOL */
#define XAB$_UCHAR_DIRECTORY 139 /* (sense) FCH$V_DIRECTORY */
#define XAB$_UCHAR_BADBLOCK 140 /* (sense) FCH$V_BADBLOCK */
#define XAB$_UCHAR_MARKDEL 141 /* (sense) FCH$V_BADBLOCK */
struct item_list {
unsigned short int code;
unsigned short int length;
void *buffer;
int retlen;
};
struct XABITM {
void *xab$l_nxt;
int xab$b_cod;
struct item_list *xab$l_itemlist;
int xab$b_mode;
};
#ifdef RMS$INITIALIZE
struct XABITM cc$rms_xabitm = {NULL,XAB$C_ITM,NULL,0};
#else
extern struct XABITM cc$rms_xabitm;
#endif
#define xab$m_noread 1
#define xab$m_nowrite 2
#define xab$m_noexe 4
#define xab$m_nodel 8
#define xab$m_prot (xab$m_noread|xab$m_nowrite|xab$m_noexe|xab$m_nodel)
#define xab$v_system 0
#define xab$v_owner 4
#define xab$v_group 8
#define xab$v_world 12
struct XABPRO {
void *xab$l_nxt;
int xab$b_cod;
unsigned int xab$w_pro;
unsigned int 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_WILDCARD 0x100
struct NAM {
unsigned short nam$w_did_num;
unsigned short nam$w_did_seq;
unsigned char nam$b_did_rvn;
unsigned char nam$b_did_nmx;
unsigned short nam$w_fid_num;
unsigned short nam$w_fid_seq;
unsigned char nam$b_fid_rvn;
unsigned char nam$b_fid_nmx;
int nam$b_ess;
int nam$b_rss;
int nam$b_esl;
char *nam$l_esa;
int nam$b_rsl;
char *nam$l_rsa;
int nam$b_dev;
char *nam$l_dev;
int nam$b_dir;
char *nam$l_dir;
int nam$b_name;
char *nam$l_name;
int nam$b_type;
char *nam$l_type;
int nam$b_ver;
char *nam$l_ver;
void *nam$l_wcc;
int nam$b_nop;
int nam$l_fnb;
};
#ifdef RMS$INITIALIZE
struct NAM cc$rms_nam = {0,0,0,0,0,0,0,0,0,0,0,NULL,0,NULL,0,NULL,0,NULL,0,NULL,0,NULL,0,NULL,0,0,0};
#else
extern struct NAM cc$rms_nam;
#endif
#define RAB$C_SEQ 0
#define RAB$C_RFA 2
struct RAB {
struct FAB *rab$l_fab;
char *rab$l_ubf;
char *rab$l_rhb;
char *rab$l_rbf;
unsigned rab$w_usz;
unsigned rab$w_rsz;
int rab$b_rac;
unsigned short rab$w_rfa[3];
};
#ifdef RMS$INITIALIZE
struct RAB cc$rms_rab = {NULL,NULL,NULL,NULL,0,0,0,{0,0,0}};
#else
extern struct RAB cc$rms_rab;
#endif
#define FAB$C_SEQ 0
#define FAB$C_REL 16
#define FAB$C_IDX 32
#define FAB$C_HSH 48
#define FAB$M_FTN 1
#define FAB$M_CR 2
#define FAB$M_PRN 4
#define FAB$M_BLK 8
#define FAB$M_PUT 0x1
#define FAB$M_GET 0x2
#define FAB$M_DEL 0x4
#define FAB$M_UPD 0x8
#define FAB$M_TRN 0x10
#define FAB$M_BIO 0x20
#define FAB$M_BRO 0x40
#define FAB$M_EXE 0x80
#define FAB$C_UDF 0
#define FAB$C_FIX 1
#define FAB$C_VAR 2
#define FAB$C_VFC 3
#define FAB$C_STM 4
#define FAB$C_STMLF 5
#define FAB$C_STMCR 6
/* FAB$L_FOP */
#define FAB$M_ASY 1
#define FAB$M_MXV 2
#define FAB$M_SUP 4
#define FAB$M_TMP 8
#define FAB$M_TMD 16
#define FAB$M_DFW 32
#define FAB$M_SQO 64
#define FAB$M_RWO 128
#define FAB$M_POS 256
#define FAB$M_WCK 512
#define FAB$M_NEF 1024
#define FAB$M_RWC 2048
#define FAB$M_DMO 4096
#define FAB$M_SPL 8192
#define FAB$M_SCF 16384
#define FAB$M_DLT 32768
#define FAB$M_NFS 65536
#define FAB$M_UFO 131072
#define FAB$M_PPF 262144
#define FAB$M_INP 524288
#define FAB$M_CTG 1048576
#define FAB$M_CBT 2097152
#define FAB$M_SYNCSTS 4194304
#define FAB$M_RCK 8388608
#define FAB$M_NAM 16777216
#define FAB$M_CIF 33554432
#define FAB$M_ESC 134217728
#define FAB$M_TEF 268435456
#define FAB$M_OFP 536870912
#define FAB$M_KFO 1073741824
struct FAB {
struct NAM *fab$l_nam;
int fab$w_ifi;
char *fab$l_fna;
char *fab$l_dna;
int fab$b_fns;
int fab$b_dns;
int fab$l_alq;
int fab$b_bks;
int fab$w_deq;
unsigned int fab$b_fsz;
int fab$w_gbc;
unsigned int fab$w_mrs;
int fab$l_fop;
int fab$b_org;
int fab$b_rat;
int fab$b_rfm;
int fab$b_fac;
void *fab$l_xab;
};
#ifdef RMS$INITIALIZE
struct FAB cc$rms_fab = {NULL,0,NULL,NULL,0,0,0,0,0,0,0,0,0,0,0,0,0,NULL};
#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
#endif
unsigned sys_search(struct FAB *fab);
unsigned sys_parse(struct FAB *fab);
unsigned sys_connect(struct RAB *rab);
unsigned sys_disconnect(struct RAB *rab);
unsigned sys_get(struct RAB *rab);
unsigned sys_put(struct RAB *rab);
unsigned sys_display(struct FAB *fab);
unsigned sys_close(struct FAB *fab);
unsigned sys_open(struct FAB *fab);
unsigned sys_create(struct FAB *fab);
unsigned sys_erase(struct FAB *fab);
unsigned sys_extend(struct FAB *fab);
unsigned sys_setddir(struct dsc_descriptor *newdir,unsigned short *oldlen,
struct dsc_descriptor *olddir);
#endif