Commit 76b280cec0fb36c834b422c4403ac34c7f874d3f

Authored by perry.werneck@gmail.com
1 parent ea9215dc

Movendo campos para a estrutura de sessao

src/include/lib3270/session.h
... ... @@ -165,6 +165,18 @@
165 165 char ssl_host;
166 166 char ever_3270;
167 167  
  168 + // ctlr.c
  169 + int sscp_start;
  170 + unsigned char default_fg;
  171 + unsigned char default_bg;
  172 + unsigned char default_gr;
  173 + unsigned char default_cs;
  174 + unsigned char default_ic;
  175 + char reply_mode;
  176 + int trace_primed : 1;
  177 + int crm_nattr;
  178 + unsigned char crm_attr[16];
  179 +
168 180 // Telnet.c
169 181 unsigned char * ibuf;
170 182 int ibuf_size; /**< size of ibuf */
... ...
src/lib3270/ctlr.c
... ... @@ -82,25 +82,27 @@
82 82 // /* ea_buf[-1] is the dummy default field attribute */
83 83  
84 84 // Boolean formatted = False; /* set in screen_disp */
85   -unsigned char reply_mode = SF_SRM_FIELD;
86   -int crm_nattr = 0;
87   -unsigned char crm_attr[16];
  85 +// unsigned char reply_mode = SF_SRM_FIELD;
  86 +// int crm_nattr = 0;
  87 +// unsigned char crm_attr[16];
88 88 Boolean dbcs = False;
89 89  
90 90 /* Statics */
91 91 // static struct ea *aea_buf; /* alternate 3270 extended attribute buffer */
92 92 static unsigned char *zero_buf; // empty buffer, for area clears
93 93 static void set_formatted(H3270 *session);
94   -static void ctlr_blanks(void);
95   -static Boolean trace_primed = False;
96   -static unsigned char default_fg;
97   -static unsigned char default_bg;
98   -static unsigned char default_gr;
99   -static unsigned char default_cs;
100   -static unsigned char default_ic;
  94 +static void ctlr_blanks(H3270 *session);
  95 +// static Boolean trace_primed = False;
  96 +
  97 +//static unsigned char default_fg;
  98 +//static unsigned char default_bg;
  99 +//static unsigned char default_gr;
  100 +//static unsigned char default_cs;
  101 +//static unsigned char default_ic;
  102 +
101 103 static void ctlr_half_connect(H3270 *session, int ignored, void *dunno);
102 104 static void ctlr_connect(H3270 *session, int ignored, void *dunno);
103   -static int sscp_start;
  105 +// static int sscp_start;
104 106 static void ticking_stop(H3270 *session);
105 107 static void ctlr_add_ic(int baddr, unsigned char ic);
106 108 static void changed(H3270 *session, int bstart, int bend);
... ... @@ -313,13 +315,13 @@ static void ctlr_connect(H3270 *session, int ignored unused, void *dunno)
313 315 status_reset(session);
314 316 }
315 317  
316   - default_fg = 0x00;
317   - default_bg = 0x00;
318   - default_gr = 0x00;
319   - default_cs = 0x00;
320   - default_ic = 0x00;
321   - reply_mode = SF_SRM_FIELD;
322   - crm_nattr = 0;
  318 + session->default_fg = 0x00;
  319 + session->default_bg = 0x00;
  320 + session->default_gr = 0x00;
  321 + session->default_cs = 0x00;
  322 + session->default_ic = 0x00;
  323 + session->reply_mode = SF_SRM_FIELD;
  324 + session->crm_nattr = 0;
