Commit 69524ccb8f8fd810cb6fb485edf6a067b8cb0e3c
1 parent
c90d0568
Exists in
master
and in
5 other branches
Ajustes para multi-sessao
Showing
2 changed files
with
175 additions
and
175 deletions
Show diff stats
src/lib3270/ansi.c
... | ... | @@ -126,64 +126,64 @@ static enum state { |
126 | 126 | MBPEND = 7 |
127 | 127 | } state = DATA; |
128 | 128 | |
129 | -static enum state ansi_data_mode(int, int); | |
130 | -static enum state dec_save_cursor(int, int); | |
131 | -static enum state dec_restore_cursor(int, int); | |
132 | -static enum state ansi_newline(int, int); | |
133 | -static enum state ansi_cursor_up(int, int); | |
134 | -static enum state ansi_esc2(int, int); | |
135 | -static enum state ansi_reset(int, int); | |
136 | -static enum state ansi_insert_chars(int, int); | |
137 | -static enum state ansi_cursor_down(int, int); | |
138 | -static enum state ansi_cursor_right(int, int); | |
139 | -static enum state ansi_cursor_left(int, int); | |
140 | -static enum state ansi_cursor_motion(int, int); | |
141 | -static enum state ansi_erase_in_display(int, int); | |
142 | -static enum state ansi_erase_in_line(int, int); | |
143 | -static enum state ansi_insert_lines(int, int); | |
144 | -static enum state ansi_delete_lines(int, int); | |
145 | -static enum state ansi_delete_chars(int, int); | |
146 | -static enum state ansi_sgr(int, int); | |
147 | -static enum state ansi_bell(int, int); | |
148 | -static enum state ansi_newpage(int, int); | |
149 | -static enum state ansi_backspace(int, int); | |
150 | -static enum state ansi_cr(int, int); | |
151 | -static enum state ansi_lf(int, int); | |
152 | -static enum state ansi_htab(int, int); | |
153 | -static enum state ansi_escape(int, int); | |
154 | -static enum state ansi_nop(int, int); | |
155 | -static enum state ansi_printing(int, int); | |
156 | -static enum state ansi_semicolon(int, int); | |
157 | -static enum state ansi_digit(int, int); | |
158 | -static enum state ansi_reverse_index(int, int); | |
159 | -static enum state ansi_send_attributes(int, int); | |
160 | -static enum state ansi_set_mode(int, int); | |
161 | -static enum state ansi_reset_mode(int, int); | |
162 | -static enum state dec_return_terminal_id(int, int); | |
163 | -static enum state ansi_status_report(int, int); | |
164 | -static enum state ansi_cs_designate(int, int); | |
165 | -static enum state ansi_esc3(int, int); | |
166 | -static enum state dec_set(int, int); | |
167 | -static enum state dec_reset(int, int); | |
168 | -static enum state dec_save(int, int); | |
169 | -static enum state dec_restore(int, int); | |
170 | -static enum state dec_scrolling_region(int, int); | |
171 | -static enum state xterm_text_mode(int, int); | |
172 | -static enum state xterm_text_semicolon(int, int); | |
173 | -static enum state xterm_text(int, int); | |
174 | -static enum state xterm_text_do(int, int); | |
175 | -static enum state ansi_htab_set(int, int); | |
176 | -static enum state ansi_htab_clear(int, int); | |
177 | -static enum state ansi_cs_designate2(int, int); | |
178 | -static enum state ansi_select_g0(int, int); | |
179 | -static enum state ansi_select_g1(int, int); | |
180 | -static enum state ansi_select_g2(int, int); | |
181 | -static enum state ansi_select_g3(int, int); | |
182 | -static enum state ansi_one_g2(int, int); | |
183 | -static enum state ansi_one_g3(int, int); | |
184 | -static enum state ansi_multibyte(int, int); | |
185 | - | |
186 | -typedef enum state (*afn_t)(int, int); | |
129 | +static enum state ansi_data_mode(H3270 *, int, int); | |
130 | +static enum state dec_save_cursor(H3270 *, int, int); | |
131 | +static enum state dec_restore_cursor(H3270 *, int, int); | |
132 | +static enum state ansi_newline(H3270 *, int, int); | |
133 | +static enum state ansi_cursor_up(H3270 *, int, int); | |
134 | +static enum state ansi_esc2(H3270 *, int, int); | |
135 | +static enum state ansi_reset(H3270 *, int, int); | |
136 | +static enum state ansi_insert_chars(H3270 *, int, int); | |
137 | +static enum state ansi_cursor_down(H3270 *, int, int); | |
138 | +static enum state ansi_cursor_right(H3270 *, int, int); | |
139 | +static enum state ansi_cursor_left(H3270 *, int, int); | |
140 | +static enum state ansi_cursor_motion(H3270 *, int, int); | |
141 | +static enum state ansi_erase_in_display(H3270 *, int, int); | |
142 | +static enum state ansi_erase_in_line(H3270 *, int, int); | |
143 | +static enum state ansi_insert_lines(H3270 *, int, int); | |
144 | +static enum state ansi_delete_lines(H3270 *, int, int); | |
145 | +static enum state ansi_delete_chars(H3270 *, int, int); | |
146 | +static enum state ansi_sgr(H3270 *, int, int); | |
147 | +static enum state ansi_bell(H3270 *, int, int); | |
148 | +static enum state ansi_newpage(H3270 *, int, int); | |
149 | +static enum state ansi_backspace(H3270 *, int, int); | |
150 | +static enum state ansi_cr(H3270 *, int, int); | |
151 | +static enum state ansi_lf(H3270 *, int, int); | |
152 | +static enum state ansi_htab(H3270 *, int, int); | |
153 | +static enum state ansi_escape(H3270 *, int, int); | |
154 | +static enum state ansi_nop(H3270 *, int, int); | |
155 | +static enum state ansi_printing(H3270 *, int, int); | |
156 | +static enum state ansi_semicolon(H3270 *, int, int); | |
157 | +static enum state ansi_digit(H3270 *, int, int); | |
158 | +static enum state ansi_reverse_index(H3270 *, int, int); | |
159 | +static enum state ansi_send_attributes(H3270 *, int, int); | |
160 | +static enum state ansi_set_mode(H3270 *, int, int); | |
161 | +static enum state ansi_reset_mode(H3270 *, int, int); | |
162 | +static enum state dec_return_terminal_id(H3270 *, int, int); | |
163 | +static enum state ansi_status_report(H3270 *, int, int); | |
164 | +static enum state ansi_cs_designate(H3270 *, int, int); | |
165 | +static enum state ansi_esc3(H3270 *, int, int); | |
166 | +static enum state dec_set(H3270 *, int, int); | |
167 | +static enum state dec_reset(H3270 *, int, int); | |
168 | +static enum state dec_save(H3270 *, int, int); | |
169 | +static enum state dec_restore(H3270 *, int, int); | |
170 | +static enum state dec_scrolling_region(H3270 *, int, int); | |
171 | +static enum state xterm_text_mode(H3270 *, int, int); | |
172 | +static enum state xterm_text_semicolon(H3270 *, int, int); | |
173 | +static enum state xterm_text(H3270 *, int, int); | |
174 | +static enum state xterm_text_do(H3270 *, int, int); | |
175 | +static enum state ansi_htab_set(H3270 *, int, int); | |
176 | +static enum state ansi_htab_clear(H3270 *, int, int); | |
177 | +static enum state ansi_cs_designate2(H3270 *, int, int); | |
178 | +static enum state ansi_select_g0(H3270 *, int, int); | |
179 | +static enum state ansi_select_g1(H3270 *, int, int); | |
180 | +static enum state ansi_select_g2(H3270 *, int, int); | |
181 | +static enum state ansi_select_g3(H3270 *, int, int); | |
182 | +static enum state ansi_one_g2(H3270 *, int, int); | |
183 | +static enum state ansi_one_g3(H3270 *, int, int); | |
184 | +static enum state ansi_multibyte(H3270 *, int, int); | |
185 | + | |
186 | +typedef enum state (*afn_t)(H3270 *, int, int); | |
187 | 187 | static afn_t ansi_fn[] = { |
188 | 188 | /* 0 */ &ansi_data_mode, |
189 | 189 | /* 1 */ &dec_save_cursor, |
... | ... | @@ -489,13 +489,13 @@ static Boolean held_wrap = False; |
489 | 489 | static void ansi_scroll(void); |
490 | 490 | |
491 | 491 | static enum state |
492 | -ansi_data_mode(int ig1 unused, int ig2 unused) | |
492 | +ansi_data_mode(H3270 *hSession, int ig1 unused, int ig2 unused) | |
493 | 493 | { |
494 | 494 | return DATA; |
495 | 495 | } |
496 | 496 | |
497 | 497 | static enum state |
498 | -dec_save_cursor(int ig1 unused, int ig2 unused) | |
498 | +dec_save_cursor(H3270 *hSession, int ig1 unused, int ig2 unused) | |
499 | 499 | { |
500 | 500 | int i; |
501 | 501 | |
... | ... | @@ -510,7 +510,7 @@ dec_save_cursor(int ig1 unused, int ig2 unused) |
510 | 510 | } |
511 | 511 | |
512 | 512 | static enum state |
513 | -dec_restore_cursor(int ig1 unused, int ig2 unused) | |
513 | +dec_restore_cursor(H3270 *hSession, int ig1 unused, int ig2 unused) | |
514 | 514 | { |
515 | 515 | int i; |
516 | 516 | |
... | ... | @@ -526,7 +526,7 @@ dec_restore_cursor(int ig1 unused, int ig2 unused) |
526 | 526 | } |
527 | 527 | |
528 | 528 | static enum state |
529 | -ansi_newline(int ig1 unused, int ig2 unused) | |
529 | +ansi_newline(H3270 *hSession, int ig1 unused, int ig2 unused) | |
530 | 530 | { |
531 | 531 | int nc; |
532 | 532 | |
... | ... | @@ -541,7 +541,7 @@ ansi_newline(int ig1 unused, int ig2 unused) |
541 | 541 | } |
542 | 542 | |
543 | 543 | static enum state |
544 | -ansi_cursor_up(int nn, int ig2 unused) | |
544 | +ansi_cursor_up(H3270 *hSession, int nn, int ig2 unused) | |
545 | 545 | { |
546 | 546 | int rr; |
547 | 547 | |
... | ... | @@ -557,7 +557,7 @@ ansi_cursor_up(int nn, int ig2 unused) |
557 | 557 | } |
558 | 558 | |
559 | 559 | static enum state |
560 | -ansi_esc2(int ig1 unused, int ig2 unused) | |
560 | +ansi_esc2(H3270 *hSession, int ig1 unused, int ig2 unused) | |
561 | 561 | { |
562 | 562 | register int i; |
563 | 563 | |
... | ... | @@ -568,7 +568,7 @@ ansi_esc2(int ig1 unused, int ig2 unused) |
568 | 568 | } |
569 | 569 | |
570 | 570 | static enum state |
571 | -ansi_reset(int ig1 unused, int ig2 unused) | |
571 | +ansi_reset(H3270 *hSession, int ig1 unused, int ig2 unused) | |
572 | 572 | { |
573 | 573 | int i; |
574 | 574 | static Boolean first = True; |
... | ... | @@ -617,7 +617,7 @@ ansi_reset(int ig1 unused, int ig2 unused) |
617 | 617 | } |
618 | 618 | |
619 | 619 | static enum state |
620 | -ansi_insert_chars(int nn, int ig2 unused) | |
620 | +ansi_insert_chars(H3270 *hSession, int nn, int ig2 unused) | |
621 | 621 | { |
622 | 622 | int cc = h3270.cursor_addr % h3270.cols; /* current col */ |
623 | 623 | int mc = h3270.cols - cc; /* max chars that can be inserted */ |
... | ... | @@ -639,7 +639,7 @@ ansi_insert_chars(int nn, int ig2 unused) |
639 | 639 | } |
640 | 640 | |
641 | 641 | static enum state |
642 | -ansi_cursor_down(int nn, int ig2 unused) | |
642 | +ansi_cursor_down(H3270 *hSession, int nn, int ig2 unused) | |
643 | 643 | { |
644 | 644 | int rr; |
645 | 645 | |
... | ... | @@ -655,7 +655,7 @@ ansi_cursor_down(int nn, int ig2 unused) |
655 | 655 | } |
656 | 656 | |
657 | 657 | static enum state |
658 | -ansi_cursor_right(int nn, int ig2 unused) | |
658 | +ansi_cursor_right(H3270 *hSession, int nn, int ig2 unused) | |
659 | 659 | { |
660 | 660 | int cc; |
661 | 661 | |
... | ... | @@ -672,7 +672,7 @@ ansi_cursor_right(int nn, int ig2 unused) |
672 | 672 | } |
673 | 673 | |
674 | 674 | static enum state |
675 | -ansi_cursor_left(int nn, int ig2 unused) | |
675 | +ansi_cursor_left(H3270 *hSession, int nn, int ig2 unused) | |
676 | 676 | { |
677 | 677 | int cc; |
678 | 678 | |
... | ... | @@ -692,7 +692,7 @@ ansi_cursor_left(int nn, int ig2 unused) |
692 | 692 | } |
693 | 693 | |
694 | 694 | static enum state |
695 | -ansi_cursor_motion(int n1, int n2) | |
695 | +ansi_cursor_motion(H3270 *hSession, int n1, int n2) | |
696 | 696 | { |
697 | 697 | if (n1 < 1) n1 = 1; |
698 | 698 | if (n1 > h3270.rows) n1 = h3270.rows; |
... | ... | @@ -704,7 +704,7 @@ ansi_cursor_motion(int n1, int n2) |
704 | 704 | } |
705 | 705 | |
706 | 706 | static enum state |
707 | -ansi_erase_in_display(int nn, int ig2 unused) | |
707 | +ansi_erase_in_display(H3270 *hSession, int nn, int ig2 unused) | |
708 | 708 | { |
709 | 709 | switch (nn) { |
710 | 710 | case 0: /* below */ |
... | ... | @@ -722,7 +722,7 @@ ansi_erase_in_display(int nn, int ig2 unused) |
722 | 722 | } |
723 | 723 | |
724 | 724 | static enum state |
725 | -ansi_erase_in_line(int nn, int ig2 unused) | |
725 | +ansi_erase_in_line(H3270 *hSession, int nn, int ig2 unused) | |
726 | 726 | { |
727 | 727 | int nc = h3270.cursor_addr % h3270.cols; |
728 | 728 | |
... | ... | @@ -741,7 +741,7 @@ ansi_erase_in_line(int nn, int ig2 unused) |
741 | 741 | } |
742 | 742 | |
743 | 743 | static enum state |
744 | -ansi_insert_lines(int nn, int ig2 unused) | |
744 | +ansi_insert_lines(H3270 *hSession, int nn, int ig2 unused) | |
745 | 745 | { |
746 | 746 | int rr = h3270.cursor_addr / h3270.cols; /* current row */ |
747 | 747 | int mr = scroll_bottom - rr; /* rows left at and below this one */ |
... | ... | @@ -767,7 +767,7 @@ ansi_insert_lines(int nn, int ig2 unused) |
767 | 767 | } |
768 | 768 | |
769 | 769 | static enum state |
770 | -ansi_delete_lines(int nn, int ig2 unused) | |
770 | +ansi_delete_lines(H3270 *hSession, int nn, int ig2 unused) | |
771 | 771 | { |
772 | 772 | int rr = h3270.cursor_addr / h3270.cols; /* current row */ |
773 | 773 | int mr = scroll_bottom - rr; /* max rows that can be deleted */ |
... | ... | @@ -793,7 +793,7 @@ ansi_delete_lines(int nn, int ig2 unused) |
793 | 793 | } |
794 | 794 | |
795 | 795 | static enum state |
796 | -ansi_delete_chars(int nn, int ig2 unused) | |
796 | +ansi_delete_chars(H3270 *hSession, int nn, int ig2 unused) | |
797 | 797 | { |
798 | 798 | int cc = h3270.cursor_addr % h3270.cols; /* current col */ |
799 | 799 | int mc = h3270.cols - cc; /* max chars that can be deleted */ |
... | ... | @@ -815,7 +815,7 @@ ansi_delete_chars(int nn, int ig2 unused) |
815 | 815 | } |
816 | 816 | |
817 | 817 | static enum state |
818 | -ansi_sgr(int ig1 unused, int ig2 unused) | |
818 | +ansi_sgr(H3270 *hSession, int ig1 unused, int ig2 unused) | |
819 | 819 | { |
820 | 820 | int i; |
821 | 821 | |
... | ... | @@ -914,21 +914,21 @@ ansi_sgr(int ig1 unused, int ig2 unused) |
914 | 914 | } |
915 | 915 | |
916 | 916 | static enum state |
917 | -ansi_bell(int ig1 unused, int ig2 unused) | |
917 | +ansi_bell(H3270 *hSession, int ig1 unused, int ig2 unused) | |
918 | 918 | { |
919 | - lib3270_ring_bell(NULL); | |
919 | + lib3270_ring_bell(hSession); | |
920 | 920 | return DATA; |
921 | 921 | } |
922 | 922 | |
923 | 923 | static enum state |
924 | -ansi_newpage(int ig1 unused, int ig2 unused) | |
924 | +ansi_newpage(H3270 *hSession, int ig1 unused, int ig2 unused) | |
925 | 925 | { |
926 | 926 | ctlr_clear(&h3270,False); |
927 | 927 | return DATA; |
928 | 928 | } |
929 | 929 | |
930 | 930 | static enum state |
931 | -ansi_backspace(int ig1 unused, int ig2 unused) | |
931 | +ansi_backspace(H3270 *hSession, int ig1 unused, int ig2 unused) | |
932 | 932 | { |
933 | 933 | if (held_wrap) { |
934 | 934 | held_wrap = False; |
... | ... | @@ -945,18 +945,18 @@ ansi_backspace(int ig1 unused, int ig2 unused) |
945 | 945 | } |
946 | 946 | |
947 | 947 | static enum state |
948 | -ansi_cr(int ig1 unused, int ig2 unused) | |
948 | +ansi_cr(H3270 *hSession, int ig1 unused, int ig2 unused) | |
949 | 949 | { |
950 | 950 | if (h3270.cursor_addr % h3270.cols) |
951 | 951 | cursor_move(&h3270,h3270.cursor_addr - (h3270.cursor_addr % h3270.cols)); |
952 | 952 | if (auto_newline_mode) |
953 | - (void) ansi_lf(0, 0); | |
953 | + (void) ansi_lf(hSession, 0, 0); | |
954 | 954 | held_wrap = False; |
955 | 955 | return DATA; |
956 | 956 | } |
957 | 957 | |
958 | 958 | static enum state |
959 | -ansi_lf(int ig1 unused, int ig2 unused) | |
959 | +ansi_lf(H3270 *hSession, int ig1 unused, int ig2 unused) | |
960 | 960 | { |
961 | 961 | int nc = h3270.cursor_addr + h3270.cols; |
962 | 962 | |
... | ... | @@ -977,7 +977,7 @@ ansi_lf(int ig1 unused, int ig2 unused) |
977 | 977 | } |
978 | 978 | |
979 | 979 | static enum state |
980 | -ansi_htab(int ig1 unused, int ig2 unused) | |
980 | +ansi_htab(H3270 *hSession, int ig1 unused, int ig2 unused) | |
981 | 981 | { |
982 | 982 | int col = h3270.cursor_addr % h3270.cols; |
983 | 983 | int i; |
... | ... | @@ -993,13 +993,13 @@ ansi_htab(int ig1 unused, int ig2 unused) |
993 | 993 | } |
994 | 994 | |
995 | 995 | static enum state |
996 | -ansi_escape(int ig1 unused, int ig2 unused) | |
996 | +ansi_escape(H3270 *hSession, int ig1 unused, int ig2 unused) | |
997 | 997 | { |
998 | 998 | return ESC; |
999 | 999 | } |
1000 | 1000 | |
1001 | 1001 | static enum state |
1002 | -ansi_nop(int ig1 unused, int ig2 unused) | |
1002 | +ansi_nop(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1003 | 1003 | { |
1004 | 1004 | return DATA; |
1005 | 1005 | } |
... | ... | @@ -1019,7 +1019,7 @@ ansi_nop(int ig1 unused, int ig2 unused) |
1019 | 1019 | } |
1020 | 1020 | |
1021 | 1021 | static enum state |
1022 | -ansi_printing(int ig1 unused, int ig2 unused) | |
1022 | +ansi_printing(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1023 | 1023 | { |
1024 | 1024 | int nc; |
1025 | 1025 | unsigned char ebc_ch; |
... | ... | @@ -1065,7 +1065,7 @@ ansi_printing(int ig1 unused, int ig2 unused) |
1065 | 1065 | } |
1066 | 1066 | |
1067 | 1067 | if (insert_mode) |
1068 | - (void) ansi_insert_chars(1, 0); | |
1068 | + (void) ansi_insert_chars(hSession,1, 0); | |
1069 | 1069 | switch (csd[(once_cset != -1) ? once_cset : cset]) { |
1070 | 1070 | case CSD_LD: /* line drawing "0" */ |
1071 | 1071 | if (ansi_ch >= 0x5f && ansi_ch <= 0x7e) |
... | ... | @@ -1193,7 +1193,7 @@ ansi_printing(int ig1 unused, int ig2 unused) |
1193 | 1193 | } |
1194 | 1194 | |
1195 | 1195 | static enum state |
1196 | -ansi_multibyte(int ig1, int ig2) | |
1196 | +ansi_multibyte(H3270 *hSession, int ig1, int ig2) | |
1197 | 1197 | { |
1198 | 1198 | char mbs[MB_MAX]; |
1199 | 1199 | unsigned char ch; |
... | ... | @@ -1204,7 +1204,7 @@ ansi_multibyte(int ig1, int ig2) |
1204 | 1204 | /* String too long. */ |
1205 | 1205 | pmi = 0; |
1206 | 1206 | ansi_ch = '?'; |
1207 | - return ansi_printing(ig1, ig2); | |
1207 | + return ansi_printing(hSession,ig1, ig2); | |
1208 | 1208 | } |
1209 | 1209 | |
1210 | 1210 | strncpy(mbs, pending_mbs, pmi); |
... | ... | @@ -1215,7 +1215,7 @@ ansi_multibyte(int ig1, int ig2) |
1215 | 1215 | if (ch != 0) { |
1216 | 1216 | // Success! |
1217 | 1217 | ansi_ch = ch; |
1218 | - return ansi_printing(ig1, ig2); | |
1218 | + return ansi_printing(hSession, ig1, ig2); | |
1219 | 1219 | } |
1220 | 1220 | if (fail == ULFAIL_INCOMPLETE) { |
1221 | 1221 | // Go get more. |
... | ... | @@ -1229,17 +1229,17 @@ ansi_multibyte(int ig1, int ig2) |
1229 | 1229 | ch = ansi_ch; /* save for later */ |
1230 | 1230 | pmi = 0; |
1231 | 1231 | ansi_ch = '?'; |
1232 | - (void) ansi_printing(ig1, ig2); | |
1232 | + (void) ansi_printing(hSession, ig1, ig2); | |
1233 | 1233 | |
1234 | 1234 | /* Reprocess whatever we choked on. */ |
1235 | 1235 | ansi_ch = ch; |
1236 | 1236 | state = DATA; |
1237 | 1237 | fn = ansi_fn[st[(int)DATA][ansi_ch]]; |
1238 | - return (*fn)(n[0], n[1]); | |
1238 | + return (*fn)(hSession,n[0], n[1]); | |
1239 | 1239 | } |
1240 | 1240 | |
1241 | 1241 | static enum state |
1242 | -ansi_semicolon(int ig1 unused, int ig2 unused) | |
1242 | +ansi_semicolon(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1243 | 1243 | { |
1244 | 1244 | if (nx >= NN) |
1245 | 1245 | return DATA; |
... | ... | @@ -1248,14 +1248,14 @@ ansi_semicolon(int ig1 unused, int ig2 unused) |
1248 | 1248 | } |
1249 | 1249 | |
1250 | 1250 | static enum state |
1251 | -ansi_digit(int ig1 unused, int ig2 unused) | |
1251 | +ansi_digit(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1252 | 1252 | { |
1253 | 1253 | n[nx] = (n[nx] * 10) + (ansi_ch - '0'); |
1254 | 1254 | return state; |
1255 | 1255 | } |
1256 | 1256 | |
1257 | 1257 | static enum state |
1258 | -ansi_reverse_index(int ig1 unused, int ig2 unused) | |
1258 | +ansi_reverse_index(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1259 | 1259 | { |
1260 | 1260 | int rr = h3270.cursor_addr / h3270.cols; /* current row */ |
1261 | 1261 | int np = (scroll_top - 1) - rr; /* number of rows in the scrolling |
... | ... | @@ -1268,7 +1268,7 @@ ansi_reverse_index(int ig1 unused, int ig2 unused) |
1268 | 1268 | /* If the cursor is above the scrolling region, do a simple margined |
1269 | 1269 | cursor up. */ |
1270 | 1270 | if (np < 0) { |
1271 | - (void) ansi_cursor_up(nn, 0); | |
1271 | + (void) ansi_cursor_up(hSession, nn, 0); | |
1272 | 1272 | return DATA; |
1273 | 1273 | } |
1274 | 1274 | |
... | ... | @@ -1281,17 +1281,17 @@ ansi_reverse_index(int ig1 unused, int ig2 unused) |
1281 | 1281 | |
1282 | 1282 | /* Move the cursor up without scrolling */ |
1283 | 1283 | if (nn) |
1284 | - (void) ansi_cursor_up(nn, 0); | |
1284 | + (void) ansi_cursor_up(hSession,nn, 0); | |
1285 | 1285 | |
1286 | 1286 | /* Insert lines at the top for backward scroll */ |
1287 | 1287 | if (ns) |
1288 | - (void) ansi_insert_lines(ns, 0); | |
1288 | + (void) ansi_insert_lines(hSession, ns, 0); | |
1289 | 1289 | |
1290 | 1290 | return DATA; |
1291 | 1291 | } |
1292 | 1292 | |
1293 | 1293 | static enum state |
1294 | -ansi_send_attributes(int nn, int ig2 unused) | |
1294 | +ansi_send_attributes(H3270 *hSession, int nn, int ig2 unused) | |
1295 | 1295 | { |
1296 | 1296 | if (!nn) |
1297 | 1297 | net_sends("\033[?1;2c"); |
... | ... | @@ -1299,13 +1299,13 @@ ansi_send_attributes(int nn, int ig2 unused) |
1299 | 1299 | } |
1300 | 1300 | |
1301 | 1301 | static enum state |
1302 | -dec_return_terminal_id(int ig1 unused, int ig2 unused) | |
1302 | +dec_return_terminal_id(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1303 | 1303 | { |
1304 | - return ansi_send_attributes(0, 0); | |
1304 | + return ansi_send_attributes(hSession, 0, 0); | |
1305 | 1305 | } |
1306 | 1306 | |
1307 | 1307 | static enum state |
1308 | -ansi_set_mode(int nn, int ig2 unused) | |
1308 | +ansi_set_mode(H3270 *hSession, int nn, int ig2 unused) | |
1309 | 1309 | { |
1310 | 1310 | switch (nn) { |
1311 | 1311 | case 4: |
... | ... | @@ -1319,7 +1319,7 @@ ansi_set_mode(int nn, int ig2 unused) |
1319 | 1319 | } |
1320 | 1320 | |
1321 | 1321 | static enum state |
1322 | -ansi_reset_mode(int nn, int ig2 unused) | |
1322 | +ansi_reset_mode(H3270 *hSession, int nn, int ig2 unused) | |
1323 | 1323 | { |
1324 | 1324 | switch (nn) { |
1325 | 1325 | case 4: |
... | ... | @@ -1333,7 +1333,7 @@ ansi_reset_mode(int nn, int ig2 unused) |
1333 | 1333 | } |
1334 | 1334 | |
1335 | 1335 | static enum state |
1336 | -ansi_status_report(int nn, int ig2 unused) | |
1336 | +ansi_status_report(H3270 *hSession, int nn, int ig2 unused) | |
1337 | 1337 | { |
1338 | 1338 | static char cpr[11]; |
1339 | 1339 | |
... | ... | @@ -1351,69 +1351,69 @@ ansi_status_report(int nn, int ig2 unused) |
1351 | 1351 | } |
1352 | 1352 | |
1353 | 1353 | static enum state |
1354 | -ansi_cs_designate(int ig1 unused, int ig2 unused) | |
1354 | +ansi_cs_designate(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1355 | 1355 | { |
1356 | 1356 | cs_to_change = strchr(gnnames, ansi_ch) - gnnames; |
1357 | 1357 | return CSDES; |
1358 | 1358 | } |
1359 | 1359 | |
1360 | 1360 | static enum state |
1361 | -ansi_cs_designate2(int ig1 unused, int ig2 unused) | |
1361 | +ansi_cs_designate2(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1362 | 1362 | { |
1363 | 1363 | csd[cs_to_change] = strchr(csnames, ansi_ch) - csnames; |
1364 | 1364 | return DATA; |
1365 | 1365 | } |
1366 | 1366 | |
1367 | 1367 | static enum state |
1368 | -ansi_select_g0(int ig1 unused, int ig2 unused) | |
1368 | +ansi_select_g0(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1369 | 1369 | { |
1370 | 1370 | cset = CS_G0; |
1371 | 1371 | return DATA; |
1372 | 1372 | } |
1373 | 1373 | |
1374 | 1374 | static enum state |
1375 | -ansi_select_g1(int ig1 unused, int ig2 unused) | |
1375 | +ansi_select_g1(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1376 | 1376 | { |
1377 | 1377 | cset = CS_G1; |
1378 | 1378 | return DATA; |
1379 | 1379 | } |
1380 | 1380 | |
1381 | 1381 | static enum state |
1382 | -ansi_select_g2(int ig1 unused, int ig2 unused) | |
1382 | +ansi_select_g2(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1383 | 1383 | { |
1384 | 1384 | cset = CS_G2; |
1385 | 1385 | return DATA; |
1386 | 1386 | } |
1387 | 1387 | |
1388 | 1388 | static enum state |
1389 | -ansi_select_g3(int ig1 unused, int ig2 unused) | |
1389 | +ansi_select_g3(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1390 | 1390 | { |
1391 | 1391 | cset = CS_G3; |
1392 | 1392 | return DATA; |
1393 | 1393 | } |
1394 | 1394 | |
1395 | 1395 | static enum state |
1396 | -ansi_one_g2(int ig1 unused, int ig2 unused) | |
1396 | +ansi_one_g2(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1397 | 1397 | { |
1398 | 1398 | once_cset = CS_G2; |
1399 | 1399 | return DATA; |
1400 | 1400 | } |
1401 | 1401 | |
1402 | 1402 | static enum state |
1403 | -ansi_one_g3(int ig1 unused, int ig2 unused) | |
1403 | +ansi_one_g3(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1404 | 1404 | { |
1405 | 1405 | once_cset = CS_G3; |
1406 | 1406 | return DATA; |
1407 | 1407 | } |
1408 | 1408 | |
1409 | 1409 | static enum state |
1410 | -ansi_esc3(int ig1 unused, int ig2 unused) | |
1410 | +ansi_esc3(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1411 | 1411 | { |
1412 | 1412 | return DECP; |
1413 | 1413 | } |
1414 | 1414 | |
1415 | 1415 | static enum state |
1416 | -dec_set(int ig1 unused, int ig2 unused) | |
1416 | +dec_set(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1417 | 1417 | { |
1418 | 1418 | int i; |
1419 | 1419 | |
... | ... | @@ -1448,7 +1448,7 @@ dec_set(int ig1 unused, int ig2 unused) |
1448 | 1448 | } |
1449 | 1449 | |
1450 | 1450 | static enum state |
1451 | -dec_reset(int ig1 unused, int ig2 unused) | |
1451 | +dec_reset(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1452 | 1452 | { |
1453 | 1453 | int i; |
1454 | 1454 | |
... | ... | @@ -1480,7 +1480,7 @@ dec_reset(int ig1 unused, int ig2 unused) |
1480 | 1480 | } |
1481 | 1481 | |
1482 | 1482 | static enum state |
1483 | -dec_save(int ig1 unused, int ig2 unused) | |
1483 | +dec_save(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1484 | 1484 | { |
1485 | 1485 | int i; |
1486 | 1486 | |
... | ... | @@ -1509,7 +1509,7 @@ dec_save(int ig1 unused, int ig2 unused) |
1509 | 1509 | } |
1510 | 1510 | |
1511 | 1511 | static enum state |
1512 | -dec_restore(int ig1 unused, int ig2 unused) | |
1512 | +dec_restore(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1513 | 1513 | { |
1514 | 1514 | int i; |
1515 | 1515 | |
... | ... | @@ -1544,7 +1544,7 @@ dec_restore(int ig1 unused, int ig2 unused) |
1544 | 1544 | } |
1545 | 1545 | |
1546 | 1546 | static enum state |
1547 | -dec_scrolling_region(int top, int bottom) | |
1547 | +dec_scrolling_region(H3270 *hSession, int top, int bottom) | |
1548 | 1548 | { |
1549 | 1549 | if (top < 1) |
1550 | 1550 | top = 1; |
... | ... | @@ -1562,7 +1562,7 @@ dec_scrolling_region(int top, int bottom) |
1562 | 1562 | } |
1563 | 1563 | |
1564 | 1564 | static enum state |
1565 | -xterm_text_mode(int ig1 unused, int ig2 unused) | |
1565 | +xterm_text_mode(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1566 | 1566 | { |
1567 | 1567 | nx = 0; |
1568 | 1568 | n[0] = 0; |
... | ... | @@ -1570,14 +1570,14 @@ xterm_text_mode(int ig1 unused, int ig2 unused) |
1570 | 1570 | } |
1571 | 1571 | |
1572 | 1572 | static enum state |
1573 | -xterm_text_semicolon(int ig1 unused, int ig2 unused) | |
1573 | +xterm_text_semicolon(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1574 | 1574 | { |
1575 | 1575 | tx = 0; |
1576 | 1576 | return TEXT2; |
1577 | 1577 | } |
1578 | 1578 | |
1579 | 1579 | static enum state |
1580 | -xterm_text(int ig1 unused, int ig2 unused) | |
1580 | +xterm_text(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1581 | 1581 | { |
1582 | 1582 | if (tx < NT) |
1583 | 1583 | text[tx++] = ansi_ch; |
... | ... | @@ -1585,7 +1585,7 @@ xterm_text(int ig1 unused, int ig2 unused) |
1585 | 1585 | } |
1586 | 1586 | |
1587 | 1587 | static enum state |
1588 | -xterm_text_do(int ig1 unused, int ig2 unused) | |
1588 | +xterm_text_do(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1589 | 1589 | { |
1590 | 1590 | /* |
1591 | 1591 | #if defined(X3270_DISPLAY) || defined(WC3270) |
... | ... | @@ -1629,7 +1629,7 @@ xterm_text_do(int ig1 unused, int ig2 unused) |
1629 | 1629 | } |
1630 | 1630 | |
1631 | 1631 | static enum state |
1632 | -ansi_htab_set(int ig1 unused, int ig2 unused) | |
1632 | +ansi_htab_set(H3270 *hSession, int ig1 unused, int ig2 unused) | |
1633 | 1633 | { |
1634 | 1634 | register int col = h3270.cursor_addr % h3270.cols; |
1635 | 1635 | |
... | ... | @@ -1638,7 +1638,7 @@ ansi_htab_set(int ig1 unused, int ig2 unused) |
1638 | 1638 | } |
1639 | 1639 | |
1640 | 1640 | static enum state |
1641 | -ansi_htab_clear(int nn, int ig2 unused) | |
1641 | +ansi_htab_clear(H3270 *hSession, int nn, int ig2 unused) | |
1642 | 1642 | { |
1643 | 1643 | register int col, i; |
1644 | 1644 | |
... | ... | @@ -1687,7 +1687,7 @@ ansi_scroll(void) |
1687 | 1687 | void ansi_in3270(H3270 *session, int in3270, void *dunno) |
1688 | 1688 | { |
1689 | 1689 | if (!in3270) |
1690 | - (void) ansi_reset(0, 0); | |
1690 | + (void) ansi_reset(session, 0, 0); | |
1691 | 1691 | } |
1692 | 1692 | |
1693 | 1693 | #if defined(X3270_DBCS) /*[*/ |
... | ... | @@ -1730,7 +1730,7 @@ ansi_process(unsigned int c) |
1730 | 1730 | mb_pending = 0; |
1731 | 1731 | } |
1732 | 1732 | #endif /*]*/ |
1733 | - state = (*fn)(n[0], n[1]); | |
1733 | + state = (*fn)(&h3270, n[0], n[1]); | |
1734 | 1734 | } |
1735 | 1735 | |
1736 | 1736 | void | ... | ... |
src/lib3270/telnet.c
... | ... | @@ -205,7 +205,7 @@ static char *proxy_portname = CN; |
205 | 205 | static unsigned short proxy_port = 0; |
206 | 206 | |
207 | 207 | static int telnet_fsm(H3270 *session, unsigned char c); |
208 | -static void net_rawout(unsigned const char *buf, int len); | |
208 | +static void net_rawout(H3270 *session, unsigned const char *buf, int len); | |
209 | 209 | static void check_in3270(H3270 *session); |
210 | 210 | static void store3270in(unsigned char c); |
211 | 211 | static void check_linemode(Boolean init); |
... | ... | @@ -1147,7 +1147,7 @@ send_naws(void) |
1147 | 1147 | naws_len += set16(naws_msg + naws_len, XMIT_ROWS); |
1148 | 1148 | (void) sprintf(naws_msg + naws_len, "%c%c", IAC, SE); |
1149 | 1149 | naws_len += 2; |
1150 | - net_rawout((unsigned char *)naws_msg, naws_len); | |
1150 | + net_rawout(&h3270,(unsigned char *)naws_msg, naws_len); | |
1151 | 1151 | trace_dsn("SENT %s NAWS %d %d %s\n", cmd(SB), XMIT_COLS, XMIT_ROWS, cmd(SE)); |
1152 | 1152 | } |
1153 | 1153 | |
... | ... | @@ -1310,7 +1310,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1310 | 1310 | if (!h3270.hisopts[c]) { |
1311 | 1311 | h3270.hisopts[c] = 1; |
1312 | 1312 | do_opt[2] = c; |
1313 | - net_rawout(do_opt, sizeof(do_opt)); | |
1313 | + net_rawout(&h3270,do_opt, sizeof(do_opt)); | |
1314 | 1314 | trace_dsn("SENT %s %s\n", |
1315 | 1315 | cmd(DO), opt(c)); |
1316 | 1316 | |
... | ... | @@ -1321,7 +1321,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1321 | 1321 | if (c == TELOPT_EOR && !h3270.myopts[c]) { |
1322 | 1322 | h3270.myopts[c] = 1; |
1323 | 1323 | will_opt[2] = c; |
1324 | - net_rawout(will_opt, | |
1324 | + net_rawout(&h3270,will_opt, | |
1325 | 1325 | sizeof(will_opt)); |
1326 | 1326 | trace_dsn("SENT %s %s\n", |
1327 | 1327 | cmd(WILL), opt(c)); |
... | ... | @@ -1334,7 +1334,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1334 | 1334 | } |
1335 | 1335 | default: |
1336 | 1336 | dont_opt[2] = c; |
1337 | - net_rawout(dont_opt, sizeof(dont_opt)); | |
1337 | + net_rawout(&h3270,dont_opt, sizeof(dont_opt)); | |
1338 | 1338 | trace_dsn("SENT %s %s\n", cmd(DONT), opt(c)); |
1339 | 1339 | break; |
1340 | 1340 | } |
... | ... | @@ -1345,7 +1345,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1345 | 1345 | if (h3270.hisopts[c]) { |
1346 | 1346 | h3270.hisopts[c] = 0; |
1347 | 1347 | dont_opt[2] = c; |
1348 | - net_rawout(dont_opt, sizeof(dont_opt)); | |
1348 | + net_rawout(&h3270, dont_opt, sizeof(dont_opt)); | |
1349 | 1349 | trace_dsn("SENT %s %s\n", cmd(DONT), opt(c)); |
1350 | 1350 | check_in3270(&h3270); |
1351 | 1351 | check_linemode(False); |
... | ... | @@ -1376,7 +1376,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1376 | 1376 | if (c != TELOPT_TM) |
1377 | 1377 | h3270.myopts[c] = 1; |
1378 | 1378 | will_opt[2] = c; |
1379 | - net_rawout(will_opt, sizeof(will_opt)); | |
1379 | + net_rawout(&h3270, will_opt, sizeof(will_opt)); | |
1380 | 1380 | trace_dsn("SENT %s %s\n", cmd(WILL), opt(c)); |
1381 | 1381 | check_in3270(&h3270); |
1382 | 1382 | check_linemode(False); |
... | ... | @@ -1394,7 +1394,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1394 | 1394 | * Send IAC SB STARTTLS FOLLOWS IAC SE |
1395 | 1395 | * to announce that what follows is TLS. |
1396 | 1396 | */ |
1397 | - net_rawout(follows_msg, | |
1397 | + net_rawout(&h3270, follows_msg, | |
1398 | 1398 | sizeof(follows_msg)); |
1399 | 1399 | trace_dsn("SENT %s %s FOLLOWS %s\n", |
1400 | 1400 | cmd(SB), |
... | ... | @@ -1407,7 +1407,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1407 | 1407 | default: |
1408 | 1408 | wont: |
1409 | 1409 | wont_opt[2] = c; |
1410 | - net_rawout(wont_opt, sizeof(wont_opt)); | |
1410 | + net_rawout(&h3270, wont_opt, sizeof(wont_opt)); | |
1411 | 1411 | trace_dsn("SENT %s %s\n", cmd(WONT), opt(c)); |
1412 | 1412 | break; |
1413 | 1413 | } |
... | ... | @@ -1418,7 +1418,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1418 | 1418 | if (h3270.myopts[c]) { |
1419 | 1419 | h3270.myopts[c] = 0; |
1420 | 1420 | wont_opt[2] = c; |
1421 | - net_rawout(wont_opt, sizeof(wont_opt)); | |
1421 | + net_rawout(&h3270, wont_opt, sizeof(wont_opt)); | |
1422 | 1422 | trace_dsn("SENT %s %s\n", cmd(WONT), opt(c)); |
1423 | 1423 | check_in3270(&h3270); |
1424 | 1424 | check_linemode(False); |
... | ... | @@ -1464,7 +1464,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1464 | 1464 | (try_lu != CN && *try_lu) ? "@" : "", |
1465 | 1465 | (try_lu != CN && *try_lu) ? try_lu : "", |
1466 | 1466 | IAC, SE); |
1467 | - net_rawout((unsigned char *)tt_out, tb_len); | |
1467 | + net_rawout(&h3270, (unsigned char *)tt_out, tb_len); | |
1468 | 1468 | |
1469 | 1469 | trace_dsn("SENT %s %s %s %.*s %s\n", |
1470 | 1470 | cmd(SB), opt(TELOPT_TTYPE), |
... | ... | @@ -1528,7 +1528,7 @@ tn3270e_request(void) |
1528 | 1528 | |
1529 | 1529 | (void) sprintf(t, "%c%c", IAC, SE); |
1530 | 1530 | |
1531 | - net_rawout((unsigned char *)tt_out, tb_len); | |
1531 | + net_rawout(&h3270, (unsigned char *)tt_out, tb_len); | |
1532 | 1532 | |
1533 | 1533 | trace_dsn("SENT %s %s DEVICE-TYPE REQUEST %.*s%s%s %s\n", |
1534 | 1534 | cmd(SB), opt(TELOPT_TN3270E), (int) strlen(h3270.termtype), tt_out + 5, |
... | ... | @@ -1549,7 +1549,7 @@ backoff_tn3270e(const char *why) |
1549 | 1549 | |
1550 | 1550 | /* Tell the host 'no'. */ |
1551 | 1551 | wont_opt[2] = TELOPT_TN3270E; |
1552 | - net_rawout(wont_opt, sizeof(wont_opt)); | |
1552 | + net_rawout(&h3270, wont_opt, sizeof(wont_opt)); | |
1553 | 1553 | trace_dsn("SENT %s %s\n", cmd(WONT), opt(TELOPT_TN3270E)); |
1554 | 1554 | |
1555 | 1555 | /* Restore the LU list; we may need to run it again in TN3270 mode. */ |
... | ... | @@ -1805,7 +1805,7 @@ tn3270e_subneg_send(unsigned char op, unsigned long funcs) |
1805 | 1805 | /* Complete and send out the protocol message. */ |
1806 | 1806 | proto_buf[proto_len++] = IAC; |
1807 | 1807 | proto_buf[proto_len++] = SE; |
1808 | - net_rawout(proto_buf, proto_len); | |
1808 | + net_rawout(&h3270, proto_buf, proto_len); | |
1809 | 1809 | |
1810 | 1810 | /* Complete and send out the trace text. */ |
1811 | 1811 | trace_dsn("SENT %s %s FUNCTIONS %s %s %s\n", |
... | ... | @@ -1983,7 +1983,7 @@ void net_exception(H3270 *session) |
1983 | 1983 | * EWOULDBLOCK. |
1984 | 1984 | */ |
1985 | 1985 | static void |
1986 | -net_rawout(unsigned const char *buf, int len) | |
1986 | +net_rawout(H3270 *session, unsigned const char *buf, int len) | |
1987 | 1987 | { |
1988 | 1988 | int nw; |
1989 | 1989 | |
... | ... | @@ -2002,8 +2002,8 @@ net_rawout(unsigned const char *buf, int len) |
2002 | 2002 | # define n2w len |
2003 | 2003 | #endif |
2004 | 2004 | #if defined(HAVE_LIBSSL) /*[*/ |
2005 | - if(h3270.ssl_con != NULL) | |
2006 | - nw = SSL_write(h3270.ssl_con, (const char *) buf, n2w); | |
2005 | + if(session->ssl_con != NULL) | |
2006 | + nw = SSL_write(session->ssl_con, (const char *) buf, n2w); | |
2007 | 2007 | else |
2008 | 2008 | #endif /*]*/ |
2009 | 2009 | |
... | ... | @@ -2014,10 +2014,10 @@ net_rawout(unsigned const char *buf, int len) |
2014 | 2014 | else |
2015 | 2015 | #endif |
2016 | 2016 | */ |
2017 | - nw = send(h3270.sock, (const char *) buf, n2w, 0); | |
2017 | + nw = send(session->sock, (const char *) buf, n2w, 0); | |
2018 | 2018 | if (nw < 0) { |
2019 | 2019 | #if defined(HAVE_LIBSSL) /*[*/ |
2020 | - if (h3270.ssl_con != NULL) | |
2020 | + if (session->ssl_con != NULL) | |
2021 | 2021 | { |
2022 | 2022 | unsigned long e; |
2023 | 2023 | char err_buf[120]; |
... | ... | @@ -2026,19 +2026,19 @@ net_rawout(unsigned const char *buf, int len) |
2026 | 2026 | (void) ERR_error_string(e, err_buf); |
2027 | 2027 | trace_dsn("RCVD SSL_write error %ld (%s)\n", e,err_buf); |
2028 | 2028 | popup_an_error(NULL,"SSL_write:\n%s", err_buf); |
2029 | - host_disconnect(&h3270,False); | |
2029 | + host_disconnect(session,False); | |
2030 | 2030 | return; |
2031 | 2031 | } |
2032 | 2032 | #endif /*]*/ |
2033 | 2033 | trace_dsn("RCVD socket error %d\n", errno); |
2034 | 2034 | if (socket_errno() == SE_EPIPE || socket_errno() == SE_ECONNRESET) { |
2035 | - host_disconnect(&h3270,False); | |
2035 | + host_disconnect(session,False); | |
2036 | 2036 | return; |
2037 | 2037 | } else if (socket_errno() == SE_EINTR) { |
2038 | 2038 | goto bot; |
2039 | 2039 | } else { |
2040 | 2040 | popup_a_sockerr(NULL, N_( "Socket write error" ) ); |
2041 | - host_disconnect(&h3270,True); | |
2041 | + host_disconnect(session,True); | |
2042 | 2042 | return; |
2043 | 2043 | } |
2044 | 2044 | } |
... | ... | @@ -2096,7 +2096,7 @@ net_hexansi_out(unsigned char *buf, int len) |
2096 | 2096 | } |
2097 | 2097 | |
2098 | 2098 | /* Send it to the host. */ |
2099 | - net_rawout(xbuf, tbuf - xbuf); | |
2099 | + net_rawout(&h3270,xbuf, tbuf - xbuf); | |
2100 | 2100 | lib3270_free(xbuf); |
2101 | 2101 | } |
2102 | 2102 | |
... | ... | @@ -2105,10 +2105,11 @@ net_hexansi_out(unsigned char *buf, int len) |
2105 | 2105 | * Send user data out in ANSI mode, without cooked-mode processing. |
2106 | 2106 | */ |
2107 | 2107 | static void |
2108 | -net_cookedout(const char *buf, int len) | |
2108 | +net_cookedout(H3270 *hSession, const char *buf, int len) | |
2109 | 2109 | { |
2110 | -#if defined(X3270_TRACE) /*[*/ | |
2111 | - if (lib3270_get_toggle(&h3270,LIB3270_TOGGLE_DS_TRACE)) { | |
2110 | +#if defined(X3270_TRACE) | |
2111 | + if (lib3270_get_toggle(hSession,LIB3270_TOGGLE_DS_TRACE)) | |
2112 | + { | |
2112 | 2113 | int i; |
2113 | 2114 | |
2114 | 2115 | trace_dsn(">"); |
... | ... | @@ -2116,8 +2117,8 @@ net_cookedout(const char *buf, int len) |
2116 | 2117 | trace_dsn(" %s", ctl_see((int) *(buf+i))); |
2117 | 2118 | trace_dsn("\n"); |
2118 | 2119 | } |
2119 | -#endif /*]*/ | |
2120 | - net_rawout((unsigned const char *) buf, len); | |
2120 | +#endif | |
2121 | + net_rawout(hSession,(unsigned const char *) buf, len); | |
2121 | 2122 | } |
2122 | 2123 | |
2123 | 2124 | |
... | ... | @@ -2126,11 +2127,10 @@ net_cookedout(const char *buf, int len) |
2126 | 2127 | * Send output in ANSI mode, including cooked-mode processing if |
2127 | 2128 | * appropriate. |
2128 | 2129 | */ |
2129 | -static void | |
2130 | -net_cookout(const char *buf, int len) | |
2130 | +static void net_cookout(H3270 *hSession, const char *buf, int len) | |
2131 | 2131 | { |
2132 | 2132 | |
2133 | - if (!IN_ANSI || (h3270.kybdlock & KL_AWAITING_FIRST)) | |
2133 | + if (!IN_ANSI || (hSession->kybdlock & KL_AWAITING_FIRST)) | |
2134 | 2134 | return; |
2135 | 2135 | |
2136 | 2136 | if (linemode) { |
... | ... | @@ -2141,9 +2141,9 @@ net_cookout(const char *buf, int len) |
2141 | 2141 | c = buf[i]; |
2142 | 2142 | |
2143 | 2143 | /* Input conversions. */ |
2144 | - if (!lnext && c == '\r' && h3270.icrnl) | |
2144 | + if (!lnext && c == '\r' && hSession->icrnl) | |
2145 | 2145 | c = '\n'; |
2146 | - else if (!lnext && c == '\n' && h3270.inlcr) | |
2146 | + else if (!lnext && c == '\n' && hSession->inlcr) | |
2147 | 2147 | c = '\r'; |
2148 | 2148 | |
2149 | 2149 | /* Backslashes. */ |
... | ... | @@ -2178,7 +2178,7 @@ net_cookout(const char *buf, int len) |
2178 | 2178 | } |
2179 | 2179 | return; |
2180 | 2180 | } else |
2181 | - net_cookedout(buf, len); | |
2181 | + net_cookedout(&h3270, buf, len); | |
2182 | 2182 | } |
2183 | 2183 | |
2184 | 2184 | |
... | ... | @@ -2206,7 +2206,7 @@ ansi_process_s(const char *data) |
2206 | 2206 | static void |
2207 | 2207 | forward_data(void) |
2208 | 2208 | { |
2209 | - net_cookedout((char *) lbuf, lbptr - lbuf); | |
2209 | + net_cookedout(&h3270, (char *) lbuf, lbptr - lbuf); | |
2210 | 2210 | cooked_init(); |
2211 | 2211 | } |
2212 | 2212 | |
... | ... | @@ -2721,7 +2721,7 @@ net_output(void) |
2721 | 2721 | /* Append the IAC EOR and transmit. */ |
2722 | 2722 | *xoptr++ = IAC; |
2723 | 2723 | *xoptr++ = EOR; |
2724 | - net_rawout(xobuf, xoptr - xobuf); | |
2724 | + net_rawout(&h3270,xobuf, xoptr - xobuf); | |
2725 | 2725 | |
2726 | 2726 | trace_dsn("SENT EOR\n"); |
2727 | 2727 | ns_rsent++; |
... | ... | @@ -2753,7 +2753,7 @@ tn3270e_ack(void) |
2753 | 2753 | trace_dsn("SENT TN3270E(RESPONSE POSITIVE-RESPONSE " |
2754 | 2754 | "%u) DEVICE-END\n", |
2755 | 2755 | h_in->seq_number[0] << 8 | h_in->seq_number[1]); |
2756 | - net_rawout(rsp_buf, rsp_len); | |
2756 | + net_rawout(&h3270, rsp_buf, rsp_len); | |
2757 | 2757 | } |
2758 | 2758 | |
2759 | 2759 | /* Send a TN3270E negative response to the server. */ |
... | ... | @@ -2788,7 +2788,7 @@ tn3270e_nak(enum pds rv) |
2788 | 2788 | rsp_buf[rsp_len++] = IAC; |
2789 | 2789 | rsp_buf[rsp_len++] = EOR; |
2790 | 2790 | trace_dsn("SENT TN3270E(RESPONSE NEGATIVE-RESPONSE %u) %s\n",h_in->seq_number[0] << 8 | h_in->seq_number[1], neg); |
2791 | - net_rawout(rsp_buf, rsp_len); | |
2791 | + net_rawout(&h3270, rsp_buf, rsp_len); | |
2792 | 2792 | } |
2793 | 2793 | |
2794 | 2794 | #if defined(X3270_TRACE) /*[*/ |
... | ... | @@ -2856,9 +2856,9 @@ net_sendc(char c) |
2856 | 2856 | */ |
2857 | 2857 | ) { |
2858 | 2858 | /* CR must be quoted */ |
2859 | - net_cookout("\r"\r\0", 2);", 2); | |
2859 | + net_cookout(&h3270,"\r"\r\0", 2);", 2); | |
2860 | 2860 | } else { |
2861 | - net_cookout(&c, 1); | |
2861 | + net_cookout(&h3270,&c, 1); | |
2862 | 2862 | } |
2863 | 2863 | } |
2864 | 2864 | |
... | ... | @@ -2870,7 +2870,7 @@ net_sendc(char c) |
2870 | 2870 | void |
2871 | 2871 | net_sends(const char *s) |
2872 | 2872 | { |
2873 | - net_cookout(s, strlen(s)); | |
2873 | + net_cookout(&h3270, s, strlen(s)); | |
2874 | 2874 | } |
2875 | 2875 | |
2876 | 2876 | |
... | ... | @@ -2881,7 +2881,7 @@ net_sends(const char *s) |
2881 | 2881 | void |
2882 | 2882 | net_send_erase(void) |
2883 | 2883 | { |
2884 | - net_cookout(&verase, 1); | |
2884 | + net_cookout(&h3270, &verase, 1); | |
2885 | 2885 | } |
2886 | 2886 | |
2887 | 2887 | |
... | ... | @@ -2892,7 +2892,7 @@ net_send_erase(void) |
2892 | 2892 | void |
2893 | 2893 | net_send_kill(void) |
2894 | 2894 | { |
2895 | - net_cookout(&vkill, 1); | |
2895 | + net_cookout(&h3270, &vkill, 1); | |
2896 | 2896 | } |
2897 | 2897 | |
2898 | 2898 | |
... | ... | @@ -2903,7 +2903,7 @@ net_send_kill(void) |
2903 | 2903 | void |
2904 | 2904 | net_send_werase(void) |
2905 | 2905 | { |
2906 | - net_cookout(&vwerase, 1); | |
2906 | + net_cookout(&h3270, &vwerase, 1); | |
2907 | 2907 | } |
2908 | 2908 | #endif /*]*/ |
2909 | 2909 | |
... | ... | @@ -2959,7 +2959,7 @@ net_break(void) |
2959 | 2959 | static unsigned char buf[] = { IAC, BREAK }; |
2960 | 2960 | |
2961 | 2961 | /* I don't know if we should first send TELNET synch ? */ |
2962 | - net_rawout(buf, sizeof(buf)); | |
2962 | + net_rawout(&h3270, buf, sizeof(buf)); | |
2963 | 2963 | trace_dsn("SENT BREAK\n"); |
2964 | 2964 | } |
2965 | 2965 | |
... | ... | @@ -2974,7 +2974,7 @@ net_interrupt(void) |
2974 | 2974 | static unsigned char buf[] = { IAC, IP }; |
2975 | 2975 | |
2976 | 2976 | /* I don't know if we should first send TELNET synch ? */ |
2977 | - net_rawout(buf, sizeof(buf)); | |
2977 | + net_rawout(&h3270, buf, sizeof(buf)); | |
2978 | 2978 | trace_dsn("SENT IP\n"); |
2979 | 2979 | } |
2980 | 2980 | |
... | ... | @@ -3001,7 +3001,7 @@ net_abort(void) |
3001 | 3001 | case E_NVT: |
3002 | 3002 | break; |
3003 | 3003 | case E_SSCP: |
3004 | - net_rawout(buf, sizeof(buf)); | |
3004 | + net_rawout(&h3270, buf, sizeof(buf)); | |
3005 | 3005 | trace_dsn("SENT AO\n"); |
3006 | 3006 | if (tn3270e_bound || |
3007 | 3007 | !(e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) { |
... | ... | @@ -3010,7 +3010,7 @@ net_abort(void) |
3010 | 3010 | } |
3011 | 3011 | break; |
3012 | 3012 | case E_3270: |
3013 | - net_rawout(buf, sizeof(buf)); | |
3013 | + net_rawout(&h3270, buf, sizeof(buf)); | |
3014 | 3014 | trace_dsn("SENT AO\n"); |
3015 | 3015 | tn3270e_submode = E_SSCP; |
3016 | 3016 | check_in3270(&h3270); | ... | ... |