Commit c830115161b02f8972afc1481d86f38ddfe2db45

Authored by perry.werneck@gmail.com
1 parent 394b8b92

Mais funções recebem handle da sessão

src/lib3270/ansi.c
... ... @@ -1870,9 +1870,9 @@ static int dbcs_process(H3270 *hSession, int ch, unsigned char ebc[])
1870 1870  
1871 1871 // See if we have too many.
1872 1872 if (mb_pending >= MB_MAX) {
1873   - trace_ds(&h3270,"Multi-byte character ");
  1873 + trace_ds(hSession,"Multi-byte character ");
1874 1874 trace_pending_mb(hSession);
1875   - trace_ds(&h3270," too long, dropping\n");
  1875 + trace_ds(hSession," too long, dropping\n");
1876 1876 mb_pending = 0;
1877 1877 return 0;
1878 1878 }
... ... @@ -1893,9 +1893,9 @@ static int dbcs_process(H3270 *hSession, int ch, unsigned char ebc[])
1893 1893 mb_pending = 0;
1894 1894 return 2;
1895 1895 } else {
1896   - trace_ds(&h3270,"Can't map multi-byte character");
1897   - trace_pending_mb(&h3270);
1898   - trace_ds(&h3270," -> U+%04x to SBCS or DBCS, dropping\n",
  1896 + trace_ds(hSession,"Can't map multi-byte character");
  1897 + trace_pending_mb(hSession);
  1898 + trace_ds(hSession," -> U+%04x to SBCS or DBCS, dropping\n",
1899 1899 Ubuf[0] & 0xffff);
1900 1900 mb_pending = 0;
1901 1901 return 0;
... ... @@ -1909,14 +1909,14 @@ static int dbcs_process(H3270 *hSession, int ch, unsigned char ebc[])
1909 1909 return 0;
1910 1910 case U_INVALID_CHAR_FOUND:
1911 1911 case U_ILLEGAL_CHAR_FOUND:
1912   - trace_ds(&h3270,"Invalid multi-byte character");
1913   - trace_pending_mb(&h3270);
1914   - trace_ds(&h3270,", dropping\n");
  1912 + trace_ds(hSession,"Invalid multi-byte character");
  1913 + trace_pending_mb(hSession);
  1914 + trace_ds(hSession,", dropping\n");
1915 1915 break;
1916 1916 default:
1917   - trace_ds(&h3270,"Unexpected ICU error %d translating multi-type character", (int)err);
1918   - trace_pending_mb(&h3270);
1919   - trace_ds(&h3270,", dropping\n");
  1917 + trace_ds(hSession,"Unexpected ICU error %d translating multi-type character", (int)err);
  1918 + trace_pending_mb(hSession);
  1919 + trace_ds(hSession,", dropping\n");
1920 1920 break;
1921 1921 }
1922 1922 mb_pending = 0;
... ...
src/lib3270/ctlr.c
... ... @@ -771,13 +771,13 @@ void ctlr_read_buffer(H3270 *hSession, unsigned char aid_byte)
771 771 }
772 772 #endif /*]*/
773 773  
774   - trace_ds(&h3270,"> ");
  774 + trace_ds(hSession,"> ");
775 775 hSession->obptr = hSession->obuf;
776 776  
777 777 space3270out(hSession,3);
778 778 *hSession->obptr++ = aid_byte;
779 779 ENCODE_BADDR(hSession->obptr, hSession->cursor_addr);
780   - trace_ds(&h3270,"%s%s", see_aid(aid_byte), rcba(hSession,hSession->cursor_addr));
  780 + trace_ds(hSession,"%s%s", see_aid(aid_byte), rcba(hSession,hSession->cursor_addr));
781 781  
782 782 baddr = 0;
783 783 do {
... ... @@ -1213,7 +1213,7 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er
1213 1213 }
1214 1214 add_c1 = *cp;
1215 1215 if (add_c1)
1216   - trace_ds(&h3270,"'");
  1216 + trace_ds(hSession,"'");
1217 1217  
1218 1218 trace_ds(hSession,"%s", see_ebc(add_c1));
1219 1219 if (add_c1)
... ... @@ -1400,7 +1400,7 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er
1400 1400 case ORDER_SFE: /* start field extended */
1401 1401 END_TEXT("StartFieldExtended");
1402 1402 if (previous != SBA)
1403   - trace_ds(&h3270,"%s",rcba(&h3270,h3270.buffer_addr));
  1403 + trace_ds(hSession,"%s",rcba(&h3270,h3270.buffer_addr));
