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 | } |