diff --git a/src/gtk/pw3270-GTK.cbp b/src/gtk/pw3270-GTK.cbp
index bc3bfe7..c19f124 100644
--- a/src/gtk/pw3270-GTK.cbp
+++ b/src/gtk/pw3270-GTK.cbp
@@ -95,6 +95,9 @@
+
+
+
diff --git a/src/gtk/v3270/clipboard.c b/src/gtk/v3270/clipboard.c
index 0b23e27..2c007fe 100644
--- a/src/gtk/v3270/clipboard.c
+++ b/src/gtk/v3270/clipboard.c
@@ -83,6 +83,8 @@ gboolean v3270_copy(v3270 *widget)
{
gtk_clipboard_set_can_store(clipboard,targets,1);
trace("%s: Clipboard set",__FUNCTION__);
+ return TRUE;
}
+ return FALSE;
}
diff --git a/src/include/lib3270/session.h b/src/include/lib3270/session.h
index c53bb61..91f75e1 100644
--- a/src/include/lib3270/session.h
+++ b/src/include/lib3270/session.h
@@ -36,6 +36,24 @@
#define LIB3270_LUNAME_LENGTH 16
#define LIB3270_FULL_MODEL_NAME_LENGTH 13
+ /** extended attributes */
+ struct ea
+ {
+ unsigned char cc; /**< EBCDIC or ASCII character code */
+ unsigned char fa; /**< field attribute, it nonzero */
+ unsigned char fg; /**< foreground color (0x00 or 0xf) */
+ unsigned char bg; /**< background color (0x00 or 0xf) */
+ unsigned char gr; /**< ANSI graphics rendition bits */
+ unsigned char cs; /**< character set (GE flag, or 0..2) */
+ unsigned char ic; /**< input control (DBCS) */
+ unsigned char db; /**< DBCS state */
+
+ /* Updated by addch() */
+ unsigned char chr; /**< ASCII character code */
+ unsigned short attr; /**< Converted character attribute (color & etc) */
+
+ };
+
struct _h3270
{
unsigned short sz; /**< Struct size */
@@ -79,8 +97,6 @@
// screen info
int ov_rows;
int ov_cols;
-// int first_changed;
-// int last_changed;
int maxROWS;
int maxCOLS;
unsigned short rows;
@@ -92,6 +108,8 @@
int formatted; /**< set in screen_disp */
+ struct ea * ea_buf; /**< 3270 device buffer. ea_buf[-1] is the dummy default field attribute */
+
// host.c
char std_ds_host;
char no_login_host;
diff --git a/src/lib3270/api.h b/src/lib3270/api.h
index f4ebd91..ab3a3a2 100644
--- a/src/lib3270/api.h
+++ b/src/lib3270/api.h
@@ -183,23 +183,6 @@
#define PW3270_DIALOG_CRITICAL LIB3270_NOTIFY_CRITICAL
#define PW3270_DIALOG LIB3270_NOTIFY
- /** extended attributes */
- struct ea
- {
- unsigned char cc; /**< EBCDIC or ASCII character code */
- unsigned char fa; /**< field attribute, it nonzero */
- unsigned char fg; /**< foreground color (0x00 or 0xf) */
- unsigned char bg; /**< background color (0x00 or 0xf) */
- unsigned char gr; /**< ANSI graphics rendition bits */
- unsigned char cs; /**< character set (GE flag, or 0..2) */
- unsigned char ic; /**< input control (DBCS) */
- unsigned char db; /**< DBCS state */
-
- /* Updated by addch() */
- unsigned char chr; /**< ASCII character code */
- unsigned short attr; /**< Converted character attribute (color & etc) */
-
- };
#define GR_BLINK 0x01
#define GR_REVERSE 0x02
#define GR_UNDERLINE 0x04
diff --git a/src/lib3270/ctlr.c b/src/lib3270/ctlr.c
index 059584c..434c68b 100644
--- a/src/lib3270/ctlr.c
+++ b/src/lib3270/ctlr.c
@@ -80,8 +80,8 @@ int buffer_addr;
// Boolean screen_alt = False; /* alternate screen? */
// Boolean is_altbuffer = False;
-struct ea *ea_buf = NULL; /* 3270 device buffer */
- /* ea_buf[-1] is the dummy default field attribute */
+// struct ea *ea_buf = NULL; /* 3270 device buffer */
+// /* ea_buf[-1] is the dummy default field attribute */
// Boolean formatted = False; /* set in screen_disp */
unsigned char reply_mode = SF_SRM_FIELD;
@@ -168,7 +168,7 @@ void ctlr_reinit(H3270 *session, unsigned cmask)
if (real_ea_buf)
Free((char *)real_ea_buf);
real_ea_buf = (struct ea *)Calloc(sizeof(struct ea),(session->maxROWS * session->maxCOLS) + 1);
- ea_buf = real_ea_buf + 1;
+ session->ea_buf = real_ea_buf + 1;
if (real_aea_buf)
Free((char *)real_aea_buf);
real_aea_buf = (struct ea *)Calloc(sizeof(struct ea),(session->maxROWS * session->maxCOLS) + 1);
@@ -274,7 +274,7 @@ static void set_formatted(H3270 *session)
baddr = 0;
do
{
- if (ea_buf[baddr].fa)
+ if(session->ea_buf[baddr].fa)
{
session->formatted = True;
break;
@@ -301,10 +301,11 @@ static void ctlr_connect(H3270 *session, int ignored unused, void *dunno)
status_untiming(session);
if (session->ever_3270)
- ea_buf[-1].fa = FA_PRINTABLE | FA_MODIFY;
+ session->ea_buf[-1].fa = FA_PRINTABLE | FA_MODIFY;
else
- ea_buf[-1].fa = FA_PRINTABLE | FA_PROTECT;
- if (!IN_3270 || (IN_SSCP && (kybdlock & KL_OIA_TWAIT))) {
+ session->ea_buf[-1].fa = FA_PRINTABLE | FA_PROTECT;
+ if (!IN_3270 || (IN_SSCP && (kybdlock & KL_OIA_TWAIT)))
+ {
kybdlock_clr(KL_OIA_TWAIT, "ctlr_connect");
status_reset(session);
}
@@ -332,7 +333,7 @@ LIB3270_EXPORT int lib3270_field_addr(H3270 *h, int baddr)
sbaddr = baddr;
do
{
- if (ea_buf[baddr].fa)
+ if(h->ea_buf[baddr].fa)
return baddr;
DEC_BA(baddr);
} while (baddr != sbaddr);
@@ -359,7 +360,7 @@ int lib3270_field_length(H3270 *h, int baddr)
saddr = addr;
INC_BA(addr);
do {
- if(ea_buf[addr].fa)
+ if(h->ea_buf[addr].fa)
return width;
INC_BA(addr);
width++;
@@ -376,7 +377,7 @@ int lib3270_field_length(H3270 *h, int baddr)
unsigned char get_field_attribute(H3270 *h, int baddr)
{
CHECK_SESSION_HANDLE(h);
- return ea_buf[find_field_attribute(h,baddr)].fa;
+ return h->ea_buf[find_field_attribute(h,baddr)].fa;
}
/*
@@ -392,14 +393,14 @@ get_bounded_field_attribute(register int baddr, register int bound,
int sbaddr;
if (!h3270.formatted) {
- *fa_out = ea_buf[-1].fa;
+ *fa_out = h3270.ea_buf[-1].fa;
return True;
}
sbaddr = baddr;
do {
- if (ea_buf[baddr].fa) {
- *fa_out = ea_buf[baddr].fa;
+ if (h3270.ea_buf[baddr].fa) {
+ *fa_out = h3270.ea_buf[baddr].fa;
return True;
}
DEC_BA(baddr);
@@ -407,7 +408,7 @@ get_bounded_field_attribute(register int baddr, register int bound,
/* Screen is unformatted (and 'formatted' is inaccurate). */
if (baddr == sbaddr) {
- *fa_out = ea_buf[-1].fa;
+ *fa_out = h3270.ea_buf[-1].fa;
return True;
}
@@ -422,7 +423,7 @@ get_bounded_field_attribute(register int baddr, register int bound,
struct ea *
fa2ea(int baddr)
{
- return &ea_buf[baddr];
+ return &h3270.ea_buf[baddr];
}
/*
@@ -439,9 +440,9 @@ next_unprotected(int baddr0)
do {
baddr = nbaddr;
INC_BA(nbaddr);
- if (ea_buf[baddr].fa &&
- !FA_IS_PROTECTED(ea_buf[baddr].fa) &&
- !ea_buf[nbaddr].fa)
+ if (h3270.ea_buf[baddr].fa &&
+ !FA_IS_PROTECTED(h3270.ea_buf[baddr].fa) &&
+ !h3270.ea_buf[nbaddr].fa)
return nbaddr;
} while (nbaddr != baddr0);
return 0;
@@ -610,20 +611,19 @@ insert_sa(int baddr, unsigned char *current_fgp, unsigned char *current_bgp,
return;
if (memchr((char *)crm_attr, XA_FOREGROUND, crm_nattr))
- insert_sa1(XA_FOREGROUND, ea_buf[baddr].fg, current_fgp, anyp);
+ insert_sa1(XA_FOREGROUND, h3270.ea_buf[baddr].fg, current_fgp, anyp);
if (memchr((char *)crm_attr, XA_BACKGROUND, crm_nattr))
- insert_sa1(XA_BACKGROUND, ea_buf[baddr].bg, current_bgp, anyp);
+ insert_sa1(XA_BACKGROUND, h3270.ea_buf[baddr].bg, current_bgp, anyp);
if (memchr((char *)crm_attr, XA_HIGHLIGHTING, crm_nattr)) {
unsigned char gr;
- gr = ea_buf[baddr].gr;
+ gr = h3270.ea_buf[baddr].gr;
if (gr)
gr |= 0xf0;
insert_sa1(XA_HIGHLIGHTING, gr, current_grp, anyp);
}
if (memchr((char *)crm_attr, XA_CHARSET, crm_nattr)) {
- insert_sa1(XA_CHARSET, host_cs(ea_buf[baddr].cs), current_csp,
- anyp);
+ insert_sa1(XA_CHARSET, host_cs(h3270.ea_buf[baddr].cs), current_csp,anyp);
}
}
@@ -699,13 +699,13 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all)
if (h3270.formatted) {
/* find first field attribute */
do {
- if (ea_buf[baddr].fa)
+ if (h3270.ea_buf[baddr].fa)
break;
INC_BA(baddr);
} while (baddr != 0);
sbaddr = baddr;
do {
- if (FA_IS_MODIFIED(ea_buf[baddr].fa)) {
+ if (FA_IS_MODIFIED(h3270.ea_buf[baddr].fa)) {
Boolean any = False;
INC_BA(baddr);
@@ -713,17 +713,17 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all)
*obptr++ = ORDER_SBA;
ENCODE_BADDR(obptr, baddr);
trace_ds(" SetBufferAddress%s (Cols: %d Rows: %d)", rcba(baddr), h3270.cols, h3270.rows);
- while (!ea_buf[baddr].fa) {
+ while (!h3270.ea_buf[baddr].fa) {
if (send_data &&
- ea_buf[baddr].cc) {
+ h3270.ea_buf[baddr].cc) {
insert_sa(baddr,
¤t_fg,
¤t_bg,
¤t_gr,
¤t_cs,
&any);
- if (ea_buf[baddr].cs & CS_GE) {
+ if (h3270.ea_buf[baddr].cs & CS_GE) {
space3270out(1);
*obptr++ = ORDER_GE;
if (any)
@@ -732,7 +732,7 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all)
any = False;
}
space3270out(1);
- *obptr++ = ea_buf[baddr].cc;
+ *obptr++ = h3270.ea_buf[baddr].cc;
if (!any)
trace_ds(" '");
trace_ds("%s",
@@ -747,7 +747,7 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all)
else { /* not modified - skip */
do {
INC_BA(baddr);
- } while (!ea_buf[baddr].fa);
+ } while (!h3270.ea_buf[baddr].fa);
}
} while (baddr != sbaddr);
} else {
@@ -762,14 +762,14 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all)
baddr = sscp_start;
do {
- if (ea_buf[baddr].cc) {
+ if (h3270.ea_buf[baddr].cc) {
insert_sa(baddr,
¤t_fg,
¤t_bg,
¤t_gr,
¤t_cs,
&any);
- if (ea_buf[baddr].cs & CS_GE) {
+ if (h3270.ea_buf[baddr].cs & CS_GE) {
space3270out(1);
*obptr++ = ORDER_GE;
if (any)
@@ -778,7 +778,7 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all)
any = False;
}
space3270out(1);
- *obptr++ = ea_buf[baddr].cc;
+ *obptr++ = h3270.ea_buf[baddr].cc;
if (!any)
trace_ds("%s","'");
trace_ds("%s",see_ebc(ea_buf[baddr].cc));
@@ -836,7 +836,7 @@ ctlr_read_buffer(unsigned char aid_byte)
baddr = 0;
do {
- if (ea_buf[baddr].fa) {
+ if (h3270.ea_buf[baddr].fa) {
if (reply_mode == SF_SRM_FIELD) {
space3270out(2);
*obptr++ = ORDER_SF;
@@ -847,7 +847,7 @@ ctlr_read_buffer(unsigned char aid_byte)
*obptr++ = 1; /* for now */
*obptr++ = XA_3270;
}
- fa = ea_buf[baddr].fa & ~FA_PRINTABLE;
+ fa = h3270.ea_buf[baddr].fa & ~FA_PRINTABLE;
*obptr++ = code_table[fa];
if (any)
trace_ds("'");
@@ -855,34 +855,34 @@ ctlr_read_buffer(unsigned char aid_byte)
(reply_mode == SF_SRM_FIELD) ? "" : "Extended",
rcba(baddr), see_attr(fa));
if (reply_mode != SF_SRM_FIELD) {
- if (ea_buf[baddr].fg) {
+ if (h3270.ea_buf[baddr].fg) {
space3270out(2);
*obptr++ = XA_FOREGROUND;
- *obptr++ = ea_buf[baddr].fg;
+ *obptr++ = h3270.ea_buf[baddr].fg;
trace_ds("%s", see_efa(XA_FOREGROUND,
ea_buf[baddr].fg));
(*(obuf + attr_count))++;
}
- if (ea_buf[baddr].bg) {
+ if (h3270.ea_buf[baddr].bg) {
space3270out(2);
*obptr++ = XA_BACKGROUND;
- *obptr++ = ea_buf[baddr].bg;
+ *obptr++ = h3270.ea_buf[baddr].bg;
trace_ds("%s", see_efa(XA_BACKGROUND,
ea_buf[baddr].bg));
(*(obuf + attr_count))++;
}
- if (ea_buf[baddr].gr) {
+ if (h3270.ea_buf[baddr].gr) {
space3270out(2);
*obptr++ = XA_HIGHLIGHTING;
- *obptr++ = ea_buf[baddr].gr | 0xf0;
+ *obptr++ = h3270.ea_buf[baddr].gr | 0xf0;
trace_ds("%s", see_efa(XA_HIGHLIGHTING,
- ea_buf[baddr].gr | 0xf0));
+ h3270.ea_buf[baddr].gr | 0xf0));
(*(obuf + attr_count))++;
}
- if (ea_buf[baddr].cs & CS_MASK) {
+ if (h3270.ea_buf[baddr].cs & CS_MASK) {
space3270out(2);
*obptr++ = XA_CHARSET;
- *obptr++ = host_cs(ea_buf[baddr].cs);
+ *obptr++ = host_cs(h3270.ea_buf[baddr].cs);
trace_ds("%s", see_efa(XA_CHARSET,
host_cs(ea_buf[baddr].cs)));
(*(obuf + attr_count))++;
@@ -896,7 +896,7 @@ ctlr_read_buffer(unsigned char aid_byte)
¤t_gr,
¤t_cs,
&any);
- if (ea_buf[baddr].cs & CS_GE) {
+ if (h3270.ea_buf[baddr].cs & CS_GE) {
space3270out(1);
*obptr++ = ORDER_GE;
if (any)
@@ -905,9 +905,9 @@ ctlr_read_buffer(unsigned char aid_byte)
any = False;
}
space3270out(1);
- *obptr++ = ea_buf[baddr].cc;
- if (ea_buf[baddr].cc <= 0x3f ||
- ea_buf[baddr].cc == 0xff) {
+ *obptr++ = h3270.ea_buf[baddr].cc;
+ if (h3270.ea_buf[baddr].cc <= 0x3f ||
+ h3270.ea_buf[baddr].cc == 0xff) {
if (any)
trace_ds("'");
@@ -1076,14 +1076,14 @@ ctlr_erase_all_unprotected(void)
/* find first field attribute */
baddr = 0;
do {
- if (ea_buf[baddr].fa)
+ if (h3270.ea_buf[baddr].fa)
break;
INC_BA(baddr);
} while (baddr != 0);
sbaddr = baddr;
f = False;
do {
- fa = ea_buf[baddr].fa;
+ fa = h3270.ea_buf[baddr].fa;
if (!FA_IS_PROTECTED(fa)) {
mdt_clear(baddr);
do {
@@ -1092,15 +1092,15 @@ ctlr_erase_all_unprotected(void)
cursor_move(baddr);
f = True;
}
- if (!ea_buf[baddr].fa) {
+ if (!h3270.ea_buf[baddr].fa) {
ctlr_add(baddr, EBC_null, 0);
}
- } while (!ea_buf[baddr].fa);
+ } while (!h3270.ea_buf[baddr].fa);
}
else {
do {
INC_BA(baddr);
- } while (!ea_buf[baddr].fa);
+ } while (!h3270.ea_buf[baddr].fa);
}
} while (baddr != sbaddr);
if (!f)
@@ -1203,7 +1203,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
if (appres.modified_sel)
ALL_CHANGED;
do {
- if (ea_buf[baddr].fa) {
+ if (h3270.ea_buf[baddr].fa) {
mdt_clear(baddr);
}
INC_BA(baddr);
@@ -1271,8 +1271,8 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
* of an unprotected field, simply advance one
* position.
*/
- if (ea_buf[buffer_addr].fa &&
- !FA_IS_PROTECTED(ea_buf[buffer_addr].fa)) {
+ if (h3270.ea_buf[buffer_addr].fa &&
+ !FA_IS_PROTECTED(h3270.ea_buf[buffer_addr].fa)) {
INC_BA(buffer_addr);
last_zpt = False;
last_cmd = True;
@@ -1295,7 +1295,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
if (!last_cmd || last_zpt) {
trace_ds("(nulling)");
while ((buffer_addr != baddr) &&
- (!ea_buf[buffer_addr].fa)) {
+ (!h3270.ea_buf[buffer_addr].fa)) {
ctlr_add(buffer_addr, EBC_null, 0);
ctlr_add_cs(buffer_addr, 0);
ctlr_add_fg(buffer_addr, 0);
@@ -1433,8 +1433,8 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
ABORT_WRITE("EUA overwriting left half of DBCS character");
}
do {
- if (ea_buf[buffer_addr].fa)
- current_fa = ea_buf[buffer_addr].fa;
+ if (h3270.ea_buf[buffer_addr].fa)
+ current_fa = h3270.ea_buf[buffer_addr].fa;
else if (!FA_IS_PROTECTED(current_fa)) {
ctlr_add(buffer_addr, EBC_null,
CS_BASE);
@@ -1472,14 +1472,14 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
previous = ORDER;
cp++;
na = *cp;
- if (ea_buf[buffer_addr].fa) {
+ if (h3270.ea_buf[buffer_addr].fa) {
for (i = 0; i < (int)na; i++) {
cp++;
if (*cp == XA_3270) {
trace_ds(" 3270");
cp++;
ctlr_add_fa(buffer_addr, *cp,
- ea_buf[buffer_addr].cs);
+ h3270.ea_buf[buffer_addr].cs);
trace_ds("%s",see_attr(*cp));
} else if (*cp == XA_FOREGROUND) {
trace_ds("%s",
@@ -1714,16 +1714,16 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
while (!aborted &&
((fa_addr >= 0 && baddr != fa_addr) ||
(fa_addr < 0 && baddr != h3270.rows*h3270.cols - 1))) {
- if (ea_buf[baddr].cc == FCORDER_SI) {
+ if (h3270.ea_buf[baddr].cc == FCORDER_SI) {
ABORT_WRITE("double SI");
}
- if (ea_buf[baddr].cc == FCORDER_SO)
+ if (h3270.ea_buf[baddr].cc == FCORDER_SO)
break;
DEC_BA(baddr);
}
if (aborted)
break;
- if (ea_buf[baddr].cc != FCORDER_SO) {
+ if (h3270.ea_buf[baddr].cc != FCORDER_SO) {
ABORT_WRITE("SI without SO");
}
/* All is well. */
@@ -2293,7 +2293,7 @@ ps_process(void)
!h3270.screen_alt && /* 24x80 screen */
!kybdlock && /* keyboard not locked */
/* magic field */
- ea_buf[1919].fa && FA_IS_SKIP(ea_buf[1919].fa)) {
+ h3270.ea_buf[1919].fa && FA_IS_SKIP(h3270.ea_buf[1919].fa)) {
ft_cut_data();
}
#endif /*]*/
@@ -2308,7 +2308,7 @@ ctlr_any_data(void)
register int i;
for (i = 0; i < h3270.rows*h3270.cols; i++) {
- if (!IsBlank(ea_buf[i].cc))
+ if (!IsBlank(h3270.ea_buf[i].cc))
return True;
}
return False;
@@ -2334,7 +2334,7 @@ ctlr_clear(H3270 *session, Boolean can_snap)
#endif /*]*/
/* Clear the screen. */
- (void) memset((char *)ea_buf, 0, session->rows*session->cols*sizeof(struct ea));
+ (void) memset((char *)session->ea_buf, 0, session->rows*session->cols*sizeof(struct ea));
cursor_move(0);
buffer_addr = 0;
// unselect(0, ROWS*COLS);
@@ -2359,8 +2359,8 @@ ctlr_blanks(void)
int baddr;
for (baddr = 0; baddr < h3270.rows*h3270.cols; baddr++) {
- if (!ea_buf[baddr].fa)
- ea_buf[baddr].cc = EBC_space;
+ if (!h3270.ea_buf[baddr].fa)
+ h3270.ea_buf[baddr].cc = EBC_space;
}
cursor_move(0);
buffer_addr = 0;
@@ -2379,7 +2379,7 @@ ctlr_add(int baddr, unsigned char c, unsigned char cs)
{
unsigned char oc = 0;
- if(ea_buf[baddr].fa || ((oc = ea_buf[baddr].cc) != c || ea_buf[baddr].cs != cs))
+ if(h3270.ea_buf[baddr].fa || ((oc = h3270.ea_buf[baddr].cc) != c || h3270.ea_buf[baddr].cs != cs))
{
if (trace_primed && !IsBlank(oc))
{
@@ -2394,9 +2394,9 @@ ctlr_add(int baddr, unsigned char c, unsigned char cs)
if (SELECTED(baddr))
unselect(baddr, 1);
*/
- ea_buf[baddr].cc = c;
- ea_buf[baddr].cs = cs;
- ea_buf[baddr].fa = 0;
+ h3270.ea_buf[baddr].cc = c;
+ h3270.ea_buf[baddr].cs = cs;
+ h3270.ea_buf[baddr].fa = 0;
ONE_CHANGED(baddr);
}
}
@@ -2414,7 +2414,7 @@ ctlr_add_fa(int baddr, unsigned char fa, unsigned char cs)
* Store the new attribute, setting the 'printable' bits so that the
* value will be non-zero.
*/
- ea_buf[baddr].fa = FA_PRINTABLE | (fa & FA_MASK);
+ h3270.ea_buf[baddr].fa = FA_PRINTABLE | (fa & FA_MASK);
}
/*
@@ -2423,13 +2423,13 @@ ctlr_add_fa(int baddr, unsigned char fa, unsigned char cs)
void
ctlr_add_cs(int baddr, unsigned char cs)
{
- if (ea_buf[baddr].cs != cs)
+ if (h3270.ea_buf[baddr].cs != cs)
{
/*
if (SELECTED(baddr))
unselect(baddr, 1);
*/
- ea_buf[baddr].cs = cs;
+ h3270.ea_buf[baddr].cs = cs;
ONE_CHANGED(baddr);
}
}
@@ -2440,13 +2440,9 @@ ctlr_add_cs(int baddr, unsigned char cs)
void
ctlr_add_gr(int baddr, unsigned char gr)
{
- if (ea_buf[baddr].gr != gr)
+ if (h3270.ea_buf[baddr].gr != gr)
{
- /*
- if (SELECTED(baddr))
- unselect(baddr, 1);
- */
- ea_buf[baddr].gr = gr;
+ h3270.ea_buf[baddr].gr = gr;
if (gr & GR_BLINK)
blink_start();
ONE_CHANGED(baddr);
@@ -2463,13 +2459,9 @@ ctlr_add_fg(int baddr, unsigned char color)
return;
if ((color & 0xf0) != 0xf0)
color = 0;
- if (ea_buf[baddr].fg != color)
+ if (h3270.ea_buf[baddr].fg != color)
{
- /*
- if (SELECTED(baddr))
- unselect(baddr, 1);
- */
- ea_buf[baddr].fg = color;
+ h3270.ea_buf[baddr].fg = color;
ONE_CHANGED(baddr);
}
}
@@ -2484,13 +2476,9 @@ ctlr_add_bg(int baddr, unsigned char color)
return;
if ((color & 0xf0) != 0xf0)
color = 0;
- if (ea_buf[baddr].bg != color)
+ if (h3270.ea_buf[baddr].bg != color)
{
- /*
- if (SELECTED(baddr))
- unselect(baddr, 1);
- */
- ea_buf[baddr].bg = color;
+ h3270.ea_buf[baddr].bg = color;
ONE_CHANGED(baddr);
}
}
@@ -2501,7 +2489,7 @@ ctlr_add_bg(int baddr, unsigned char color)
static void
ctlr_add_ic(int baddr, unsigned char ic)
{
- ea_buf[baddr].ic = ic;
+ h3270.ea_buf[baddr].ic = ic;
}
/*
@@ -2548,21 +2536,12 @@ void
ctlr_bcopy(int baddr_from, int baddr_to, int count, int move_ea)
{
/* Move the characters. */
- if (memcmp((char *) &ea_buf[baddr_from],
- (char *) &ea_buf[baddr_to],
+ if (memcmp((char *) &h3270.ea_buf[baddr_from],
+ (char *) &h3270.ea_buf[baddr_to],
count * sizeof(struct ea))) {
- (void) memmove(&ea_buf[baddr_to], &ea_buf[baddr_from],
+ (void) memmove(&h3270.ea_buf[baddr_to], &h3270.ea_buf[baddr_from],
count * sizeof(struct ea));
REGION_CHANGED(baddr_to, baddr_to + count);
- /*
- * For the time being, if any selected text shifts around on
- * the screen, unhighlight it. Eventually there should be
- * logic for preserving the highlight if the *all* of the
- * selected text moves.
- */ /*
- if (area_is_selected(baddr_to, count))
- unselect(baddr_to, count);
- */
}
/* XXX: What about move_ea? */
}
@@ -2575,15 +2554,11 @@ ctlr_bcopy(int baddr_from, int baddr_to, int count, int move_ea)
void
ctlr_aclear(int baddr, int count, int clear_ea)
{
- if (memcmp((char *) &ea_buf[baddr], (char *) zero_buf,
+ if (memcmp((char *) &h3270.ea_buf[baddr], (char *) zero_buf,
count * sizeof(struct ea))) {
- (void) memset((char *) &ea_buf[baddr], 0,
+ (void) memset((char *) &h3270.ea_buf[baddr], 0,
count * sizeof(struct ea));
REGION_CHANGED(baddr, baddr + count);
- /*
- if (area_is_selected(baddr, count))
- unselect(baddr, count);
- */
}
/* XXX: What about clear_ea? */
}
@@ -2604,10 +2579,10 @@ void ctlr_scroll(void)
/* Synchronize pending changes prior to this. */
/* Move ea_buf. */
- (void) memmove(&ea_buf[0], &ea_buf[h3270.cols],qty * sizeof(struct ea));
+ (void) memmove(&h3270.ea_buf[0], &h3270.ea_buf[h3270.cols],qty * sizeof(struct ea));
/* Clear the last line. */
- (void) memset((char *) &ea_buf[qty], 0, h3270.cols * sizeof(struct ea));
+ (void) memset((char *) &h3270.ea_buf[qty], 0, h3270.cols * sizeof(struct ea));
screen_disp(&h3270);
@@ -2646,8 +2621,8 @@ void ctlr_altbuffer(H3270 *session, int alt)
if (alt != session->is_altbuffer)
{
- etmp = ea_buf;
- ea_buf = aea_buf;
+ etmp = session->ea_buf;
+ session->ea_buf = aea_buf;
aea_buf = etmp;
session->is_altbuffer = alt;
@@ -2672,8 +2647,8 @@ mdt_set(int baddr)
int faddr;
faddr = find_field_attribute(&h3270,baddr);
- if (faddr >= 0 && !(ea_buf[faddr].fa & FA_MODIFY)) {
- ea_buf[faddr].fa |= FA_MODIFY;
+ if (faddr >= 0 && !(h3270.ea_buf[faddr].fa & FA_MODIFY)) {
+ h3270.ea_buf[faddr].fa |= FA_MODIFY;
if (appres.modified_sel)
ALL_CHANGED;
}
@@ -2685,8 +2660,8 @@ mdt_clear(int baddr)
int faddr;
faddr = find_field_attribute(&h3270,baddr);
- if (faddr >= 0 && (ea_buf[faddr].fa & FA_MODIFY)) {
- ea_buf[faddr].fa &= ~FA_MODIFY;
+ if (faddr >= 0 && (h3270.ea_buf[faddr].fa & FA_MODIFY)) {
+ h3270.ea_buf[faddr].fa &= ~FA_MODIFY;
if (appres.modified_sel)
ALL_CHANGED;
}
@@ -2702,9 +2677,8 @@ ctlr_shrink(void)
int baddr;
for (baddr = 0; baddr < h3270.rows*h3270.cols; baddr++) {
- if (!ea_buf[baddr].fa)
- ea_buf[baddr].cc =
- visible_control? EBC_space : EBC_null;
+ if (!h3270.ea_buf[baddr].fa)
+ h3270.ea_buf[baddr].cc = visible_control? EBC_space : EBC_null;
}
ALL_CHANGED;
screen_disp(&h3270);
diff --git a/src/lib3270/ft_cut.c b/src/lib3270/ft_cut.c
index 0bb4e1b..3ed1cb4 100644
--- a/src/lib3270/ft_cut.c
+++ b/src/lib3270/ft_cut.c
@@ -276,7 +276,7 @@ download_convert(unsigned const char *buf, unsigned len, unsigned char *xobuf)
void
ft_cut_data(void)
{
- switch (ea_buf[O_FRAME_TYPE].cc) {
+ switch (h3270.ea_buf[O_FRAME_TYPE].cc) {
case FT_CONTROL_CODE:
cut_control_code();
break;
@@ -308,8 +308,7 @@ cut_control_code(void)
int i;
trace_ds("< FT CONTROL_CODE ");
- code = (ea_buf[O_CC_STATUS_CODE].cc << 8) |
- ea_buf[O_CC_STATUS_CODE + 1].cc;
+ code = (h3270.ea_buf[O_CC_STATUS_CODE].cc << 8) | h3270.ea_buf[O_CC_STATUS_CODE + 1].cc;
switch (code) {
case SC_HOST_ACK:
trace_ds("HOST_ACK\n");
@@ -338,7 +337,7 @@ cut_control_code(void)
} else {
bp = buf = Malloc(81);
for (i = 0; i < 80; i++)
- *bp++ = ebc2asc[ea_buf[O_CC_MESSAGE + i].cc];
+ *bp++ = ebc2asc[h3270.ea_buf[O_CC_MESSAGE + i].cc];
*bp-- = '\0';
while (bp >= buf && *bp == ' ')
*bp-- = '\0';
@@ -365,7 +364,7 @@ cut_control_code(void)
static void
cut_data_request(void)
{
- unsigned char seq = ea_buf[O_DR_FRAME_SEQ].cc;
+ unsigned char seq = h3270.ea_buf[O_DR_FRAME_SEQ].cc;
int count;
unsigned char cs;
int c;
@@ -413,13 +412,13 @@ cut_data_request(void)
ctlr_add(O_UP_FRAME_SEQ, seq, 0);
cs = 0;
for (i = 0; i < count; i++)
- cs ^= ea_buf[O_UP_DATA + i].cc;
+ cs ^= h3270.ea_buf[O_UP_DATA + i].cc;
ctlr_add(O_UP_CSUM, asc2ebc[(int)table6[cs & 0x3f]], 0);
ctlr_add(O_UP_LEN, asc2ebc[(int)table6[(count >> 6) & 0x3f]], 0);
ctlr_add(O_UP_LEN+1, asc2ebc[(int)table6[count & 0x3f]], 0);
/* XXX: Change the data field attribute so it doesn't display. */
- attr = ea_buf[O_DR_SF].fa;
+ attr = h3270.ea_buf[O_DR_SF].fa;
attr = (attr & ~FA_INTENSITY) | FA_INT_ZERO_NSEL;
ctlr_add_fa(O_DR_SF, attr, 0);
@@ -474,14 +473,14 @@ cut_data(void)
}
/* Copy and convert the data. */
- raw_length = from6(ea_buf[O_DT_LEN].cc) << 6 |
- from6(ea_buf[O_DT_LEN + 1].cc);
+ raw_length = from6(h3270.ea_buf[O_DT_LEN].cc) << 6 |
+ from6(h3270.ea_buf[O_DT_LEN + 1].cc);
if ((int)raw_length > O_RESPONSE - O_DT_DATA) {
cut_abort(MSG_("ftCutOversize","Illegal frame length"), SC_ABORT_XMIT);
return;
}
for (i = 0; i < (int)raw_length; i++)
- cvbuf[i] = ea_buf[O_DT_DATA + i].cc;
+ cvbuf[i] = h3270.ea_buf[O_DT_DATA + i].cc;
if (raw_length == 2 && cvbuf[0] == EOF_DATA1 && cvbuf[1] == EOF_DATA2) {
trace_ds("< FT EOF\n");
@@ -527,7 +526,7 @@ cut_abort(const char *s, unsigned short reason)
/* Send the abort sequence. */
ctlr_add(RO_FRAME_TYPE, RFT_CONTROL_CODE, 0);
- ctlr_add(RO_FRAME_SEQ, ea_buf[O_DT_FRAME_SEQ].cc, 0);
+ ctlr_add(RO_FRAME_SEQ, h3270.ea_buf[O_DT_FRAME_SEQ].cc, 0);
ctlr_add(RO_REASON_CODE, HIGH8(reason), 0);
ctlr_add(RO_REASON_CODE+1, LOW8(reason), 0);
trace_ds("> FT CONTROL_CODE ABORT\n");
diff --git a/src/lib3270/kybd.c b/src/lib3270/kybd.c
index 7ab3ed2..f65d668 100644
--- a/src/lib3270/kybd.c
+++ b/src/lib3270/kybd.c
@@ -639,7 +639,7 @@ static Boolean ins_prep(int faddr, int baddr, int count)
} else {
next_faddr = faddr;
INC_BA(next_faddr);
- while (next_faddr != faddr && !ea_buf[next_faddr].fa) {
+ while (next_faddr != faddr && !h3270.ea_buf[next_faddr].fa) {
INC_BA(next_faddr);
}
}
@@ -649,11 +649,11 @@ static Boolean ins_prep(int faddr, int baddr, int count)
need = count;
ntb = 0;
while (need && (xaddr != next_faddr)) {
- if (ea_buf[xaddr].cc == EBC_null)
+ if (h3270.ea_buf[xaddr].cc == EBC_null)
need--;
else if (toggled(LIB3270_TOGGLE_BLANK_FILL) &&
- ((ea_buf[xaddr].cc == EBC_space) ||
- (ea_buf[xaddr].cc == EBC_underscore))) {
+ ((h3270.ea_buf[xaddr].cc == EBC_space) ||
+ (h3270.ea_buf[xaddr].cc == EBC_underscore))) {
if (tb_start == -1)
tb_start = xaddr;
ntb++;
@@ -682,7 +682,7 @@ static Boolean ins_prep(int faddr, int baddr, int count)
int first_null = -1;
while (need &&
- ((ea_buf[xaddr].cc == EBC_null) ||
+ ((h3270.ea_buf[xaddr].cc == EBC_null) ||
(tb_start >= 0 && xaddr >= tb_start))) {
need--;
n_nulls++;
@@ -768,7 +768,7 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped)
baddr = h3270.cursor_addr;
faddr = find_field_attribute(&h3270,baddr);
fa = get_field_attribute(&h3270,baddr);
- if (ea_buf[baddr].fa || FA_IS_PROTECTED(fa)) {
+ if (h3270.ea_buf[baddr].fa || FA_IS_PROTECTED(fa)) {
operator_error(KL_OERR_PROTECTED);
return False;
}
@@ -780,13 +780,13 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped)
}
/* Can't put an SBCS in a DBCS field. */
- if (ea_buf[faddr].cs == CS_DBCS) {
+ if (h3270.ea_buf[faddr].cs == CS_DBCS) {
operator_error(KL_OERR_DBCS);
return False;
}
/* If it's an SI (end of DBCS subfield), move over one position. */
- if (ea_buf[baddr].cc == EBC_si) {
+ if (h3270.ea_buf[baddr].cc == EBC_si) {
INC_BA(baddr);
if (baddr == faddr) {
operator_error(KL_OERR_OVERFLOW);
@@ -795,7 +795,7 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped)
}
/* Add the character. */
- if (ea_buf[baddr].cc == EBC_so) {
+ if (h3270.ea_buf[baddr].cc == EBC_so) {
if (toggled(INSERT)) {
if (!ins_prep(faddr, baddr, 1))
@@ -812,7 +812,7 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped)
*/
xaddr = baddr;
INC_BA(xaddr);
- was_si = (ea_buf[xaddr].cc == EBC_si);
+ was_si = (h3270.ea_buf[xaddr].cc == EBC_si);
ctlr_add(xaddr, EBC_space, CS_BASE);
ctlr_add_fg(xaddr, 0);
#if defined(X3270_ANSI) /*[*/
@@ -935,7 +935,7 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped)
* for NULLs.
*/
while (baddr_scan != faddr) {
- if (ea_buf[baddr_scan].cc != EBC_null) {
+ if (h3270.ea_buf[baddr_scan].cc != EBC_null) {
aborted = False;
break;
}
@@ -947,7 +947,7 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped)
break;
}
- if (ea_buf[baddr_fill].cc == EBC_null)
+ if (h3270.ea_buf[baddr_fill].cc == EBC_null)
ctlr_add(baddr_fill, EBC_space, 0);
DEC_BA(baddr_fill);
}
@@ -961,10 +961,10 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped)
* keyboard-generated data except DUP.
*/
if (pasting || (code != EBC_dup)) {
- while (ea_buf[baddr].fa) {
+ while (h3270.ea_buf[baddr].fa) {
if (skipped != NULL)
*skipped = True;
- if (FA_IS_SKIP(ea_buf[baddr].fa))
+ if (FA_IS_SKIP(h3270.ea_buf[baddr].fa))
baddr = next_unprotected(baddr);
else
INC_BA(baddr);
@@ -1463,15 +1463,15 @@ LIB3270_KEY_ACTION( backtab )
return 0;
baddr = h3270.cursor_addr;
DEC_BA(baddr);
- if (ea_buf[baddr].fa) /* at bof */
+ if (h3270.ea_buf[baddr].fa) /* at bof */
DEC_BA(baddr);
sbaddr = baddr;
while (True) {
nbaddr = baddr;
INC_BA(nbaddr);
- if (ea_buf[baddr].fa &&
- !FA_IS_PROTECTED(ea_buf[baddr].fa) &&
- !ea_buf[nbaddr].fa)
+ if (h3270.ea_buf[baddr].fa &&
+ !FA_IS_PROTECTED(h3270.ea_buf[baddr].fa) &&
+ !h3270.ea_buf[nbaddr].fa)
break;
DEC_BA(baddr);
if (baddr == sbaddr) {
@@ -1685,25 +1685,25 @@ do_delete(void)
/* Can't delete a field attribute. */
fa = get_field_attribute(&h3270,baddr);
- if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa) {
+ if (FA_IS_PROTECTED(fa) || h3270.ea_buf[baddr].fa) {
operator_error(KL_OERR_PROTECTED);
return False;
}
- if (ea_buf[baddr].cc == EBC_so || ea_buf[baddr].cc == EBC_si) {
+ if (h3270.ea_buf[baddr].cc == EBC_so || h3270.ea_buf[baddr].cc == EBC_si) {
/*
* Can't delete SO or SI, unless it's adjacent to its
* opposite.
*/
xaddr = baddr;
INC_BA(xaddr);
- if (ea_buf[xaddr].cc == SOSI(ea_buf[baddr].cc)) {
+ if (h3270.ea_buf[xaddr].cc == SOSI(h3270.ea_buf[baddr].cc)) {
ndel = 2;
} else {
operator_error(KL_OERR_PROTECTED);
return False;
}
- } else if (IS_DBCS(ea_buf[baddr].db)) {
- if (IS_RIGHT(ea_buf[baddr].db))
+ } else if (IS_DBCS(h3270.ea_buf[baddr].db)) {
+ if (IS_RIGHT(h3270.ea_buf[baddr].db))
DEC_BA(baddr);
ndel = 2;
} else
@@ -1714,7 +1714,7 @@ do_delete(void)
end_baddr = baddr;
do {
INC_BA(end_baddr);
- if (ea_buf[end_baddr].fa)
+ if (h3270.ea_buf[end_baddr].fa)
break;
} while (end_baddr != baddr);
DEC_BA(end_baddr);
@@ -1768,7 +1768,7 @@ LIB3270_ACTION( delete )
int baddr = hSession->cursor_addr;
DEC_BA(baddr);
- if (!ea_buf[baddr].fa)
+ if (!hSession->ea_buf[baddr].fa)
cursor_move(baddr);
}
screen_disp(hSession);
@@ -1819,7 +1819,7 @@ do_erase(void)
baddr = h3270.cursor_addr;
faddr = find_field_attribute(&h3270,baddr);
- if (faddr == baddr || FA_IS_PROTECTED(ea_buf[baddr].fa)) {
+ if (faddr == baddr || FA_IS_PROTECTED(h3270.ea_buf[baddr].fa)) {
operator_error(KL_OERR_PROTECTED);
return;
}
@@ -1830,7 +1830,7 @@ do_erase(void)
/*
* If we are now on an SI, move left again.
*/
- if (ea_buf[h3270.cursor_addr].cc == EBC_si) {
+ if (h3270.ea_buf[h3270.cursor_addr].cc == EBC_si) {
baddr = h3270.cursor_addr;
DEC_BA(baddr);
cursor_move(baddr);
@@ -1861,7 +1861,7 @@ do_erase(void)
*/
baddr = h3270.cursor_addr;
DEC_BA(baddr);
- if (ea_buf[baddr].cc == EBC_so && ea_buf[h3270.cursor_addr].cc == EBC_si) {
+ if (h3270.ea_buf[baddr].cc == EBC_so && h3270.ea_buf[h3270.cursor_addr].cc == EBC_si) {
cursor_move(baddr);
(void) do_delete();
}
@@ -1994,20 +1994,20 @@ LIB3270_ACTION( previousword )
/* Skip to before this word, if in one now. */
if (!prot) {
- c = ea_buf[baddr].cc;
- while (!ea_buf[baddr].fa && c != EBC_space && c != EBC_null) {
+ c = h3270.ea_buf[baddr].cc;
+ while (!h3270.ea_buf[baddr].fa && c != EBC_space && c != EBC_null) {
DEC_BA(baddr);
if (baddr == h3270.cursor_addr)
return 0;
- c = ea_buf[baddr].cc;
+ c = h3270.ea_buf[baddr].cc;
}
}
baddr0 = baddr;
/* Find the end of the preceding word. */
do {
- c = ea_buf[baddr].cc;
- if (ea_buf[baddr].fa) {
+ c = h3270.ea_buf[baddr].cc;
+ if (h3270.ea_buf[baddr].fa) {
DEC_BA(baddr);
prot = FA_IS_PROTECTED(get_field_attribute(&h3270,baddr));
continue;
@@ -2023,8 +2023,8 @@ LIB3270_ACTION( previousword )
/* Go it its front. */
for (;;) {
DEC_BA(baddr);
- c = ea_buf[baddr].cc;
- if (ea_buf[baddr].fa || c == EBC_space || c == EBC_null) {
+ c = h3270.ea_buf[baddr].cc;
+ if (h3270.ea_buf[baddr].fa || c == EBC_space || c == EBC_null) {
break;
}
}
@@ -2082,9 +2082,9 @@ nu_word(int baddr)
prot = FA_IS_PROTECTED(get_field_attribute(&h3270,baddr));
do {
- c = ea_buf[baddr].cc;
- if (ea_buf[baddr].fa)
- prot = FA_IS_PROTECTED(ea_buf[baddr].fa);
+ c = h3270.ea_buf[baddr].cc;
+ if (h3270.ea_buf[baddr].fa)
+ prot = FA_IS_PROTECTED(h3270.ea_buf[baddr].fa);
else if (!prot && c != EBC_space && c != EBC_null)
return baddr;
INC_BA(baddr);
@@ -2102,8 +2102,8 @@ nt_word(int baddr)
Boolean in_word = True;
do {
- c = ea_buf[baddr].cc;
- if (ea_buf[baddr].fa)
+ c = h3270.ea_buf[baddr].cc;
+ if (h3270.ea_buf[baddr].fa)
return -1;
if (in_word) {
if (c == EBC_space || c == EBC_null)
@@ -2141,7 +2141,7 @@ LIB3270_ACTION( nextword )
return 0;
/* If not in an unprotected field, go to the next unprotected word. */
- if (ea_buf[h3270.cursor_addr].fa ||
+ if (h3270.ea_buf[h3270.cursor_addr].fa ||
FA_IS_PROTECTED(get_field_attribute(&h3270,h3270.cursor_addr))) {
baddr = nu_word(h3270.cursor_addr);
if (baddr != -1)
@@ -2157,15 +2157,15 @@ LIB3270_ACTION( nextword )
}
/* If in a word, go to just after its end. */
- c = ea_buf[h3270.cursor_addr].cc;
+ c = h3270.ea_buf[h3270.cursor_addr].cc;
if (c != EBC_space && c != EBC_null) {
baddr = h3270.cursor_addr;
do {
- c = ea_buf[baddr].cc;
+ c = h3270.ea_buf[baddr].cc;
if (c == EBC_space || c == EBC_null) {
cursor_move(baddr);
return 0;
- } else if (ea_buf[baddr].fa) {
+ } else if (h3270.ea_buf[baddr].fa) {
baddr = nu_word(baddr);
if (baddr != -1)
cursor_move(baddr);
@@ -2304,7 +2304,7 @@ LIB3270_CURSOR_ACTION( newline )
baddr = (h3270.cursor_addr + h3270.cols) % (h3270.cols * h3270.rows); /* down */
baddr = (baddr / h3270.cols) * h3270.cols; /* 1st col */
faddr = find_field_attribute(&h3270,baddr);
- fa = ea_buf[faddr].fa;
+ fa = h3270.ea_buf[faddr].fa;
if (faddr != baddr && !FA_IS_PROTECTED(fa))
cursor_move(baddr);
else
@@ -2559,7 +2559,7 @@ LIB3270_ACTION( eraseeol )
baddr = h3270.cursor_addr;
fa = get_field_attribute(&h3270,baddr);
- if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa)
+ if (FA_IS_PROTECTED(fa) || h3270.ea_buf[baddr].fa)
{
operator_error(KL_OERR_PROTECTED);
return -1;
@@ -2572,7 +2572,7 @@ LIB3270_ACTION( eraseeol )
{
ctlr_add(baddr, EBC_null, 0);
INC_BA(baddr);
- } while (!ea_buf[baddr].fa && BA_TO_COL(baddr) > 0);
+ } while (!h3270.ea_buf[baddr].fa && BA_TO_COL(baddr) > 0);
mdt_set(h3270.cursor_addr);
}
@@ -2592,9 +2592,9 @@ LIB3270_ACTION( eraseeol )
if (d == DBCS_RIGHT) {
baddr = h3270.cursor_addr;
DEC_BA(baddr);
- ea_buf[baddr].cc = EBC_si;
+ h3270.ea_buf[baddr].cc = EBC_si;
} else
- ea_buf[h3270.cursor_addr].cc = EBC_si;
+ h3270.ea_buf[h3270.cursor_addr].cc = EBC_si;
}
(void) ctlr_dbcs_postprocess();
screen_disp(&h3270);
@@ -2624,7 +2624,7 @@ LIB3270_ACTION( eraseeof )
#endif /*]*/
baddr = hSession->cursor_addr;
fa = get_field_attribute(hSession,baddr);
- if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa) {
+ if (FA_IS_PROTECTED(fa) || h3270.ea_buf[baddr].fa) {
operator_error(KL_OERR_PROTECTED);
return -1;
}
@@ -2632,7 +2632,7 @@ LIB3270_ACTION( eraseeof )
do {
ctlr_add(baddr, EBC_null, 0);
INC_BA(baddr);
- } while (!ea_buf[baddr].fa);
+ } while (!h3270.ea_buf[baddr].fa);
mdt_set(hSession->cursor_addr);
} else { /* erase to end of screen */
do {
@@ -2647,9 +2647,9 @@ LIB3270_ACTION( eraseeof )
if (d == DBCS_RIGHT) {
baddr = hSession->cursor_addr;
DEC_BA(baddr);
- ea_buf[baddr].cc = EBC_si;
+ h3270.ea_buf[baddr].cc = EBC_si;
} else
- ea_buf[hSession->cursor_addr].cc = EBC_si;
+ h3270.ea_buf[hSession->cursor_addr].cc = EBC_si;
}
(void) ctlr_dbcs_postprocess();
screen_disp(hSession);
@@ -2675,14 +2675,14 @@ LIB3270_ACTION( eraseinput )
/* find first field attribute */
baddr = 0;
do {
- if (ea_buf[baddr].fa)
+ if (h3270.ea_buf[baddr].fa)
break;
INC_BA(baddr);
} while (baddr != 0);
sbaddr = baddr;
f = False;
do {
- fa = ea_buf[baddr].fa;
+ fa = h3270.ea_buf[baddr].fa;
if (!FA_IS_PROTECTED(fa)) {
mdt_clear(baddr);
do {
@@ -2691,14 +2691,14 @@ LIB3270_ACTION( eraseinput )
cursor_move(baddr);
f = True;
}
- if (!ea_buf[baddr].fa) {
+ if (!h3270.ea_buf[baddr].fa) {
ctlr_add(baddr, EBC_null, 0);
}
- } while (!ea_buf[baddr].fa);
+ } while (!h3270.ea_buf[baddr].fa);
} else { /* skip protected */
do {
INC_BA(baddr);
- } while (!ea_buf[baddr].fa);
+ } while (!h3270.ea_buf[baddr].fa);
}
} while (baddr != sbaddr);
if (!f)
@@ -2744,7 +2744,7 @@ LIB3270_ACTION( deleteword )
fa = get_field_attribute(hSession,baddr);
/* Make sure we're on a modifiable field. */
- if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa) {
+ if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) {
operator_error(KL_OERR_PROTECTED);
return -1;
}
@@ -2753,10 +2753,10 @@ LIB3270_ACTION( deleteword )
for (;;) {
baddr = hSession->cursor_addr;
DEC_BA(baddr);
- if (ea_buf[baddr].fa)
+ if (hSession->ea_buf[baddr].fa)
return 0;
- if (ea_buf[baddr].cc == EBC_null ||
- ea_buf[baddr].cc == EBC_space)
+ if (hSession->ea_buf[baddr].cc == EBC_null ||
+ hSession->ea_buf[baddr].cc == EBC_space)
do_erase();
else
break;
@@ -2766,10 +2766,10 @@ LIB3270_ACTION( deleteword )
for (;;) {
baddr = hSession->cursor_addr;
DEC_BA(baddr);
- if (ea_buf[baddr].fa)
+ if (hSession->ea_buf[baddr].fa)
return 0;
- if (ea_buf[baddr].cc == EBC_null ||
- ea_buf[baddr].cc == EBC_space)
+ if (hSession->ea_buf[baddr].cc == EBC_null ||
+ hSession->ea_buf[baddr].cc == EBC_space)
break;
else
do_erase();
@@ -2809,16 +2809,16 @@ LIB3270_ACTION( deletefield )
baddr = hSession->cursor_addr;
fa = get_field_attribute(hSession,baddr);
- if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa) {
+ if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) {
operator_error(KL_OERR_PROTECTED);
return -1;
}
- while (!ea_buf[baddr].fa)
+ while (!hSession->ea_buf[baddr].fa)
DEC_BA(baddr);
INC_BA(baddr);
mdt_set(hSession->cursor_addr);
cursor_move(baddr);
- while (!ea_buf[baddr].fa) {
+ while (!hSession->ea_buf[baddr].fa) {
ctlr_add(baddr, EBC_null, 0);
INC_BA(baddr);
}
@@ -2912,15 +2912,15 @@ LIB3270_ACTION( fieldend )
return 0;
baddr = hSession->cursor_addr;
faddr = find_field_attribute(hSession,baddr);
- fa = ea_buf[faddr].fa;
+ fa = hSession->ea_buf[faddr].fa;
if (faddr == baddr || FA_IS_PROTECTED(fa))
return 0;
baddr = faddr;
while (True) {
INC_BA(baddr);
- c = ea_buf[baddr].cc;
- if (ea_buf[baddr].fa)
+ c = hSession->ea_buf[baddr].cc;
+ if (hSession->ea_buf[baddr].fa)
break;
if (c != EBC_null && c != EBC_space)
last_nonblank = baddr;
@@ -2932,7 +2932,7 @@ LIB3270_ACTION( fieldend )
} else {
baddr = last_nonblank;
INC_BA(baddr);
- if (ea_buf[baddr].fa)
+ if (h3270.ea_buf[baddr].fa)
baddr = last_nonblank;
}
cursor_move(baddr);
@@ -2997,7 +2997,7 @@ remargin(int lmargin)
ever = True;
}
faddr = find_field_attribute(&h3270,baddr);
- fa = ea_buf[faddr].fa;
+ fa = h3270.ea_buf[faddr].fa;
if (faddr == baddr || FA_IS_PROTECTED(fa)) {
baddr = next_unprotected(baddr);
if (baddr <= b0)
@@ -3523,7 +3523,7 @@ kybd_prime(void)
return 0;
fa = get_field_attribute(&h3270,h3270.cursor_addr);
- if (ea_buf[h3270.cursor_addr].fa || FA_IS_PROTECTED(fa)) {
+ if (h3270.ea_buf[h3270.cursor_addr].fa || FA_IS_PROTECTED(fa)) {
/*
* The cursor is not in an unprotected field. Find the
* next one.
@@ -3538,7 +3538,7 @@ kybd_prime(void)
} else {
/* Already in an unprotected field. Find its start. */
baddr = h3270.cursor_addr;
- while (!ea_buf[baddr].fa) {
+ while (!h3270.ea_buf[baddr].fa) {
DEC_BA(baddr);
}
INC_BA(baddr);
@@ -3548,7 +3548,7 @@ kybd_prime(void)
cursor_move(baddr);
/* Erase it. */
- while (!ea_buf[baddr].fa) {
+ while (!h3270.ea_buf[baddr].fa) {
ctlr_add(baddr, 0, 0);
len++;
INC_BA(baddr);
diff --git a/src/lib3270/paste.c b/src/lib3270/paste.c
index 1620f75..0a77d48 100644
--- a/src/lib3270/paste.c
+++ b/src/lib3270/paste.c
@@ -112,7 +112,7 @@
}
faddr = find_field_attribute(&h3270,baddr);
- fa = ea_buf[faddr].fa;
+ fa = h3270.ea_buf[faddr].fa;
if (faddr == baddr || FA_IS_PROTECTED(fa))
{
baddr = next_unprotected(baddr);
@@ -133,7 +133,7 @@
if(toggled(SMART_PASTE))
{
int faddr = find_field_attribute(&h3270,h3270.cursor_addr);
- if(FA_IS_PROTECTED(ea_buf[faddr].fa))
+ if(FA_IS_PROTECTED(h3270.ea_buf[faddr].fa))
h3270.cursor_addr++;
else
key_ACharacter(c, KT_STD, IA_PASTE, NULL);
@@ -191,7 +191,7 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str)
baddr = (h->cursor_addr + h->cols) % (h->cols * h->rows); /* down */
baddr = (baddr / h->cols) * h->cols; /* 1st col */
faddr = find_field_attribute(h,baddr);
- fa = ea_buf[faddr].fa;
+ fa = h3270.ea_buf[faddr].fa;
if (faddr != baddr && !FA_IS_PROTECTED(fa))
cursor_move(baddr);
else
diff --git a/src/lib3270/print.c b/src/lib3270/print.c
index 05ad941..85c46d0 100644
--- a/src/lib3270/print.c
+++ b/src/lib3270/print.c
@@ -151,7 +151,7 @@ fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
int nr = 0;
Boolean any = False;
int fa_addr = find_field_attribute(&h3270,0);
- unsigned char fa = ea_buf[fa_addr].fa;
+ unsigned char fa = h3270.ea_buf[fa_addr].fa;
int fa_color, current_color;
Bool fa_high, current_high;
@@ -159,13 +159,13 @@ fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
even_if_empty = True;
}
- if (ea_buf[fa_addr].fg)
- fa_color = ea_buf[fa_addr].fg & 0x0f;
+ if (h3270.ea_buf[fa_addr].fg)
+ fa_color = h3270.ea_buf[fa_addr].fg & 0x0f;
else
fa_color = color_from_fa(fa);
current_color = fa_color;
- if (ea_buf[fa_addr].gr & GR_INTENSIFY)
+ if (h3270.ea_buf[fa_addr].gr & GR_INTENSIFY)
fa_high = True;
else
fa_high = FA_IS_HIGH(fa);
@@ -181,14 +181,14 @@ fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
nr++;
ns = 0;
}
- if (ea_buf[i].fa) {
+ if (h3270.ea_buf[i].fa) {
c = ' ';
- fa = ea_buf[i].fa;
- if (ea_buf[i].fg)
- fa_color = ea_buf[i].fg & 0x0f;
+ fa = h3270.ea_buf[i].fa;
+ if (h3270.ea_buf[i].fg)
+ fa_color = h3270.ea_buf[i].fg & 0x0f;
else
fa_color = color_from_fa(fa);
- if (ea_buf[i].gr & GR_INTENSIFY)
+ if (h3270.ea_buf[i].gr & GR_INTENSIFY)
fa_high = True;
else
fa_high = FA_IS_HIGH(fa);
@@ -215,7 +215,7 @@ fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
}
#else /*][*/
else
- c = ebc2asc[ea_buf[i].cc];
+ c = ebc2asc[h3270.ea_buf[i].cc];
#endif /*]*/
if (c == ' ')
ns++;
@@ -232,8 +232,8 @@ fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
int color;
Bool high;
- if (ea_buf[i].fg)
- color = ea_buf[i].fg & 0x0f;
+ if (h3270.ea_buf[i].fg)
+ color = h3270.ea_buf[i].fg & 0x0f;
else
color = fa_color;
if (color != current_color) {
@@ -242,7 +242,7 @@ fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
html_color(color));
current_color = color;
}
- if (ea_buf[i].gr & GR_INTENSIFY)
+ if (h3270.ea_buf[i].gr & GR_INTENSIFY)
high = True;
else
high = fa_high;
diff --git a/src/lib3270/screen.c b/src/lib3270/screen.c
index c48aeff..d7cae08 100644
--- a/src/lib3270/screen.c
+++ b/src/lib3270/screen.c
@@ -99,12 +99,12 @@ void set_display_charset(char *dcs)
static void addch(H3270 *session, int baddr, unsigned char c, unsigned short attr)
{
- if(ea_buf[baddr].chr == c && ea_buf[baddr].attr == attr)
+ if(session->ea_buf[baddr].chr == c && session->ea_buf[baddr].attr == attr)
return;
/* Converted char has changed, update it */
- ea_buf[baddr].chr = c;
- ea_buf[baddr].attr = attr;
+ session->ea_buf[baddr].chr = c;
+ session->ea_buf[baddr].attr = attr;
if(session->update)
session->update(session,baddr,c,attr,baddr == session->cursor_addr);
@@ -161,10 +161,10 @@ static unsigned short calc_attrs(int baddr, int fa_addr, int fa)
/* Monochrome is easy, and so is color if nothing is specified. */
if (!appres.m3279 ||
- (!ea_buf[baddr].fg &&
- !ea_buf[fa_addr].fg &&
- !ea_buf[baddr].bg &&
- !ea_buf[fa_addr].bg))
+ (!h3270.ea_buf[baddr].fg &&
+ !h3270.ea_buf[fa_addr].fg &&
+ !h3270.ea_buf[baddr].bg &&
+ !h3270.ea_buf[fa_addr].bg))
{
a = color_from_fa(fa);
}
@@ -172,23 +172,23 @@ static unsigned short calc_attrs(int baddr, int fa_addr, int fa)
{
/* The current location or the fa specifies the fg or bg. */
- if (ea_buf[baddr].fg)
+ if (h3270.ea_buf[baddr].fg)
{
- fg = ea_buf[baddr].fg & 0x0f;
+ fg = h3270.ea_buf[baddr].fg & 0x0f;
}
- else if (ea_buf[fa_addr].fg)
+ else if (h3270.ea_buf[fa_addr].fg)
{
- fg = ea_buf[fa_addr].fg & 0x0f;
+ fg = h3270.ea_buf[fa_addr].fg & 0x0f;
}
else
{
fg = DEFCOLOR_MAP(fa);
}
- if (ea_buf[baddr].bg)
- bg = ea_buf[baddr].bg & 0x0f;
- else if (ea_buf[fa_addr].bg)
- bg = ea_buf[fa_addr].bg & 0x0f;
+ if (h3270.ea_buf[baddr].bg)
+ bg = h3270.ea_buf[baddr].bg & 0x0f;
+ else if (h3270.ea_buf[fa_addr].bg)
+ bg = h3270.ea_buf[fa_addr].bg & 0x0f;
else
bg = 0;
@@ -197,10 +197,10 @@ static unsigned short calc_attrs(int baddr, int fa_addr, int fa)
/* Compute the display attributes. */
- if (ea_buf[baddr].gr)
- gr = ea_buf[baddr].gr;
- else if (ea_buf[fa_addr].gr)
- gr = ea_buf[fa_addr].gr;
+ if (h3270.ea_buf[baddr].gr)
+ gr = h3270.ea_buf[baddr].gr;
+ else if (h3270.ea_buf[fa_addr].gr)
+ gr = h3270.ea_buf[fa_addr].gr;
else
gr = 0;
@@ -271,8 +271,8 @@ LIB3270_EXPORT int lib3270_get_contents(H3270 *h, int first, int last, unsigned
for(baddr = first; baddr <= last;baddr++)
{
- *(chr++) = ea_buf[baddr].chr ? ea_buf[baddr].chr : ' ';
- *(attr++) = ea_buf[baddr].attr;
+ *(chr++) = h3270.ea_buf[baddr].chr ? h3270.ea_buf[baddr].chr : ' ';
+ *(attr++) = h3270.ea_buf[baddr].attr;
}
return 0;
@@ -294,13 +294,13 @@ int screen_read(char *dest, int baddr, int count)
return EFAULT;
}
- if (ea_buf[baddr].fa)
- fa = ea_buf[baddr].fa;
+ if (h3270.ea_buf[baddr].fa)
+ fa = h3270.ea_buf[baddr].fa;
if(FA_IS_ZERO(fa))
*dest = ' ';
- else if(ea_buf[baddr].cc)
- *dest = ebc2asc[ea_buf[baddr].cc];
+ else if(h3270.ea_buf[baddr].cc)
+ *dest = ebc2asc[h3270.ea_buf[baddr].cc];
else
*dest = ' ';
@@ -329,11 +329,11 @@ static void screen_update(H3270 *session, int bstart, int bend)
for(baddr = bstart; baddr < bend; baddr++)
{
- if(ea_buf[baddr].fa)
+ if(session->ea_buf[baddr].fa)
{
// Field attribute.
fa_addr = baddr;
- fa = ea_buf[baddr].fa;
+ fa = session->ea_buf[baddr].fa;
a = calc_attrs(baddr, baddr, fa);
addch(session,baddr,' ',(attr = COLOR_GREEN)|CHAR_ATTR_MARKER);
}
@@ -345,7 +345,7 @@ static void screen_update(H3270 *session, int bstart, int bend)
else
{
// Normal text.
- if (!(ea_buf[baddr].gr || ea_buf[baddr].fg || ea_buf[baddr].bg))
+ if (!(session->ea_buf[baddr].gr || session->ea_buf[baddr].fg || session->ea_buf[baddr].bg))
{
attr = a;
}
@@ -361,20 +361,20 @@ static void screen_update(H3270 *session, int bstart, int bend)
attr = calc_attrs(baddr, fa_addr, fa);
}
- if (ea_buf[baddr].cs == CS_LINEDRAW)
+ if (session->ea_buf[baddr].cs == CS_LINEDRAW)
{
- addch(session,baddr,ea_buf[baddr].cc,attr);
+ addch(session,baddr,session->ea_buf[baddr].cc,attr);
}
- else if (ea_buf[baddr].cs == CS_APL || (ea_buf[baddr].cs & CS_GE))
+ else if (session->ea_buf[baddr].cs == CS_APL || (session->ea_buf[baddr].cs & CS_GE))
{
- addch(session,baddr,ea_buf[baddr].cc,attr|CHAR_ATTR_CG);
+ addch(session,baddr,session->ea_buf[baddr].cc,attr|CHAR_ATTR_CG);
}
else
{
if (toggled(MONOCASE))
- addch(session,baddr,asc2uc[ebc2asc[ea_buf[baddr].cc]],attr);
+ addch(session,baddr,asc2uc[ebc2asc[session->ea_buf[baddr].cc]],attr);
else
- addch(session,baddr,ebc2asc[ea_buf[baddr].cc],attr);
+ addch(session,baddr,ebc2asc[session->ea_buf[baddr].cc],attr);
}
}
@@ -419,7 +419,7 @@ LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *h, int baddr)
h->cursor_addr = baddr;
if(h->update_cursor)
- h->update_cursor(h,(unsigned short) (baddr/h->cols),(unsigned short) (baddr%h->cols),ea_buf[baddr].chr,ea_buf[baddr].attr);
+ h->update_cursor(h,(unsigned short) (baddr/h->cols),(unsigned short) (baddr%h->cols),h->ea_buf[baddr].chr,h->ea_buf[baddr].attr);
return ret;
}
@@ -778,10 +778,10 @@ LIB3270_ACTION( testpattern )
}
pos = 0;
}
- ea_buf[f].fg = fg;
- ea_buf[f].bg = (fg == COLOR_BLACK) ? COLOR_WHITE : COLOR_BLACK;
- ea_buf[f].cs = pat[row].cs;
- ea_buf[f].cc = pat[row].cc[pos++];
+ hSession->ea_buf[f].fg = fg;
+ hSession->ea_buf[f].bg = (fg == COLOR_BLACK) ? COLOR_WHITE : COLOR_BLACK;
+ hSession->ea_buf[f].cs = pat[row].cs;
+ hSession->ea_buf[f].cc = pat[row].cc[pos++];
}
Trace("%s display",__FUNCTION__);
diff --git a/src/lib3270/selection.c b/src/lib3270/selection.c
index e2c23b0..9e67823 100644
--- a/src/lib3270/selection.c
+++ b/src/lib3270/selection.c
@@ -67,10 +67,10 @@ static void update_selected_rectangle(H3270 *session)
{
for(col = 0; col < session->cols;col++)
{
- if(!(row >= p[0].row && row <= p[1].row && col >= p[0].col && col <= p[1].col) && (ea_buf[baddr].attr & LIB3270_ATTR_SELECTED))
+ if(!(row >= p[0].row && row <= p[1].row && col >= p[0].col && col <= p[1].col) && (session->ea_buf[baddr].attr & LIB3270_ATTR_SELECTED))
{
- ea_buf[baddr].attr &= ~LIB3270_ATTR_SELECTED;
- session->update(session,baddr,ea_buf[baddr].chr,ea_buf[baddr].attr,baddr == session->cursor_addr);
+ session->ea_buf[baddr].attr &= ~LIB3270_ATTR_SELECTED;
+ session->update(session,baddr,session->ea_buf[baddr].chr,session->ea_buf[baddr].attr,baddr == session->cursor_addr);
}
baddr++;
}
@@ -82,10 +82,10 @@ static void update_selected_rectangle(H3270 *session)
{
for(col = 0; col < session->cols;col++)
{
- if((row >= p[0].row && row <= p[1].row && col >= p[0].col && col <= p[1].col) && !(ea_buf[baddr].attr & LIB3270_ATTR_SELECTED))
+ if((row >= p[0].row && row <= p[1].row && col >= p[0].col && col <= p[1].col) && !(session->ea_buf[baddr].attr & LIB3270_ATTR_SELECTED))
{
- ea_buf[baddr].attr |= LIB3270_ATTR_SELECTED;
- session->update(session,baddr,ea_buf[baddr].chr,ea_buf[baddr].attr,baddr == session->cursor_addr);
+ session->ea_buf[baddr].attr |= LIB3270_ATTR_SELECTED;
+ session->update(session,baddr,session->ea_buf[baddr].chr,session->ea_buf[baddr].attr,baddr == session->cursor_addr);
}
baddr++;
}
@@ -110,29 +110,29 @@ static void update_selected_region(H3270 *session)
// First remove unselected areas
for(baddr = 0; baddr < begin; baddr++)
{
- if(ea_buf[baddr].attr & LIB3270_ATTR_SELECTED)
+ if(session->ea_buf[baddr].attr & LIB3270_ATTR_SELECTED)
{
- ea_buf[baddr].attr &= ~LIB3270_ATTR_SELECTED;
- session->update(session,baddr,ea_buf[baddr].chr,ea_buf[baddr].attr,baddr == session->cursor_addr);
+ session->ea_buf[baddr].attr &= ~LIB3270_ATTR_SELECTED;
+ session->update(session,baddr,session->ea_buf[baddr].chr,session->ea_buf[baddr].attr,baddr == session->cursor_addr);
}
}
for(baddr = end+1; baddr < len; baddr++)
{
- if(ea_buf[baddr].attr & LIB3270_ATTR_SELECTED)
+ if(session->ea_buf[baddr].attr & LIB3270_ATTR_SELECTED)
{
- ea_buf[baddr].attr &= ~LIB3270_ATTR_SELECTED;
- session->update(session,baddr,ea_buf[baddr].chr,ea_buf[baddr].attr,baddr == session->cursor_addr);
+ session->ea_buf[baddr].attr &= ~LIB3270_ATTR_SELECTED;
+ session->update(session,baddr,session->ea_buf[baddr].chr,session->ea_buf[baddr].attr,baddr == session->cursor_addr);
}
}
// Then draw the selected ones
for(baddr = begin; baddr <= end; baddr++)
{
- if(!(ea_buf[baddr].attr & LIB3270_ATTR_SELECTED))
+ if(!(session->ea_buf[baddr].attr & LIB3270_ATTR_SELECTED))
{
- ea_buf[baddr].attr |= LIB3270_ATTR_SELECTED;
- session->update(session,baddr,ea_buf[baddr].chr,ea_buf[baddr].attr,baddr == session->cursor_addr);
+ session->ea_buf[baddr].attr |= LIB3270_ATTR_SELECTED;
+ session->update(session,baddr,session->ea_buf[baddr].chr,session->ea_buf[baddr].attr,baddr == session->cursor_addr);
}
}
@@ -173,22 +173,23 @@ LIB3270_ACTION(unselect)
CHECK_SESSION_HANDLE(hSession);
if(!hSession->selected)
- return;
+ return 0;
hSession->selected = 0;
for(a = 0; a < hSession->rows*hSession->cols; a++)
{
- if(ea_buf[a].attr & LIB3270_ATTR_SELECTED)
+ if(hSession->ea_buf[a].attr & LIB3270_ATTR_SELECTED)
{
- ea_buf[a].attr &= ~LIB3270_ATTR_SELECTED;
+ hSession->ea_buf[a].attr &= ~LIB3270_ATTR_SELECTED;
if(hSession->update)
- hSession->update(hSession,a,ea_buf[a].chr,ea_buf[a].attr,a == hSession->cursor_addr);
+ hSession->update(hSession,a,hSession->ea_buf[a].chr,hSession->ea_buf[a].attr,a == hSession->cursor_addr);
}
}
hSession->set_selection(hSession,0);
+ return 0;
}
LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr)
@@ -216,17 +217,17 @@ LIB3270_EXPORT void lib3270_select_word(H3270 *session, int baddr)
CHECK_SESSION_HANDLE(session);
- if(!lib3270_connected(session) || isspace(ea_buf[baddr].chr))
+ if(!lib3270_connected(session) || isspace(session->ea_buf[baddr].chr))
{
lib3270_ring_bell(session);
return;
}
- for(pos = baddr; pos > 0 && !isspace(ea_buf[pos].chr);pos--);
+ for(pos = baddr; pos > 0 && !isspace(session->ea_buf[pos].chr);pos--);
session->select.begin = pos > 0 ? pos+1 : 0;
len = session->rows * session->cols;
- for(pos = baddr; pos < len && !isspace(ea_buf[pos].chr);pos++);
+ for(pos = baddr; pos < len && !isspace(session->ea_buf[pos].chr);pos++);
session->select.end = pos < len ? pos-1 : len;
set_selected(session);
@@ -271,6 +272,7 @@ LIB3270_ACTION( selectfield )
{
CHECK_SESSION_HANDLE(hSession);
lib3270_select_field_at(hSession,hSession->cursor_addr);
+ return 0;
}
LIB3270_ACTION( selectall )
@@ -283,14 +285,16 @@ LIB3270_ACTION( selectall )
// First remove unselected areas
for(baddr = 0; baddr < len; baddr++)
{
- if(!(ea_buf[baddr].attr & LIB3270_ATTR_SELECTED))
+ if(!(hSession->ea_buf[baddr].attr & LIB3270_ATTR_SELECTED))
{
- ea_buf[baddr].attr |= LIB3270_ATTR_SELECTED;
- hSession->update(hSession,baddr,ea_buf[baddr].chr,ea_buf[baddr].attr,baddr == hSession->cursor_addr);
+ hSession->ea_buf[baddr].attr |= LIB3270_ATTR_SELECTED;
+ hSession->update(hSession,baddr,hSession->ea_buf[baddr].chr,hSession->ea_buf[baddr].attr,baddr == hSession->cursor_addr);
}
}
set_selected(hSession);
+
+ return 0;
}
LIB3270_ACTION( reselect )
@@ -298,8 +302,11 @@ LIB3270_ACTION( reselect )
CHECK_SESSION_HANDLE(hSession);
if(hSession->selected || hSession->select.begin == hSession->select.end)
- return;
+ return 0;
update_selection(hSession);
set_selected(hSession);
+
+ return 0;
}
+
--
libgit2 0.21.2