323 325 }
324 326  
325 327  
... ... @@ -477,7 +479,7 @@ void ctlr_erase(H3270 *session, int alt)
477 479 {
478 480 if(session->vcontrol)
479 481 {
480   - ctlr_blanks();
  482 + ctlr_blanks(session);
481 483 session->display(session);
482 484 }
483 485 set_viewsize(session,24,80);
... ... @@ -608,14 +610,14 @@ static void
608 610 insert_sa(int baddr, unsigned char *current_fgp, unsigned char *current_bgp,
609 611 unsigned char *current_grp, unsigned char *current_csp, Boolean *anyp)
610 612 {
611   - if (reply_mode != SF_SRM_CHAR)
  613 + if (h3270.reply_mode != SF_SRM_CHAR)
612 614 return;
613 615  
614   - if (memchr((char *)crm_attr, XA_FOREGROUND, crm_nattr))
  616 + if (memchr((char *) h3270.crm_attr, XA_FOREGROUND, h3270.crm_nattr))
615 617 insert_sa1(XA_FOREGROUND, h3270.ea_buf[baddr].fg, current_fgp, anyp);
616   - if (memchr((char *)crm_attr, XA_BACKGROUND, crm_nattr))
  618 + if (memchr((char *) h3270.crm_attr, XA_BACKGROUND, h3270.crm_nattr))
617 619 insert_sa1(XA_BACKGROUND, h3270.ea_buf[baddr].bg, current_bgp, anyp);
618   - if (memchr((char *)crm_attr, XA_HIGHLIGHTING, crm_nattr)) {
  620 + if (memchr((char *) h3270.crm_attr, XA_HIGHLIGHTING, h3270.crm_nattr)) {
619 621 unsigned char gr;
620 622  
621 623 gr = h3270.ea_buf[baddr].gr;
... ... @@ -623,7 +625,7 @@ insert_sa(int baddr, unsigned char *current_fgp, unsigned char *current_bgp,
623 625 gr |= 0xf0;
624 626 insert_sa1(XA_HIGHLIGHTING, gr, current_grp, anyp);
625 627 }
626   - if (memchr((char *)crm_attr, XA_CHARSET, crm_nattr)) {
  628 + if (memchr((char *) h3270.crm_attr, XA_CHARSET, h3270.crm_nattr)) {
627 629 insert_sa1(XA_CHARSET, host_cs(h3270.ea_buf[baddr].cs), current_csp,anyp);
628 630 }
629 631 }
... ... @@ -759,7 +761,7 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all)
759 761 * host left the cursor.
760 762 */
761 763 if (IN_SSCP)
762   - baddr = sscp_start;
  764 + baddr = h3270.sscp_start;
763 765  
764 766 do {
765 767 if (h3270.ea_buf[baddr].cc) {
... ... @@ -837,7 +839,7 @@ ctlr_read_buffer(unsigned char aid_byte)
837 839 baddr = 0;
838 840 do {
839 841 if (h3270.ea_buf[baddr].fa) {
840   - if (reply_mode == SF_SRM_FIELD) {
  842 + if (h3270.reply_mode == SF_SRM_FIELD) {
841 843 space3270out(2);
842 844 *obptr++ = ORDER_SF;
843 845 } else {
... ... @@ -852,9 +854,9 @@ ctlr_read_buffer(unsigned char aid_byte)
852 854 if (any)
853 855 trace_ds("'");
854 856 trace_ds(" StartField%s%s%s",
855   - (reply_mode == SF_SRM_FIELD) ? "" : "Extended",
  857 + (h3270.reply_mode == SF_SRM_FIELD) ? "" : "Extended",
856 858 rcba(&h3270,baddr), see_attr(fa));
857   - if (reply_mode != SF_SRM_FIELD) {
  859 + if (h3270.reply_mode != SF_SRM_FIELD) {
858 860 if (h3270.ea_buf[baddr].fg) {
859 861 space3270out(2);
860 862 *obptr++ = XA_FOREGROUND;
... ... @@ -1039,19 +1041,19 @@ ctlr_snap_modes(void)
1039 1041 {
1040 1042 int i;
1041 1043  
1042   - if (!IN_3270 || reply_mode == SF_SRM_FIELD)
  1044 + if (!IN_3270 || h3270.reply_mode == SF_SRM_FIELD)
1043 1045 return False;
1044 1046  
1045   - space3270out(6 + crm_nattr);
  1047 + space3270out(6 + h3270.crm_nattr);
1046 1048 *obptr++ = CMD_WSF;
1047 1049 *obptr++ = 0x00; /* implicit length */
1048 1050 *obptr++ = 0x00;
1049 1051 *obptr++ = SF_SET_REPLY_MODE;
1050 1052 *obptr++ = 0x00; /* partition 0 */
1051   - *obptr++ = reply_mode;
1052   - if (reply_mode == SF_SRM_CHAR)
1053   - for (i = 0; i < crm_nattr; i++)
1054   - *obptr++ = crm_attr[i];
  1053 + *obptr++ = h3270.reply_mode;
  1054 + if (h3270.reply_mode == SF_SRM_CHAR)
  1055 + for (i = 0; i < h3270.crm_nattr; i++)
  1056 + *obptr++ = h3270.crm_attr[i];
1055 1057 return True;
1056 1058 }
1057 1059 #endif /*]*/
... ... @@ -1167,16 +1169,17 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1167 1169 if (buflen < 2)
1168 1170 return PDS_BAD_CMD;
1169 1171  
1170   - default_fg = 0;
1171   - default_bg = 0;
1172   - default_gr = 0;
1173   - default_cs = 0;
1174   - default_ic = 0;
1175   - trace_primed = True;
  1172 + h3270.default_fg = 0;
  1173 + h3270.default_bg = 0;
  1174 + h3270.default_gr = 0;
  1175 + h3270.default_cs = 0;
  1176 + h3270.default_ic = 0;
  1177 +
  1178 + h3270.trace_primed = 1;
1176 1179 h3270.buffer_addr = h3270.cursor_addr;
1177 1180 if (WCC_RESET(buf[1])) {
1178 1181 if (erase)
1179   - reply_mode = SF_SRM_FIELD;
  1182 + h3270.reply_mode = SF_SRM_FIELD;
1180 1183 trace_ds("%sreset", paren);
1181 1184 paren = ",";
1182 1185 }
... ... @@ -1381,30 +1384,25 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1381 1384 }
1382 1385 do {
1383 1386 if (add_dbcs) {
1384   - ctlr_add(h3270.buffer_addr, add_c1,
1385   - default_cs);
  1387 + ctlr_add(h3270.buffer_addr, add_c1,h3270.default_cs);
1386 1388 } else {
1387 1389 if (ra_ge)
1388   - ctlr_add(h3270.buffer_addr, add_c1,
1389   - CS_GE);
1390   - else if (default_cs)
1391   - ctlr_add(h3270.buffer_addr, add_c1,
1392   - default_cs);
  1390 + ctlr_add(h3270.buffer_addr, add_c1,CS_GE);
  1391 + else if (h3270.default_cs)
  1392 + ctlr_add(h3270.buffer_addr, add_c1,h3270.default_cs);
1393 1393 else
1394   - ctlr_add(h3270.buffer_addr, add_c1,
1395   - 0);
  1394 + ctlr_add(h3270.buffer_addr, add_c1,0);
1396 1395 }
1397   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1398   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1399   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1396 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1397 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1398 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1400 1399 INC_BA(h3270.buffer_addr);
1401 1400 if (add_dbcs) {
1402   - ctlr_add(h3270.buffer_addr, add_c2,
1403   - default_cs);
1404   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1405   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1406   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1407   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1401 + ctlr_add(h3270.buffer_addr, add_c2,h3270.default_cs);
  1402 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1403 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1404 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1405 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1408 1406 INC_BA(h3270.buffer_addr);
1409 1407 }
1410 1408 } while (h3270.buffer_addr != baddr);
... ... @@ -1454,10 +1452,10 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1454 1452 if (*cp)
1455 1453 trace_ds("'");
1456 1454 ctlr_add(h3270.buffer_addr, *cp, CS_GE);
1457   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1458   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1459   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1460   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1455 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1456 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1457 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1458 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1461 1459 INC_BA(h3270.buffer_addr);
1462 1460 current_fa = get_field_attribute(&h3270,h3270.buffer_addr);
1463 1461 last_cmd = False;
... ... @@ -1608,40 +1606,40 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1608 1606 if (*cp == XA_FOREGROUND) {
1609 1607 trace_ds("%s", see_efa(*cp, *(cp + 1)));
1610 1608 if (h3270.m3279)
1611   - default_fg = *(cp + 1);
  1609 + h3270.default_fg = *(cp + 1);
1612 1610 } else if (*cp == XA_BACKGROUND) {
1613 1611 trace_ds("%s", see_efa(*cp, *(cp + 1)));
1614 1612 if (h3270.m3279)
1615   - default_bg = *(cp + 1);
  1613 + h3270.default_bg = *(cp + 1);
1616 1614 } else if (*cp == XA_HIGHLIGHTING) {
1617 1615 trace_ds("%s", see_efa(*cp, *(cp + 1)));
1618   - default_gr = *(cp + 1) & 0x0f;
  1616 + h3270.default_gr = *(cp + 1) & 0x0f;
1619 1617 } else if (*cp == XA_ALL) {
1620 1618 trace_ds("%s", see_efa(*cp, *(cp + 1)));
1621   - default_fg = 0;
1622   - default_bg = 0;
1623   - default_gr = 0;
1624   - default_cs = 0;
1625   - default_ic = 0;
  1619 + h3270.default_fg = 0;
  1620 + h3270.default_bg = 0;
  1621 + h3270.default_gr = 0;
  1622 + h3270.default_cs = 0;
  1623 + h3270.default_ic = 0;
1626 1624 } else if (*cp == XA_CHARSET) {
1627 1625 trace_ds("%s", see_efa(*cp, *(cp + 1)));
1628 1626 switch (*(cp + 1)) {
1629 1627 case 0xf1:
1630   - default_cs = CS_APL;
  1628 + h3270.default_cs = CS_APL;
1631 1629 break;
1632 1630 case 0xf8:
1633   - default_cs = CS_DBCS;
  1631 + h3270.default_cs = CS_DBCS;
1634 1632 break;
1635 1633 default:
1636   - default_cs = CS_BASE;
  1634 + h3270.default_cs = CS_BASE;
1637 1635 break;
1638 1636 }
1639 1637 } else if (*cp == XA_INPUT_CONTROL) {
1640 1638 trace_ds("%s", see_efa(*cp, *(cp + 1)));
1641 1639 if (*(cp + 1) == 1)
1642   - default_ic = 1;
  1640 + h3270.default_ic = 1;
1643 1641 else
1644   - default_ic = 0;
  1642 + h3270.default_ic = 0;
1645 1643 } else
1646 1644 trace_ds("%s[unsupported]",
1647 1645 see_efa(*cp, *(cp + 1)));
... ... @@ -1660,14 +1658,14 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1660 1658 END_TEXT(see_ebc(*cp));
1661 1659 previous = ORDER;
1662 1660 d = ctlr_lookleft_state(buffer_addr, &why);
1663   - if (default_cs == CS_DBCS || d != DBCS_NONE) {
  1661 + if (h3270.default_cs == CS_DBCS || d != DBCS_NONE) {
1664 1662 ABORT_WRITE("invalid format control order in DBCS field");
1665 1663 }
1666   - ctlr_add(h3270.buffer_addr, *cp, default_cs);
1667   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1668   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1669   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1670   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1664 + ctlr_add(h3270.buffer_addr, *cp, h3270.default_cs);
  1665 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1666 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1667 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1668 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1671 1669 INC_BA(h3270.buffer_addr);
1672 1670 last_cmd = True;
1673 1671 last_zpt = False;
... ... @@ -1687,11 +1685,11 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1687 1685 }
1688 1686 /* All is well. */
1689 1687 previous = ORDER;
1690   - ctlr_add(h3270.buffer_addr, *cp, default_cs);
1691   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1692   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1693   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1694   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1688 + ctlr_add(h3270.buffer_addr, *cp, h3270.default_cs);
  1689 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1690 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1691 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1692 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1695 1693 INC_BA(h3270.buffer_addr);
1696 1694 last_cmd = True;
1697 1695 last_zpt = False;
... ... @@ -1726,11 +1724,11 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1726 1724 }
1727 1725 /* All is well. */
1728 1726 previous = ORDER;
1729   - ctlr_add(h3270.buffer_addr, *cp, default_cs);
1730   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1731   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1732   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1733   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1727 + ctlr_add(h3270.buffer_addr, *cp, h3270.default_cs);
  1728 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1729 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1730 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1731 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1734 1732 INC_BA(h3270.buffer_addr);
1735 1733 last_cmd = True;
1736 1734 last_zpt = False;
... ... @@ -1742,7 +1740,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1742 1740 if (d == DBCS_RIGHT) {
1743 1741 ABORT_WRITE("NULL overwriting right half of DBCS character");
1744 1742 }
1745   - if (d != DBCS_NONE || default_cs == CS_DBCS) {
  1743 + if (d != DBCS_NONE || h3270.default_cs == CS_DBCS) {
1746 1744 add_c1 = EBC_null;
1747 1745 cp++;
1748 1746 if (cp >= buf + buflen) {
... ... @@ -1779,18 +1777,18 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1779 1777 END_TEXT("NULL");
1780 1778 add_c1 = *cp;
1781 1779 }
1782   - ctlr_add(h3270.buffer_addr, add_c1, default_cs);
1783   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1784   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1785   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1786   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1780 + ctlr_add(h3270.buffer_addr, add_c1, h3270.default_cs);
  1781 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1782 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1783 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1784 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1787 1785 INC_BA(h3270.buffer_addr);
1788 1786 if (add_dbcs) {
1789   - ctlr_add(h3270.buffer_addr, add_c2, default_cs);
1790   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1791   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1792   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1793   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1787 + ctlr_add(h3270.buffer_addr, add_c2, h3270.default_cs);
  1788 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1789 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1790 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1791 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1794 1792 INC_BA(h3270.buffer_addr);
1795 1793 }
1796 1794 last_cmd = False;
... ... @@ -1837,19 +1835,19 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1837 1835 #if defined(X3270_DBCS) /*[*/
1838 1836 }
1839 1837 #endif /*]*/
1840   - ctlr_add(h3270.buffer_addr, add_c1, default_cs);
1841   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1842   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1843   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1844   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1838 + ctlr_add(h3270.buffer_addr, add_c1, h3270.default_cs);
  1839 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1840 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1841 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1842 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1845 1843 INC_BA(h3270.buffer_addr);
1846 1844 #if defined(X3270_DBCS) /*[*/
1847 1845 if (add_dbcs) {
1848   - ctlr_add(h3270.buffer_addr, add_c2, default_cs);
1849   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1850   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1851   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1852   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1846 + ctlr_add(h3270.buffer_addr, add_c2, h3270.default_cs);
  1847 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1848 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1849 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1850 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1853 1851 INC_BA(h3270.buffer_addr);
1854 1852 }
1855 1853 #endif /*]*/
... ... @@ -1875,7 +1873,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1875 1873 if (ctlr_dbcs_postprocess() < 0 && rv == PDS_OKAY_NO_OUTPUT)
1876 1874 rv = PDS_BAD_ADDR;
1877 1875  
1878   - trace_primed = False;
  1876 + h3270.trace_primed = 0;
1879 1877  
1880 1878 ps_process();
1881 1879  
... ... @@ -1924,11 +1922,11 @@ ctlr_write_sscp_lu(unsigned char buf[], int buflen)
1924 1922 */
1925 1923 s_row = h3270.buffer_addr / h3270.cols;
1926 1924 while ((h3270.buffer_addr / h3270.cols) == s_row) {
1927   - ctlr_add(h3270.buffer_addr, EBC_null, default_cs);
1928   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1929   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1930   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1931   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1925 + ctlr_add(h3270.buffer_addr, EBC_null, h3270.default_cs);
  1926 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1927 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1928 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1929 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1932 1930 INC_BA(h3270.buffer_addr);
1933 1931 }
1934 1932 break;
... ... @@ -1938,11 +1936,11 @@ ctlr_write_sscp_lu(unsigned char buf[], int buflen)
1938 1936 cp++;
1939 1937 i++;
1940 1938 trace_ds(" StartField%s %s [translated to space]\n",rcba(&h3270,h3270.buffer_addr), see_attr(*cp));
1941   - ctlr_add(h3270.buffer_addr, EBC_space, default_cs);
1942   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1943   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1944   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1945   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1939 + ctlr_add(h3270.buffer_addr, EBC_space, h3270.default_cs);
  1940 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1941 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1942 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1943 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1946 1944 INC_BA(h3270.buffer_addr);
1947 1945 break;
1948 1946 case ORDER_IC:
... ... @@ -1965,25 +1963,25 @@ ctlr_write_sscp_lu(unsigned char buf[], int buflen)
1965 1963 else
1966 1964 c = *cp;
1967 1965 ctlr_add(h3270.buffer_addr, c, CS_GE);
1968   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1969   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1970   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1971   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1966 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1967 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1968 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1969 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1972 1970 INC_BA(h3270.buffer_addr);
1973 1971 break;
1974 1972  
1975 1973 default:
1976   - ctlr_add(h3270.buffer_addr, *cp, default_cs);
1977   - ctlr_add_fg(h3270.buffer_addr, default_fg);
1978   - ctlr_add_bg(h3270.buffer_addr, default_bg);
1979   - ctlr_add_gr(h3270.buffer_addr, default_gr);
1980   - ctlr_add_ic(h3270.buffer_addr, default_ic);
  1974 + ctlr_add(h3270.buffer_addr, *cp, h3270.default_cs);
  1975 + ctlr_add_fg(h3270.buffer_addr, h3270.default_fg);
  1976 + ctlr_add_bg(h3270.buffer_addr, h3270.default_bg);
  1977 + ctlr_add_gr(h3270.buffer_addr, h3270.default_gr);
  1978 + ctlr_add_ic(h3270.buffer_addr, h3270.default_ic);
1981 1979 INC_BA(h3270.buffer_addr);
1982 1980 break;
1983 1981 }
1984 1982 }
1985 1983 cursor_move(&h3270,h3270.buffer_addr);
1986   - sscp_start = h3270.buffer_addr;
  1984 + h3270.sscp_start = h3270.buffer_addr;
1987 1985  
1988 1986 /* Unlock the keyboard. */
1989 1987 h3270.aid = AID_NO;
... ... @@ -2329,39 +2327,40 @@ ctlr_clear(H3270 *session, Boolean can_snap)
2329 2327 #endif /*]*/
2330 2328  
2331 2329 /* Clear the screen. */
2332   - trace("%p",session->ea_buf);
2333   -
2334 2330 (void) memset((char *)session->ea_buf, 0, session->rows*session->cols*sizeof(struct ea));
2335   - cursor_move(&h3270,0);
  2331 + cursor_move(session,0);
2336 2332 session->buffer_addr = 0;
2337 2333 lib3270_unselect(session);
2338 2334 session->formatted = False;
2339   - default_fg = 0;
2340   - default_bg = 0;
2341   - default_gr = 0;
2342   - default_ic = 0;
2343   - sscp_start = 0;
  2335 + session->default_fg = 0;
  2336 + session->default_bg = 0;
  2337 + session->default_gr = 0;
  2338 + session->default_ic = 0;
  2339 +
  2340 + session->sscp_start = 0;
2344 2341  
2345 2342 // ALL_CHANGED;
2346 2343 session->erase(session);
2347 2344 }
2348 2345  
2349   -/*
  2346 +/**
2350 2347 * Fill the screen buffer with blanks.
  2348 + *
  2349 + * @param session Session handle
2351 2350 */
2352   -static void
2353   -ctlr_blanks(void)
  2351 +static void ctlr_blanks(H3270 *session)
2354 2352 {
2355 2353 int baddr;
2356 2354  
2357   - for (baddr = 0; baddr < h3270.rows*h3270.cols; baddr++) {
2358   - if (!h3270.ea_buf[baddr].fa)
2359   - h3270.ea_buf[baddr].cc = EBC_space;
  2355 + for (baddr = 0; baddr < session->rows*session->cols; baddr++)
  2356 + {
  2357 + if (!session->ea_buf[baddr].fa)
  2358 + session->ea_buf[baddr].cc = EBC_space;
2360 2359 }
2361   - cursor_move(&h3270,0);
2362   - h3270.buffer_addr = 0;
2363   - lib3270_unselect(&h3270);
2364   - h3270.formatted = False;
  2360 + cursor_move(session,0);
  2361 + session->buffer_addr = 0;
  2362 + lib3270_unselect(session);
  2363 + session->formatted = False;
2365 2364 ALL_CHANGED;
2366 2365 }
2367 2366  
... ... @@ -2376,13 +2375,13 @@ void ctlr_add(int baddr, unsigned char c, unsigned char cs)
2376 2375  
2377 2376 if(h3270.ea_buf[baddr].fa || ((oc = h3270.ea_buf[baddr].cc) != c || h3270.ea_buf[baddr].cs != cs))
2378 2377 {
2379   - if (trace_primed && !IsBlank(oc))
  2378 + if (h3270.trace_primed && !IsBlank(oc))
2380 2379 {
2381 2380 #if defined(X3270_TRACE) /*[*/
2382 2381 if (lib3270_get_toggle(&h3270,LIB3270_TOGGLE_SCREEN_TRACE))
2383 2382 trace_screen(&h3270);
2384 2383 #endif /*]*/
2385   - trace_primed = False;
  2384 + h3270.trace_primed = 0;
2386 2385 }
2387 2386  
2388 2387 h3270.ea_buf[baddr].cc = c;
... ...
src/lib3270/session.c
... ... @@ -197,6 +197,8 @@ static void lib3270_session_init(H3270 *hSession, const char *model)
197 197 hSession->oia_status = -1;
198 198 hSession->kybdlock = KL_NOT_CONNECTED;
199 199 hSession->aid = AID_NO;
  200 + hSession->reply_mode = SF_SRM_FIELD;
  201 +
200 202  
201 203 #ifdef _WIN32
202 204 hSession->sockEvent = NULL;
... ...
src/lib3270/sf.c
... ... @@ -67,9 +67,9 @@
67 67 #include "api.h"
68 68  
69 69 // Externals
70   -extern unsigned char reply_mode;
71   -extern int crm_nattr;
72   -extern unsigned char crm_attr[];
  70 +// extern unsigned char reply_mode;
  71 +// extern int crm_nattr;
  72 +// extern unsigned char crm_attr[];
73 73  
74 74 /* Screen globals. */
75 75 static int cw = 7;
... ... @@ -444,15 +444,15 @@ sf_set_reply_mode(unsigned char buf[], int buflen)
444 444 trace_ds(" unknown mode 0x%02x\n", buf[4]);
445 445 return PDS_BAD_CMD;
446 446 }
447   - reply_mode = buf[4];
  447 + h3270.reply_mode = buf[4];
448 448 if (buf[4] == SF_SRM_CHAR) {
449   - crm_nattr = buflen - 5;
  449 + h3270.crm_nattr = buflen - 5;
450 450 for (i = 5; i < buflen; i++) {
451   - crm_attr[i - 5] = buf[i];
  451 + h3270.crm_attr[i - 5] = buf[i];
452 452 trace_ds("%s%s", comma, see_efa_only(buf[i]));
453 453 comma = ",";
454 454 }
455   - trace_ds("%s\n", crm_nattr ? ")" : "");
  455 + trace_ds("%s\n", h3270.crm_nattr ? ")" : "");
456 456 }
457 457 return PDS_OKAY_NO_OUTPUT;
458 458 }
... ...