fis-gtm/sr_unix/iottdef.h

121 lines
3.2 KiB
C

/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#ifndef IOTTDEF_H
#define IOTTDEF_H
#include "gtm_termios.h"
#include "gtm_stdio.h"
#define TERM_MSK 0x08002400 /* CR LF ESC */
#define TERM_MSK_UTF8_0 0x08003400 /* add FF */
#define TERM_MSK_UTF8_4 0x00000020 /* NL */
#include "iottdefsp.h"
#define NUM_BITS_IN_INT4 (SIZEOF(int4) * 8)
#define TTDEF_BUF_SZ 1024
#define TTDEF_PG_WIDTH 255
#define IOTT_FLUSH_WAIT 300
#define IOTT_FLUSH_RETRY 50
#define IOTT_BUFF_LEN 3072
#define IOTT_BUFF_MIN 128
#define TT_EDITING 0x1000
#define TT_NOINSERT 0x2000
#define TT_EMPTERM 0x4000
enum tt_which
{
ttwhichinvalid,
dmread,
ttread,
ttrdone
};
typedef struct
{
enum tt_which who_saved;
unsigned char *buffer_start; /* initial stringpool.free */
wint_t *buffer_32_start;
int utf8_more;
int dx;
int dx_start;
int dx_instr;
int dx_outlen;
int instr;
int outlen;
int index; /* dm_read only */
int cl; /* dm_read only */
int length;
int exp_length;
boolean_t insert_mode;
ABS_TIME end_time;
unsigned char *more_ptr;
unsigned char *zb_ptr;
unsigned char *zb_top;
unsigned short escape_length; /* dm_read only */
unsigned char escape_sequence[ESC_LEN]; /* dm_read only */
unsigned char more_buf[GTM_MB_LEN_MAX + 1];
} tt_interrupt;
typedef struct
{
uint4 mask[8];
} io_termmask;
typedef struct
{
unsigned short status;
unsigned short char_ct;
uint4 dev_dep_info;
}iosb;
typedef struct
{
uint4 x;
uint4 mask;
}io_terminator;
typedef struct
{
uint4 in_buf_sz; /* size of read buffer */
/* unsigned short pg_width; width of output page */
uint4 ext_cap;
io_terminator enbld_outofbands; /* enabled out-of-band chars */
uint4 term_ctrl;
io_termmask mask_term;
int fildes;
struct termios *ttio_struct;
tt_interrupt tt_state_save; /* in case job interrupt */
boolean_t mupintr; /* read was interrupted */
char *ttybuff; /* buffer for tty */
volatile char *tbuffp; /* next open space in buffer */
volatile boolean_t timer_set; /* text flush timer is set */
volatile boolean_t write_active; /* we are in write -- postpone flush by timer */
boolean_t canonical;
mstr recall_buff; /* if EDITING enabled */
int recall_size; /* size of recall_buff allocated */
int recall_width; /* display width of current contents */
boolean_t discard_lf; /* UTF8 mode - previous char was CR so ignore following LF */
boolean_t default_mask_term; /* mask_term is the default */
boolean_t done_1st_read; /* UTF8 mode - check for BOM if not */
}d_tt_struct;
void iott_flush_buffer(io_desc *ioptr, boolean_t new_write_flag);
void iott_mterm(io_desc *ioptr);
void iott_rterm(io_desc *ioptr);
void iott_readfl_badchar(mval *vmvalptr, wint_t *dataptr32, int datalen,
int delimlen, unsigned char *delimptr, unsigned char *strend, unsigned char *buffer_start);
#endif