/* DEC/CMS REPLACEMENT HISTORY, Element CKVVMS.H */ /* *3 29-AUG-1989 00:32:39 BUDA "Add ^Y/^C from server mode" */ /* *2 16-APR-1989 17:54:51 BUDA "Add definition of SUB_PROC buffer size" */ /* *1 11-APR-1989 22:57:00 BUDA "Initial creation" */ /* DEC/CMS REPLACEMENT HISTORY, Element CKVVMS.H */ /* * 006 22-Aug-1993 fdc Add prototype for print_msg(). * 005 26-Aug-1992 tmk Remove unused CKVRMS32 stuff * 004 01-Dec-1989 mab Add RMS support * 002 01-Aug-1989 mab Add partial buffer definition * 002 08-Jul-1989 mab Add ^C/^Y code to server mode * 001 05-Mar-1989 mab Put some common pieces in one place */ /* C-Kermit structures and symbols for interrupt, terminal control, and i/o for VMS systems Mark A. Buda, Digital Equipment Corporation */ struct iosb_struct { unsigned short status; unsigned short size; unsigned short terminator; unsigned short termsize; }; struct tt_mode { unsigned char class; unsigned char type; unsigned short width; unsigned int basic : 24; unsigned char length; unsigned long extended; }; struct itmlst { unsigned short len; unsigned short code; char *adr; char *retlen; }; struct sysatr { unsigned long int retval; /* Address or value returned */ unsigned long int len; /* length of item */ unsigned long int type; char *bpnt; /* Buffer pointer */ unsigned long int bcnt; /* Buffer count */ char *tbuf_adr; /* Starting address of tmp buffer */ char *tbuf_pnt; /* Address within buffer */ unsigned long int tbuf_len; /* Length of buffer */ unsigned long int tbuf_cnt; }; struct trmmbx_message { /* jah - for edit 031 in ckvtio.c */ unsigned short type; /* Mailbox message type */ unsigned short unit; /* TTY unit number */ unsigned char ctlname_size; /* TTY controller name length */ char ctlname[15]; /* TTY controller name */ /* Add broadcast message stuff here if/when needed */ }; struct trmmbx_struct { /* jah - for edit 031 in ckvtio.c */ unsigned short channel; /* Mailbox channel */ unsigned short efn; /* EFN we set for unsolicited input */ unsigned long status; /* Completion status set by AST code */ struct iosb_struct iosb; /* I/O status block for mailbox read */ struct trmmbx_message message; /* A short mailbox message buffer */ }; /* Event flags used for I/O completion testing */ #define CON_EFN 1 #define TTY_EFN 2 #define TIM_EFN 3 #define QIOW_EFN 4 /* Error checking and reporting macros */ int print_msg(); #define SUCCESS(x) ((vms_status = (x)) & 1) #define CHECK_ERR(s,x) (SUCCESS(x) ? 1 : print_msg(s)) /* * Module CKVTIO * Routine print_msg(sts) ! Print VMS error message. * define buffer sizes that are malloced at routine first call. */ #define PMSG_BUF_SIZE 255 #define PMSG_MSG_SIZE PMSG_BUF_SIZE+5 /* * Size of subprocess buffer * This will have a direct affect on the size of a message that comes * from the subprocess mailbox. */ #define SUB_BUF_SIZE 300 #ifndef DEVNAMLEN #define DEVNAMLEN 64 #endif /* * The following macro was borrowed from a posting on USENET - Thank you. */ #define IDENT(arg) arg /* Handy macro expands to its arguments */ #define VSTRING(name, maxlen, init) \ struct IDENT(name)_vs { \ struct dsc$descriptor_s dsc; \ unsigned short int curlen; \ char body[maxlen]; \ } name = {{maxlen, DSC$K_DTYPE_VT, DSC$K_CLASS_VS, &name.curlen}, \ sizeof(init)-1, init} /* * Example of using VSTRING: * * VSTRING(user,12,"Humpty Dumpty"); * VSTRING(line,256,""); * */ /* * UCB$M_* symbols are not in a 'C' usable format. Define this * symbol for use in CKVTIO, when doing a getdviw() */ #ifndef UCB$M_ONLINE #define UCB$M_ONLINE 16 #endif /* * Used by parsedir as the flags argument */ #define PARSE_NODE 0x001 #define PARSE_DEVICE 0x002 #define PARSE_DIRECTORY 0x004 #define PARSE_NAME 0x008 #define PARSE_TYPE 0x010 #define PARSE_VERSION 0x020 /* * */ #define CKV_M_CTRLY (1 << ('Y'-64)) #define CKV_M_CTRLC (1 << ('C'-64)) #define CKV_K_CTRLC ('C'-64) #define CKV_K_CTRLY ('Y'-64) /* * Partial Buffer size. This is used by zoutdump() when it gets * an incomplete record. */ #define PARTIAL_BUF_SIZE 1024