diff --git a/src/lib3270/ansi.c b/src/lib3270/ansi.c index 90f974e..58dbc0c 100644 --- a/src/lib3270/ansi.c +++ b/src/lib3270/ansi.c @@ -126,64 +126,64 @@ static enum state { MBPEND = 7 } state = DATA; -static enum state ansi_data_mode(int, int); -static enum state dec_save_cursor(int, int); -static enum state dec_restore_cursor(int, int); -static enum state ansi_newline(int, int); -static enum state ansi_cursor_up(int, int); -static enum state ansi_esc2(int, int); -static enum state ansi_reset(int, int); -static enum state ansi_insert_chars(int, int); -static enum state ansi_cursor_down(int, int); -static enum state ansi_cursor_right(int, int); -static enum state ansi_cursor_left(int, int); -static enum state ansi_cursor_motion(int, int); -static enum state ansi_erase_in_display(int, int); -static enum state ansi_erase_in_line(int, int); -static enum state ansi_insert_lines(int, int); -static enum state ansi_delete_lines(int, int); -static enum state ansi_delete_chars(int, int); -static enum state ansi_sgr(int, int); -static enum state ansi_bell(int, int); -static enum state ansi_newpage(int, int); -static enum state ansi_backspace(int, int); -static enum state ansi_cr(int, int); -static enum state ansi_lf(int, int); -static enum state ansi_htab(int, int); -static enum state ansi_escape(int, int); -static enum state ansi_nop(int, int); -static enum state ansi_printing(int, int); -static enum state ansi_semicolon(int, int); -static enum state ansi_digit(int, int); -static enum state ansi_reverse_index(int, int); -static enum state ansi_send_attributes(int, int); -static enum state ansi_set_mode(int, int); -static enum state ansi_reset_mode(int, int); -static enum state dec_return_terminal_id(int, int); -static enum state ansi_status_report(int, int); -static enum state ansi_cs_designate(int, int); -static enum state ansi_esc3(int, int); -static enum state dec_set(int, int); -static enum state dec_reset(int, int); -static enum state dec_save(int, int); -static enum state dec_restore(int, int); -static enum state dec_scrolling_region(int, int); -static enum state xterm_text_mode(int, int); -static enum state xterm_text_semicolon(int, int); -static enum state xterm_text(int, int); -static enum state xterm_text_do(int, int); -static enum state ansi_htab_set(int, int); -static enum state ansi_htab_clear(int, int); -static enum state ansi_cs_designate2(int, int); -static enum state ansi_select_g0(int, int); -static enum state ansi_select_g1(int, int); -static enum state ansi_select_g2(int, int); -static enum state ansi_select_g3(int, int); -static enum state ansi_one_g2(int, int); -static enum state ansi_one_g3(int, int); -static enum state ansi_multibyte(int, int); - -typedef enum state (*afn_t)(int, int); +static enum state ansi_data_mode(H3270 *, int, int); +static enum state dec_save_cursor(H3270 *, int, int); +static enum state dec_restore_cursor(H3270 *, int, int); +static enum state ansi_newline(H3270 *, int, int); +static enum state ansi_cursor_up(H3270 *, int, int); +static enum state ansi_esc2(H3270 *, int, int); +static enum state ansi_reset(H3270 *, int, int); +static enum state ansi_insert_chars(H3270 *, int, int); +static enum state ansi_cursor_down(H3270 *, int, int); +static enum state ansi_cursor_right(H3270 *, int, int); +static enum state ansi_cursor_left(H3270 *, int, int); +static enum state ansi_cursor_motion(H3270 *, int, int); +static enum state ansi_erase_in_display(H3270 *, int, int); +static enum state ansi_erase_in_line(H3270 *, int, int); +static enum state ansi_insert_lines(H3270 *, int, int); +static enum state ansi_delete_lines(H3270 *, int, int); +static enum state ansi_delete_chars(H3270 *, int, int); +static enum state ansi_sgr(H3270 *, int, int); +static enum state ansi_bell(H3270 *, int, int); +static enum state ansi_newpage(H3270 *, int, int); +static enum state ansi_backspace(H3270 *, int, int); +static enum state ansi_cr(H3270 *, int, int); +static enum state ansi_lf(H3270 *, int, int); +static enum state ansi_htab(H3270 *, int, int); +static enum state ansi_escape(H3270 *, int, int); +static enum state ansi_nop(H3270 *, int, int); +static enum state ansi_printing(H3270 *, int, int); +static enum state ansi_semicolon(H3270 *, int, int); +static enum state ansi_digit(H3270 *, int, int); +static enum state ansi_reverse_index(H3270 *, int, int); +static enum state ansi_send_attributes(H3270 *, int, int); +static enum state ansi_set_mode(H3270 *, int, int); +static enum state ansi_reset_mode(H3270 *, int, int); +static enum state dec_return_terminal_id(H3270 *, int, int); +static enum state ansi_status_report(H3270 *, int, int); +static enum state ansi_cs_designate(H3270 *, int, int); +static enum state ansi_esc3(H3270 *, int, int); +static enum state dec_set(H3270 *, int, int); +static enum state dec_reset(H3270 *, int, int); +static enum state dec_save(H3270 *, int, int); +static enum state dec_restore(H3270 *, int, int); +static enum state dec_scrolling_region(H3270 *, int, int); +static enum state xterm_text_mode(H3270 *, int, int); +static enum state xterm_text_semicolon(H3270 *, int, int); +static enum state xterm_text(H3270 *, int, int); +static enum state xterm_text_do(H3270 *, int, int); +static enum state ansi_htab_set(H3270 *, int, int); +static enum state ansi_htab_clear(H3270 *, int, int); +static enum state ansi_cs_designate2(H3270 *, int, int); +static enum state ansi_select_g0(H3270 *, int, int); +static enum state ansi_select_g1(H3270 *, int, int); +static enum state ansi_select_g2(H3270 *, int, int); +static enum state ansi_select_g3(H3270 *, int, int); +static enum state ansi_one_g2(H3270 *, int, int); +static enum state ansi_one_g3(H3270 *, int, int); +static enum state ansi_multibyte(H3270 *, int, int); + +typedef enum state (*afn_t)(H3270 *, int, int); static afn_t ansi_fn[] = { /* 0 */ &ansi_data_mode, /* 1 */ &dec_save_cursor, @@ -489,13 +489,13 @@ static Boolean held_wrap = False; static void ansi_scroll(void); static enum state -ansi_data_mode(int ig1 unused, int ig2 unused) +ansi_data_mode(H3270 *hSession, int ig1 unused, int ig2 unused) { return DATA; } static enum state -dec_save_cursor(int ig1 unused, int ig2 unused) +dec_save_cursor(H3270 *hSession, int ig1 unused, int ig2 unused) { int i; @@ -510,7 +510,7 @@ dec_save_cursor(int ig1 unused, int ig2 unused) } static enum state -dec_restore_cursor(int ig1 unused, int ig2 unused) +dec_restore_cursor(H3270 *hSession, int ig1 unused, int ig2 unused) { int i; @@ -526,7 +526,7 @@ dec_restore_cursor(int ig1 unused, int ig2 unused) } static enum state -ansi_newline(int ig1 unused, int ig2 unused) +ansi_newline(H3270 *hSession, int ig1 unused, int ig2 unused) { int nc; @@ -541,7 +541,7 @@ ansi_newline(int ig1 unused, int ig2 unused) } static enum state -ansi_cursor_up(int nn, int ig2 unused) +ansi_cursor_up(H3270 *hSession, int nn, int ig2 unused) { int rr; @@ -557,7 +557,7 @@ ansi_cursor_up(int nn, int ig2 unused) } static enum state -ansi_esc2(int ig1 unused, int ig2 unused) +ansi_esc2(H3270 *hSession, int ig1 unused, int ig2 unused) { register int i; @@ -568,7 +568,7 @@ ansi_esc2(int ig1 unused, int ig2 unused) } static enum state -ansi_reset(int ig1 unused, int ig2 unused) +ansi_reset(H3270 *hSession, int ig1 unused, int ig2 unused) { int i; static Boolean first = True; @@ -617,7 +617,7 @@ ansi_reset(int ig1 unused, int ig2 unused) } static enum state -ansi_insert_chars(int nn, int ig2 unused) +ansi_insert_chars(H3270 *hSession, int nn, int ig2 unused) { int cc = h3270.cursor_addr % h3270.cols; /* current col */ int mc = h3270.cols - cc; /* max chars that can be inserted */ @@ -639,7 +639,7 @@ ansi_insert_chars(int nn, int ig2 unused) } static enum state -ansi_cursor_down(int nn, int ig2 unused) +ansi_cursor_down(H3270 *hSession, int nn, int ig2 unused) { int rr; @@ -655,7 +655,7 @@ ansi_cursor_down(int nn, int ig2 unused) } static enum state -ansi_cursor_right(int nn, int ig2 unused) +ansi_cursor_right(H3270 *hSession, int nn, int ig2 unused) { int cc; @@ -672,7 +672,7 @@ ansi_cursor_right(int nn, int ig2 unused) } static enum state -ansi_cursor_left(int nn, int ig2 unused) +ansi_cursor_left(H3270 *hSession, int nn, int ig2 unused) { int cc; @@ -692,7 +692,7 @@ ansi_cursor_left(int nn, int ig2 unused) } static enum state -ansi_cursor_motion(int n1, int n2) +ansi_cursor_motion(H3270 *hSession, int n1, int n2) { if (n1 < 1) n1 = 1; if (n1 > h3270.rows) n1 = h3270.rows; @@ -704,7 +704,7 @@ ansi_cursor_motion(int n1, int n2) } static enum state -ansi_erase_in_display(int nn, int ig2 unused) +ansi_erase_in_display(H3270 *hSession, int nn, int ig2 unused) { switch (nn) { case 0: /* below */ @@ -722,7 +722,7 @@ ansi_erase_in_display(int nn, int ig2 unused) } static enum state -ansi_erase_in_line(int nn, int ig2 unused) +ansi_erase_in_line(H3270 *hSession, int nn, int ig2 unused) { int nc = h3270.cursor_addr % h3270.cols; @@ -741,7 +741,7 @@ ansi_erase_in_line(int nn, int ig2 unused) } static enum state -ansi_insert_lines(int nn, int ig2 unused) +ansi_insert_lines(H3270 *hSession, int nn, int ig2 unused) { int rr = h3270.cursor_addr / h3270.cols; /* current row */ int mr = scroll_bottom - rr; /* rows left at and below this one */ @@ -767,7 +767,7 @@ ansi_insert_lines(int nn, int ig2 unused) } static enum state -ansi_delete_lines(int nn, int ig2 unused) +ansi_delete_lines(H3270 *hSession, int nn, int ig2 unused) { int rr = h3270.cursor_addr / h3270.cols; /* current row */ int mr = scroll_bottom - rr; /* max rows that can be deleted */ @@ -793,7 +793,7 @@ ansi_delete_lines(int nn, int ig2 unused) } static enum state -ansi_delete_chars(int nn, int ig2 unused) +ansi_delete_chars(H3270 *hSession, int nn, int ig2 unused) { int cc = h3270.cursor_addr % h3270.cols; /* current col */ int mc = h3270.cols - cc; /* max chars that can be deleted */ @@ -815,7 +815,7 @@ ansi_delete_chars(int nn, int ig2 unused) } static enum state -ansi_sgr(int ig1 unused, int ig2 unused) +ansi_sgr(H3270 *hSession, int ig1 unused, int ig2 unused) { int i; @@ -914,21 +914,21 @@ ansi_sgr(int ig1 unused, int ig2 unused) } static enum state -ansi_bell(int ig1 unused, int ig2 unused) +ansi_bell(H3270 *hSession, int ig1 unused, int ig2 unused) { - lib3270_ring_bell(NULL); + lib3270_ring_bell(hSession); return DATA; } static enum state -ansi_newpage(int ig1 unused, int ig2 unused) +ansi_newpage(H3270 *hSession, int ig1 unused, int ig2 unused) { ctlr_clear(&h3270,False); return DATA; } static enum state -ansi_backspace(int ig1 unused, int ig2 unused) +ansi_backspace(H3270 *hSession, int ig1 unused, int ig2 unused) { if (held_wrap) { held_wrap = False; @@ -945,18 +945,18 @@ ansi_backspace(int ig1 unused, int ig2 unused) } static enum state -ansi_cr(int ig1 unused, int ig2 unused) +ansi_cr(H3270 *hSession, int ig1 unused, int ig2 unused) { if (h3270.cursor_addr % h3270.cols) cursor_move(&h3270,h3270.cursor_addr - (h3270.cursor_addr % h3270.cols)); if (auto_newline_mode) - (void) ansi_lf(0, 0); + (void) ansi_lf(hSession, 0, 0); held_wrap = False; return DATA; } static enum state -ansi_lf(int ig1 unused, int ig2 unused) +ansi_lf(H3270 *hSession, int ig1 unused, int ig2 unused) { int nc = h3270.cursor_addr + h3270.cols; @@ -977,7 +977,7 @@ ansi_lf(int ig1 unused, int ig2 unused) } static enum state -ansi_htab(int ig1 unused, int ig2 unused) +ansi_htab(H3270 *hSession, int ig1 unused, int ig2 unused) { int col = h3270.cursor_addr % h3270.cols; int i; @@ -993,13 +993,13 @@ ansi_htab(int ig1 unused, int ig2 unused) } static enum state -ansi_escape(int ig1 unused, int ig2 unused) +ansi_escape(H3270 *hSession, int ig1 unused, int ig2 unused) { return ESC; } static enum state -ansi_nop(int ig1 unused, int ig2 unused) +ansi_nop(H3270 *hSession, int ig1 unused, int ig2 unused) { return DATA; } @@ -1019,7 +1019,7 @@ ansi_nop(int ig1 unused, int ig2 unused) } static enum state -ansi_printing(int ig1 unused, int ig2 unused) +ansi_printing(H3270 *hSession, int ig1 unused, int ig2 unused) { int nc; unsigned char ebc_ch; @@ -1065,7 +1065,7 @@ ansi_printing(int ig1 unused, int ig2 unused) } if (insert_mode) - (void) ansi_insert_chars(1, 0); + (void) ansi_insert_chars(hSession,1, 0); switch (csd[(once_cset != -1) ? once_cset : cset]) { case CSD_LD: /* line drawing "0" */ if (ansi_ch >= 0x5f && ansi_ch <= 0x7e) @@ -1193,7 +1193,7 @@ ansi_printing(int ig1 unused, int ig2 unused) } static enum state -ansi_multibyte(int ig1, int ig2) +ansi_multibyte(H3270 *hSession, int ig1, int ig2) { char mbs[MB_MAX]; unsigned char ch; @@ -1204,7 +1204,7 @@ ansi_multibyte(int ig1, int ig2) /* String too long. */ pmi = 0; ansi_ch = '?'; - return ansi_printing(ig1, ig2); + return ansi_printing(hSession,ig1, ig2); } strncpy(mbs, pending_mbs, pmi); @@ -1215,7 +1215,7 @@ ansi_multibyte(int ig1, int ig2) if (ch != 0) { // Success! ansi_ch = ch; - return ansi_printing(ig1, ig2); + return ansi_printing(hSession, ig1, ig2); } if (fail == ULFAIL_INCOMPLETE) { // Go get more. @@ -1229,17 +1229,17 @@ ansi_multibyte(int ig1, int ig2) ch = ansi_ch; /* save for later */ pmi = 0; ansi_ch = '?'; - (void) ansi_printing(ig1, ig2); + (void) ansi_printing(hSession, ig1, ig2); /* Reprocess whatever we choked on. */ ansi_ch = ch; state = DATA; fn = ansi_fn[st[(int)DATA][ansi_ch]]; - return (*fn)(n[0], n[1]); + return (*fn)(hSession,n[0], n[1]); } static enum state -ansi_semicolon(int ig1 unused, int ig2 unused) +ansi_semicolon(H3270 *hSession, int ig1 unused, int ig2 unused) { if (nx >= NN) return DATA; @@ -1248,14 +1248,14 @@ ansi_semicolon(int ig1 unused, int ig2 unused) } static enum state -ansi_digit(int ig1 unused, int ig2 unused) +ansi_digit(H3270 *hSession, int ig1 unused, int ig2 unused) { n[nx] = (n[nx] * 10) + (ansi_ch - '0'); return state; } static enum state -ansi_reverse_index(int ig1 unused, int ig2 unused) +ansi_reverse_index(H3270 *hSession, int ig1 unused, int ig2 unused) { int rr = h3270.cursor_addr / h3270.cols; /* current row */ 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) /* If the cursor is above the scrolling region, do a simple margined cursor up. */ if (np < 0) { - (void) ansi_cursor_up(nn, 0); + (void) ansi_cursor_up(hSession, nn, 0); return DATA; } @@ -1281,17 +1281,17 @@ ansi_reverse_index(int ig1 unused, int ig2 unused) /* Move the cursor up without scrolling */ if (nn) - (void) ansi_cursor_up(nn, 0); + (void) ansi_cursor_up(hSession,nn, 0); /* Insert lines at the top for backward scroll */ if (ns) - (void) ansi_insert_lines(ns, 0); + (void) ansi_insert_lines(hSession, ns, 0); return DATA; } static enum state -ansi_send_attributes(int nn, int ig2 unused) +ansi_send_attributes(H3270 *hSession, int nn, int ig2 unused) { if (!nn) net_sends("\033[?1;2c"); @@ -1299,13 +1299,13 @@ ansi_send_attributes(int nn, int ig2 unused) } static enum state -dec_return_terminal_id(int ig1 unused, int ig2 unused) +dec_return_terminal_id(H3270 *hSession, int ig1 unused, int ig2 unused) { - return ansi_send_attributes(0, 0); + return ansi_send_attributes(hSession, 0, 0); } static enum state -ansi_set_mode(int nn, int ig2 unused) +ansi_set_mode(H3270 *hSession, int nn, int ig2 unused) { switch (nn) { case 4: @@ -1319,7 +1319,7 @@ ansi_set_mode(int nn, int ig2 unused) } static enum state -ansi_reset_mode(int nn, int ig2 unused) +ansi_reset_mode(H3270 *hSession, int nn, int ig2 unused) { switch (nn) { case 4: @@ -1333,7 +1333,7 @@ ansi_reset_mode(int nn, int ig2 unused) } static enum state -ansi_status_report(int nn, int ig2 unused) +ansi_status_report(H3270 *hSession, int nn, int ig2 unused) { static char cpr[11]; @@ -1351,69 +1351,69 @@ ansi_status_report(int nn, int ig2 unused) } static enum state -ansi_cs_designate(int ig1 unused, int ig2 unused) +ansi_cs_designate(H3270 *hSession, int ig1 unused, int ig2 unused) { cs_to_change = strchr(gnnames, ansi_ch) - gnnames; return CSDES; } static enum state -ansi_cs_designate2(int ig1 unused, int ig2 unused) +ansi_cs_designate2(H3270 *hSession, int ig1 unused, int ig2 unused) { csd[cs_to_change] = strchr(csnames, ansi_ch) - csnames; return DATA; } static enum state -ansi_select_g0(int ig1 unused, int ig2 unused) +ansi_select_g0(H3270 *hSession, int ig1 unused, int ig2 unused) { cset = CS_G0; return DATA; } static enum state -ansi_select_g1(int ig1 unused, int ig2 unused) +ansi_select_g1(H3270 *hSession, int ig1 unused, int ig2 unused) { cset = CS_G1; return DATA; } static enum state -ansi_select_g2(int ig1 unused, int ig2 unused) +ansi_select_g2(H3270 *hSession, int ig1 unused, int ig2 unused) { cset = CS_G2; return DATA; } static enum state -ansi_select_g3(int ig1 unused, int ig2 unused) +ansi_select_g3(H3270 *hSession, int ig1 unused, int ig2 unused) { cset = CS_G3; return DATA; } static enum state -ansi_one_g2(int ig1 unused, int ig2 unused) +ansi_one_g2(H3270 *hSession, int ig1 unused, int ig2 unused) { once_cset = CS_G2; return DATA; } static enum state -ansi_one_g3(int ig1 unused, int ig2 unused) +ansi_one_g3(H3270 *hSession, int ig1 unused, int ig2 unused) { once_cset = CS_G3; return DATA; } static enum state -ansi_esc3(int ig1 unused, int ig2 unused) +ansi_esc3(H3270 *hSession, int ig1 unused, int ig2 unused) { return DECP; } static enum state -dec_set(int ig1 unused, int ig2 unused) +dec_set(H3270 *hSession, int ig1 unused, int ig2 unused) { int i; @@ -1448,7 +1448,7 @@ dec_set(int ig1 unused, int ig2 unused) } static enum state -dec_reset(int ig1 unused, int ig2 unused) +dec_reset(H3270 *hSession, int ig1 unused, int ig2 unused) { int i; @@ -1480,7 +1480,7 @@ dec_reset(int ig1 unused, int ig2 unused) } static enum state -dec_save(int ig1 unused, int ig2 unused) +dec_save(H3270 *hSession, int ig1 unused, int ig2 unused) { int i; @@ -1509,7 +1509,7 @@ dec_save(int ig1 unused, int ig2 unused) } static enum state -dec_restore(int ig1 unused, int ig2 unused) +dec_restore(H3270 *hSession, int ig1 unused, int ig2 unused) { int i; @@ -1544,7 +1544,7 @@ dec_restore(int ig1 unused, int ig2 unused) } static enum state -dec_scrolling_region(int top, int bottom) +dec_scrolling_region(H3270 *hSession, int top, int bottom) { if (top < 1) top = 1; @@ -1562,7 +1562,7 @@ dec_scrolling_region(int top, int bottom) } static enum state -xterm_text_mode(int ig1 unused, int ig2 unused) +xterm_text_mode(H3270 *hSession, int ig1 unused, int ig2 unused) { nx = 0; n[0] = 0; @@ -1570,14 +1570,14 @@ xterm_text_mode(int ig1 unused, int ig2 unused) } static enum state -xterm_text_semicolon(int ig1 unused, int ig2 unused) +xterm_text_semicolon(H3270 *hSession, int ig1 unused, int ig2 unused) { tx = 0; return TEXT2; } static enum state -xterm_text(int ig1 unused, int ig2 unused) +xterm_text(H3270 *hSession, int ig1 unused, int ig2 unused) { if (tx < NT) text[tx++] = ansi_ch; @@ -1585,7 +1585,7 @@ xterm_text(int ig1 unused, int ig2 unused) } static enum state -xterm_text_do(int ig1 unused, int ig2 unused) +xterm_text_do(H3270 *hSession, int ig1 unused, int ig2 unused) { /* #if defined(X3270_DISPLAY) || defined(WC3270) @@ -1629,7 +1629,7 @@ xterm_text_do(int ig1 unused, int ig2 unused) } static enum state -ansi_htab_set(int ig1 unused, int ig2 unused) +ansi_htab_set(H3270 *hSession, int ig1 unused, int ig2 unused) { register int col = h3270.cursor_addr % h3270.cols; @@ -1638,7 +1638,7 @@ ansi_htab_set(int ig1 unused, int ig2 unused) } static enum state -ansi_htab_clear(int nn, int ig2 unused) +ansi_htab_clear(H3270 *hSession, int nn, int ig2 unused) { register int col, i; @@ -1687,7 +1687,7 @@ ansi_scroll(void) void ansi_in3270(H3270 *session, int in3270, void *dunno) { if (!in3270) - (void) ansi_reset(0, 0); + (void) ansi_reset(session, 0, 0); } #if defined(X3270_DBCS) /*[*/ @@ -1730,7 +1730,7 @@ ansi_process(unsigned int c) mb_pending = 0; } #endif /*]*/ - state = (*fn)(n[0], n[1]); + state = (*fn)(&h3270, n[0], n[1]); } void diff --git a/src/lib3270/telnet.c b/src/lib3270/telnet.c index 80c22f3..d4761ff 100644 --- a/src/lib3270/telnet.c +++ b/src/lib3270/telnet.c @@ -205,7 +205,7 @@ static char *proxy_portname = CN; static unsigned short proxy_port = 0; static int telnet_fsm(H3270 *session, unsigned char c); -static void net_rawout(unsigned const char *buf, int len); +static void net_rawout(H3270 *session, unsigned const char *buf, int len); static void check_in3270(H3270 *session); static void store3270in(unsigned char c); static void check_linemode(Boolean init); @@ -1147,7 +1147,7 @@ send_naws(void) naws_len += set16(naws_msg + naws_len, XMIT_ROWS); (void) sprintf(naws_msg + naws_len, "%c%c", IAC, SE); naws_len += 2; - net_rawout((unsigned char *)naws_msg, naws_len); + net_rawout(&h3270,(unsigned char *)naws_msg, naws_len); trace_dsn("SENT %s NAWS %d %d %s\n", cmd(SB), XMIT_COLS, XMIT_ROWS, cmd(SE)); } @@ -1310,7 +1310,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) if (!h3270.hisopts[c]) { h3270.hisopts[c] = 1; do_opt[2] = c; - net_rawout(do_opt, sizeof(do_opt)); + net_rawout(&h3270,do_opt, sizeof(do_opt)); trace_dsn("SENT %s %s\n", cmd(DO), opt(c)); @@ -1321,7 +1321,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) if (c == TELOPT_EOR && !h3270.myopts[c]) { h3270.myopts[c] = 1; will_opt[2] = c; - net_rawout(will_opt, + net_rawout(&h3270,will_opt, sizeof(will_opt)); trace_dsn("SENT %s %s\n", cmd(WILL), opt(c)); @@ -1334,7 +1334,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) } default: dont_opt[2] = c; - net_rawout(dont_opt, sizeof(dont_opt)); + net_rawout(&h3270,dont_opt, sizeof(dont_opt)); trace_dsn("SENT %s %s\n", cmd(DONT), opt(c)); break; } @@ -1345,7 +1345,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) if (h3270.hisopts[c]) { h3270.hisopts[c] = 0; dont_opt[2] = c; - net_rawout(dont_opt, sizeof(dont_opt)); + net_rawout(&h3270, dont_opt, sizeof(dont_opt)); trace_dsn("SENT %s %s\n", cmd(DONT), opt(c)); check_in3270(&h3270); check_linemode(False); @@ -1376,7 +1376,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) if (c != TELOPT_TM) h3270.myopts[c] = 1; will_opt[2] = c; - net_rawout(will_opt, sizeof(will_opt)); + net_rawout(&h3270, will_opt, sizeof(will_opt)); trace_dsn("SENT %s %s\n", cmd(WILL), opt(c)); check_in3270(&h3270); check_linemode(False); @@ -1394,7 +1394,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) * Send IAC SB STARTTLS FOLLOWS IAC SE * to announce that what follows is TLS. */ - net_rawout(follows_msg, + net_rawout(&h3270, follows_msg, sizeof(follows_msg)); trace_dsn("SENT %s %s FOLLOWS %s\n", cmd(SB), @@ -1407,7 +1407,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) default: wont: wont_opt[2] = c; - net_rawout(wont_opt, sizeof(wont_opt)); + net_rawout(&h3270, wont_opt, sizeof(wont_opt)); trace_dsn("SENT %s %s\n", cmd(WONT), opt(c)); break; } @@ -1418,7 +1418,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) if (h3270.myopts[c]) { h3270.myopts[c] = 0; wont_opt[2] = c; - net_rawout(wont_opt, sizeof(wont_opt)); + net_rawout(&h3270, wont_opt, sizeof(wont_opt)); trace_dsn("SENT %s %s\n", cmd(WONT), opt(c)); check_in3270(&h3270); check_linemode(False); @@ -1464,7 +1464,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) (try_lu != CN && *try_lu) ? "@" : "", (try_lu != CN && *try_lu) ? try_lu : "", IAC, SE); - net_rawout((unsigned char *)tt_out, tb_len); + net_rawout(&h3270, (unsigned char *)tt_out, tb_len); trace_dsn("SENT %s %s %s %.*s %s\n", cmd(SB), opt(TELOPT_TTYPE), @@ -1528,7 +1528,7 @@ tn3270e_request(void) (void) sprintf(t, "%c%c", IAC, SE); - net_rawout((unsigned char *)tt_out, tb_len); + net_rawout(&h3270, (unsigned char *)tt_out, tb_len); trace_dsn("SENT %s %s DEVICE-TYPE REQUEST %.*s%s%s %s\n", cmd(SB), opt(TELOPT_TN3270E), (int) strlen(h3270.termtype), tt_out + 5, @@ -1549,7 +1549,7 @@ backoff_tn3270e(const char *why) /* Tell the host 'no'. */ wont_opt[2] = TELOPT_TN3270E; - net_rawout(wont_opt, sizeof(wont_opt)); + net_rawout(&h3270, wont_opt, sizeof(wont_opt)); trace_dsn("SENT %s %s\n", cmd(WONT), opt(TELOPT_TN3270E)); /* 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) /* Complete and send out the protocol message. */ proto_buf[proto_len++] = IAC; proto_buf[proto_len++] = SE; - net_rawout(proto_buf, proto_len); + net_rawout(&h3270, proto_buf, proto_len); /* Complete and send out the trace text. */ trace_dsn("SENT %s %s FUNCTIONS %s %s %s\n", @@ -1983,7 +1983,7 @@ void net_exception(H3270 *session) * EWOULDBLOCK. */ static void -net_rawout(unsigned const char *buf, int len) +net_rawout(H3270 *session, unsigned const char *buf, int len) { int nw; @@ -2002,8 +2002,8 @@ net_rawout(unsigned const char *buf, int len) # define n2w len #endif #if defined(HAVE_LIBSSL) /*[*/ - if(h3270.ssl_con != NULL) - nw = SSL_write(h3270.ssl_con, (const char *) buf, n2w); + if(session->ssl_con != NULL) + nw = SSL_write(session->ssl_con, (const char *) buf, n2w); else #endif /*]*/ @@ -2014,10 +2014,10 @@ net_rawout(unsigned const char *buf, int len) else #endif */ - nw = send(h3270.sock, (const char *) buf, n2w, 0); + nw = send(session->sock, (const char *) buf, n2w, 0); if (nw < 0) { #if defined(HAVE_LIBSSL) /*[*/ - if (h3270.ssl_con != NULL) + if (session->ssl_con != NULL) { unsigned long e; char err_buf[120]; @@ -2026,19 +2026,19 @@ net_rawout(unsigned const char *buf, int len) (void) ERR_error_string(e, err_buf); trace_dsn("RCVD SSL_write error %ld (%s)\n", e,err_buf); popup_an_error(NULL,"SSL_write:\n%s", err_buf); - host_disconnect(&h3270,False); + host_disconnect(session,False); return; } #endif /*]*/ trace_dsn("RCVD socket error %d\n", errno); if (socket_errno() == SE_EPIPE || socket_errno() == SE_ECONNRESET) { - host_disconnect(&h3270,False); + host_disconnect(session,False); return; } else if (socket_errno() == SE_EINTR) { goto bot; } else { popup_a_sockerr(NULL, N_( "Socket write error" ) ); - host_disconnect(&h3270,True); + host_disconnect(session,True); return; } } @@ -2096,7 +2096,7 @@ net_hexansi_out(unsigned char *buf, int len) } /* Send it to the host. */ - net_rawout(xbuf, tbuf - xbuf); + net_rawout(&h3270,xbuf, tbuf - xbuf); lib3270_free(xbuf); } @@ -2105,10 +2105,11 @@ net_hexansi_out(unsigned char *buf, int len) * Send user data out in ANSI mode, without cooked-mode processing. */ static void -net_cookedout(const char *buf, int len) +net_cookedout(H3270 *hSession, const char *buf, int len) { -#if defined(X3270_TRACE) /*[*/ - if (lib3270_get_toggle(&h3270,LIB3270_TOGGLE_DS_TRACE)) { +#if defined(X3270_TRACE) + if (lib3270_get_toggle(hSession,LIB3270_TOGGLE_DS_TRACE)) + { int i; trace_dsn(">"); @@ -2116,8 +2117,8 @@ net_cookedout(const char *buf, int len) trace_dsn(" %s", ctl_see((int) *(buf+i))); trace_dsn("\n"); } -#endif /*]*/ - net_rawout((unsigned const char *) buf, len); +#endif + net_rawout(hSession,(unsigned const char *) buf, len); } @@ -2126,11 +2127,10 @@ net_cookedout(const char *buf, int len) * Send output in ANSI mode, including cooked-mode processing if * appropriate. */ -static void -net_cookout(const char *buf, int len) +static void net_cookout(H3270 *hSession, const char *buf, int len) { - if (!IN_ANSI || (h3270.kybdlock & KL_AWAITING_FIRST)) + if (!IN_ANSI || (hSession->kybdlock & KL_AWAITING_FIRST)) return; if (linemode) { @@ -2141,9 +2141,9 @@ net_cookout(const char *buf, int len) c = buf[i]; /* Input conversions. */ - if (!lnext && c == '\r' && h3270.icrnl) + if (!lnext && c == '\r' && hSession->icrnl) c = '\n'; - else if (!lnext && c == '\n' && h3270.inlcr) + else if (!lnext && c == '\n' && hSession->inlcr) c = '\r'; /* Backslashes. */ @@ -2178,7 +2178,7 @@ net_cookout(const char *buf, int len) } return; } else - net_cookedout(buf, len); + net_cookedout(&h3270, buf, len); } @@ -2206,7 +2206,7 @@ ansi_process_s(const char *data) static void forward_data(void) { - net_cookedout((char *) lbuf, lbptr - lbuf); + net_cookedout(&h3270, (char *) lbuf, lbptr - lbuf); cooked_init(); } @@ -2721,7 +2721,7 @@ net_output(void) /* Append the IAC EOR and transmit. */ *xoptr++ = IAC; *xoptr++ = EOR; - net_rawout(xobuf, xoptr - xobuf); + net_rawout(&h3270,xobuf, xoptr - xobuf); trace_dsn("SENT EOR\n"); ns_rsent++; @@ -2753,7 +2753,7 @@ tn3270e_ack(void) trace_dsn("SENT TN3270E(RESPONSE POSITIVE-RESPONSE " "%u) DEVICE-END\n", h_in->seq_number[0] << 8 | h_in->seq_number[1]); - net_rawout(rsp_buf, rsp_len); + net_rawout(&h3270, rsp_buf, rsp_len); } /* Send a TN3270E negative response to the server. */ @@ -2788,7 +2788,7 @@ tn3270e_nak(enum pds rv) rsp_buf[rsp_len++] = IAC; rsp_buf[rsp_len++] = EOR; trace_dsn("SENT TN3270E(RESPONSE NEGATIVE-RESPONSE %u) %s\n",h_in->seq_number[0] << 8 | h_in->seq_number[1], neg); - net_rawout(rsp_buf, rsp_len); + net_rawout(&h3270, rsp_buf, rsp_len); } #if defined(X3270_TRACE) /*[*/ @@ -2856,9 +2856,9 @@ net_sendc(char c) */ ) { /* CR must be quoted */ - net_cookout("\r\0", 2); + net_cookout(&h3270,"\r\0", 2); } else { - net_cookout(&c, 1); + net_cookout(&h3270,&c, 1); } } @@ -2870,7 +2870,7 @@ net_sendc(char c) void net_sends(const char *s) { - net_cookout(s, strlen(s)); + net_cookout(&h3270, s, strlen(s)); } @@ -2881,7 +2881,7 @@ net_sends(const char *s) void net_send_erase(void) { - net_cookout(&verase, 1); + net_cookout(&h3270, &verase, 1); } @@ -2892,7 +2892,7 @@ net_send_erase(void) void net_send_kill(void) { - net_cookout(&vkill, 1); + net_cookout(&h3270, &vkill, 1); } @@ -2903,7 +2903,7 @@ net_send_kill(void) void net_send_werase(void) { - net_cookout(&vwerase, 1); + net_cookout(&h3270, &vwerase, 1); } #endif /*]*/ @@ -2959,7 +2959,7 @@ net_break(void) static unsigned char buf[] = { IAC, BREAK }; /* I don't know if we should first send TELNET synch ? */ - net_rawout(buf, sizeof(buf)); + net_rawout(&h3270, buf, sizeof(buf)); trace_dsn("SENT BREAK\n"); } @@ -2974,7 +2974,7 @@ net_interrupt(void) static unsigned char buf[] = { IAC, IP }; /* I don't know if we should first send TELNET synch ? */ - net_rawout(buf, sizeof(buf)); + net_rawout(&h3270, buf, sizeof(buf)); trace_dsn("SENT IP\n"); } @@ -3001,7 +3001,7 @@ net_abort(void) case E_NVT: break; case E_SSCP: - net_rawout(buf, sizeof(buf)); + net_rawout(&h3270, buf, sizeof(buf)); trace_dsn("SENT AO\n"); if (tn3270e_bound || !(e_funcs & E_OPT(TN3270E_FUNC_BIND_IMAGE))) { @@ -3010,7 +3010,7 @@ net_abort(void) } break; case E_3270: - net_rawout(buf, sizeof(buf)); + net_rawout(&h3270, buf, sizeof(buf)); trace_dsn("SENT AO\n"); tn3270e_submode = E_SSCP; check_in3270(&h3270); -- libgit2 0.21.2