Commit 07fe2293fc7c9d349d1d1fb97195880834ea0a4f
1 parent
5df280a2
Exists in
master
and in
5 other branches
Ajustes para multi-sessão
Showing
7 changed files
with
232 additions
and
232 deletions
Show diff stats
src/include/lib3270/session.h
| ... | ... | @@ -182,6 +182,9 @@ |
| 182 | 182 | // Telnet.c |
| 183 | 183 | unsigned char * ibuf; |
| 184 | 184 | int ibuf_size; /**< size of ibuf */ |
| 185 | + unsigned char * obuf; /**< 3270 output buffer */ | |
| 186 | + unsigned char * obptr; | |
| 187 | + | |
| 185 | 188 | unsigned char myopts[LIB3270_TELNET_N_OPTS]; |
| 186 | 189 | unsigned char hisopts[LIB3270_TELNET_N_OPTS]; |
| 187 | 190 | ... | ... |
src/lib3270/ctlr.c
| ... | ... | @@ -549,9 +549,9 @@ insert_sa1(unsigned char attr, unsigned char value, unsigned char *currentp, Boo |
| 549 | 549 | return; |
| 550 | 550 | *currentp = value; |
| 551 | 551 | space3270out(3); |
| 552 | - *obptr++ = ORDER_SA; | |
| 553 | - *obptr++ = attr; | |
| 554 | - *obptr++ = value; | |
| 552 | + *h3270.obptr++ = ORDER_SA; | |
| 553 | + *h3270.obptr++ = attr; | |
| 554 | + *h3270.obptr++ = value; | |
| 555 | 555 | if (*anyp) |
| 556 | 556 | trace_ds("'"); |
| 557 | 557 | trace_ds(" SetAttribute(%s)", see_efa(attr, value)); |
| ... | ... | @@ -626,16 +626,16 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all) |
| 626 | 626 | #endif /*]*/ |
| 627 | 627 | |
| 628 | 628 | trace_ds("> "); |
| 629 | - obptr = obuf; | |
| 629 | + h3270.obptr = h3270.obuf; | |
| 630 | 630 | |
| 631 | 631 | switch (aid_byte) { |
| 632 | 632 | |
| 633 | 633 | case AID_SYSREQ: /* test request */ |
| 634 | 634 | space3270out(4); |
| 635 | - *obptr++ = 0x01; /* soh */ | |
| 636 | - *obptr++ = 0x5b; /* % */ | |
| 637 | - *obptr++ = 0x61; /* / */ | |
| 638 | - *obptr++ = 0x02; /* stx */ | |
| 635 | + *h3270.obptr++ = 0x01; /* soh */ | |
| 636 | + *h3270.obptr++ = 0x5b; /* % */ | |
| 637 | + *h3270.obptr++ = 0x61; /* / */ | |
| 638 | + *h3270.obptr++ = 0x02; /* stx */ | |
| 639 | 639 | trace_ds("SYSREQ"); |
| 640 | 640 | break; |
| 641 | 641 | |
| ... | ... | @@ -655,11 +655,11 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all) |
| 655 | 655 | default: /* ordinary AID */ |
| 656 | 656 | if (!IN_SSCP) { |
| 657 | 657 | space3270out(3); |
| 658 | - *obptr++ = aid_byte; | |
| 658 | + *h3270.obptr++ = aid_byte; | |
| 659 | 659 | trace_ds("%s",see_aid(aid_byte)); |
| 660 | 660 | if (short_read) |
| 661 | 661 | goto rm_done; |
| 662 | - ENCODE_BADDR(obptr, h3270.cursor_addr); | |
| 662 | + ENCODE_BADDR(h3270.obptr, h3270.cursor_addr); | |
| 663 | 663 | trace_ds("%s",rcba(&h3270,h3270.cursor_addr)); |
| 664 | 664 | } else { |
| 665 | 665 | space3270out(1); /* just in case */ |
| ... | ... | @@ -682,8 +682,8 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all) |
| 682 | 682 | |
| 683 | 683 | INC_BA(baddr); |
| 684 | 684 | space3270out(3); |
| 685 | - *obptr++ = ORDER_SBA; | |
| 686 | - ENCODE_BADDR(obptr, baddr); | |
| 685 | + *h3270.obptr++ = ORDER_SBA; | |
| 686 | + ENCODE_BADDR(h3270.obptr, baddr); | |
| 687 | 687 | trace_ds(" SetBufferAddress%s (Cols: %d Rows: %d)", rcba(&h3270,baddr), h3270.cols, h3270.rows); |
| 688 | 688 | while (!h3270.ea_buf[baddr].fa) { |
| 689 | 689 | |
| ... | ... | @@ -697,14 +697,14 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all) |
| 697 | 697 | &any); |
| 698 | 698 | if (h3270.ea_buf[baddr].cs & CS_GE) { |
| 699 | 699 | space3270out(1); |
| 700 | - *obptr++ = ORDER_GE; | |
| 700 | + *h3270.obptr++ = ORDER_GE; | |
| 701 | 701 | if (any) |
| 702 | 702 | trace_ds("'"); |
| 703 | 703 | trace_ds(" GraphicEscape"); |
| 704 | 704 | any = False; |
| 705 | 705 | } |
| 706 | 706 | space3270out(1); |
| 707 | - *obptr++ = h3270.ea_buf[baddr].cc; | |
| 707 | + *h3270.obptr++ = h3270.ea_buf[baddr].cc; | |
| 708 | 708 | if (!any) |
| 709 | 709 | trace_ds(" '"); |
| 710 | 710 | trace_ds("%s",see_ebc(h3270.ea_buf[baddr].cc)); |
| ... | ... | @@ -742,14 +742,14 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all) |
| 742 | 742 | &any); |
| 743 | 743 | if (h3270.ea_buf[baddr].cs & CS_GE) { |
| 744 | 744 | space3270out(1); |
| 745 | - *obptr++ = ORDER_GE; | |
| 745 | + *h3270.obptr++ = ORDER_GE; | |
| 746 | 746 | if (any) |
| 747 | 747 | trace_ds("' "); |
| 748 | 748 | trace_ds(" GraphicEscape "); |
| 749 | 749 | any = False; |
| 750 | 750 | } |
| 751 | 751 | space3270out(1); |
| 752 | - *obptr++ = h3270.ea_buf[baddr].cc; | |
| 752 | + *h3270.obptr++ = h3270.ea_buf[baddr].cc; | |
| 753 | 753 | if (!any) |
| 754 | 754 | trace_ds("%s","'"); |
| 755 | 755 | trace_ds("%s",see_ebc(h3270.ea_buf[baddr].cc)); |
| ... | ... | @@ -797,11 +797,11 @@ void ctlr_read_buffer(H3270 *hSession, unsigned char aid_byte) |
| 797 | 797 | #endif /*]*/ |
| 798 | 798 | |
| 799 | 799 | trace_ds("> "); |
| 800 | - obptr = obuf; | |
| 800 | + h3270.obptr = h3270.obuf; | |
| 801 | 801 | |
| 802 | 802 | space3270out(3); |
| 803 | - *obptr++ = aid_byte; | |
| 804 | - ENCODE_BADDR(obptr, hSession->cursor_addr); | |
| 803 | + *h3270.obptr++ = aid_byte; | |
| 804 | + ENCODE_BADDR(h3270.obptr, hSession->cursor_addr); | |
| 805 | 805 | trace_ds("%s%s", see_aid(aid_byte), rcba(hSession,hSession->cursor_addr)); |
| 806 | 806 | |
| 807 | 807 | baddr = 0; |
| ... | ... | @@ -809,16 +809,16 @@ void ctlr_read_buffer(H3270 *hSession, unsigned char aid_byte) |
| 809 | 809 | if (hSession->ea_buf[baddr].fa) { |
| 810 | 810 | if (hSession->reply_mode == SF_SRM_FIELD) { |
| 811 | 811 | space3270out(2); |
| 812 | - *obptr++ = ORDER_SF; | |
| 812 | + *h3270.obptr++ = ORDER_SF; | |
| 813 | 813 | } else { |
| 814 | 814 | space3270out(4); |
| 815 | - *obptr++ = ORDER_SFE; | |
| 816 | - attr_count = obptr - obuf; | |
| 817 | - *obptr++ = 1; /* for now */ | |
| 818 | - *obptr++ = XA_3270; | |
| 815 | + *h3270.obptr++ = ORDER_SFE; | |
| 816 | + attr_count = h3270.obptr - h3270.obuf; | |
| 817 | + *h3270.obptr++ = 1; /* for now */ | |
| 818 | + *h3270.obptr++ = XA_3270; | |
| 819 | 819 | } |
| 820 | 820 | fa = hSession->ea_buf[baddr].fa & ~FA_PRINTABLE; |
| 821 | - *obptr++ = code_table[fa]; | |
| 821 | + *h3270.obptr++ = code_table[fa]; | |
| 822 | 822 | if (any) |
| 823 | 823 | trace_ds("'"); |
| 824 | 824 | trace_ds(" StartField%s%s%s", |
| ... | ... | @@ -827,32 +827,32 @@ void ctlr_read_buffer(H3270 *hSession, unsigned char aid_byte) |
| 827 | 827 | if (hSession->reply_mode != SF_SRM_FIELD) { |
| 828 | 828 | if (hSession->ea_buf[baddr].fg) { |
| 829 | 829 | space3270out(2); |
| 830 | - *obptr++ = XA_FOREGROUND; | |
| 831 | - *obptr++ = hSession->ea_buf[baddr].fg; | |
| 830 | + *h3270.obptr++ = XA_FOREGROUND; | |
| 831 | + *h3270.obptr++ = hSession->ea_buf[baddr].fg; | |
| 832 | 832 | trace_ds("%s", see_efa(XA_FOREGROUND, hSession->ea_buf[baddr].fg)); |
| 833 | - (*(obuf + attr_count))++; | |
| 833 | + (*(h3270.obuf + attr_count))++; | |
| 834 | 834 | } |
| 835 | 835 | if (hSession->ea_buf[baddr].bg) { |
| 836 | 836 | space3270out(2); |
| 837 | - *obptr++ = XA_BACKGROUND; | |
| 838 | - *obptr++ = hSession->ea_buf[baddr].bg; | |
| 837 | + *h3270.obptr++ = XA_BACKGROUND; | |
| 838 | + *h3270.obptr++ = hSession->ea_buf[baddr].bg; | |
| 839 | 839 | trace_ds("%s", see_efa(XA_BACKGROUND, hSession->ea_buf[baddr].bg)); |
| 840 | - (*(obuf + attr_count))++; | |
| 840 | + (*(h3270.obuf + attr_count))++; | |
| 841 | 841 | } |
| 842 | 842 | if (hSession->ea_buf[baddr].gr) { |
| 843 | 843 | space3270out(2); |
| 844 | - *obptr++ = XA_HIGHLIGHTING; | |
| 845 | - *obptr++ = hSession->ea_buf[baddr].gr | 0xf0; | |
| 844 | + *h3270.obptr++ = XA_HIGHLIGHTING; | |
| 845 | + *h3270.obptr++ = hSession->ea_buf[baddr].gr | 0xf0; | |
| 846 | 846 | trace_ds("%s", see_efa(XA_HIGHLIGHTING, |
| 847 | 847 | hSession->ea_buf[baddr].gr | 0xf0)); |
| 848 | - (*(obuf + attr_count))++; | |
| 848 | + (*(h3270.obuf + attr_count))++; | |
| 849 | 849 | } |
| 850 | 850 | if (hSession->ea_buf[baddr].cs & CS_MASK) { |
| 851 | 851 | space3270out(2); |
| 852 | - *obptr++ = XA_CHARSET; | |
| 853 | - *obptr++ = host_cs(hSession->ea_buf[baddr].cs); | |
| 852 | + *h3270.obptr++ = XA_CHARSET; | |
| 853 | + *h3270.obptr++ = host_cs(hSession->ea_buf[baddr].cs); | |
| 854 | 854 | trace_ds("%s", see_efa(XA_CHARSET,host_cs(hSession->ea_buf[baddr].cs))); |
| 855 | - (*(obuf + attr_count))++; | |
| 855 | + (*(h3270.obuf + attr_count))++; | |
| 856 | 856 | } |
| 857 | 857 | } |
| 858 | 858 | any = False; |
| ... | ... | @@ -865,14 +865,14 @@ void ctlr_read_buffer(H3270 *hSession, unsigned char aid_byte) |
| 865 | 865 | &any); |
| 866 | 866 | if (hSession->ea_buf[baddr].cs & CS_GE) { |
| 867 | 867 | space3270out(1); |
| 868 | - *obptr++ = ORDER_GE; | |
| 868 | + *h3270.obptr++ = ORDER_GE; | |
| 869 | 869 | if (any) |
| 870 | 870 | trace_ds("'"); |
| 871 | 871 | trace_ds(" GraphicEscape"); |
| 872 | 872 | any = False; |
| 873 | 873 | } |
| 874 | 874 | space3270out(1); |
| 875 | - *obptr++ = hSession->ea_buf[baddr].cc; | |
| 875 | + *h3270.obptr++ = hSession->ea_buf[baddr].cc; | |
| 876 | 876 | if (hSession->ea_buf[baddr].cc <= 0x3f || |
| 877 | 877 | hSession->ea_buf[baddr].cc == 0xff) { |
| 878 | 878 | if (any) | ... | ... |
src/lib3270/ft_dft.c
| ... | ... | @@ -191,12 +191,12 @@ dft_open_request(unsigned short len, unsigned char *cp) |
| 191 | 191 | |
| 192 | 192 | /* Acknowledge the Open. */ |
| 193 | 193 | trace_ds("> WriteStructuredField FileTransferData OpenAck\n"); |
| 194 | - obptr = obuf; | |
| 194 | + h3270.obptr = h3270.obuf; | |
| 195 | 195 | space3270out(6); |
| 196 | - *obptr++ = AID_SF; | |
| 197 | - SET16(obptr, 5); | |
| 198 | - *obptr++ = SF_TRANSFER_DATA; | |
| 199 | - SET16(obptr, 9); | |
| 196 | + *h3270.obptr++ = AID_SF; | |
| 197 | + SET16(h3270.obptr, 5); | |
| 198 | + *h3270.obptr++ = SF_TRANSFER_DATA; | |
| 199 | + SET16(h3270.obptr, 9); | |
| 200 | 200 | net_output(); |
| 201 | 201 | } |
| 202 | 202 | |
| ... | ... | @@ -316,14 +316,14 @@ dft_data_insert(struct data_buffer *data_bufr) |
| 316 | 316 | |
| 317 | 317 | /* Send an acknowledgement frame back. */ |
| 318 | 318 | trace_ds("> WriteStructuredField FileTransferData DataAck(rec=%lu)\n", recnum); |
| 319 | - obptr = obuf; | |
| 319 | + h3270.obptr = h3270.obuf; | |
| 320 | 320 | space3270out(12); |
| 321 | - *obptr++ = AID_SF; | |
| 322 | - SET16(obptr, 11); | |
| 323 | - *obptr++ = SF_TRANSFER_DATA; | |
| 324 | - SET16(obptr, TR_NORMAL_REPLY); | |
| 325 | - SET16(obptr, TR_RECNUM_HDR); | |
| 326 | - SET32(obptr, recnum); | |
| 321 | + *h3270.obptr++ = AID_SF; | |
| 322 | + SET16(h3270.obptr, 11); | |
| 323 | + *h3270.obptr++ = SF_TRANSFER_DATA; | |
| 324 | + SET16(h3270.obptr, TR_NORMAL_REPLY); | |
| 325 | + SET16(h3270.obptr, TR_RECNUM_HDR); | |
| 326 | + SET32(h3270.obptr, recnum); | |
| 327 | 327 | recnum++; |
| 328 | 328 | net_output(); |
| 329 | 329 | } |
| ... | ... | @@ -356,7 +356,7 @@ dft_get_request(void) |
| 356 | 356 | set_dft_buffersize(); |
| 357 | 357 | space3270out(dft_buffersize); |
| 358 | 358 | numbytes = dft_buffersize - 27; /* always read 5 bytes less than we're allowed */ |
| 359 | - bufptr = obuf + 17; | |
| 359 | + bufptr = h3270.obuf + 17; | |
| 360 | 360 | while (!dft_eof && numbytes) { |
| 361 | 361 | if (ascii_flag && cr_flag) { |
| 362 | 362 | int c; |
| ... | ... | @@ -416,22 +416,22 @@ dft_get_request(void) |
| 416 | 416 | } |
| 417 | 417 | |
| 418 | 418 | /* Set up SF header for Data or EOF. */ |
| 419 | - obptr = obuf; | |
| 420 | - *obptr++ = AID_SF; | |
| 421 | - obptr += 2; /* skip SF length for now */ | |
| 422 | - *obptr++ = SF_TRANSFER_DATA; | |
| 419 | + h3270.obptr = h3270.obuf; | |
| 420 | + *h3270.obptr++ = AID_SF; | |
| 421 | + h3270.obptr += 2; /* skip SF length for now */ | |
| 422 | + *h3270.obptr++ = SF_TRANSFER_DATA; | |
| 423 | 423 | |
| 424 | 424 | if (total_read) { |
| 425 | 425 | trace_ds("> WriteStructuredField FileTransferData Data(rec=%lu) %d bytes\n", |
| 426 | 426 | (unsigned long) recnum, (int) total_read); |
| 427 | - SET16(obptr, TR_GET_REPLY); | |
| 428 | - SET16(obptr, TR_RECNUM_HDR); | |
| 429 | - SET32(obptr, recnum); | |
| 427 | + SET16(h3270.obptr, TR_GET_REPLY); | |
| 428 | + SET16(h3270.obptr, TR_RECNUM_HDR); | |
| 429 | + SET32(h3270.obptr, recnum); | |
| 430 | 430 | recnum++; |
| 431 | - SET16(obptr, TR_NOT_COMPRESSED); | |
| 432 | - *obptr++ = TR_BEGIN_DATA; | |
| 433 | - SET16(obptr, total_read + 5); | |
| 434 | - obptr += total_read; | |
| 431 | + SET16(h3270.obptr, TR_NOT_COMPRESSED); | |
| 432 | + *h3270.obptr++ = TR_BEGIN_DATA; | |
| 433 | + SET16(h3270.obptr, total_read + 5); | |
| 434 | + h3270.obptr += total_read; | |
| 435 | 435 | |
| 436 | 436 | ft_length += total_read; |
| 437 | 437 | |
| ... | ... | @@ -442,25 +442,25 @@ dft_get_request(void) |
| 442 | 442 | |
| 443 | 443 | } else { |
| 444 | 444 | trace_ds("> WriteStructuredField FileTransferData EOF\n"); |
| 445 | - *obptr++ = HIGH8(TR_GET_REQ); | |
| 446 | - *obptr++ = TR_ERROR_REPLY; | |
| 447 | - SET16(obptr, TR_ERROR_HDR); | |
| 448 | - SET16(obptr, TR_ERR_EOF); | |
| 445 | + *h3270.obptr++ = HIGH8(TR_GET_REQ); | |
| 446 | + *h3270.obptr++ = TR_ERROR_REPLY; | |
| 447 | + SET16(h3270.obptr, TR_ERROR_HDR); | |
| 448 | + SET16(h3270.obptr, TR_ERR_EOF); | |
| 449 | 449 | |
| 450 | 450 | dft_eof = True; |
| 451 | 451 | } |
| 452 | 452 | |
| 453 | 453 | /* Set the SF length. */ |
| 454 | - bufptr = obuf + 1; | |
| 455 | - SET16(bufptr, obptr - (obuf + 1)); | |
| 454 | + bufptr = h3270.obuf + 1; | |
| 455 | + SET16(bufptr, h3270.obptr - (h3270.obuf + 1)); | |
| 456 | 456 | |
| 457 | 457 | /* Save the data. */ |
| 458 | - dft_savebuf_len = obptr - obuf; | |
| 458 | + dft_savebuf_len = h3270.obptr - h3270.obuf; | |
| 459 | 459 | if (dft_savebuf_len > dft_savebuf_max) { |
| 460 | 460 | dft_savebuf_max = dft_savebuf_len; |
| 461 | 461 | Replace(dft_savebuf, (unsigned char *)lib3270_malloc(dft_savebuf_max)); |
| 462 | 462 | } |
| 463 | - (void) memcpy(dft_savebuf, obuf, dft_savebuf_len); | |
| 463 | + (void) memcpy(dft_savebuf, h3270.obuf, dft_savebuf_len); | |
| 464 | 464 | h3270.aid = AID_SF; |
| 465 | 465 | |
| 466 | 466 | /* Write the data. */ |
| ... | ... | @@ -478,12 +478,12 @@ dft_close_request(void) |
| 478 | 478 | */ |
| 479 | 479 | trace_ds(" Close\n"); |
| 480 | 480 | trace_ds("> WriteStructuredField FileTransferData CloseAck\n"); |
| 481 | - obptr = obuf; | |
| 481 | + h3270.obptr = h3270.obuf; | |
| 482 | 482 | space3270out(6); |
| 483 | - *obptr++ = AID_SF; | |
| 484 | - SET16(obptr, 5); /* length */ | |
| 485 | - *obptr++ = SF_TRANSFER_DATA; | |
| 486 | - SET16(obptr, TR_CLOSE_REPLY); | |
| 483 | + *h3270.obptr++ = AID_SF; | |
| 484 | + SET16(h3270.obptr, 5); /* length */ | |
| 485 | + *h3270.obptr++ = SF_TRANSFER_DATA; | |
| 486 | + SET16(h3270.obptr, TR_CLOSE_REPLY); | |
| 487 | 487 | net_output(); |
| 488 | 488 | } |
| 489 | 489 | |
| ... | ... | @@ -501,15 +501,15 @@ static void dft_abort(unsigned short code, const char *fmt, ...) |
| 501 | 501 | |
| 502 | 502 | trace_ds("> WriteStructuredField FileTransferData Error\n"); |
| 503 | 503 | |
| 504 | - obptr = obuf; | |
| 504 | + h3270.obptr = h3270.obuf; | |
| 505 | 505 | space3270out(10); |
| 506 | - *obptr++ = AID_SF; | |
| 507 | - SET16(obptr, 9); /* length */ | |
| 508 | - *obptr++ = SF_TRANSFER_DATA; | |
| 509 | - *obptr++ = HIGH8(code); | |
| 510 | - *obptr++ = TR_ERROR_REPLY; | |
| 511 | - SET16(obptr, TR_ERROR_HDR); | |
| 512 | - SET16(obptr, TR_ERR_CMDFAIL); | |
| 506 | + *h3270.obptr++ = AID_SF; | |
| 507 | + SET16(h3270.obptr, 9); /* length */ | |
| 508 | + *h3270.obptr++ = SF_TRANSFER_DATA; | |
| 509 | + *h3270.obptr++ = HIGH8(code); | |
| 510 | + *h3270.obptr++ = TR_ERROR_REPLY; | |
| 511 | + SET16(h3270.obptr, TR_ERROR_HDR); | |
| 512 | + SET16(h3270.obptr, TR_ERR_CMDFAIL); | |
| 513 | 513 | net_output(); |
| 514 | 514 | |
| 515 | 515 | /* Update the pop-up and state. */ |
| ... | ... | @@ -535,10 +535,10 @@ dft_read_modified(void) |
| 535 | 535 | { |
| 536 | 536 | if (dft_savebuf_len) { |
| 537 | 537 | trace_ds("> WriteStructuredField FileTransferData\n"); |
| 538 | - obptr = obuf; | |
| 538 | + h3270.obptr = h3270.obuf; | |
| 539 | 539 | space3270out(dft_savebuf_len); |
| 540 | - memcpy(obptr, dft_savebuf, dft_savebuf_len); | |
| 541 | - obptr += dft_savebuf_len; | |
| 540 | + memcpy(h3270.obptr, dft_savebuf, dft_savebuf_len); | |
| 541 | + h3270.obptr += dft_savebuf_len; | |
| 542 | 542 | net_output(); |
| 543 | 543 | } |
| 544 | 544 | } | ... | ... |
src/lib3270/rpq.c
| ... | ... | @@ -142,14 +142,14 @@ void do_qr_rpqnames(void) |
| 142 | 142 | */ |
| 143 | 143 | space3270out(4+4+1+remaining); /* Maximum space for an RPQNAME item */ |
| 144 | 144 | |
| 145 | - SET32(obptr, 0); /* Device number, 0 = All */ | |
| 146 | - SET32(obptr, 0); /* Model number, 0 = All */ | |
| 145 | + SET32(h3270.obptr, 0); /* Device number, 0 = All */ | |
| 146 | + SET32(h3270.obptr, 0); /* Model number, 0 = All */ | |
| 147 | 147 | |
| 148 | - rpql = obptr++; /* Save address to place data length. */ | |
| 148 | + rpql = h3270.obptr++; /* Save address to place data length. */ | |
| 149 | 149 | |
| 150 | 150 | /* Create fixed length portion - program id: x3270 */ |
| 151 | 151 | for (j = 0; j < 5; j++) { |
| 152 | - *obptr++ = asc2ebc[(int)"x3270"[j]]; | |
| 152 | + *h3270.obptr++ = asc2ebc[(int)"x3270"[j]]; | |
| 153 | 153 | remaining--; |
| 154 | 154 | } |
| 155 | 155 | |
| ... | ... | @@ -164,11 +164,9 @@ void do_qr_rpqnames(void) |
| 164 | 164 | |
| 165 | 165 | term_id = rpq_keywords[j].id; |
| 166 | 166 | |
| 167 | - p_term = obptr; /* save starting address (to insert | |
| 168 | - length later) */ | |
| 169 | - obptr++; /* skip length of term, fill in | |
| 170 | - later */ | |
| 171 | - *obptr++ = term_id; /* identify this term */ | |
| 167 | + p_term = h3270.obptr; /* save starting address (to insert length later) */ | |
| 168 | + h3270.obptr++; /* skip length of term, fill in later */ | |
| 169 | + *h3270.obptr++ = term_id; /* identify this term */ | |
| 172 | 170 | |
| 173 | 171 | /* |
| 174 | 172 | * Adjust remaining space by the term prefix size so each case |
| ... | ... | @@ -180,18 +178,18 @@ void do_qr_rpqnames(void) |
| 180 | 178 | |
| 181 | 179 | switch (term_id) { /* build the term based on id */ |
| 182 | 180 | case RPQ_USER: /* User text from env. vars */ |
| 183 | - obptr += get_rpq_user(obptr, remaining); | |
| 181 | + h3270.obptr += get_rpq_user(h3270.obptr, remaining); | |
| 184 | 182 | break; |
| 185 | 183 | |
| 186 | 184 | case RPQ_TIMEZONE: /* UTC time offset */ |
| 187 | 185 | omit_due_space_limit = (remaining < 2); |
| 188 | 186 | if (!omit_due_space_limit) |
| 189 | - SET16(obptr, get_rpq_timezone()); | |
| 187 | + SET16(h3270.obptr, get_rpq_timezone()); | |
| 190 | 188 | break; |
| 191 | 189 | |
| 192 | 190 | case RPQ_ADDRESS: /* Workstation address */ |
| 193 | 191 | #if !defined(_WIN32) /*[*/ |
| 194 | - obptr += get_rpq_address(obptr, remaining); | |
| 192 | + h3270.obptr += get_rpq_address(h3270.obptr, remaining); | |
| 195 | 193 | #endif /*]*/ |
| 196 | 194 | break; |
| 197 | 195 | |
| ... | ... | @@ -200,7 +198,7 @@ void do_qr_rpqnames(void) |
| 200 | 198 | omit_due_space_limit = (x > remaining); |
| 201 | 199 | if (!omit_due_space_limit) { |
| 202 | 200 | for (i = 0; i < x; i++) { |
| 203 | - *obptr++ = asc2ebc[(int)(*(build_rpq_version+i) & 0xff)]; | |
| 201 | + *h3270.obptr++ = asc2ebc[(int)(*(build_rpq_version+i) & 0xff)]; | |
| 204 | 202 | } |
| 205 | 203 | } |
| 206 | 204 | break; |
| ... | ... | @@ -210,7 +208,7 @@ void do_qr_rpqnames(void) |
| 210 | 208 | omit_due_space_limit = ((x+1)/2 > remaining); |
| 211 | 209 | if (!omit_due_space_limit) { |
| 212 | 210 | for (i=0; i < x; i+=2) { |
| 213 | - *obptr++ = ((*(build_rpq_timestamp+i) - '0') << 4) | |
| 211 | + *h3270.obptr++ = ((*(build_rpq_timestamp+i) - '0') << 4) | |
| 214 | 212 | + (*(build_rpq_timestamp+i+1) - '0'); |
| 215 | 213 | } |
| 216 | 214 | } |
| ... | ... | @@ -228,14 +226,14 @@ void do_qr_rpqnames(void) |
| 228 | 226 | * adjust space remaining. |
| 229 | 227 | * obptr now points at "next available byte". |
| 230 | 228 | */ |
| 231 | - x = obptr-p_term; | |
| 229 | + x = h3270.obptr-p_term; | |
| 232 | 230 | if (x > TERM_PREFIX_SIZE) { |
| 233 | 231 | *p_term = x; |
| 234 | 232 | remaining -= x; /* This includes length and id fields, |
| 235 | 233 | correction below */ |
| 236 | 234 | } else { |
| 237 | 235 | /* We didn't add an item after all, reset pointer. */ |
| 238 | - obptr = p_term; | |
| 236 | + h3270.obptr = p_term; | |
| 239 | 237 | } |
| 240 | 238 | /* |
| 241 | 239 | * When we calculated the length of the term, a few lines |
| ... | ... | @@ -257,7 +255,7 @@ void do_qr_rpqnames(void) |
| 257 | 255 | } |
| 258 | 256 | |
| 259 | 257 | /* Fill in overall length of RPQNAME info */ |
| 260 | - *rpql = (obptr - rpql); | |
| 258 | + *rpql = (h3270.obptr - rpql); | |
| 261 | 259 | |
| 262 | 260 | rpq_dump_warnings(); |
| 263 | 261 | } | ... | ... |
src/lib3270/sf.c
| ... | ... | @@ -653,9 +653,9 @@ sf_outbound_ds(unsigned char buf[], int buflen) |
| 653 | 653 | static void |
| 654 | 654 | query_reply_start(void) |
| 655 | 655 | { |
| 656 | - obptr = obuf; | |
| 656 | + h3270.obptr = h3270.obuf; | |
| 657 | 657 | space3270out(1); |
| 658 | - *obptr++ = AID_SF; | |
| 658 | + *h3270.obptr++ = AID_SF; | |
| 659 | 659 | qr_in_progress = True; |
| 660 | 660 | } |
| 661 | 661 | |
| ... | ... | @@ -681,13 +681,13 @@ do_query_reply(unsigned char code) |
| 681 | 681 | } |
| 682 | 682 | |
| 683 | 683 | do { |
| 684 | - int obptr0 = obptr - obuf; | |
| 684 | + int obptr0 = h3270.obptr - h3270.obuf; | |
| 685 | 685 | Boolean full = True; |
| 686 | 686 | |
| 687 | 687 | space3270out(4); |
| 688 | - obptr += 2; /* skip length for now */ | |
| 689 | - *obptr++ = SFID_QREPLY; | |
| 690 | - *obptr++ = code; | |
| 688 | + h3270.obptr += 2; /* skip length for now */ | |
| 689 | + *h3270.obptr++ = SFID_QREPLY; | |
| 690 | + *h3270.obptr++ = code; | |
| 691 | 691 | |
| 692 | 692 | more = False; |
| 693 | 693 | if (replies[i].single_fn) |
| ... | ... | @@ -700,12 +700,12 @@ do_query_reply(unsigned char code) |
| 700 | 700 | unsigned char *obptr_len; |
| 701 | 701 | |
| 702 | 702 | /* Fill in the length. */ |
| 703 | - obptr_len = obuf + obptr0; | |
| 704 | - len = (obptr - obuf) - obptr0; | |
| 703 | + obptr_len = h3270.obuf + obptr0; | |
| 704 | + len = (h3270.obptr - h3270.obuf) - obptr0; | |
| 705 | 705 | SET16(obptr_len, len); |
| 706 | 706 | } else { |
| 707 | 707 | /* Back over the header. */ |
| 708 | - obptr -= 4; | |
| 708 | + h3270.obptr -= 4; | |
| 709 | 709 | } |
| 710 | 710 | } while (more); |
| 711 | 711 | } |
| ... | ... | @@ -730,7 +730,7 @@ do_qr_summary(void) |
| 730 | 730 | #endif /*]*/ |
| 731 | 731 | trace_ds("%s%s", comma, see_qcode(replies[i].code)); |
| 732 | 732 | comma = ","; |
| 733 | - *obptr++ = replies[i].code; | |
| 733 | + *h3270.obptr++ = replies[i].code; | |
| 734 | 734 | #if defined(X3270_DBCS) /*[*/ |
| 735 | 735 | } |
| 736 | 736 | #endif /*]*/ |
| ... | ... | @@ -745,30 +745,30 @@ do_qr_usable_area(void) |
| 745 | 745 | |
| 746 | 746 | trace_ds("> QueryReply(UsableArea)\n"); |
| 747 | 747 | space3270out(19); |
| 748 | - *obptr++ = 0x01; /* 12/14-bit addressing */ | |
| 749 | - *obptr++ = 0x00; /* no special character features */ | |
| 750 | - SET16(obptr, h3270.maxCOLS); /* usable width */ | |
| 751 | - SET16(obptr, h3270.maxROWS); /* usable height */ | |
| 752 | - *obptr++ = 0x01; /* units (mm) */ | |
| 748 | + *h3270.obptr++ = 0x01; /* 12/14-bit addressing */ | |
| 749 | + *h3270.obptr++ = 0x00; /* no special character features */ | |
| 750 | + SET16(h3270.obptr, h3270.maxCOLS); /* usable width */ | |
| 751 | + SET16(h3270.obptr, h3270.maxROWS); /* usable height */ | |
| 752 | + *h3270.obptr++ = 0x01; /* units (mm) */ | |
| 753 | 753 | num = display_widthMM(); |
| 754 | 754 | denom = display_width(); |
| 755 | 755 | while (!(num %2) && !(denom % 2)) { |
| 756 | 756 | num /= 2; |
| 757 | 757 | denom /= 2; |
| 758 | 758 | } |
| 759 | - SET16(obptr, (int)num); /* Xr numerator */ | |
| 760 | - SET16(obptr, (int)denom); /* Xr denominator */ | |
| 759 | + SET16(h3270.obptr, (int)num); /* Xr numerator */ | |
| 760 | + SET16(h3270.obptr, (int)denom); /* Xr denominator */ | |
| 761 | 761 | num = display_heightMM(); |
| 762 | 762 | denom = display_height(); |
| 763 | 763 | while (!(num %2) && !(denom % 2)) { |
| 764 | 764 | num /= 2; |
| 765 | 765 | denom /= 2; |
| 766 | 766 | } |
| 767 | - SET16(obptr, (int)num); /* Yr numerator */ | |
| 768 | - SET16(obptr, (int)denom); /* Yr denominator */ | |
| 769 | - *obptr++ = *char_width; /* AW */ | |
| 770 | - *obptr++ = *char_height;/* AH */ | |
| 771 | - SET16(obptr, h3270.maxCOLS * h3270.maxROWS); /* buffer, questionable */ | |
| 767 | + SET16(h3270.obptr, (int)num); /* Yr numerator */ | |
| 768 | + SET16(h3270.obptr, (int)denom); /* Yr denominator */ | |
| 769 | + *h3270.obptr++ = *char_width; /* AW */ | |
| 770 | + *h3270.obptr++ = *char_height;/* AH */ | |
| 771 | + SET16(h3270.obptr, h3270.maxCOLS * h3270.maxROWS); /* buffer, questionable */ | |
| 772 | 772 | } |
| 773 | 773 | |
| 774 | 774 | static void |
| ... | ... | @@ -782,16 +782,16 @@ do_qr_color(void) |
| 782 | 782 | color_max = h3270.color8 ? 8: 16; /* report on 8 or 16 colors */ |
| 783 | 783 | |
| 784 | 784 | space3270out(4 + 2*15); |
| 785 | - *obptr++ = 0x00; /* no options */ | |
| 786 | - *obptr++ = color_max; /* report on 8 or 16 colors */ | |
| 787 | - *obptr++ = 0x00; /* default color: */ | |
| 788 | - *obptr++ = 0xf0 + COLOR_GREEN; /* green */ | |
| 785 | + *h3270.obptr++ = 0x00; /* no options */ | |
| 786 | + *h3270.obptr++ = color_max; /* report on 8 or 16 colors */ | |
| 787 | + *h3270.obptr++ = 0x00; /* default color: */ | |
| 788 | + *h3270.obptr++ = 0xf0 + COLOR_GREEN; /* green */ | |
| 789 | 789 | for (i = 0xf1; i < 0xf1 + color_max - 1; i++) { |
| 790 | - *obptr++ = i; | |
| 790 | + *h3270.obptr++ = i; | |
| 791 | 791 | if (h3270.m3279) |
| 792 | - *obptr++ = i; | |
| 792 | + *h3270.obptr++ = i; | |
| 793 | 793 | else |
| 794 | - *obptr++ = 0x00; | |
| 794 | + *h3270.obptr++ = 0x00; | |
| 795 | 795 | } |
| 796 | 796 | |
| 797 | 797 | /* |
| ... | ... | @@ -813,17 +813,17 @@ do_qr_highlighting(void) |
| 813 | 813 | { |
| 814 | 814 | trace_ds("> QueryReply(Highlighting)\n"); |
| 815 | 815 | space3270out(11); |
| 816 | - *obptr++ = 5; /* report on 5 pairs */ | |
| 817 | - *obptr++ = XAH_DEFAULT; /* default: */ | |
| 818 | - *obptr++ = XAH_NORMAL; /* normal */ | |
| 819 | - *obptr++ = XAH_BLINK; /* blink: */ | |
| 820 | - *obptr++ = XAH_BLINK; /* blink */ | |
| 821 | - *obptr++ = XAH_REVERSE; /* reverse: */ | |
| 822 | - *obptr++ = XAH_REVERSE; /* reverse */ | |
| 823 | - *obptr++ = XAH_UNDERSCORE; /* underscore: */ | |
| 824 | - *obptr++ = XAH_UNDERSCORE; /* underscore */ | |
| 825 | - *obptr++ = XAH_INTENSIFY; /* intensify: */ | |
| 826 | - *obptr++ = XAH_INTENSIFY; /* intensify */ | |
| 816 | + *h3270.obptr++ = 5; /* report on 5 pairs */ | |
| 817 | + *h3270.obptr++ = XAH_DEFAULT; /* default: */ | |
| 818 | + *h3270.obptr++ = XAH_NORMAL; /* normal */ | |
| 819 | + *h3270.obptr++ = XAH_BLINK; /* blink: */ | |
| 820 | + *h3270.obptr++ = XAH_BLINK; /* blink */ | |
| 821 | + *h3270.obptr++ = XAH_REVERSE; /* reverse: */ | |
| 822 | + *h3270.obptr++ = XAH_REVERSE; /* reverse */ | |
| 823 | + *h3270.obptr++ = XAH_UNDERSCORE; /* underscore: */ | |
| 824 | + *h3270.obptr++ = XAH_UNDERSCORE; /* underscore */ | |
| 825 | + *h3270.obptr++ = XAH_INTENSIFY; /* intensify: */ | |
| 826 | + *h3270.obptr++ = XAH_INTENSIFY; /* intensify */ | |
| 827 | 827 | } |
| 828 | 828 | |
| 829 | 829 | static void |
| ... | ... | @@ -831,9 +831,9 @@ do_qr_reply_modes(void) |
| 831 | 831 | { |
| 832 | 832 | trace_ds("> QueryReply(ReplyModes)\n"); |
| 833 | 833 | space3270out(3); |
| 834 | - *obptr++ = SF_SRM_FIELD; | |
| 835 | - *obptr++ = SF_SRM_XFIELD; | |
| 836 | - *obptr++ = SF_SRM_CHAR; | |
| 834 | + *h3270.obptr++ = SF_SRM_FIELD; | |
| 835 | + *h3270.obptr++ = SF_SRM_XFIELD; | |
| 836 | + *h3270.obptr++ = SF_SRM_CHAR; | |
| 837 | 837 | } |
| 838 | 838 | |
| 839 | 839 | #if defined(X3270_DBCS) /*[*/ |
| ... | ... | @@ -858,9 +858,9 @@ do_qr_alpha_part(void) |
| 858 | 858 | { |
| 859 | 859 | trace_ds("> QueryReply(AlphanumericPartitions)\n"); |
| 860 | 860 | space3270out(4); |
| 861 | - *obptr++ = 0; /* 1 partition */ | |
| 862 | - SET16(obptr, h3270.maxROWS * h3270.maxCOLS); /* buffer space */ | |
| 863 | - *obptr++ = 0; /* no special features */ | |
| 861 | + *h3270.obptr++ = 0; /* 1 partition */ | |
| 862 | + SET16(h3270.obptr, h3270.maxROWS * h3270.maxCOLS); /* buffer space */ | |
| 863 | + *h3270.obptr++ = 0; /* no special features */ | |
| 864 | 864 | } |
| 865 | 865 | |
| 866 | 866 | static void |
| ... | ... | @@ -870,35 +870,36 @@ do_qr_charsets(void) |
| 870 | 870 | space3270out(64); |
| 871 | 871 | #if defined(X3270_DBCS) /*[*/ |
| 872 | 872 | if (dbcs) |
| 873 | - *obptr++ = 0x8e; /* flags: GE, CGCSGID, DBCS */ | |
| 873 | + *h3270.obptr++ = 0x8e; /* flags: GE, CGCSGID, DBCS */ | |
| 874 | 874 | else |
| 875 | 875 | #endif /*]*/ |
| 876 | - *obptr++ = 0x82; /* flags: GE, CGCSGID present */ | |
| 877 | - *obptr++ = 0x00; /* more flags */ | |
| 878 | - *obptr++ = *char_width; /* SDW */ | |
| 879 | - *obptr++ = *char_height; /* SDW */ | |
| 880 | - *obptr++ = 0x00; /* no load PS */ | |
| 881 | - *obptr++ = 0x00; | |
| 882 | - *obptr++ = 0x00; | |
| 883 | - *obptr++ = 0x00; | |
| 876 | + *h3270.obptr++ = 0x82; /* flags: GE, CGCSGID present */ | |
| 877 | + | |
| 878 | + *h3270.obptr++ = 0x00; /* more flags */ | |
| 879 | + *h3270.obptr++ = *char_width; /* SDW */ | |
| 880 | + *h3270.obptr++ = *char_height; /* SDW */ | |
| 881 | + *h3270.obptr++ = 0x00; /* no load PS */ | |
| 882 | + *h3270.obptr++ = 0x00; | |
| 883 | + *h3270.obptr++ = 0x00; | |
| 884 | + *h3270.obptr++ = 0x00; | |
| 884 | 885 | #if defined(X3270_DBCS) /*[*/ |
| 885 | 886 | if (dbcs) |
| 886 | - *obptr++ = 0x0b; /* DL (11 bytes) */ | |
| 887 | + *h3270.obptr++ = 0x0b; /* DL (11 bytes) */ | |
| 887 | 888 | else |
| 888 | 889 | #endif /*]*/ |
| 889 | - *obptr++ = 0x07; /* DL (7 bytes) */ | |
| 890 | + *h3270.obptr++ = 0x07; /* DL (7 bytes) */ | |
| 890 | 891 | |
| 891 | - *obptr++ = 0x00; /* SET 0: */ | |
| 892 | + *h3270.obptr++ = 0x00; /* SET 0: */ | |
| 892 | 893 | #if defined(X3270_DBCS) /*[*/ |
| 893 | 894 | if (dbcs) |
| 894 | - *obptr++ = 0x00; /* FLAGS: non-load, single- | |
| 895 | + *h3270.obptr++ = 0x00; /* FLAGS: non-load, single- | |
| 895 | 896 | plane, single-bute */ |
| 896 | 897 | else |
| 897 | 898 | #endif /*]*/ |
| 898 | - *obptr++ = 0x10; /* FLAGS: non-loadable, | |
| 899 | + *h3270.obptr++ = 0x10; /* FLAGS: non-loadable, | |
| 899 | 900 | single-plane, single-byte, |
| 900 | 901 | no compare */ |
| 901 | - *obptr++ = 0x00; /* LCID 0 */ | |
| 902 | + *h3270.obptr++ = 0x00; /* LCID 0 */ | |
| 902 | 903 | #if defined(X3270_DBCS) /*[*/ |
| 903 | 904 | if (dbcs) { |
| 904 | 905 | *obptr++ = 0x00; /* SW 0 */ |
| ... | ... | @@ -907,17 +908,17 @@ do_qr_charsets(void) |
| 907 | 908 | *obptr++ = 0x00; /* SUBSN */ |
| 908 | 909 | } |
| 909 | 910 | #endif /*]*/ |
| 910 | - SET32(obptr, cgcsgid); /* CGCSGID */ | |
| 911 | + SET32(h3270.obptr, cgcsgid); /* CGCSGID */ | |
| 911 | 912 | if (!*standard_font) { |
| 912 | 913 | /* special 3270 font, includes APL */ |
| 913 | - *obptr++ = 0x01;/* SET 1: */ | |
| 914 | + *h3270.obptr++ = 0x01;/* SET 1: */ | |
| 914 | 915 | if (h3270.apl_mode) |
| 915 | - *obptr++ = 0x00;/* FLAGS: non-loadable, single-plane, | |
| 916 | + *h3270.obptr++ = 0x00;/* FLAGS: non-loadable, single-plane, | |
| 916 | 917 | single-byte, no compare */ |
| 917 | 918 | else |
| 918 | - *obptr++ = 0x10;/* FLAGS: non-loadable, single-plane, | |
| 919 | + *h3270.obptr++ = 0x10;/* FLAGS: non-loadable, single-plane, | |
| 919 | 920 | single-byte, no compare */ |
| 920 | - *obptr++ = 0xf1;/* LCID */ | |
| 921 | + *h3270.obptr++ = 0xf1;/* LCID */ | |
| 921 | 922 | #if defined(X3270_DBCS) /*[*/ |
| 922 | 923 | if (dbcs) { |
| 923 | 924 | *obptr++ = 0x00;/* SW 0 */ |
| ... | ... | @@ -926,10 +927,10 @@ do_qr_charsets(void) |
| 926 | 927 | *obptr++ = 0x00;/* SUBSN */ |
| 927 | 928 | } |
| 928 | 929 | #endif /*]*/ |
| 929 | - *obptr++ = 0x03;/* CGCSGID: 3179-style APL2 */ | |
| 930 | - *obptr++ = 0xc3; | |
| 931 | - *obptr++ = 0x01; | |
| 932 | - *obptr++ = 0x36; | |
| 930 | + *h3270.obptr++ = 0x03;/* CGCSGID: 3179-style APL2 */ | |
| 931 | + *h3270.obptr++ = 0xc3; | |
| 932 | + *h3270.obptr++ = 0x01; | |
| 933 | + *h3270.obptr++ = 0x36; | |
| 933 | 934 | } |
| 934 | 935 | #if defined(X3270_DBCS) /*[*/ |
| 935 | 936 | if (dbcs) { |
| ... | ... | @@ -953,10 +954,10 @@ do_qr_ddm(void) |
| 953 | 954 | |
| 954 | 955 | trace_ds("> QueryReply(DistributedDataManagement)\n"); |
| 955 | 956 | space3270out(8); |
| 956 | - SET16(obptr,0); /* set reserved field to 0 */ | |
| 957 | - SET16(obptr, dft_buffersize); /* set inbound length limit INLIM */ | |
| 958 | - SET16(obptr, dft_buffersize); /* set outbound length limit OUTLIM */ | |
| 959 | - SET16(obptr, 0x0101); /* NSS=01, DDMSS=01 */ | |
| 957 | + SET16(h3270.obptr,0); /* set reserved field to 0 */ | |
| 958 | + SET16(h3270.obptr, dft_buffersize); /* set inbound length limit INLIM */ | |
| 959 | + SET16(h3270.obptr, dft_buffersize); /* set outbound length limit OUTLIM */ | |
| 960 | + SET16(h3270.obptr, 0x0101); /* NSS=01, DDMSS=01 */ | |
| 960 | 961 | } |
| 961 | 962 | #endif /*]*/ |
| 962 | 963 | |
| ... | ... | @@ -965,15 +966,15 @@ do_qr_imp_part(void) |
| 965 | 966 | { |
| 966 | 967 | trace_ds("> QueryReply(ImplicitPartition)\n"); |
| 967 | 968 | space3270out(13); |
| 968 | - *obptr++ = 0x0; /* reserved */ | |
| 969 | - *obptr++ = 0x0; | |
| 970 | - *obptr++ = 0x0b; /* length of display size */ | |
| 971 | - *obptr++ = 0x01; /* "implicit partition size" */ | |
| 972 | - *obptr++ = 0x00; /* reserved */ | |
| 973 | - SET16(obptr, 80); /* implicit partition width */ | |
| 974 | - SET16(obptr, 24); /* implicit partition height */ | |
| 975 | - SET16(obptr, h3270.maxCOLS); /* alternate height */ | |
| 976 | - SET16(obptr, h3270.maxROWS); /* alternate width */ | |
| 969 | + *h3270.obptr++ = 0x0; /* reserved */ | |
| 970 | + *h3270.obptr++ = 0x0; | |
| 971 | + *h3270.obptr++ = 0x0b; /* length of display size */ | |
| 972 | + *h3270.obptr++ = 0x01; /* "implicit partition size" */ | |
| 973 | + *h3270.obptr++ = 0x00; /* reserved */ | |
| 974 | + SET16(h3270.obptr, 80); /* implicit partition width */ | |
| 975 | + SET16(h3270.obptr, 24); /* implicit partition height */ | |
| 976 | + SET16(h3270.obptr, h3270.maxCOLS); /* alternate height */ | |
| 977 | + SET16(h3270.obptr, h3270.maxROWS); /* alternate width */ | |
| 977 | 978 | } |
| 978 | 979 | |
| 979 | 980 | static void | ... | ... |
src/lib3270/telnet.c
| ... | ... | @@ -121,8 +121,8 @@ int ns_brcvd; |
| 121 | 121 | int ns_rrcvd; |
| 122 | 122 | int ns_bsent; |
| 123 | 123 | int ns_rsent; |
| 124 | -unsigned char *obuf; /* 3270 output buffer */ | |
| 125 | -unsigned char *obptr = (unsigned char *) NULL; | |
| 124 | +// unsigned char *obuf; /* 3270 output buffer */ | |
| 125 | +// unsigned char *obptr = (unsigned char *) NULL; | |
| 126 | 126 | int linemode = 1; |
| 127 | 127 | |
| 128 | 128 | /* |
| ... | ... | @@ -2520,7 +2520,7 @@ void space3270out(int n) |
| 2520 | 2520 | unsigned more = 0; |
| 2521 | 2521 | |
| 2522 | 2522 | if (obuf_size) |
| 2523 | - nc = obptr - obuf; | |
| 2523 | + nc = h3270.obptr - h3270.obuf; | |
| 2524 | 2524 | |
| 2525 | 2525 | while ((nc + n + EH_SIZE) > (obuf_size + more)) { |
| 2526 | 2526 | more += BUFSIZ; |
| ... | ... | @@ -2530,8 +2530,8 @@ void space3270out(int n) |
| 2530 | 2530 | obuf_size += more; |
| 2531 | 2531 | obuf_base = (unsigned char *)Realloc((char *)obuf_base, |
| 2532 | 2532 | obuf_size); |
| 2533 | - obuf = obuf_base + EH_SIZE; | |
| 2534 | - obptr = obuf + nc; | |
| 2533 | + h3270.obuf = obuf_base + EH_SIZE; | |
| 2534 | + h3270.obptr = h3270.obuf + nc; | |
| 2535 | 2535 | } |
| 2536 | 2536 | } |
| 2537 | 2537 | |
| ... | ... | @@ -2669,7 +2669,7 @@ net_output(void) |
| 2669 | 2669 | unsigned char *nxoptr, *xoptr; |
| 2670 | 2670 | |
| 2671 | 2671 | #if defined(X3270_TN3270E) /*[*/ |
| 2672 | -#define BSTART ((IN_TN3270E || IN_SSCP) ? obuf_base : obuf) | |
| 2672 | +#define BSTART ((IN_TN3270E || IN_SSCP) ? obuf_base : h3270.obuf) | |
| 2673 | 2673 | #else /*][*/ |
| 2674 | 2674 | #define BSTART obuf |
| 2675 | 2675 | #endif /*]*/ |
| ... | ... | @@ -2701,7 +2701,7 @@ net_output(void) |
| 2701 | 2701 | #endif /*]*/ |
| 2702 | 2702 | |
| 2703 | 2703 | /* Reallocate the expanded output buffer. */ |
| 2704 | - while (xobuf_len < (obptr - BSTART + 1) * 2) { | |
| 2704 | + while (xobuf_len < (h3270.obptr - BSTART + 1) * 2) { | |
| 2705 | 2705 | xobuf_len += BUFSZ; |
| 2706 | 2706 | need_resize++; |
| 2707 | 2707 | } |
| ... | ... | @@ -2712,7 +2712,7 @@ net_output(void) |
| 2712 | 2712 | /* Copy and expand IACs. */ |
| 2713 | 2713 | xoptr = xobuf; |
| 2714 | 2714 | nxoptr = BSTART; |
| 2715 | - while (nxoptr < obptr) { | |
| 2715 | + while (nxoptr < h3270.obptr) { | |
| 2716 | 2716 | if ((*xoptr++ = *nxoptr++) == IAC) { |
| 2717 | 2717 | *xoptr++ = IAC; |
| 2718 | 2718 | } |
| ... | ... | @@ -2802,7 +2802,7 @@ net_add_dummy_tn3270e(void) |
| 2802 | 2802 | return False; |
| 2803 | 2803 | |
| 2804 | 2804 | space3270out(EH_SIZE); |
| 2805 | - h = (tn3270e_header *)obptr; | |
| 2805 | + h = (tn3270e_header *)h3270.obptr; | |
| 2806 | 2806 | |
| 2807 | 2807 | switch (tn3270e_submode) { |
| 2808 | 2808 | case E_NONE: |
| ... | ... | @@ -2821,7 +2821,7 @@ net_add_dummy_tn3270e(void) |
| 2821 | 2821 | h->response_flag = TN3270E_RSF_NO_RESPONSE; |
| 2822 | 2822 | h->seq_number[0] = 0; |
| 2823 | 2823 | h->seq_number[1] = 0; |
| 2824 | - obptr += EH_SIZE; | |
| 2824 | + h3270.obptr += EH_SIZE; | |
| 2825 | 2825 | return True; |
| 2826 | 2826 | } |
| 2827 | 2827 | #endif /*]*/ |
| ... | ... | @@ -3085,7 +3085,7 @@ net_snap_options(void) |
| 3085 | 3085 | if (!CONNECTED) |
| 3086 | 3086 | return False; |
| 3087 | 3087 | |
| 3088 | - obptr = obuf; | |
| 3088 | + h3270.obptr = h3270.obuf; | |
| 3089 | 3089 | |
| 3090 | 3090 | /* Do TTYPE first. */ |
| 3091 | 3091 | if (h3270.myopts[TELOPT_TTYPE]) { |
| ... | ... | @@ -3093,7 +3093,7 @@ net_snap_options(void) |
| 3093 | 3093 | |
| 3094 | 3094 | space3270out(sizeof(ttype_str)); |
| 3095 | 3095 | for (j = 0; j < sizeof(ttype_str); j++) |
| 3096 | - *obptr++ = ttype_str[j]; | |
| 3096 | + *h3270.obptr++ = ttype_str[j]; | |
| 3097 | 3097 | } |
| 3098 | 3098 | |
| 3099 | 3099 | /* Do the other options. */ |
| ... | ... | @@ -3102,15 +3102,15 @@ net_snap_options(void) |
| 3102 | 3102 | if (i == TELOPT_TTYPE) |
| 3103 | 3103 | continue; |
| 3104 | 3104 | if (h3270.hisopts[i]) { |
| 3105 | - *obptr++ = IAC; | |
| 3106 | - *obptr++ = WILL; | |
| 3107 | - *obptr++ = (unsigned char)i; | |
| 3105 | + *h3270.obptr++ = IAC; | |
| 3106 | + *h3270.obptr++ = WILL; | |
| 3107 | + *h3270.obptr++ = (unsigned char)i; | |
| 3108 | 3108 | any = True; |
| 3109 | 3109 | } |
| 3110 | 3110 | if (h3270.myopts[i]) { |
| 3111 | - *obptr++ = IAC; | |
| 3112 | - *obptr++ = DO; | |
| 3113 | - *obptr++ = (unsigned char)i; | |
| 3111 | + *h3270.obptr++ = IAC; | |
| 3112 | + *h3270.obptr++ = DO; | |
| 3113 | + *h3270.obptr++ = (unsigned char)i; | |
| 3114 | 3114 | any = True; |
| 3115 | 3115 | } |
| 3116 | 3116 | } |
| ... | ... | @@ -3124,50 +3124,48 @@ net_snap_options(void) |
| 3124 | 3124 | ((h3270.connected_type != CN) ? strlen(h3270.connected_type) : 0) + |
| 3125 | 3125 | ((h3270.connected_lu != CN) ? + strlen(h3270.connected_lu) : 0) + |
| 3126 | 3126 | 2); |
| 3127 | - *obptr++ = IAC; | |
| 3128 | - *obptr++ = SB; | |
| 3129 | - *obptr++ = TELOPT_TN3270E; | |
| 3130 | - *obptr++ = TN3270E_OP_DEVICE_TYPE; | |
| 3131 | - *obptr++ = TN3270E_OP_IS; | |
| 3127 | + *h3270.obptr++ = IAC; | |
| 3128 | + *h3270.obptr++ = SB; | |
| 3129 | + *h3270.obptr++ = TELOPT_TN3270E; | |
| 3130 | + *h3270.obptr++ = TN3270E_OP_DEVICE_TYPE; | |
| 3131 | + *h3270.obptr++ = TN3270E_OP_IS; | |
| 3132 | 3132 | if (h3270.connected_type != CN) { |
| 3133 | - (void) memcpy(obptr, h3270.connected_type, | |
| 3134 | - strlen(h3270.connected_type)); | |
| 3135 | - obptr += strlen(h3270.connected_type); | |
| 3133 | + (void) memcpy(h3270.obptr, h3270.connected_type,strlen(h3270.connected_type)); | |
| 3134 | + h3270.obptr += strlen(h3270.connected_type); | |
| 3136 | 3135 | } |
| 3137 | 3136 | if (h3270.connected_lu != CN) { |
| 3138 | - *obptr++ = TN3270E_OP_CONNECT; | |
| 3139 | - (void) memcpy(obptr, h3270.connected_lu, | |
| 3140 | - strlen(h3270.connected_lu)); | |
| 3141 | - obptr += strlen(h3270.connected_lu); | |
| 3137 | + *h3270.obptr++ = TN3270E_OP_CONNECT; | |
| 3138 | + (void) memcpy(h3270.obptr, h3270.connected_lu,strlen(h3270.connected_lu)); | |
| 3139 | + h3270.obptr += strlen(h3270.connected_lu); | |
| 3142 | 3140 | } |
| 3143 | - *obptr++ = IAC; | |
| 3144 | - *obptr++ = SE; | |
| 3141 | + *h3270.obptr++ = IAC; | |
| 3142 | + *h3270.obptr++ = SE; | |
| 3145 | 3143 | |
| 3146 | 3144 | space3270out(38); |
| 3147 | - (void) memcpy(obptr, functions_req, 4); | |
| 3148 | - obptr += 4; | |
| 3149 | - *obptr++ = TN3270E_OP_IS; | |
| 3145 | + (void) memcpy(h3270.obptr, functions_req, 4); | |
| 3146 | + h3270.obptr += 4; | |
| 3147 | + *h3270.obptr++ = TN3270E_OP_IS; | |
| 3150 | 3148 | for (i = 0; i < 32; i++) { |
| 3151 | 3149 | if (e_funcs & E_OPT(i)) |
| 3152 | - *obptr++ = i; | |
| 3150 | + *h3270.obptr++ = i; | |
| 3153 | 3151 | } |
| 3154 | - *obptr++ = IAC; | |
| 3155 | - *obptr++ = SE; | |
| 3152 | + *h3270.obptr++ = IAC; | |
| 3153 | + *h3270.obptr++ = SE; | |
| 3156 | 3154 | |
| 3157 | 3155 | if (tn3270e_bound) { |
| 3158 | 3156 | tn3270e_header *h; |
| 3159 | 3157 | |
| 3160 | 3158 | space3270out(EH_SIZE + 3); |
| 3161 | - h = (tn3270e_header *)obptr; | |
| 3159 | + h = (tn3270e_header *)h3270.obptr; | |
| 3162 | 3160 | h->data_type = TN3270E_DT_BIND_IMAGE; |
| 3163 | 3161 | h->request_flag = 0; |
| 3164 | 3162 | h->response_flag = 0; |
| 3165 | 3163 | h->seq_number[0] = 0; |
| 3166 | 3164 | h->seq_number[1] = 0; |
| 3167 | - obptr += EH_SIZE; | |
| 3168 | - *obptr++ = 1; /* dummy */ | |
| 3169 | - *obptr++ = IAC; | |
| 3170 | - *obptr++ = EOR; | |
| 3165 | + h3270.obptr += EH_SIZE; | |
| 3166 | + *h3270.obptr++ = 1; /* dummy */ | |
| 3167 | + *h3270.obptr++ = IAC; | |
| 3168 | + *h3270.obptr++ = EOR; | |
| 3171 | 3169 | } |
| 3172 | 3170 | } |
| 3173 | 3171 | #endif /*]*/ | ... | ... |
src/lib3270/telnetc.h