1404 1404 previous = ORDER;
1405 1405 cp++; /* skip order */
1406 1406 na = *cp;
... ... @@ -1413,26 +1413,26 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er
1413 1413 for (i = 0; i < (int)na; i++) {
1414 1414 cp++;
1415 1415 if (*cp == XA_3270) {
1416   - trace_ds(&h3270," 3270");
  1416 + trace_ds(hSession," 3270");
1417 1417 cp++;
1418 1418 START_FIELD(*cp);
1419 1419 any_fa++;
1420 1420 } else if (*cp == XA_FOREGROUND) {
1421   - trace_ds(&h3270,"%s", see_efa(*cp, *(cp + 1)));
  1421 + trace_ds(hSession,"%s", see_efa(*cp, *(cp + 1)));
1422 1422 cp++;
1423 1423 if (h3270.m3279)
1424 1424 efa_fg = *cp;
1425 1425 } else if (*cp == XA_BACKGROUND) {
1426   - trace_ds(&h3270,"%s", see_efa(*cp, *(cp + 1)));
  1426 + trace_ds(hSession,"%s", see_efa(*cp, *(cp + 1)));
1427 1427 cp++;
1428 1428 if (h3270.m3279)
1429 1429 efa_bg = *cp;
1430 1430 } else if (*cp == XA_HIGHLIGHTING) {
1431   - trace_ds(&h3270,"%s", see_efa(*cp, *(cp + 1)));
  1431 + trace_ds(hSession,"%s", see_efa(*cp, *(cp + 1)));
1432 1432 cp++;
1433 1433 efa_gr = *cp & 0x07;
1434 1434 } else if (*cp == XA_CHARSET) {
1435   - trace_ds(&h3270,"%s", see_efa(*cp, *(cp + 1)));
  1435 + trace_ds(hSession,"%s", see_efa(*cp, *(cp + 1)));
1436 1436 cp++;
1437 1437 if (*cp == 0xf1)
1438 1438 efa_cs = CS_APL;
... ... @@ -1441,15 +1441,15 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er
1441 1441 else
1442 1442 efa_cs = CS_BASE;
1443 1443 } else if (*cp == XA_ALL) {
1444   - trace_ds(&h3270,"%s", see_efa(*cp, *(cp + 1)));
  1444 + trace_ds(hSession,"%s", see_efa(*cp, *(cp + 1)));
1445 1445 cp++;
1446 1446 } else if (*cp == XA_INPUT_CONTROL) {
1447   - trace_ds(&h3270,"%s", see_efa(*cp, *(cp + 1)));
1448   - if (h3270.dbcs)
  1447 + trace_ds(hSession,"%s", see_efa(*cp, *(cp + 1)));
  1448 + if (hSession->dbcs)
1449 1449 efa_ic = (*(cp + 1) == 1);
1450 1450 cp++;
1451 1451 } else {
1452   - trace_ds(&h3270,"%s[unsupported]", see_efa(*cp, *(cp + 1)));
  1452 + trace_ds(hSession,"%s[unsupported]", see_efa(*cp, *(cp + 1)));
1453 1453 cp++;
1454 1454 }
1455 1455 }
... ... @@ -1469,25 +1469,25 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er
1469 1469 previous = ORDER;
1470 1470 cp++;
1471 1471 if (*cp == XA_FOREGROUND) {
1472   - trace_ds(&h3270,"%s", see_efa(*cp, *(cp + 1)));
  1472 + trace_ds(hSession,"%s", see_efa(*cp, *(cp + 1)));
1473 1473 if (h3270.m3279)
1474 1474 h3270.default_fg = *(cp + 1);
1475 1475 } else if (*cp == XA_BACKGROUND) {
1476   - trace_ds(&h3270,"%s", see_efa(*cp, *(cp + 1)));
  1476 + trace_ds(hSession,"%s", see_efa(*cp, *(cp + 1)));
1477 1477 if (h3270.m3279)
1478 1478 h3270.default_bg = *(cp + 1);
1479 1479 } else if (*cp == XA_HIGHLIGHTING) {
1480   - trace_ds(&h3270,"%s", see_efa(*cp, *(cp + 1)));
  1480 + trace_ds(hSession,"%s", see_efa(*cp, *(cp + 1)));
1481 1481 h3270.default_gr = *(cp + 1) & 0x0f;
1482 1482 } else if (*cp == XA_ALL) {
1483   - trace_ds(&h3270,"%s", see_efa(*cp, *(cp + 1)));
  1483 + trace_ds(hSession,"%s", see_efa(*cp, *(cp + 1)));
1484 1484 h3270.default_fg = 0;
1485 1485 h3270.default_bg = 0;
1486 1486 h3270.default_gr = 0;
1487 1487 h3270.default_cs = 0;
1488 1488 h3270.default_ic = 0;
1489 1489 } else if (*cp == XA_CHARSET) {
1490   - trace_ds(&h3270,"%s", see_efa(*cp, *(cp + 1)));
  1490 + trace_ds(hSession,"%s", see_efa(*cp, *(cp + 1)));
1491 1491 switch (*(cp + 1)) {
1492 1492 case 0xf1:
1493 1493 h3270.default_cs = CS_APL;
... ... @@ -1500,13 +1500,13 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er
1500 1500 break;
1501 1501 }
1502 1502 } else if (*cp == XA_INPUT_CONTROL) {
1503   - trace_ds(&h3270,"%s", see_efa(*cp, *(cp + 1)));
  1503 + trace_ds(hSession,"%s", see_efa(*cp, *(cp + 1)));
1504 1504 if (*(cp + 1) == 1)
1505 1505 h3270.default_ic = 1;
1506 1506 else
1507 1507 h3270.default_ic = 0;
1508 1508 } else
1509   - trace_ds(&h3270,"%s[unsupported]",see_efa(*cp, *(cp + 1)));
  1509 + trace_ds(hSession,"%s[unsupported]",see_efa(*cp, *(cp + 1)));
1510 1510 cp++;
1511 1511 last_cmd = True;
1512 1512 last_zpt = False;
... ... @@ -1630,7 +1630,7 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er
1630 1630 cp--;
1631 1631 break;
1632 1632 default:
1633   - trace_ds(&h3270," [invalid DBCS control character X'%02x%02x'; write aborted]",add_c1, add_c2);
  1633 + trace_ds(hSession," [invalid DBCS control character X'%02x%02x'; write aborted]",add_c1, add_c2);
