From b5ae246187a4055f2d23077ff04470d1698b5cee Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Mon, 12 Mar 2012 23:08:59 +0000 Subject: [PATCH] Movendo ea_buf para a estrutura de sessao --- src/gtk/pw3270-GTK.cbp | 3 +++ src/gtk/v3270/clipboard.c | 2 ++ src/include/lib3270/session.h | 22 ++++++++++++++++++++-- src/lib3270/api.h | 17 ----------------- src/lib3270/ctlr.c | 222 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------------------- src/lib3270/ft_cut.c | 21 ++++++++++----------- src/lib3270/kybd.c | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------- src/lib3270/paste.c | 6 +++--- src/lib3270/print.c | 26 +++++++++++++------------- src/lib3270/screen.c | 78 +++++++++++++++++++++++++++++++++++++++--------------------------------------- src/lib3270/selection.c | 59 +++++++++++++++++++++++++++++++++-------------------------- 11 files changed, 297 insertions(+), 311 deletions(-) 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