Commit 041020ccfa4f8b11bb11fbeab37c4fc1ff08a63a
1 parent
3ec6fb96
Exists in
master
and in
5 other branches
Mais ajustes em multi-sessão
Showing
3 changed files
with
201 additions
and
198 deletions
Show diff stats
src/include/lib3270/session.h
@@ -182,10 +182,16 @@ | @@ -182,10 +182,16 @@ | ||
182 | unsigned char default_ic; | 182 | unsigned char default_ic; |
183 | char reply_mode; | 183 | char reply_mode; |
184 | int trace_primed : 1; | 184 | int trace_primed : 1; |
185 | + int ticking : 1; | ||
186 | + int mticking : 1; | ||
185 | int crm_nattr; | 187 | int crm_nattr; |
186 | unsigned char crm_attr[16]; | 188 | unsigned char crm_attr[16]; |
187 | unsigned char * zero_buf; /**< empty buffer, for area clears */ | 189 | unsigned char * zero_buf; /**< empty buffer, for area clears */ |
188 | 190 | ||
191 | + struct timeval t_start; | ||
192 | + void * tick_id; | ||
193 | + struct timeval t_want; | ||
194 | + | ||
189 | // Telnet.c | 195 | // Telnet.c |
190 | unsigned char * ibuf; | 196 | unsigned char * ibuf; |
191 | int ibuf_size; /**< size of ibuf */ | 197 | int ibuf_size; /**< size of ibuf */ |
src/lib3270/ctlr.c
@@ -1401,7 +1401,7 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | @@ -1401,7 +1401,7 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | ||
1401 | case ORDER_SFE: /* start field extended */ | 1401 | case ORDER_SFE: /* start field extended */ |
1402 | END_TEXT("StartFieldExtended"); | 1402 | END_TEXT("StartFieldExtended"); |
1403 | if (previous != SBA) | 1403 | if (previous != SBA) |
1404 | - trace_ds(hSession,"%s",rcba(&h3270,h3270.buffer_addr)); | 1404 | + trace_ds(hSession,"%s",rcba(hSession,h3270.buffer_addr)); |
1405 | previous = ORDER; | 1405 | previous = ORDER; |
1406 | cp++; /* skip order */ | 1406 | cp++; /* skip order */ |
1407 | na = *cp; | 1407 | na = *cp; |
@@ -1526,11 +1526,11 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | @@ -1526,11 +1526,11 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | ||
1526 | if (h3270.default_cs == CS_DBCS || d != DBCS_NONE) { | 1526 | if (h3270.default_cs == CS_DBCS || d != DBCS_NONE) { |
1527 | ABORT_WRITE("invalid format control order in DBCS field"); | 1527 | ABORT_WRITE("invalid format control order in DBCS field"); |
1528 | } | 1528 | } |
1529 | - ctlr_add(&h3270,hSession->buffer_addr, *cp, hSession->default_cs); | ||
1530 | - ctlr_add_fg(&h3270,hSession->buffer_addr, hSession->default_fg); | ||
1531 | - ctlr_add_bg(&h3270,hSession->buffer_addr, hSession->default_bg); | ||
1532 | - ctlr_add_gr(&h3270,hSession->buffer_addr, hSession->default_gr); | ||
1533 | - ctlr_add_ic(&h3270,hSession->buffer_addr, hSession->default_ic); | 1529 | + ctlr_add(hSession,hSession->buffer_addr, *cp, hSession->default_cs); |
1530 | + ctlr_add_fg(hSession,hSession->buffer_addr, hSession->default_fg); | ||
1531 | + ctlr_add_bg(hSession,hSession->buffer_addr, hSession->default_bg); | ||
1532 | + ctlr_add_gr(hSession,hSession->buffer_addr, hSession->default_gr); | ||
1533 | + ctlr_add_ic(hSession,hSession->buffer_addr, hSession->default_ic); | ||
1534 | INC_BA(hSession->buffer_addr); | 1534 | INC_BA(hSession->buffer_addr); |
1535 | last_cmd = True; | 1535 | last_cmd = True; |
1536 | last_zpt = False; | 1536 | last_zpt = False; |
@@ -1550,11 +1550,11 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | @@ -1550,11 +1550,11 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | ||
1550 | } | 1550 | } |
1551 | /* All is well. */ | 1551 | /* All is well. */ |
1552 | previous = ORDER; | 1552 | previous = ORDER; |
1553 | - ctlr_add(&h3270,h3270.buffer_addr, *cp, h3270.default_cs); | ||
1554 | - ctlr_add_fg(&h3270,h3270.buffer_addr, h3270.default_fg); | ||
1555 | - ctlr_add_bg(&h3270,h3270.buffer_addr, h3270.default_bg); | ||
1556 | - ctlr_add_gr(&h3270,h3270.buffer_addr, h3270.default_gr); | ||
1557 | - ctlr_add_ic(&h3270,h3270.buffer_addr, h3270.default_ic); | 1553 | + ctlr_add(hSession,h3270.buffer_addr, *cp, h3270.default_cs); |
1554 | + ctlr_add_fg(hSession,h3270.buffer_addr, h3270.default_fg); | ||
1555 | + ctlr_add_bg(hSession,h3270.buffer_addr, h3270.default_bg); | ||
1556 | + ctlr_add_gr(hSession,h3270.buffer_addr, h3270.default_gr); | ||
1557 | + ctlr_add_ic(hSession,h3270.buffer_addr, h3270.default_ic); | ||
1558 | INC_BA(hSession->buffer_addr); | 1558 | INC_BA(hSession->buffer_addr); |
1559 | last_cmd = True; | 1559 | last_cmd = True; |
1560 | last_zpt = False; | 1560 | last_zpt = False; |
@@ -1569,7 +1569,7 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | @@ -1569,7 +1569,7 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | ||
1569 | if (d != DBCS_NONE && why == DBCS_FIELD) { | 1569 | if (d != DBCS_NONE && why == DBCS_FIELD) { |
1570 | ABORT_WRITE("SI in DBCS field"); | 1570 | ABORT_WRITE("SI in DBCS field"); |
1571 | } | 1571 | } |
1572 | - fa_addr = find_field_attribute(&h3270,h3270.buffer_addr); | 1572 | + fa_addr = find_field_attribute(hSession,h3270.buffer_addr); |
1573 | baddr = h3270.buffer_addr; | 1573 | baddr = h3270.buffer_addr; |
1574 | DEC_BA(baddr); | 1574 | DEC_BA(baddr); |
1575 | while (!aborted && | 1575 | while (!aborted && |
@@ -1589,11 +1589,11 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | @@ -1589,11 +1589,11 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | ||
1589 | } | 1589 | } |
1590 | /* All is well. */ | 1590 | /* All is well. */ |
1591 | previous = ORDER; | 1591 | previous = ORDER; |
1592 | - ctlr_add(&h3270,h3270.buffer_addr, *cp, h3270.default_cs); | ||
1593 | - ctlr_add_fg(&h3270,h3270.buffer_addr, h3270.default_fg); | ||
1594 | - ctlr_add_bg(&h3270,h3270.buffer_addr, h3270.default_bg); | ||
1595 | - ctlr_add_gr(&h3270,h3270.buffer_addr, h3270.default_gr); | ||
1596 | - ctlr_add_ic(&h3270,h3270.buffer_addr, h3270.default_ic); | 1592 | + ctlr_add(hSession,h3270.buffer_addr, *cp, h3270.default_cs); |
1593 | + ctlr_add_fg(hSession,h3270.buffer_addr, h3270.default_fg); | ||
1594 | + ctlr_add_bg(hSession,h3270.buffer_addr, h3270.default_bg); | ||
1595 | + ctlr_add_gr(hSession,h3270.buffer_addr, h3270.default_gr); | ||
1596 | + ctlr_add_ic(hSession,h3270.buffer_addr, h3270.default_ic); | ||
1597 | INC_BA(hSession->buffer_addr); | 1597 | INC_BA(hSession->buffer_addr); |
1598 | last_cmd = True; | 1598 | last_cmd = True; |
1599 | last_zpt = False; | 1599 | last_zpt = False; |
@@ -1641,18 +1641,19 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | @@ -1641,18 +1641,19 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | ||
1641 | END_TEXT("NULL"); | 1641 | END_TEXT("NULL"); |
1642 | add_c1 = *cp; | 1642 | add_c1 = *cp; |
1643 | } | 1643 | } |
1644 | - ctlr_add(&h3270,h3270.buffer_addr, add_c1, h3270.default_cs); | ||
1645 | - ctlr_add_fg(&h3270,h3270.buffer_addr, h3270.default_fg); | ||
1646 | - ctlr_add_bg(&h3270,h3270.buffer_addr, h3270.default_bg); | ||
1647 | - ctlr_add_gr(&h3270,h3270.buffer_addr, h3270.default_gr); | ||
1648 | - ctlr_add_ic(&h3270,h3270.buffer_addr, h3270.default_ic); | 1644 | + ctlr_add(hSession,h3270.buffer_addr, add_c1, h3270.default_cs); |
1645 | + ctlr_add_fg(hSession,h3270.buffer_addr, h3270.default_fg); | ||
1646 | + ctlr_add_bg(hSession,h3270.buffer_addr, h3270.default_bg); | ||
1647 | + ctlr_add_gr(hSession,h3270.buffer_addr, h3270.default_gr); | ||
1648 | + ctlr_add_ic(hSession,h3270.buffer_addr, h3270.default_ic); | ||
1649 | INC_BA(hSession->buffer_addr); | 1649 | INC_BA(hSession->buffer_addr); |
1650 | - if (add_dbcs) { | ||
1651 | - ctlr_add(&h3270,h3270.buffer_addr, add_c2, h3270.default_cs); | ||
1652 | - ctlr_add_fg(&h3270,h3270.buffer_addr, h3270.default_fg); | ||
1653 | - ctlr_add_bg(&h3270,h3270.buffer_addr, h3270.default_bg); | ||
1654 | - ctlr_add_gr(&h3270,h3270.buffer_addr, h3270.default_gr); | ||
1655 | - ctlr_add_ic(&h3270,h3270.buffer_addr, h3270.default_ic); | 1650 | + if (add_dbcs) |
1651 | + { | ||
1652 | + ctlr_add(hSession,h3270.buffer_addr, add_c2, h3270.default_cs); | ||
1653 | + ctlr_add_fg(hSession,h3270.buffer_addr, h3270.default_fg); | ||
1654 | + ctlr_add_bg(hSession,h3270.buffer_addr, h3270.default_bg); | ||
1655 | + ctlr_add_gr(hSession,h3270.buffer_addr, h3270.default_gr); | ||
1656 | + ctlr_add_ic(hSession,h3270.buffer_addr, h3270.default_ic); | ||
1656 | INC_BA(hSession->buffer_addr); | 1657 | INC_BA(hSession->buffer_addr); |
1657 | } | 1658 | } |
1658 | last_cmd = False; | 1659 | last_cmd = False; |
@@ -1690,7 +1691,7 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | @@ -1690,7 +1691,7 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | ||
1690 | } | 1691 | } |
1691 | add_dbcs = True; | 1692 | add_dbcs = True; |
1692 | dbcs_to_mb(add_c1, add_c2, mb); | 1693 | dbcs_to_mb(add_c1, add_c2, mb); |
1693 | - trace_ds_nb(&h3270,"%s", mb); | 1694 | + trace_ds_nb(hSession,"%s", mb); |
1694 | } else { | 1695 | } else { |
1695 | #endif /*]*/ | 1696 | #endif /*]*/ |
1696 | add_c1 = *cp; | 1697 | add_c1 = *cp; |
@@ -1698,19 +1699,19 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | @@ -1698,19 +1699,19 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | ||
1698 | #if defined(X3270_DBCS) /*[*/ | 1699 | #if defined(X3270_DBCS) /*[*/ |
1699 | } | 1700 | } |
1700 | #endif /*]*/ | 1701 | #endif /*]*/ |
1701 | - ctlr_add(&h3270,h3270.buffer_addr, add_c1, h3270.default_cs); | ||
1702 | - ctlr_add_fg(&h3270,h3270.buffer_addr, h3270.default_fg); | ||
1703 | - ctlr_add_bg(&h3270,h3270.buffer_addr, h3270.default_bg); | ||
1704 | - ctlr_add_gr(&h3270,h3270.buffer_addr, h3270.default_gr); | ||
1705 | - ctlr_add_ic(&h3270,h3270.buffer_addr, h3270.default_ic); | 1702 | + ctlr_add(hSession,h3270.buffer_addr, add_c1, h3270.default_cs); |
1703 | + ctlr_add_fg(hSession,h3270.buffer_addr, h3270.default_fg); | ||
1704 | + ctlr_add_bg(hSession,h3270.buffer_addr, h3270.default_bg); | ||
1705 | + ctlr_add_gr(hSession,h3270.buffer_addr, h3270.default_gr); | ||
1706 | + ctlr_add_ic(hSession,h3270.buffer_addr, h3270.default_ic); | ||
1706 | INC_BA(hSession->buffer_addr); | 1707 | INC_BA(hSession->buffer_addr); |
1707 | #if defined(X3270_DBCS) /*[*/ | 1708 | #if defined(X3270_DBCS) /*[*/ |
1708 | if (add_dbcs) { | 1709 | if (add_dbcs) { |
1709 | ctlr_add(h3270.buffer_addr, add_c2, h3270.default_cs); | 1710 | ctlr_add(h3270.buffer_addr, add_c2, h3270.default_cs); |
1710 | - ctlr_add_fg(&h3270,h3270.buffer_addr, h3270.default_fg); | 1711 | + ctlr_add_fg(hSession,h3270.buffer_addr, h3270.default_fg); |
1711 | ctlr_add_bg(h3270.buffer_addr, h3270.default_bg); | 1712 | ctlr_add_bg(h3270.buffer_addr, h3270.default_bg); |
1712 | ctlr_add_gr(h3270.buffer_addr, h3270.default_gr); | 1713 | ctlr_add_gr(h3270.buffer_addr, h3270.default_gr); |
1713 | - ctlr_add_ic(&h3270,h3270.buffer_addr, h3270.default_ic); | 1714 | + ctlr_add_ic(hSession,h3270.buffer_addr, h3270.default_ic); |
1714 | INC_BA(hSession->buffer_addr); | 1715 | INC_BA(hSession->buffer_addr); |
1715 | } | 1716 | } |
1716 | #endif /*]*/ | 1717 | #endif /*]*/ |
@@ -1724,10 +1725,10 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | @@ -1724,10 +1725,10 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er | ||
1724 | trace_ds(hSession,"\n"); | 1725 | trace_ds(hSession,"\n"); |
1725 | if (wcc_keyboard_restore) { | 1726 | if (wcc_keyboard_restore) { |
1726 | h3270.aid = AID_NO; | 1727 | h3270.aid = AID_NO; |
1727 | - do_reset(&h3270,False); | 1728 | + do_reset(hSession,False); |
1728 | } else if (h3270.kybdlock & KL_OIA_TWAIT) { | 1729 | } else if (h3270.kybdlock & KL_OIA_TWAIT) { |
1729 | - lib3270_kybdlock_clear(&h3270,KL_OIA_TWAIT); | ||
1730 | - status_changed(&h3270,LIB3270_STATUS_SYSWAIT); | 1730 | + lib3270_kybdlock_clear(hSession,KL_OIA_TWAIT); |
1731 | + status_changed(hSession,LIB3270_STATUS_SYSWAIT); | ||
1731 | } | 1732 | } |
1732 | if (wcc_sound_alarm) | 1733 | if (wcc_sound_alarm) |
1733 | lib3270_ring_bell(hSession); | 1734 | lib3270_ring_bell(hSession); |
@@ -2518,24 +2519,6 @@ void mdt_clear(H3270 *hSession, int baddr) | @@ -2518,24 +2519,6 @@ void mdt_clear(H3270 *hSession, int baddr) | ||
2518 | } | 2519 | } |
2519 | } | 2520 | } |
2520 | 2521 | ||
2521 | - | ||
2522 | -/* | ||
2523 | - * Support for screen-size swapping for scrolling | ||
2524 | - */ /* | ||
2525 | -void ctlr_shrink(void) | ||
2526 | -{ | ||
2527 | - int baddr; | ||
2528 | - | ||
2529 | - for (baddr = 0; baddr < h3270.rows*h3270.cols; baddr++) | ||
2530 | - { | ||
2531 | - if (!h3270.ea_buf[baddr].fa) | ||
2532 | - h3270.ea_buf[baddr].cc = h3270.vcontrol ? EBC_space : EBC_null; | ||
2533 | - } | ||
2534 | - ALL_CHANGED(&h3270); | ||
2535 | - h3270.display(&h3270); | ||
2536 | -} | ||
2537 | -*/ | ||
2538 | - | ||
2539 | #if defined(X3270_DBCS) /*[*/ | 2522 | #if defined(X3270_DBCS) /*[*/ |
2540 | /* | 2523 | /* |
2541 | * DBCS state query. | 2524 | * DBCS state query. |
@@ -2564,11 +2547,11 @@ ctlr_dbcs_state(int baddr) | @@ -2564,11 +2547,11 @@ ctlr_dbcs_state(int baddr) | ||
2564 | * to an accuracy of 0.1 seconds. If we don't repaint the screen before we see | 2547 | * to an accuracy of 0.1 seconds. If we don't repaint the screen before we see |
2565 | * the unlock, the time should be fairly accurate. | 2548 | * the unlock, the time should be fairly accurate. |
2566 | */ | 2549 | */ |
2567 | -static struct timeval t_start; | ||
2568 | -static Boolean ticking = False; | ||
2569 | -static Boolean mticking = False; | ||
2570 | -static void * tick_id; | ||
2571 | -static struct timeval t_want; | 2550 | +//static struct timeval t_start; |
2551 | +// static Boolean ticking = False; | ||
2552 | +//static Boolean mticking = False; | ||
2553 | +//static void * tick_id; | ||
2554 | +//static struct timeval t_want; | ||
2572 | 2555 | ||
2573 | /* Return the difference in milliseconds between two timevals. */ | 2556 | /* Return the difference in milliseconds between two timevals. */ |
2574 | static long | 2557 | static long |
@@ -2578,7 +2561,7 @@ delta_msec(struct timeval *t1, struct timeval *t0) | @@ -2578,7 +2561,7 @@ delta_msec(struct timeval *t1, struct timeval *t0) | ||
2578 | (t1->tv_usec - t0->tv_usec + 500) / 1000; | 2561 | (t1->tv_usec - t0->tv_usec + 500) / 1000; |
2579 | } | 2562 | } |
2580 | 2563 | ||
2581 | -static void keep_ticking(H3270 *session) | 2564 | +static void keep_ticking(H3270 *hSession) |
2582 | { | 2565 | { |
2583 | struct timeval t1; | 2566 | struct timeval t1; |
2584 | long msec; | 2567 | long msec; |
@@ -2586,64 +2569,64 @@ static void keep_ticking(H3270 *session) | @@ -2586,64 +2569,64 @@ static void keep_ticking(H3270 *session) | ||
2586 | do | 2569 | do |
2587 | { | 2570 | { |
2588 | (void) gettimeofday(&t1, (struct timezone *) 0); | 2571 | (void) gettimeofday(&t1, (struct timezone *) 0); |
2589 | - t_want.tv_sec++; | ||
2590 | - msec = delta_msec(&t_want, &t1); | 2572 | + hSession->t_want.tv_sec++; |
2573 | + msec = delta_msec(&hSession->t_want, &t1); | ||
2591 | } while (msec <= 0); | 2574 | } while (msec <= 0); |
2592 | 2575 | ||
2593 | - tick_id = AddTimeOut(msec, session, keep_ticking); | ||
2594 | - status_timing(session,&t_start, &t1); | 2576 | + hSession->tick_id = AddTimeOut(msec, hSession, keep_ticking); |
2577 | + status_timing(hSession,&hSession->t_start, &t1); | ||
2595 | } | 2578 | } |
2596 | 2579 | ||
2597 | -void ticking_start(H3270 *session, Boolean anyway) | 2580 | +void ticking_start(H3270 *hSession, Boolean anyway) |
2598 | { | 2581 | { |
2599 | - CHECK_SESSION_HANDLE(session); | 2582 | + CHECK_SESSION_HANDLE(hSession); |
2600 | 2583 | ||
2601 | - if(session->set_timer) | 2584 | + if(hSession->set_timer) |
2602 | { | 2585 | { |
2603 | - if(lib3270_get_toggle(&h3270,LIB3270_TOGGLE_SHOW_TIMING) || anyway) | ||
2604 | - session->set_timer(session,1); | 2586 | + if(lib3270_get_toggle(hSession,LIB3270_TOGGLE_SHOW_TIMING) || anyway) |
2587 | + hSession->set_timer(hSession,1); | ||
2605 | } | 2588 | } |
2606 | else | 2589 | else |
2607 | { | 2590 | { |
2608 | - (void) gettimeofday(&t_start, (struct timezone *) 0); | 2591 | + (void) gettimeofday(&hSession->t_start, (struct timezone *) 0); |
2609 | 2592 | ||
2610 | - mticking = True; | 2593 | + hSession->mticking = 1; |
2611 | 2594 | ||
2612 | - if (!lib3270_get_toggle(&h3270,LIB3270_TOGGLE_SHOW_TIMING) && !anyway) | 2595 | + if (!lib3270_get_toggle(hSession,LIB3270_TOGGLE_SHOW_TIMING) && !anyway) |
2613 | return; | 2596 | return; |
2614 | 2597 | ||
2615 | - status_untiming(session); | ||
2616 | - if (ticking) | ||
2617 | - RemoveTimeOut(tick_id); | ||
2618 | - ticking = True; | ||
2619 | - tick_id = AddTimeOut(1000, session, keep_ticking); | ||
2620 | - t_want = t_start; | 2598 | + status_untiming(hSession); |
2599 | + if (hSession->ticking) | ||
2600 | + RemoveTimeOut(hSession->tick_id); | ||
2601 | + hSession->ticking = 1; | ||
2602 | + hSession->tick_id = AddTimeOut(1000, hSession, keep_ticking); | ||
2603 | + hSession->t_want = hSession->t_start; | ||
2621 | } | 2604 | } |
2622 | 2605 | ||
2623 | } | 2606 | } |
2624 | 2607 | ||
2625 | -static void ticking_stop(H3270 *session) | 2608 | +static void ticking_stop(H3270 *hSession) |
2626 | { | 2609 | { |
2627 | - CHECK_SESSION_HANDLE(session); | 2610 | + CHECK_SESSION_HANDLE(hSession); |
2628 | 2611 | ||
2629 | - if(session->set_timer) | 2612 | + if(hSession->set_timer) |
2630 | { | 2613 | { |
2631 | - session->set_timer(session,0); | 2614 | + hSession->set_timer(hSession,0); |
2632 | } | 2615 | } |
2633 | else | 2616 | else |
2634 | { | 2617 | { |
2635 | struct timeval t1; | 2618 | struct timeval t1; |
2636 | 2619 | ||
2637 | (void) gettimeofday(&t1, (struct timezone *) 0); | 2620 | (void) gettimeofday(&t1, (struct timezone *) 0); |
2638 | - if (mticking) | ||
2639 | - mticking = False; | 2621 | + if (hSession->mticking) |
2622 | + hSession->mticking = 0; | ||
2640 | else | 2623 | else |
2641 | return; | 2624 | return; |
2642 | 2625 | ||
2643 | - if (!ticking) | 2626 | + if (!hSession->ticking) |
2644 | return; | 2627 | return; |
2645 | - RemoveTimeOut(tick_id); | ||
2646 | - ticking = False; | ||
2647 | - status_timing(session,&t_start, &t1); | 2628 | + RemoveTimeOut(hSession->tick_id); |
2629 | + hSession->ticking = 0; | ||
2630 | + status_timing(hSession,&hSession->t_start, &t1); | ||
2648 | } | 2631 | } |
2649 | } | 2632 | } |
src/lib3270/sf.c
@@ -88,9 +88,9 @@ static enum pds sf_read_part(H3270 *hSession, unsigned char buf[], unsigned bufl | @@ -88,9 +88,9 @@ static enum pds sf_read_part(H3270 *hSession, unsigned char buf[], unsigned bufl | ||
88 | static enum pds sf_erase_reset(H3270 *hSession, unsigned char buf[], int buflen); | 88 | static enum pds sf_erase_reset(H3270 *hSession, unsigned char buf[], int buflen); |
89 | static enum pds sf_set_reply_mode(H3270 *hSession, unsigned char buf[], int buflen); | 89 | static enum pds sf_set_reply_mode(H3270 *hSession, unsigned char buf[], int buflen); |
90 | static enum pds sf_create_partition(H3270 *hSession, unsigned char buf[], int buflen); | 90 | static enum pds sf_create_partition(H3270 *hSession, unsigned char buf[], int buflen); |
91 | -static enum pds sf_outbound_ds(unsigned char buf[], int buflen); | 91 | +static enum pds sf_outbound_ds(H3270 *hSession, unsigned char buf[], int buflen); |
92 | static void query_reply_start(H3270 *hSession); | 92 | static void query_reply_start(H3270 *hSession); |
93 | -static void do_query_reply(unsigned char code); | 93 | +static void do_query_reply(H3270 *hSession, unsigned char code); |
94 | static void query_reply_end(H3270 *hSession); | 94 | static void query_reply_end(H3270 *hSession); |
95 | 95 | ||
96 | typedef Boolean qr_multi_fn_t(H3270 *hSession, unsigned *subindex, Boolean *more); | 96 | typedef Boolean qr_multi_fn_t(H3270 *hSession, unsigned *subindex, Boolean *more); |
@@ -215,7 +215,7 @@ enum pds write_structured_field(H3270 *hSession, unsigned char buf[], int buflen | @@ -215,7 +215,7 @@ enum pds write_structured_field(H3270 *hSession, unsigned char buf[], int buflen | ||
215 | 215 | ||
216 | case SF_OUTBOUND_DS: | 216 | case SF_OUTBOUND_DS: |
217 | trace_ds(hSession,"OutboundDS"); | 217 | trace_ds(hSession,"OutboundDS"); |
218 | - rv_this = sf_outbound_ds(cp, (int)fieldlen); | 218 | + rv_this = sf_outbound_ds(hSession, cp, (int)fieldlen); |
219 | break; | 219 | break; |
220 | 220 | ||
221 | #if defined(X3270_FT) | 221 | #if defined(X3270_FT) |
@@ -285,7 +285,7 @@ static enum pds sf_read_part(H3270 *hSession, unsigned char buf[], unsigned bufl | @@ -285,7 +285,7 @@ static enum pds sf_read_part(H3270 *hSession, unsigned char buf[], unsigned bufl | ||
285 | #if defined(X3270_DBCS) /*[*/ | 285 | #if defined(X3270_DBCS) /*[*/ |
286 | if (dbcs || replies[i].code != QR_DBCS_ASIA) | 286 | if (dbcs || replies[i].code != QR_DBCS_ASIA) |
287 | #endif /*]*/ | 287 | #endif /*]*/ |
288 | - do_query_reply(replies[i].code); | 288 | + do_query_reply(hSession, replies[i].code); |
289 | } | 289 | } |
290 | query_reply_end(hSession); | 290 | query_reply_end(hSession); |
291 | break; | 291 | break; |
@@ -305,7 +305,7 @@ static enum pds sf_read_part(H3270 *hSession, unsigned char buf[], unsigned bufl | @@ -305,7 +305,7 @@ static enum pds sf_read_part(H3270 *hSession, unsigned char buf[], unsigned bufl | ||
305 | trace_ds(hSession,"List("); | 305 | trace_ds(hSession,"List("); |
306 | if (buflen < 7) { | 306 | if (buflen < 7) { |
307 | trace_ds(hSession,")\n"); | 307 | trace_ds(hSession,")\n"); |
308 | - do_query_reply(QR_NULL); | 308 | + do_query_reply(hSession, QR_NULL); |
309 | } else { | 309 | } else { |
310 | for (i = 6; i < buflen; i++) { | 310 | for (i = 6; i < buflen; i++) { |
311 | trace_ds(hSession,"%s%s", comma,see_qcode(buf[i])); | 311 | trace_ds(hSession,"%s%s", comma,see_qcode(buf[i])); |
@@ -321,12 +321,12 @@ static enum pds sf_read_part(H3270 *hSession, unsigned char buf[], unsigned bufl | @@ -321,12 +321,12 @@ static enum pds sf_read_part(H3270 *hSession, unsigned char buf[], unsigned bufl | ||
321 | replies[i].code != QR_DBCS_ASIA) | 321 | replies[i].code != QR_DBCS_ASIA) |
322 | #endif /*]*/ | 322 | #endif /*]*/ |
323 | ) { | 323 | ) { |
324 | - do_query_reply(replies[i].code); | 324 | + do_query_reply(hSession, replies[i].code); |
325 | any++; | 325 | any++; |
326 | } | 326 | } |
327 | } | 327 | } |
328 | if (!any) { | 328 | if (!any) { |
329 | - do_query_reply(QR_NULL); | 329 | + do_query_reply(hSession, QR_NULL); |
330 | } | 330 | } |
331 | } | 331 | } |
332 | break; | 332 | break; |
@@ -341,7 +341,7 @@ static enum pds sf_read_part(H3270 *hSession, unsigned char buf[], unsigned bufl | @@ -341,7 +341,7 @@ static enum pds sf_read_part(H3270 *hSession, unsigned char buf[], unsigned bufl | ||
341 | #if defined(X3270_DBCS) /*[*/ | 341 | #if defined(X3270_DBCS) /*[*/ |
342 | if (dbcs || replies[i].code != QR_DBCS_ASIA) | 342 | if (dbcs || replies[i].code != QR_DBCS_ASIA) |
343 | #endif /*]*/ | 343 | #endif /*]*/ |
344 | - do_query_reply(replies[i].code); | 344 | + do_query_reply(hSession, replies[i].code); |
345 | break; | 345 | break; |
346 | case SF_RPQ_ALL: | 346 | case SF_RPQ_ALL: |
347 | trace_ds(hSession,"All\n"); | 347 | trace_ds(hSession,"All\n"); |
@@ -349,7 +349,7 @@ static enum pds sf_read_part(H3270 *hSession, unsigned char buf[], unsigned bufl | @@ -349,7 +349,7 @@ static enum pds sf_read_part(H3270 *hSession, unsigned char buf[], unsigned bufl | ||
349 | #if defined(X3270_DBCS) /*[*/ | 349 | #if defined(X3270_DBCS) /*[*/ |
350 | if (dbcs || replies[i].code != QR_DBCS_ASIA) | 350 | if (dbcs || replies[i].code != QR_DBCS_ASIA) |
351 | #endif /*]*/ | 351 | #endif /*]*/ |
352 | - do_query_reply(replies[i].code); | 352 | + do_query_reply(hSession, replies[i].code); |
353 | break; | 353 | break; |
354 | default: | 354 | default: |
355 | trace_ds(hSession,"unknown request type 0x%02x\n", buf[5]); | 355 | trace_ds(hSession,"unknown request type 0x%02x\n", buf[5]); |
@@ -627,55 +627,64 @@ static enum pds sf_create_partition(H3270 *hSession, unsigned char buf[], int bu | @@ -627,55 +627,64 @@ static enum pds sf_create_partition(H3270 *hSession, unsigned char buf[], int bu | ||
627 | return PDS_OKAY_NO_OUTPUT; | 627 | return PDS_OKAY_NO_OUTPUT; |
628 | } | 628 | } |
629 | 629 | ||
630 | -static enum pds | ||
631 | -sf_outbound_ds(unsigned char buf[], int buflen) | 630 | +static enum pds sf_outbound_ds(H3270 *hSession, unsigned char buf[], int buflen) |
632 | { | 631 | { |
633 | enum pds rv; | 632 | enum pds rv; |
634 | 633 | ||
635 | - if (buflen < 5) { | ||
636 | - trace_ds(&h3270," error: field length %d too short\n", buflen); | 634 | + if (buflen < 5) |
635 | + { | ||
636 | + trace_ds(hSession," error: field length %d too short\n", buflen); | ||
637 | return PDS_BAD_CMD; | 637 | return PDS_BAD_CMD; |
638 | } | 638 | } |
639 | 639 | ||
640 | - trace_ds(&h3270,"(0x%02x)", buf[3]); | ||
641 | - if (buf[3] != 0x00) { | ||
642 | - trace_ds(&h3270," error: illegal partition 0x%0x\n", buf[3]); | 640 | + trace_ds(hSession,"(0x%02x)", buf[3]); |
641 | + if (buf[3] != 0x00) | ||
642 | + { | ||
643 | + trace_ds(hSession," error: illegal partition 0x%0x\n", buf[3]); | ||
643 | return PDS_BAD_CMD; | 644 | return PDS_BAD_CMD; |
644 | } | 645 | } |
645 | 646 | ||
646 | - switch (buf[4]) { | ||
647 | - case SNA_CMD_W: | ||
648 | - trace_ds(&h3270," Write"); | ||
649 | - if (buflen > 5) { | ||
650 | - if ((rv = ctlr_write(&h3270,&buf[4], buflen-4, False)) < 0) | 647 | + switch (buf[4]) |
648 | + { | ||
649 | + case SNA_CMD_W: | ||
650 | + trace_ds(hSession," Write"); | ||
651 | + if (buflen > 5) | ||
652 | + { | ||
653 | + if ((rv = ctlr_write(hSession,&buf[4], buflen-4, False)) < 0) | ||
651 | return rv; | 654 | return rv; |
652 | } else | 655 | } else |
653 | - trace_ds(&h3270,"\n"); | 656 | + trace_ds(hSession,"\n"); |
654 | break; | 657 | break; |
655 | - case SNA_CMD_EW: | ||
656 | - trace_ds(&h3270," EraseWrite"); | ||
657 | - ctlr_erase(&h3270,h3270.screen_alt); | ||
658 | - if (buflen > 5) { | ||
659 | - if ((rv = ctlr_write(&h3270,&buf[4], buflen-4, True)) < 0) | 658 | + |
659 | + case SNA_CMD_EW: | ||
660 | + trace_ds(hSession," EraseWrite"); | ||
661 | + ctlr_erase(hSession,hSession->screen_alt); | ||
662 | + if (buflen > 5) | ||
663 | + { | ||
664 | + if ((rv = ctlr_write(hSession,&buf[4], buflen-4, True)) < 0) | ||
660 | return rv; | 665 | return rv; |
661 | } else | 666 | } else |
662 | - trace_ds(&h3270,"\n"); | 667 | + trace_ds(hSession,"\n"); |
663 | break; | 668 | break; |
664 | - case SNA_CMD_EWA: | ||
665 | - trace_ds(&h3270," EraseWriteAlternate"); | ||
666 | - ctlr_erase(&h3270,h3270.screen_alt); | ||
667 | - if (buflen > 5) { | ||
668 | - if ((rv = ctlr_write(&h3270,&buf[4], buflen-4, True)) < 0) | 669 | + |
670 | + case SNA_CMD_EWA: | ||
671 | + trace_ds(hSession," EraseWriteAlternate"); | ||
672 | + ctlr_erase(hSession,hSession->screen_alt); | ||
673 | + if (buflen > 5) | ||
674 | + { | ||
675 | + if ((rv = ctlr_write(hSession,&buf[4], buflen-4, True)) < 0) | ||
669 | return rv; | 676 | return rv; |
670 | } else | 677 | } else |
671 | - trace_ds(&h3270,"\n"); | 678 | + trace_ds(hSession,"\n"); |
672 | break; | 679 | break; |
673 | - case SNA_CMD_EAU: | ||
674 | - trace_ds(&h3270," EraseAllUnprotected\n"); | ||
675 | - ctlr_erase_all_unprotected(&h3270); | 680 | + |
681 | + case SNA_CMD_EAU: | ||
682 | + trace_ds(hSession," EraseAllUnprotected\n"); | ||
683 | + ctlr_erase_all_unprotected(hSession); | ||
676 | break; | 684 | break; |
677 | - default: | ||
678 | - trace_ds(&h3270," unknown type 0x%02x\n", buf[4]); | 685 | + |
686 | + default: | ||
687 | + trace_ds(hSession," unknown type 0x%02x\n", buf[4]); | ||
679 | return PDS_BAD_CMD; | 688 | return PDS_BAD_CMD; |
680 | } | 689 | } |
681 | return PDS_OKAY_NO_OUTPUT; | 690 | return PDS_OKAY_NO_OUTPUT; |
@@ -689,8 +698,7 @@ static void query_reply_start(H3270 *hSession) | @@ -689,8 +698,7 @@ static void query_reply_start(H3270 *hSession) | ||
689 | qr_in_progress = True; | 698 | qr_in_progress = True; |
690 | } | 699 | } |
691 | 700 | ||
692 | -static void | ||
693 | -do_query_reply(unsigned char code) | 701 | +static void do_query_reply(H3270 *hSession, unsigned char code) |
694 | { | 702 | { |
695 | int i; | 703 | int i; |
696 | unsigned subindex = 0; | 704 | unsigned subindex = 0; |
@@ -705,37 +713,40 @@ do_query_reply(unsigned char code) | @@ -705,37 +713,40 @@ do_query_reply(unsigned char code) | ||
705 | (replies[i].single_fn == NULL && replies[i].multi_fn == NULL)) | 713 | (replies[i].single_fn == NULL && replies[i].multi_fn == NULL)) |
706 | return; | 714 | return; |
707 | 715 | ||
708 | - if (qr_in_progress) { | ||
709 | - trace_ds(&h3270,"> StructuredField\n"); | 716 | + if (qr_in_progress) |
717 | + { | ||
718 | + trace_ds(hSession,"> StructuredField\n"); | ||
710 | qr_in_progress = False; | 719 | qr_in_progress = False; |
711 | } | 720 | } |
712 | 721 | ||
713 | - do { | ||
714 | - int obptr0 = h3270.obptr - h3270.obuf; | 722 | + do |
723 | + { | ||
724 | + int obptr0 = hSession->obptr - hSession->obuf; | ||
715 | Boolean full = True; | 725 | Boolean full = True; |
716 | 726 | ||
717 | - space3270out(&h3270,4); | ||
718 | - h3270.obptr += 2; /* skip length for now */ | ||
719 | - *h3270.obptr++ = SFID_QREPLY; | ||
720 | - *h3270.obptr++ = code; | 727 | + space3270out(hSession,4); |
728 | + hSession->obptr += 2; /* skip length for now */ | ||
729 | + *hSession->obptr++ = SFID_QREPLY; | ||
730 | + *hSession->obptr++ = code; | ||
721 | 731 | ||
722 | more = False; | 732 | more = False; |
723 | if (replies[i].single_fn) | 733 | if (replies[i].single_fn) |
724 | - replies[i].single_fn(&h3270); | 734 | + replies[i].single_fn(hSession); |
725 | else | 735 | else |
726 | - full = replies[i].multi_fn(&h3270,&subindex, &more); | 736 | + full = replies[i].multi_fn(hSession,&subindex, &more); |
727 | 737 | ||
728 | - if (full) { | 738 | + if (full) |
739 | + { | ||
729 | int len; | 740 | int len; |
730 | unsigned char *obptr_len; | 741 | unsigned char *obptr_len; |
731 | 742 | ||
732 | /* Fill in the length. */ | 743 | /* Fill in the length. */ |
733 | - obptr_len = h3270.obuf + obptr0; | ||
734 | - len = (h3270.obptr - h3270.obuf) - obptr0; | 744 | + obptr_len = hSession->obuf + obptr0; |
745 | + len = (hSession->obptr - hSession->obuf) - obptr0; | ||
735 | SET16(obptr_len, len); | 746 | SET16(obptr_len, len); |
736 | } else { | 747 | } else { |
737 | /* Back over the header. */ | 748 | /* Back over the header. */ |
738 | - h3270.obptr -= 4; | 749 | + hSession->obptr -= 4; |
739 | } | 750 | } |
740 | } while (more); | 751 | } while (more); |
741 | } | 752 | } |
@@ -828,12 +839,12 @@ static void do_qr_color(H3270 *hSession) | @@ -828,12 +839,12 @@ static void do_qr_color(H3270 *hSession) | ||
828 | /* | 839 | /* |
829 | #if !defined(X3270_DISPLAY) | 840 | #if !defined(X3270_DISPLAY) |
830 | // Add background color. | 841 | // Add background color. |
831 | - if (h3270.m3279) { | 842 | + if (hSession->m3279) { |
832 | space3270out(4); | 843 | space3270out(4); |
833 | - *obptr++ = 4; // length | ||
834 | - *obptr++ = 0x02; // background color | ||
835 | - *obptr++ = 0x00; // attribute | ||
836 | - *obptr++ = 0xf0; // default color | 844 | + *hSession->obptr++ = 4; // length |
845 | + *hSession->obptr++ = 0x02; // background color | ||
846 | + *hSession->obptr++ = 0x00; // attribute | ||
847 | + *hSession->obptr++ = 0xf0; // default color | ||
837 | } | 848 | } |
838 | #endif | 849 | #endif |
839 | */ | 850 | */ |
@@ -892,82 +903,85 @@ static void do_qr_alpha_part(H3270 *hSession) | @@ -892,82 +903,85 @@ static void do_qr_alpha_part(H3270 *hSession) | ||
892 | 903 | ||
893 | static void do_qr_charsets(H3270 *hSession) | 904 | static void do_qr_charsets(H3270 *hSession) |
894 | { | 905 | { |
895 | - trace_ds(&h3270,"> QueryReply(CharacterSets)\n"); | ||
896 | - space3270out(&h3270,64); | 906 | + trace_ds(hSession,"> QueryReply(CharacterSets)\n"); |
907 | + space3270out(hSession,64); | ||
897 | #if defined(X3270_DBCS) /*[*/ | 908 | #if defined(X3270_DBCS) /*[*/ |
898 | if (dbcs) | 909 | if (dbcs) |
899 | - *h3270.obptr++ = 0x8e; /* flags: GE, CGCSGID, DBCS */ | 910 | + *hSession->obptr++ = 0x8e; /* flags: GE, CGCSGID, DBCS */ |
900 | else | 911 | else |
901 | #endif /*]*/ | 912 | #endif /*]*/ |
902 | - *h3270.obptr++ = 0x82; /* flags: GE, CGCSGID present */ | ||
903 | - | ||
904 | - *h3270.obptr++ = 0x00; /* more flags */ | ||
905 | - *h3270.obptr++ = *char_width; /* SDW */ | ||
906 | - *h3270.obptr++ = *char_height; /* SDW */ | ||
907 | - *h3270.obptr++ = 0x00; /* no load PS */ | ||
908 | - *h3270.obptr++ = 0x00; | ||
909 | - *h3270.obptr++ = 0x00; | ||
910 | - *h3270.obptr++ = 0x00; | 913 | + *hSession->obptr++ = 0x82; /* flags: GE, CGCSGID present */ |
914 | + | ||
915 | + *hSession->obptr++ = 0x00; /* more flags */ | ||
916 | + *hSession->obptr++ = *char_width; /* SDW */ | ||
917 | + *hSession->obptr++ = *char_height; /* SDW */ | ||
918 | + *hSession->obptr++ = 0x00; /* no load PS */ | ||
919 | + *hSession->obptr++ = 0x00; | ||
920 | + *hSession->obptr++ = 0x00; | ||
921 | + *hSession->obptr++ = 0x00; | ||
911 | #if defined(X3270_DBCS) /*[*/ | 922 | #if defined(X3270_DBCS) /*[*/ |
912 | if (dbcs) | 923 | if (dbcs) |
913 | - *h3270.obptr++ = 0x0b; /* DL (11 bytes) */ | 924 | + *hSession->obptr++ = 0x0b; /* DL (11 bytes) */ |
914 | else | 925 | else |
915 | #endif /*]*/ | 926 | #endif /*]*/ |
916 | - *h3270.obptr++ = 0x07; /* DL (7 bytes) */ | 927 | + *hSession->obptr++ = 0x07; /* DL (7 bytes) */ |
917 | 928 | ||
918 | - *h3270.obptr++ = 0x00; /* SET 0: */ | 929 | + *hSession->obptr++ = 0x00; /* SET 0: */ |
919 | #if defined(X3270_DBCS) /*[*/ | 930 | #if defined(X3270_DBCS) /*[*/ |
920 | if (dbcs) | 931 | if (dbcs) |
921 | - *h3270.obptr++ = 0x00; /* FLAGS: non-load, single- | 932 | + *hSession->obptr++ = 0x00; /* FLAGS: non-load, single- |
922 | plane, single-bute */ | 933 | plane, single-bute */ |
923 | else | 934 | else |
924 | #endif /*]*/ | 935 | #endif /*]*/ |
925 | - *h3270.obptr++ = 0x10; /* FLAGS: non-loadable, | 936 | + *hSession->obptr++ = 0x10; /* FLAGS: non-loadable, |
926 | single-plane, single-byte, | 937 | single-plane, single-byte, |
927 | no compare */ | 938 | no compare */ |
928 | - *h3270.obptr++ = 0x00; /* LCID 0 */ | 939 | + *hSession->obptr++ = 0x00; /* LCID 0 */ |
929 | #if defined(X3270_DBCS) /*[*/ | 940 | #if defined(X3270_DBCS) /*[*/ |
930 | if (dbcs) { | 941 | if (dbcs) { |
931 | - *obptr++ = 0x00; /* SW 0 */ | ||
932 | - *obptr++ = 0x00; /* SH 0 */ | ||
933 | - *obptr++ = 0x00; /* SUBSN */ | ||
934 | - *obptr++ = 0x00; /* SUBSN */ | 942 | + *hSession->obptr++ = 0x00; /* SW 0 */ |
943 | + *hSession->obptr++ = 0x00; /* SH 0 */ | ||
944 | + *hSession->obptr++ = 0x00; /* SUBSN */ | ||
945 | + *hSession->obptr++ = 0x00; /* SUBSN */ | ||
935 | } | 946 | } |
936 | #endif /*]*/ | 947 | #endif /*]*/ |
937 | - SET32(h3270.obptr, cgcsgid); /* CGCSGID */ | ||
938 | - if (!*standard_font) { | 948 | + SET32(hSession->obptr, cgcsgid); /* CGCSGID */ |
949 | + if (!*standard_font) | ||
950 | + { | ||
939 | /* special 3270 font, includes APL */ | 951 | /* special 3270 font, includes APL */ |
940 | - *h3270.obptr++ = 0x01;/* SET 1: */ | ||
941 | - if (h3270.apl_mode) | ||
942 | - *h3270.obptr++ = 0x00;/* FLAGS: non-loadable, single-plane, | 952 | + *hSession->obptr++ = 0x01;/* SET 1: */ |
953 | + if (hSession->apl_mode) | ||
954 | + *hSession->obptr++ = 0x00;/* FLAGS: non-loadable, single-plane, | ||
943 | single-byte, no compare */ | 955 | single-byte, no compare */ |
944 | else | 956 | else |
945 | - *h3270.obptr++ = 0x10;/* FLAGS: non-loadable, single-plane, | 957 | + *hSession->obptr++ = 0x10;/* FLAGS: non-loadable, single-plane, |
946 | single-byte, no compare */ | 958 | single-byte, no compare */ |
947 | - *h3270.obptr++ = 0xf1;/* LCID */ | 959 | + *hSession->obptr++ = 0xf1;/* LCID */ |
948 | #if defined(X3270_DBCS) /*[*/ | 960 | #if defined(X3270_DBCS) /*[*/ |
949 | - if (dbcs) { | ||
950 | - *obptr++ = 0x00;/* SW 0 */ | ||
951 | - *obptr++ = 0x00;/* SH 0 */ | ||
952 | - *obptr++ = 0x00;/* SUBSN */ | ||
953 | - *obptr++ = 0x00;/* SUBSN */ | 961 | + if (dbcs) |
962 | + { | ||
963 | + *hSession->obptr++ = 0x00;/* SW 0 */ | ||
964 | + *hSession->obptr++ = 0x00;/* SH 0 */ | ||
965 | + *hSession->obptr++ = 0x00;/* SUBSN */ | ||
966 | + *hSession->obptr++ = 0x00;/* SUBSN */ | ||
954 | } | 967 | } |
955 | #endif /*]*/ | 968 | #endif /*]*/ |
956 | - *h3270.obptr++ = 0x03;/* CGCSGID: 3179-style APL2 */ | ||
957 | - *h3270.obptr++ = 0xc3; | ||
958 | - *h3270.obptr++ = 0x01; | ||
959 | - *h3270.obptr++ = 0x36; | 969 | + *hSession->obptr++ = 0x03;/* CGCSGID: 3179-style APL2 */ |
970 | + *hSession->obptr++ = 0xc3; | ||
971 | + *hSession->obptr++ = 0x01; | ||
972 | + *hSession->obptr++ = 0x36; | ||
960 | } | 973 | } |
961 | #if defined(X3270_DBCS) /*[*/ | 974 | #if defined(X3270_DBCS) /*[*/ |
962 | - if (dbcs) { | ||
963 | - *obptr++ = 0x80; /* SET 0x80: */ | ||
964 | - *obptr++ = 0x20; /* FLAGS: DBCS */ | ||
965 | - *obptr++ = 0xf8; /* LCID: 0xf8 */ | ||
966 | - *obptr++ = *char_width * 2; /* SW */ | ||
967 | - *obptr++ = *char_height; /* SH */ | ||
968 | - *obptr++ = 0x41; /* SUBSN */ | ||
969 | - *obptr++ = 0x7f; /* SUBSN */ | ||
970 | - SET32(obptr, cgcsgid_dbcs); /* CGCSGID */ | 975 | + if (dbcs) |
976 | + { | ||
977 | + *hSession->obptr++ = 0x80; /* SET 0x80: */ | ||
978 | + *hSession->obptr++ = 0x20; /* FLAGS: DBCS */ | ||
979 | + *hSession->obptr++ = 0xf8; /* LCID: 0xf8 */ | ||
980 | + *hSession->obptr++ = *char_width * 2; /* SW */ | ||
981 | + *hSession->obptr++ = *char_height; /* SH */ | ||
982 | + *hSession->obptr++ = 0x41; /* SUBSN */ | ||
983 | + *hSession->obptr++ = 0x7f; /* SUBSN */ | ||
984 | + SET32(hSession->obptr, cgcsgid_dbcs); /* CGCSGID */ | ||
971 | } | 985 | } |
972 | #endif /*]*/ | 986 | #endif /*]*/ |
973 | } | 987 | } |