1634 1634 ABORT_WRITEx;
1635 1635 break;
1636 1636 }
... ... @@ -1660,14 +1660,14 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er
1660 1660 default: /* enter character */
1661 1661 if (*cp <= 0x3F) {
1662 1662 END_TEXT("UnsupportedOrder");
1663   - trace_ds(&h3270,"(%02X)", *cp);
  1663 + trace_ds(hSession,"(%02X)", *cp);
1664 1664 previous = ORDER;
1665 1665 last_cmd = True;
1666 1666 last_zpt = False;
1667 1667 break;
1668 1668 }
1669 1669 if (previous != TEXT)
1670   - trace_ds(&h3270," '");
  1670 + trace_ds(hSession," '");
1671 1671 previous = TEXT;
1672 1672 #if defined(X3270_DBCS) /*[*/
1673 1673 add_dbcs = False;
... ... @@ -1684,7 +1684,7 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er
1684 1684 add_c2 = *cp;
1685 1685 if (add_c1 < 0x40 || add_c1 > 0xfe ||
1686 1686 add_c2 < 0x40 || add_c2 > 0xfe) {
1687   - trace_ds(&h3270," [invalid DBCS character X'%02x%02x'; write aborted]",add_c1, add_c2);
  1687 + trace_ds(hSession," [invalid DBCS character X'%02x%02x'; write aborted]",add_c1, add_c2);
1688 1688 ABORT_WRITEx;
1689 1689 }
1690 1690 add_dbcs = True;
... ... @@ -1693,7 +1693,7 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er
1693 1693 } else {
1694 1694 #endif /*]*/
1695 1695 add_c1 = *cp;
1696   - trace_ds(&h3270,"%s", see_ebc(*cp));
  1696 + trace_ds(hSession,"%s", see_ebc(*cp));
1697 1697 #if defined(X3270_DBCS) /*[*/
1698 1698 }
1699 1699 #endif /*]*/
... ... @@ -1720,7 +1720,7 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er
1720 1720 }
1721 1721 set_formatted(hSession);
1722 1722 END_TEXT0;
1723   - trace_ds(&h3270,"\n");
  1723 + trace_ds(hSession,"\n");
