Commit 4a7c0b1b1b980ea7f1f2cdf8de94b49391f11bf9
1 parent
e8e4f3f8
Exists in
master
and in
5 other branches
Ajustes para multi-sessao
Showing
5 changed files
with
50 additions
and
115 deletions
Show diff stats
src/lib3270/ctlr.c
... | ... | @@ -309,7 +309,7 @@ static void ctlr_connect(H3270 *session, int ignored unused, void *dunno) |
309 | 309 | session->ea_buf[-1].fa = FA_PRINTABLE | FA_PROTECT; |
310 | 310 | if (!IN_3270 || (IN_SSCP && (session->kybdlock & KL_OIA_TWAIT))) |
311 | 311 | { |
312 | - kybdlock_clr(KL_OIA_TWAIT, "ctlr_connect"); | |
312 | + kybdlock_clr(session,KL_OIA_TWAIT, "ctlr_connect"); | |
313 | 313 | status_reset(session); |
314 | 314 | } |
315 | 315 | |
... | ... | @@ -457,7 +457,7 @@ void ctlr_erase(H3270 *session, int alt) |
457 | 457 | { |
458 | 458 | CHECK_SESSION_HANDLE(session); |
459 | 459 | |
460 | - kybd_inhibit(False); | |
460 | + kybd_inhibit(session,False); | |
461 | 461 | ctlr_clear(session,True); |
462 | 462 | session->erase(session); |
463 | 463 | |
... | ... | @@ -1067,7 +1067,7 @@ ctlr_erase_all_unprotected(void) |
1067 | 1067 | unsigned char fa; |
1068 | 1068 | Boolean f; |
1069 | 1069 | |
1070 | - kybd_inhibit(False); | |
1070 | + kybd_inhibit(&h3270,False); | |
1071 | 1071 | |
1072 | 1072 | if (h3270.formatted) { |
1073 | 1073 | /* find first field attribute */ |
... | ... | @@ -1162,7 +1162,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase) |
1162 | 1162 | h3270.formatted = True; \ |
1163 | 1163 | } |
1164 | 1164 | |
1165 | - kybd_inhibit(False); | |
1165 | + kybd_inhibit(&h3270,False); | |
1166 | 1166 | |
1167 | 1167 | if (buflen < 2) |
1168 | 1168 | return PDS_BAD_CMD; |
... | ... | @@ -1865,7 +1865,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase) |
1865 | 1865 | h3270.aid = AID_NO; |
1866 | 1866 | do_reset(&h3270,False); |
1867 | 1867 | } else if (h3270.kybdlock & KL_OIA_TWAIT) { |
1868 | - kybdlock_clr(KL_OIA_TWAIT, "ctlr_write"); | |
1868 | + kybdlock_clr(&h3270,KL_OIA_TWAIT, "ctlr_write"); | |
1869 | 1869 | status_changed(&h3270,LIB3270_STATUS_SYSWAIT); |
1870 | 1870 | } |
1871 | 1871 | if (wcc_sound_alarm) | ... | ... |
src/lib3270/kybd.c
... | ... | @@ -370,38 +370,47 @@ kybdlock_set(unsigned int bits, const char *cause unused) |
370 | 370 | |
371 | 371 | /* Clear bits in the keyboard lock. */ |
372 | 372 | void |
373 | -kybdlock_clr(unsigned int bits, const char *cause unused) | |
373 | +kybdlock_clr(H3270 *session, unsigned int bits, const char *cause unused) | |
374 | 374 | { |
375 | 375 | unsigned int n; |
376 | 376 | |
377 | - n = h3270.kybdlock & ~bits; | |
378 | - if (n != h3270.kybdlock) { | |
377 | + n = session->kybdlock & ~bits; | |
378 | + | |
379 | + if (n != session->kybdlock) | |
380 | + { | |
379 | 381 | #if defined(KYBDLOCK_TRACE) |
380 | 382 | trace_event(" %s: kybdlock &= ~0x%04x, 0x%04x -> 0x%04x\n",cause, bits, kybdlock, n); |
381 | 383 | #endif |
382 | - if ((h3270.kybdlock ^ n) & KL_DEFERRED_UNLOCK) { | |
384 | + if ((session->kybdlock ^ n) & KL_DEFERRED_UNLOCK) | |
385 | + { | |
383 | 386 | /* Turned off deferred unlock. */ |
384 | - h3270.unlock_delay_time = 0; | |
387 | + session->unlock_delay_time = 0; | |
385 | 388 | } |
386 | - h3270.kybdlock = n; | |
387 | - status_changed(&h3270,LIB3270_STATUS_KYBDLOCK); | |
389 | + session->kybdlock = n; | |
390 | + status_changed(session,LIB3270_STATUS_KYBDLOCK); | |
388 | 391 | } |
389 | 392 | } |
390 | 393 | |
391 | -/* | |
394 | +/** | |
392 | 395 | * Set or clear enter-inhibit mode. |
396 | + * | |
397 | + * @param session Session handle | |
398 | + * @param inhibit New state | |
399 | + * | |
393 | 400 | */ |
394 | -void | |
395 | -kybd_inhibit(Boolean inhibit) | |
401 | +void kybd_inhibit(H3270 *session, Boolean inhibit) | |
396 | 402 | { |
397 | - if (inhibit) { | |
403 | + if (inhibit) | |
404 | + { | |
398 | 405 | kybdlock_set(KL_ENTER_INHIBIT, "kybd_inhibit"); |
399 | - if (h3270.kybdlock == KL_ENTER_INHIBIT) | |
400 | - status_reset(&h3270); | |
401 | - } else { | |
402 | - kybdlock_clr(KL_ENTER_INHIBIT, "kybd_inhibit"); | |
403 | - if (!h3270.kybdlock) | |
404 | - status_reset(&h3270); | |
406 | + if (session->kybdlock == KL_ENTER_INHIBIT) | |
407 | + status_reset(session); | |
408 | + } | |
409 | + else | |
410 | + { | |
411 | + kybdlock_clr(session,KL_ENTER_INHIBIT, "kybd_inhibit"); | |
412 | + if (!session->kybdlock) | |
413 | + status_reset(session); | |
405 | 414 | } |
406 | 415 | } |
407 | 416 | |
... | ... | @@ -413,7 +422,7 @@ void kybd_connect(H3270 *session, int connected, void *dunno) |
413 | 422 | if (session->kybdlock & KL_DEFERRED_UNLOCK) |
414 | 423 | RemoveTimeOut(session->unlock_id); |
415 | 424 | |
416 | - kybdlock_clr(-1, "kybd_connect"); | |
425 | + kybdlock_clr(session, -1, "kybd_connect"); | |
417 | 426 | |
418 | 427 | if (connected) { |
419 | 428 | /* Wait for any output or a WCC(restore) from the host */ |
... | ... | @@ -431,7 +440,7 @@ void kybd_in3270(H3270 *session, int in3270 unused, void *dunno) |
431 | 440 | { |
432 | 441 | if (session->kybdlock & KL_DEFERRED_UNLOCK) |
433 | 442 | RemoveTimeOut(session->unlock_id); |
434 | - kybdlock_clr(~KL_AWAITING_FIRST, "kybd_in3270"); | |
443 | + kybdlock_clr(session,~KL_AWAITING_FIRST, "kybd_in3270"); | |
435 | 444 | |
436 | 445 | /* There might be a macro pending. */ |
437 | 446 | if (CONNECTED) |
... | ... | @@ -1378,7 +1387,7 @@ LIB3270_KEY_ACTION( tab ) |
1378 | 1387 | |
1379 | 1388 | if (hSession->kybdlock) { |
1380 | 1389 | if (KYBDLOCK_IS_OERR) { |
1381 | - kybdlock_clr(KL_OERR_MASK, "Tab"); | |
1390 | + kybdlock_clr(hSession,KL_OERR_MASK, "Tab"); | |
1382 | 1391 | status_reset(hSession); |
1383 | 1392 | } else { |
1384 | 1393 | ENQUEUE_ACTION(lib3270_tab); |
... | ... | @@ -1408,7 +1417,7 @@ LIB3270_KEY_ACTION( backtab ) |
1408 | 1417 | |
1409 | 1418 | if (hSession->kybdlock) { |
1410 | 1419 | if (KYBDLOCK_IS_OERR) { |
1411 | - kybdlock_clr(KL_OERR_MASK, "BackTab"); | |
1420 | + kybdlock_clr(hSession,KL_OERR_MASK, "BackTab"); | |
1412 | 1421 | status_reset(hSession); |
1413 | 1422 | } else { |
1414 | 1423 | ENQUEUE_ACTION(lib3270_backtab); |
... | ... | @@ -1447,7 +1456,7 @@ LIB3270_KEY_ACTION( backtab ) |
1447 | 1456 | |
1448 | 1457 | static void defer_unlock(H3270 *session) |
1449 | 1458 | { |
1450 | - kybdlock_clr(KL_DEFERRED_UNLOCK, "defer_unlock"); | |
1459 | + kybdlock_clr(session,KL_DEFERRED_UNLOCK, "defer_unlock"); | |
1451 | 1460 | status_reset(session); |
1452 | 1461 | if (CONNECTED) |
1453 | 1462 | ps_process(); |
... | ... | @@ -1501,10 +1510,10 @@ void do_reset(H3270 *session, Boolean explicit) |
1501 | 1510 | #endif /*]*/ |
1502 | 1511 | || (!session->unlock_delay) // && !sms_in_macro()) |
1503 | 1512 | || (session->unlock_delay_time != 0 && (time(NULL) - session->unlock_delay_time) > 1)) { |
1504 | - kybdlock_clr(-1, "do_reset"); | |
1513 | + kybdlock_clr(session,-1, "do_reset"); | |
1505 | 1514 | } else if (session->kybdlock & |
1506 | 1515 | (KL_DEFERRED_UNLOCK | KL_OIA_TWAIT | KL_OIA_LOCKED | KL_AWAITING_FIRST)) { |
1507 | - kybdlock_clr(~KL_DEFERRED_UNLOCK, "do_reset"); | |
1516 | + kybdlock_clr(session,~KL_DEFERRED_UNLOCK, "do_reset"); | |
1508 | 1517 | kybdlock_set(KL_DEFERRED_UNLOCK, "do_reset"); |
1509 | 1518 | session->unlock_id = AddTimeOut(UNLOCK_MS, session, defer_unlock); |
1510 | 1519 | } |
... | ... | @@ -1580,7 +1589,7 @@ LIB3270_CURSOR_ACTION( left ) |
1580 | 1589 | { |
1581 | 1590 | if (KYBDLOCK_IS_OERR) |
1582 | 1591 | { |
1583 | - kybdlock_clr(KL_OERR_MASK, "Left"); | |
1592 | + kybdlock_clr(hSession,KL_OERR_MASK, "Left"); | |
1584 | 1593 | status_reset(&h3270); |
1585 | 1594 | } |
1586 | 1595 | else |
... | ... | @@ -1843,8 +1852,8 @@ LIB3270_CURSOR_ACTION( right ) |
1843 | 1852 | { |
1844 | 1853 | if (KYBDLOCK_IS_OERR) |
1845 | 1854 | { |
1846 | - kybdlock_clr(KL_OERR_MASK, "Right"); | |
1847 | - status_reset(&h3270); | |
1855 | + kybdlock_clr(hSession,KL_OERR_MASK, "Right"); | |
1856 | + status_reset(hSession); | |
1848 | 1857 | } |
1849 | 1858 | else |
1850 | 1859 | { |
... | ... | @@ -1876,43 +1885,6 @@ LIB3270_CURSOR_ACTION( right ) |
1876 | 1885 | |
1877 | 1886 | |
1878 | 1887 | /* |
1879 | - * Cursor left 2 positions. | |
1880 | - */ /* | |
1881 | -void | |
1882 | -Left2_action(Widget w unused, XEvent *event, String *params, | |
1883 | - Cardinal *num_params) | |
1884 | -{ | |
1885 | - register int baddr; | |
1886 | - enum dbcs_state d; | |
1887 | - | |
1888 | -// reset_idle_timer(); | |
1889 | - if (kybdlock) { | |
1890 | - if (KYBDLOCK_IS_OERR) { | |
1891 | - kybdlock_clr(KL_OERR_MASK, "Left2"); | |
1892 | - status_reset(&h3270); | |
1893 | - } else { | |
1894 | - enq_ta(Left2_action, CN, CN); | |
1895 | - return; | |
1896 | - } | |
1897 | - } | |
1898 | -#if defined(X3270_ANSI) | |
1899 | - if (IN_ANSI) | |
1900 | - return; | |
1901 | -#endif | |
1902 | - baddr = cursor_addr; | |
1903 | - DEC_BA(baddr); | |
1904 | - d = ctlr_dbcs_state(baddr); | |
1905 | - if (IS_LEFT(d)) | |
1906 | - DEC_BA(baddr); | |
1907 | - DEC_BA(baddr); | |
1908 | - d = ctlr_dbcs_state(baddr); | |
1909 | - if (IS_LEFT(d)) | |
1910 | - DEC_BA(baddr); | |
1911 | - cursor_move(baddr); | |
1912 | -} */ | |
1913 | - | |
1914 | - | |
1915 | -/* | |
1916 | 1888 | * Cursor to previous word. |
1917 | 1889 | */ |
1918 | 1890 | LIB3270_ACTION( previousword ) |
... | ... | @@ -1979,44 +1951,7 @@ LIB3270_ACTION( previousword ) |
1979 | 1951 | return 0; |
1980 | 1952 | } |
1981 | 1953 | |
1982 | - | |
1983 | -/* | |
1984 | - * Cursor right 2 positions. | |
1985 | - */ /* | |
1986 | -void | |
1987 | -Right2_action(Widget w unused, XEvent *event, String *params, | |
1988 | - Cardinal *num_params) | |
1989 | -{ | |
1990 | - register int baddr; | |
1991 | - enum dbcs_state d; | |
1992 | 1954 | |
1993 | -// reset_idle_timer(); | |
1994 | - if (kybdlock) { | |
1995 | - if (KYBDLOCK_IS_OERR) { | |
1996 | - kybdlock_clr(KL_OERR_MASK, "Right2"); | |
1997 | - status_reset(&h3270); | |
1998 | - } else { | |
1999 | - enq_ta(Right2_action, CN, CN); | |
2000 | - return; | |
2001 | - } | |
2002 | - } | |
2003 | -#if defined(X3270_ANSI) | |
2004 | - if (IN_ANSI) | |
2005 | - return; | |
2006 | -#endif | |
2007 | - baddr = cursor_addr; | |
2008 | - INC_BA(baddr); | |
2009 | - d = ctlr_dbcs_state(baddr); | |
2010 | - if (IS_RIGHT(d)) | |
2011 | - INC_BA(baddr); | |
2012 | - INC_BA(baddr); | |
2013 | - d = ctlr_dbcs_state(baddr); | |
2014 | - if (IS_RIGHT(d)) | |
2015 | - INC_BA(baddr); | |
2016 | - cursor_move(baddr); | |
2017 | -} | |
2018 | -*/ | |
2019 | - | |
2020 | 1955 | /* Find the next unprotected word, or -1 */ |
2021 | 1956 | static int |
2022 | 1957 | nu_word(int baddr) |
... | ... | @@ -2146,8 +2081,8 @@ LIB3270_CURSOR_ACTION( up ) |
2146 | 2081 | if (hSession->kybdlock) { |
2147 | 2082 | if (KYBDLOCK_IS_OERR) |
2148 | 2083 | { |
2149 | - kybdlock_clr(KL_OERR_MASK, "Up"); | |
2150 | - status_reset(&h3270); | |
2084 | + kybdlock_clr(hSession,KL_OERR_MASK, "Up"); | |
2085 | + status_reset(hSession); | |
2151 | 2086 | } |
2152 | 2087 | else |
2153 | 2088 | { |
... | ... | @@ -2184,8 +2119,8 @@ LIB3270_CURSOR_ACTION( down ) |
2184 | 2119 | { |
2185 | 2120 | if (KYBDLOCK_IS_OERR) |
2186 | 2121 | { |
2187 | - kybdlock_clr(KL_OERR_MASK, "Down"); | |
2188 | - status_reset(&h3270); | |
2122 | + kybdlock_clr(hSession,KL_OERR_MASK, "Down"); | |
2123 | + status_reset(hSession); | |
2189 | 2124 | } else |
2190 | 2125 | { |
2191 | 2126 | ENQUEUE_ACTION(lib3270_cursor_down); |
... | ... | @@ -2899,7 +2834,7 @@ kybd_scroll_lock(Boolean lock) |
2899 | 2834 | if (lock) |
2900 | 2835 | kybdlock_set(KL_SCROLLED, "kybd_scroll_lock"); |
2901 | 2836 | else |
2902 | - kybdlock_clr(KL_SCROLLED, "kybd_scroll_lock"); | |
2837 | + kybdlock_clr(&h3270, KL_SCROLLED, "kybd_scroll_lock"); | |
2903 | 2838 | } |
2904 | 2839 | |
2905 | 2840 | /* | ... | ... |
src/lib3270/kybdc.h
... | ... | @@ -43,8 +43,8 @@ LIB3270_INTERNAL void add_xk(KeySym key, KeySym assoc); |
43 | 43 | LIB3270_INTERNAL void clear_xks(void); |
44 | 44 | LIB3270_INTERNAL void do_reset(H3270 *session, Boolean explicit); |
45 | 45 | LIB3270_INTERNAL void hex_input(char *s); |
46 | -LIB3270_INTERNAL void kybdlock_clr(unsigned int bits, const char *cause); | |
47 | -LIB3270_INTERNAL void kybd_inhibit(Boolean inhibit); | |
46 | +LIB3270_INTERNAL void kybdlock_clr(H3270 *session, unsigned int bits, const char *cause); | |
47 | +LIB3270_INTERNAL void kybd_inhibit(H3270 *session, Boolean inhibit); | |
48 | 48 | LIB3270_INTERNAL void kybd_init(void); |
49 | 49 | LIB3270_INTERNAL int kybd_prime(void); |
50 | 50 | LIB3270_INTERNAL void kybd_scroll_lock(Boolean lock); | ... | ... |
src/lib3270/sf.c
src/lib3270/telnet.c
... | ... | @@ -1191,7 +1191,7 @@ static int telnet_fsm(H3270 *session, unsigned char c) |
1191 | 1191 | cooked_init(); |
1192 | 1192 | #endif /*]*/ |
1193 | 1193 | host_in3270(session,CONNECTED_ANSI); |
1194 | - kybdlock_clr(KL_AWAITING_FIRST, "telnet_fsm"); | |
1194 | + kybdlock_clr(session,KL_AWAITING_FIRST, "telnet_fsm"); | |
1195 | 1195 | status_reset(session); |
1196 | 1196 | ps_process(); |
1197 | 1197 | } | ... | ... |