1724 1724 if (wcc_keyboard_restore) {
1725 1725 h3270.aid = AID_NO;
1726 1726 do_reset(&h3270,False);
... ... @@ -1773,7 +1773,7 @@ void ctlr_write_sscp_lu(H3270 *hSession, unsigned char buf[], int buflen)
1773 1773 * we display other control codes as spaces.
1774 1774 */
1775 1775  
1776   - trace_ds(&h3270,"SSCP-LU data\n");
  1776 + trace_ds(hSession,"SSCP-LU data\n");
1777 1777 for (i = 0; i < buflen; cp++, i++) {
1778 1778 switch (*cp) {
1779 1779 case FCORDER_NL:
... ... @@ -1797,7 +1797,7 @@ void ctlr_write_sscp_lu(H3270 *hSession, unsigned char buf[], int buflen)
1797 1797 /* Some hosts forget they're talking SSCP-LU. */
1798 1798 cp++;
1799 1799 i++;
1800   - trace_ds(&h3270," StartField%s %s [translated to space]\n",rcba(hSession,hSession->buffer_addr), see_attr(*cp));
  1800 + trace_ds(hSession," StartField%s %s [translated to space]\n",rcba(hSession,hSession->buffer_addr), see_attr(*cp));
1801 1801 ctlr_add(hSession,hSession->buffer_addr, EBC_space, hSession->default_cs);
1802 1802 ctlr_add_fg(hSession,hSession->buffer_addr, hSession->default_fg);
1803 1803 ctlr_add_bg(hSession,hSession->buffer_addr, hSession->default_bg);
... ... @@ -1807,12 +1807,12 @@ void ctlr_write_sscp_lu(H3270 *hSession, unsigned char buf[], int buflen)
1807 1807 break;
1808 1808  
1809 1809 case ORDER_IC:
1810   - trace_ds(&h3270," InsertCursor%s [ignored]\n",rcba(hSession,hSession->buffer_addr));
  1810 + trace_ds(hSession," InsertCursor%s [ignored]\n",rcba(hSession,hSession->buffer_addr));
1811 1811 break;
1812 1812  
1813 1813 case ORDER_SBA:
1814 1814 // baddr = DECODE_BADDR(*(cp+1), *(cp+2));
1815   - trace_ds(&h3270," SetBufferAddress%s [ignored]\n", rcba(hSession,DECODE_BADDR(*(cp+1), *(cp+2))));
  1815 + trace_ds(hSession," SetBufferAddress%s [ignored]\n", rcba(hSession,DECODE_BADDR(*(cp+1), *(cp+2))));
1816 1816 cp += 2;
1817 1817 i += 2;
1818 1818 break;
... ... @@ -2148,7 +2148,7 @@ void ps_process(H3270 *hSession)
2148 2148 /* magic field */
2149 2149 hSession->ea_buf[1919].fa && FA_IS_SKIP(hSession->ea_buf[1919].fa))
2150 2150 {
2151   - ft_cut_data();
  2151 + ft_cut_data(hSession);
2152 2152 }
2153 2153 #endif
2154 2154 }
... ...
src/lib3270/ft_cut.c
... ... @@ -119,57 +119,64 @@ static int xlate_buffered = 0; /* buffer count */
119 119 static int xlate_buf_ix = 0; /* buffer index */
120 120 static unsigned char xlate_buf[XLATE_NBUF]; /* buffer */
121 121  
122   -static void cut_control_code(void);
123   -static void cut_data_request(void);
124   -static void cut_retransmit(void);
125   -static void cut_data(void);
  122 +static void cut_control_code(H3270 *hSession);
  123 +static void cut_data_request(H3270 *hSession);
  124 +static void cut_retransmit(H3270 *hSession);
  125 +static void cut_data(H3270 *hSession);
126 126  
127   -static void cut_ack(void);
128   -static void cut_abort(unsigned short code, const char *fmt, ...);
  127 +static void cut_ack(H3270 *hSession);
  128 +static void cut_abort(H3270 *hSession, unsigned short code, const char *fmt, ...) printflike(3,4);
129 129  
130 130 static unsigned from6(unsigned char c);
131 131 static int xlate_getc(void);
132 132  
133   -/*
134   - * Convert a buffer for uploading (host->local). Overwrites the buffer.
135   - * Returns the length of the converted data.
  133 +/**
  134 + * Convert a buffer for uploading (host->local). Overwrites the buffer.
  135 + *
136 136 * If there is a conversion error, calls cut_abort() and returns -1.
  137 + *
  138 + * @return the length of the converted data.
137 139 */
138   -static int
139   -upload_convert(unsigned char *buf, int len)
  140 +static int upload_convert(H3270 *hSession, unsigned char *buf, int len)
140 141 {
141 142 unsigned char *ob0 = buf;
142 143 unsigned char *ob = ob0;
143 144  
144   - while (len--) {
  145 + while (len--)
  146 + {
145 147 unsigned char c = *buf++;
146 148 char *ixp;
147 149 int ix;
148 150 // int oq = -1;
149 151  
150 152 retry:
151   - if (quadrant < 0) {
  153 + if (quadrant < 0)
  154 + {
152 155 /* Find the quadrant. */
153   - for (quadrant = 0; quadrant < NQ; quadrant++) {
  156 + for (quadrant = 0; quadrant < NQ; quadrant++)
  157 + {
154 158 if (c == conv[quadrant].selector)
155 159 break;
156 160 }
157   - if (quadrant >= NQ) {
158   - cut_abort(SC_ABORT_XMIT, "%s", _("Data conversion error"));
  161 + if (quadrant >= NQ)
  162 + {
  163 + cut_abort(hSession,SC_ABORT_XMIT, "%s", _("Data conversion error"));
159 164 return -1;
160 165 }
161 166 continue;
162 167 }
163 168  
164 169 /* Make sure it's in a valid range. */
165   - if (c < 0x40 || c > 0xf9) {
166   - cut_abort(SC_ABORT_XMIT, "%s", _("Data conversion error"));
  170 + if (c < 0x40 || c > 0xf9)
  171 + {
  172 + cut_abort(hSession,SC_ABORT_XMIT, "%s", _("Data conversion error"));
167 173 return -1;
168 174 }
169 175  
170 176 /* Translate to a quadrant index. */
171 177 ixp = strchr(alphas, ebc2asc[c]);
172   - if (ixp == (char *)NULL) {
  178 + if (ixp == (char *)NULL)
  179 + {
173 180 /* Try a different quadrant. */
174 181 // oq = quadrant;
175 182 quadrant = -1;
... ... @@ -181,8 +188,8 @@ upload_convert(unsigned char *buf, int len)
181 188 * See if it's mapped by that quadrant, handling NULLs
182 189 * specially.
183 190 */
184   - if (quadrant != OTHER_2 && c != XLATE_NULL &&
185   - !conv[quadrant].xlate[ix]) {
  191 + if (quadrant != OTHER_2 && c != XLATE_NULL && !conv[quadrant].xlate[ix])
  192 + {
186 193 /* Try a different quadrant. */
187 194 // oq = quadrant;
188 195 quadrant = -1;
... ... @@ -266,25 +273,29 @@ download_convert(unsigned const char *buf, unsigned len, unsigned char *xobuf)
266 273 * Main entry point from ctlr.c.
267 274 * We have received what looks like an appropriate message from the host.
268 275 */
269   -void
270   -ft_cut_data(void)
  276 +void ft_cut_data(H3270 *hSession)
271 277 {
272   - switch (h3270.ea_buf[O_FRAME_TYPE].cc) {
273   - case FT_CONTROL_CODE:
274   - cut_control_code();
  278 + switch (hSession->ea_buf[O_FRAME_TYPE].cc)
  279 + {
  280 + case FT_CONTROL_CODE:
  281 + cut_control_code(hSession);
275 282 break;
276   - case FT_DATA_REQUEST:
277   - cut_data_request();
  283 +
  284 + case FT_DATA_REQUEST:
  285 + cut_data_request(hSession);
278 286 break;
279   - case FT_RETRANSMIT:
280   - cut_retransmit();
  287 +
  288 + case FT_RETRANSMIT:
  289 + cut_retransmit(hSession);
281 290 break;
282   - case FT_DATA:
283   - cut_data();
  291 +
  292 + case FT_DATA:
  293 + cut_data(hSession);
284 294 break;
285   - default:
286   - trace_ds(&h3270,"< FT unknown 0x%02x\n", h3270.ea_buf[O_FRAME_TYPE].cc);
287   - cut_abort(SC_ABORT_XMIT, "%s", _("Unknown frame type from host"));
  295 +
  296 + default:
  297 + trace_ds(hSession,"< FT unknown 0x%02x\n", hSession->ea_buf[O_FRAME_TYPE].cc);
  298 + cut_abort(hSession,SC_ABORT_XMIT, "%s", _("Unknown frame type from host"));
288 299 break;
289 300 }
290 301 }
... ... @@ -292,42 +303,42 @@ ft_cut_data(void)
292 303 /*
293 304 * Process a control code from the host.
294 305 */
295   -static void
296   -cut_control_code(void)
  306 +static void cut_control_code(H3270 *hSession)
297 307 {
298 308 unsigned short code;
299 309 char *buf;
300 310 char *bp;
301 311 int i;
302 312  
303   - trace_ds(&h3270,"< FT CONTROL_CODE ");
304   - code = (h3270.ea_buf[O_CC_STATUS_CODE].cc << 8) | h3270.ea_buf[O_CC_STATUS_CODE + 1].cc;
  313 + trace_ds(hSession,"< FT CONTROL_CODE ");
  314 + code = (hSession->ea_buf[O_CC_STATUS_CODE].cc << 8) | hSession->ea_buf[O_CC_STATUS_CODE + 1].cc;
  315 +
305 316 switch (code)
306 317 {
307 318 case SC_HOST_ACK:
308   - trace_ds(&h3270,"HOST_ACK\n");
  319 + trace_ds(hSession,"HOST_ACK\n");
309 320 cut_xfer_in_progress = True;
310 321 expanded_length = 0;
311 322 quadrant = -1;
312 323 xlate_buffered = 0;
313   - cut_ack();
  324 + cut_ack(hSession);
314 325 ft_running(NULL,True);
315 326 break;
316 327  
317 328 case SC_XFER_COMPLETE:
318   - trace_ds(&h3270,"XFER_COMPLETE\n");
319   - cut_ack();
  329 + trace_ds(hSession,"XFER_COMPLETE\n");
  330 + cut_ack(hSession);
320 331 cut_xfer_in_progress = False;
321 332 ft_complete(NULL,N_( "Complete" ) );
322 333 break;
323 334  
324 335 case SC_ABORT_FILE:
325 336 case SC_ABORT_XMIT:
326   - trace_ds(&h3270,"ABORT\n");
  337 + trace_ds(hSession,"ABORT\n");
327 338 cut_xfer_in_progress = False;
328   - cut_ack();
  339 + cut_ack(hSession);
329 340  
330   - if (lib3270_get_ft_state(&h3270) == FT_ABORT_SENT && saved_errmsg != CN)
  341 + if (lib3270_get_ft_state(hSession) == FT_ABORT_SENT && saved_errmsg != CN)
331 342 {
332 343 buf = saved_errmsg;
333 344 saved_errmsg = CN;
... ... @@ -337,7 +348,7 @@ cut_control_code(void)
337 348 bp = buf = lib3270_malloc(81);
338 349  
339 350 for (i = 0; i < 80; i++)
340   - *bp++ = ebc2asc[h3270.ea_buf[O_CC_MESSAGE + i].cc];
  351 + *bp++ = ebc2asc[hSession->ea_buf[O_CC_MESSAGE + i].cc];
341 352  
342 353 *bp-- = '\0';
343 354  
... ... @@ -358,8 +369,8 @@ cut_control_code(void)
358 369 break;
359 370  
360 371 default:
361   - trace_ds(&h3270,"unknown 0x%04x\n", code);
362   - cut_abort(SC_ABORT_XMIT, "%s", _("Unknown FT control code from host"));
  372 + trace_ds(hSession,"unknown 0x%04x\n", code);
  373 + cut_abort(hSession,SC_ABORT_XMIT, "%s", _("Unknown FT control code from host"));
363 374 break;
364 375 }
365 376 }
... ... @@ -367,80 +378,80 @@ cut_control_code(void)
367 378 /*
368 379 * Process a data request from the host.
369 380 */
370   -static void
371   -cut_data_request(void)
  381 +static void cut_data_request(H3270 *hSession)
372 382 {
373   - unsigned char seq = h3270.ea_buf[O_DR_FRAME_SEQ].cc;
  383 + unsigned char seq = hSession->ea_buf[O_DR_FRAME_SEQ].cc;
374 384 int count;
375 385 unsigned char cs;
376 386 int c;
377 387 int i;
378 388 unsigned char attr;
379 389  
380   - trace_ds(&h3270,"< FT DATA_REQUEST %u\n", from6(seq));
381   - if (lib3270_get_ft_state(&h3270) == FT_ABORT_WAIT)
  390 + trace_ds(hSession,"< FT DATA_REQUEST %u\n", from6(seq));
  391 + if (lib3270_get_ft_state(hSession) == FT_ABORT_WAIT)
382 392 {
383   - cut_abort(SC_ABORT_FILE,"%s",N_("Transfer cancelled by user"));
  393 + cut_abort(hSession,SC_ABORT_FILE,"%s", N_("Transfer cancelled by user") );
384 394 return;
385 395 }
386 396  
387 397 /* Copy data into the screen buffer. */
388 398 count = 0;
389 399 while (count < O_UP_MAX && (c = xlate_getc()) != EOF) {
390   - ctlr_add(&h3270,O_UP_DATA + count, c, 0);
  400 + ctlr_add(hSession,O_UP_DATA + count, c, 0);
391 401 count++;
392 402 }
393 403  
394 404 /* Check for errors. */
395   - if (ferror(((H3270FT *) h3270.ft)->local_file)) {
  405 + if (ferror(((H3270FT *) hSession->ft)->local_file)) {
396 406 int j;
397 407  
398 408 /* Clean out any data we may have written. */
399 409 for (j = 0; j < count; j++)
400   - ctlr_add(&h3270,O_UP_DATA + j, 0, 0);
  410 + ctlr_add(hSession,O_UP_DATA + j, 0, 0);
401 411  
402 412 /* Abort the transfer. */
403   - cut_abort(SC_ABORT_FILE,_( "Error \"%s\" reading from local file (rc=%d)" ), strerror(errno), errno);
  413 + cut_abort(hSession,SC_ABORT_FILE,_( "Error \"%s\" reading from local file (rc=%d)" ), strerror(errno), errno);
404 414 return;
405 415 }
406 416  
407 417 /* Send special data for EOF. */
408   - if (!count && feof(((H3270FT *) h3270.ft)->local_file)) {
409   - ctlr_add(&h3270,O_UP_DATA, EOF_DATA1, 0);
410   - ctlr_add(&h3270,O_UP_DATA+1, EOF_DATA2, 0);
  418 + if (!count && feof(((H3270FT *) hSession->ft)->local_file))
  419 + {
  420 + ctlr_add(hSession,O_UP_DATA, EOF_DATA1, 0);
  421 + ctlr_add(hSession,O_UP_DATA+1, EOF_DATA2, 0);
411 422 count = 2;
412 423 }
413 424  
414 425 /* Compute the other fields. */
415   - ctlr_add(&h3270,O_UP_FRAME_SEQ, seq, 0);
  426 + ctlr_add(hSession,O_UP_FRAME_SEQ, seq, 0);
416 427 cs = 0;
417 428 for (i = 0; i < count; i++)
418   - cs ^= h3270.ea_buf[O_UP_DATA + i].cc;
419   - ctlr_add(&h3270,O_UP_CSUM, asc2ebc[(int)table6[cs & 0x3f]], 0);
420   - ctlr_add(&h3270,O_UP_LEN, asc2ebc[(int)table6[(count >> 6) & 0x3f]], 0);
421   - ctlr_add(&h3270,O_UP_LEN+1, asc2ebc[(int)table6[count & 0x3f]], 0);
  429 + cs ^= hSession->ea_buf[O_UP_DATA + i].cc;
  430 +
  431 + ctlr_add(hSession,O_UP_CSUM, asc2ebc[(int)table6[cs & 0x3f]], 0);
  432 + ctlr_add(hSession,O_UP_LEN, asc2ebc[(int)table6[(count >> 6) & 0x3f]], 0);
  433 + ctlr_add(hSession,O_UP_LEN+1, asc2ebc[(int)table6[count & 0x3f]], 0);
422 434  
423 435 /* XXX: Change the data field attribute so it doesn't display. */
424   - attr = h3270.ea_buf[O_DR_SF].fa;
  436 + attr = hSession->ea_buf[O_DR_SF].fa;
425 437 attr = (attr & ~FA_INTENSITY) | FA_INT_ZERO_NSEL;
426   - ctlr_add_fa(&h3270,O_DR_SF, attr, 0);
  438 + ctlr_add_fa(hSession,O_DR_SF, attr, 0);
427 439  
428 440 /* Send it up to the host. */
429   - trace_ds(&h3270,"> FT DATA %u\n", from6(seq));
  441 + trace_ds(hSession,"> FT DATA %u\n", from6(seq));
430 442 ft_update_length(NULL);
431 443 expanded_length += count;
432 444  
433   - lib3270_enter(&h3270);
  445 + lib3270_enter(hSession);
434 446 }
435 447  
436 448 /*
437 449 * (Improperly) process a retransmit from the host.
438 450 */
439   -static void
440   -cut_retransmit(void)
  451 +static void cut_retransmit(H3270 *hSession)
441 452 {
442   - trace_ds(&h3270,"< FT RETRANSMIT\n");
443   - cut_abort(SC_ABORT_XMIT,"%s",_("Transmission error"));
  453 + trace_ds(hSession,"< FT RETRANSMIT\n");
  454 + cut_abort(hSession,SC_ABORT_XMIT,"%s",_("Transmission error"));
444 455 }
445 456  
446 457 /*
... ... @@ -461,63 +472,70 @@ from6(unsigned char c)
461 472 /*
462 473 * Process data from the host.
463 474 */
464   -static void
465   -cut_data(void)
  475 +static void cut_data(H3270 *hSession)
466 476 {
467 477 static unsigned char cvbuf[O_RESPONSE - O_DT_DATA];
468 478 unsigned short raw_length;
469 479 int conv_length;
470 480 register int i;
471 481  
472   - trace_ds(&h3270,"< FT DATA\n");
473   - if (((H3270FT *) h3270.ft)->state == LIB3270_FT_STATE_ABORT_WAIT)
  482 + trace_ds(hSession,"< FT DATA\n");
  483 + if (((H3270FT *) hSession->ft)->state == LIB3270_FT_STATE_ABORT_WAIT)
474 484 {
475   - cut_abort(SC_ABORT_FILE,"%s",_("Transfer cancelled by user"));
  485 + cut_abort(hSession,SC_ABORT_FILE,"%s",_("Transfer cancelled by user"));
476 486 return;
477 487 }
478 488  
479 489 /* Copy and convert the data. */
480   - raw_length = from6(h3270.ea_buf[O_DT_LEN].cc) << 6 |
481   - from6(h3270.ea_buf[O_DT_LEN + 1].cc);
482   - if ((int)raw_length > O_RESPONSE - O_DT_DATA) {
483   - cut_abort(SC_ABORT_XMIT,"%s",_("Illegal frame length"));
  490 + raw_length = from6(hSession->ea_buf[O_DT_LEN].cc) << 6 |
  491 + from6(hSession->ea_buf[O_DT_LEN + 1].cc);
  492 +
  493 + if ((int)raw_length > O_RESPONSE - O_DT_DATA)
  494 + {
  495 + cut_abort(hSession,SC_ABORT_XMIT,"%s",_("Illegal frame length"));
484 496 return;
485 497 }
  498 +
486 499 for (i = 0; i < (int)raw_length; i++)
487   - cvbuf[i] = h3270.ea_buf[O_DT_DATA + i].cc;
  500 + cvbuf[i] = hSession->ea_buf[O_DT_DATA + i].cc;
488 501  
489   - if (raw_length == 2 && cvbuf[0] == EOF_DATA1 && cvbuf[1] == EOF_DATA2) {
490   - trace_ds(&h3270,"< FT EOF\n");
491   - cut_ack();
  502 + if (raw_length == 2 && cvbuf[0] == EOF_DATA1 && cvbuf[1] == EOF_DATA2)
  503 + {
  504 + trace_ds(hSession,"< FT EOF\n");
  505 + cut_ack(hSession);
492 506 return;
493 507 }
494   - conv_length = upload_convert(cvbuf, raw_length);
  508 +
  509 + conv_length = upload_convert(hSession, cvbuf, raw_length);
495 510 if (conv_length < 0)
496 511 return;
497 512  
498 513 /* Write it to the file. */
499   - if (fwrite((char *)cvbuf, conv_length, 1, ((H3270FT *) h3270.ft)->local_file) == 0) {
500   - cut_abort(SC_ABORT_FILE,_( "Error \"%s\" writing to local file (rc=%d)" ),strerror(errno),errno);
501   - } else {
  514 + if (fwrite((char *)cvbuf, conv_length, 1, ((H3270FT *) hSession->ft)->local_file) == 0)
  515 + {
  516 + cut_abort(hSession,SC_ABORT_FILE,_( "Error \"%s\" writing to local file (rc=%d)" ),strerror(errno),errno);
  517 + }
  518 + else
  519 + {
502 520 ft_length += conv_length;
503 521 ft_update_length(NULL);
504   - cut_ack();
  522 + cut_ack(hSession);
505 523 }
506 524 }
507 525  
508 526 /*
509 527 * Acknowledge a host command.
510 528 */
511   -static void cut_ack(void)
  529 +static void cut_ack(H3270 *hSession)
512 530 {
513   - trace_ds(&h3270,"> FT ACK\n");
514   - lib3270_enter(&h3270);
  531 + trace_ds(hSession,"> FT ACK\n");
  532 + lib3270_enter(hSession);
515 533 }
516 534  
517 535 /*
518 536 * Abort a transfer in progress.
519 537 */
520   -static void cut_abort(unsigned short reason, const char *fmt, ...)
  538 +static void cut_abort(H3270 *hSession, unsigned short reason, const char *fmt, ...)
521 539 {
522 540 va_list args;
523 541  
... ... @@ -530,13 +548,13 @@ static void cut_abort(unsigned short reason, const char *fmt, ...)
530 548 va_end(args);
531 549  
532 550 /* Send the abort sequence. */
533   - ctlr_add(&h3270,RO_FRAME_TYPE, RFT_CONTROL_CODE, 0);
534   - ctlr_add(&h3270,RO_FRAME_SEQ, h3270.ea_buf[O_DT_FRAME_SEQ].cc, 0);
535   - ctlr_add(&h3270,RO_REASON_CODE, HIGH8(reason), 0);
536   - ctlr_add(&h3270,RO_REASON_CODE+1, LOW8(reason), 0);
537   - trace_ds(&h3270,"> FT CONTROL_CODE ABORT\n");
  551 + ctlr_add(hSession,RO_FRAME_TYPE, RFT_CONTROL_CODE, 0);
  552 + ctlr_add(hSession,RO_FRAME_SEQ, hSession->ea_buf[O_DT_FRAME_SEQ].cc, 0);
  553 + ctlr_add(hSession,RO_REASON_CODE, HIGH8(reason), 0);
  554 + ctlr_add(hSession,RO_REASON_CODE+1, LOW8(reason), 0);
  555 + trace_ds(hSession,"> FT CONTROL_CODE ABORT\n");
538 556  
539   - lib3270_pfkey(&h3270,2);
  557 + lib3270_pfkey(hSession,2);
540 558  
541 559 /* Update the in-progress pop-up. */
542 560 ft_aborting(NULL);
... ...
src/lib3270/ft_cutc.h
1 1 /*
2   - * Copyright 1996, 1999, 2000 by Paul Mattes.
3   - * Permission to use, copy, modify, and distribute this software and its
4   - * documentation for any purpose and without fee is hereby granted,
5   - * provided that the above copyright notice appear in all copies and that
6   - * both that copyright notice and this permission notice appear in
7   - * supporting documentation.
8   - *
9   - * x3270, c3270, s3270 and tcl3270 are distributed in the hope that they will
10   - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
11   - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file LICENSE
12   - * for more details.
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob o nome G3270.
  5 + *
  6 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  7 + *
  8 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 + * Free Software Foundation.
  11 + *
  12 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 + * obter mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como ft_cutc.c e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + *
13 28 */
14 29  
15   -LIB3270_INTERNAL void ft_cut_data(void);
  30 +LIB3270_INTERNAL void ft_cut_data(H3270 *hSession);
... ...
src/lib3270/telnet.c
... ... @@ -882,56 +882,58 @@ static void net_connected(H3270 *session)
882 882 *
883 883 * Called just after a sucessfull connect to setup tn3270 state.
884 884 *
885   - * @param session 3270 session to setup.
  885 + * @param hSession 3270 session to setup.
886 886 *
887 887 */
888   -LIB3270_EXPORT void lib3270_setup_session(H3270 *session)
  888 +LIB3270_EXPORT void lib3270_setup_session(H3270 *hSession)
889 889 {
890   - (void) memset((char *) session->myopts, 0, sizeof(session->myopts));
891   - (void) memset((char *) session->hisopts, 0, sizeof(session->hisopts));
  890 + (void) memset((char *) hSession->myopts, 0, sizeof(hSession->myopts));
  891 + (void) memset((char *) hSession->hisopts, 0, sizeof(hSession->hisopts));
892 892  
893 893 #if defined(X3270_TN3270E) /*[*/
894   - session->e_funcs = E_OPT(TN3270E_FUNC_BIND_IMAGE) | E_OPT(TN3270E_FUNC_RESPONSES) | E_OPT(TN3270E_FUNC_SYSREQ);
895   - session->e_xmit_seq = 0;
896   - session->response_required = TN3270E_RSF_NO_RESPONSE;
  894 + hSession->e_funcs = E_OPT(TN3270E_FUNC_BIND_IMAGE) | E_OPT(TN3270E_FUNC_RESPONSES) | E_OPT(TN3270E_FUNC_SYSREQ);
  895 + hSession->e_xmit_seq = 0;
  896 + hSession->response_required = TN3270E_RSF_NO_RESPONSE;
897 897 #endif /*]*/
898 898  
899 899 #if defined(HAVE_LIBSSL) /*[*/
900 900 need_tls_follows = False;
901 901 #endif /*]*/
902   - session->telnet_state = TNS_DATA;
903   - session->ibptr = session->ibuf;
  902 + hSession->telnet_state = TNS_DATA;
  903 + hSession->ibptr = hSession->ibuf;
904 904  
905 905 /* clear statistics and flags */
906   - time(&session->ns_time);
907   - session->ns_brcvd = 0;
908   - session->ns_rrcvd = 0;
909   - session->ns_bsent = 0;
910   - session->ns_rsent = 0;
911   - session->syncing = 0;
912   - session->tn3270e_negotiated = 0;
913   - session->tn3270e_submode = E_NONE;
914   - session->tn3270e_bound = 0;
  906 + time(&hSession->ns_time);
  907 + hSession->ns_brcvd = 0;
  908 + hSession->ns_rrcvd = 0;
  909 + hSession->ns_bsent = 0;
  910 + hSession->ns_rsent = 0;
  911 + hSession->syncing = 0;
  912 + hSession->tn3270e_negotiated = 0;
  913 + hSession->tn3270e_submode = E_NONE;
  914 + hSession->tn3270e_bound = 0;
915 915  
916   - setup_lus(session);
  916 + setup_lus(hSession);
917 917  
918   - check_linemode(session,True);
  918 + check_linemode(hSession,True);
919 919  
920 920 /* write out the passthru hostname and port nubmer */
921   - if (session->passthru_host)
  921 + if (hSession->passthru_host)
922 922 {
923   - unsigned char *buffer = (unsigned char *) xs_buffer("%s %d\r\n", session->hostname, session->current_port);
924   - session->write(session, buffer, strlen((char *) buffer));
  923 + unsigned char *buffer = (unsigned char *) xs_buffer("%s %d\r\n", hSession->hostname, hSession->current_port);
  924 + hSession->write(hSession, buffer, strlen((char *) buffer));
925 925 lib3270_free(buffer);
926   - trace_ds(&h3270,"SENT HOSTNAME %s:%d\n", session->hostname, session->current_port);
  926 + trace_ds(hSession,"SENT HOSTNAME %s:%d\n", hSession->hostname, hSession->current_port);
927 927 }
928 928 }
929 929  
930   -/*
931   - * connection_complete
932   - * The connection appears to be complete (output is possible or input
933   - * appeared ready but recv() returned EWOULDBLOCK). Complete the
934   - * connection-completion processing.
  930 +/**
  931 + * Connection_complete.
  932 + *
  933 + * The connection appears to be complete (output is possible or input
  934 + * appeared ready but recv() returned EWOULDBLOCK). Complete the
  935 + * connection-completion processing.
  936 + *
935 937 */
936 938 static void connection_complete(H3270 *session)
937 939 {
... ...