Commit 615e14f3488b8c9021bfbf08d6ef3c0c4df63058
1 parent
0a721dd2
Exists in
master
and in
5 other branches
Melhorando teste de "TerminalReady"
Showing
6 changed files
with
49 additions
and
16 deletions
Show diff stats
src/include/lib3270.h
... | ... | @@ -189,7 +189,7 @@ |
189 | 189 | LIB3270_MESSAGE_NUMERIC, /**< 8 - */ |
190 | 190 | LIB3270_MESSAGE_OVERFLOW, /**< 9 - */ |
191 | 191 | LIB3270_MESSAGE_INHIBIT, /**< 10 - */ |
192 | - LIB3270_MESSAGE_KYBDLOCK, /**< 11 - */ | |
192 | + LIB3270_MESSAGE_KYBDLOCK, /**< 11 - Keyboard is locked */ | |
193 | 193 | |
194 | 194 | LIB3270_MESSAGE_X, /**< 12 - */ |
195 | 195 | LIB3270_MESSAGE_RESOLVING, /**< 13 - Resolving hostname (running DNS query) */ |
... | ... | @@ -707,9 +707,10 @@ |
707 | 707 | LIB3270_EXPORT int lib3270_in_sscp(H3270 *h); |
708 | 708 | LIB3270_EXPORT int lib3270_in_tn3270e(H3270 *h); |
709 | 709 | LIB3270_EXPORT int lib3270_in_e(H3270 *h); |
710 | + LIB3270_EXPORT int lib3270_lock_status(H3270 *h); | |
711 | + LIB3270_EXPORT int lib3270_is_ready(H3270 *h); | |
710 | 712 | |
711 | 713 | #define lib3270_is_connected(h) lib3270_in_tn3270e(h) |
712 | - #define lib3270_is_ready(h) lib3270_get_program_message(h) == LIB3270_MESSAGE_NONE | |
713 | 714 | |
714 | 715 | LIB3270_EXPORT LIB3270_SSL_STATE lib3270_get_secure(H3270 *session); |
715 | 716 | LIB3270_EXPORT long lib3270_get_SSL_verify_result(H3270 *session); | ... | ... |
src/lib3270/ctlr.c
... | ... | @@ -2205,21 +2205,20 @@ int ctlr_any_data(H3270 *session) |
2205 | 2205 | * Clear the text (non-status) portion of the display. Also resets the cursor |
2206 | 2206 | * and buffer addresses and extended attributes. |
2207 | 2207 | */ |
2208 | -void | |
2209 | -ctlr_clear(H3270 *session, Boolean can_snap) | |
2208 | +void ctlr_clear(H3270 *session, Boolean can_snap) | |
2210 | 2209 | { |
2211 | 2210 | /* Snap any data that is about to be lost into the trace file. */ |
2211 | +#if defined(X3270_TRACE) | |
2212 | + | |
2212 | 2213 | if (ctlr_any_data(session)) |
2213 | 2214 | { |
2214 | -#if defined(X3270_TRACE) /*[*/ | |
2215 | 2215 | if (can_snap && !session->trace_skipping && lib3270_get_toggle(session,LIB3270_TOGGLE_SCREEN_TRACE)) |
2216 | 2216 | trace_screen(session); |
2217 | -#endif /*]*/ | |
2218 | -// scroll_save(session->maxROWS, ever_3270 ? False : True); | |
2219 | 2217 | } |
2220 | -#if defined(X3270_TRACE) /*[*/ | |
2218 | + | |
2221 | 2219 | session->trace_skipping = 0; |
2222 | -#endif /*]*/ | |
2220 | + | |
2221 | +#endif | |
2223 | 2222 | |
2224 | 2223 | /* Clear the screen. */ |
2225 | 2224 | (void) memset((char *)session->ea_buf, 0, session->rows*session->cols*sizeof(struct lib3270_ea)); | ... | ... |
src/lib3270/iocalls.c
... | ... | @@ -726,14 +726,14 @@ LIB3270_EXPORT int lib3270_wait_for_ready(H3270 *hSession, int seconds) |
726 | 726 | { |
727 | 727 | time_t end = time(0)+seconds; |
728 | 728 | |
729 | - if(hSession->oia_status == LIB3270_STATUS_BLANK) | |
729 | + if(!lib3270_lock_status(hSession)) | |
730 | 730 | return 0; |
731 | 731 | |
732 | 732 | while(time(0) < end) |
733 | 733 | { |
734 | 734 | event_dispatcher(hSession,1); |
735 | 735 | |
736 | - if(hSession->oia_status == LIB3270_STATUS_BLANK) | |
736 | + if(!lib3270_lock_status(hSession)) | |
737 | 737 | return 0; |
738 | 738 | |
739 | 739 | if(!lib3270_connected(hSession)) | ... | ... |
src/lib3270/kybd.c
... | ... | @@ -384,7 +384,7 @@ static void kybdlock_set(H3270 *hSession, unsigned int bits) |
384 | 384 | hSession->unlock_delay_time = time(NULL); |
385 | 385 | } |
386 | 386 | hSession->kybdlock = n; |
387 | - status_changed(hSession,LIB3270_STATUS_KYBDLOCK); | |
387 | + status_changed(hSession,LIB3270_MESSAGE_KYBDLOCK); | |
388 | 388 | } |
389 | 389 | } |
390 | 390 | |
... | ... | @@ -409,7 +409,7 @@ void lib3270_kybdlock_clear(H3270 *hSession, LIB3270_KL_STATE bits) |
409 | 409 | hSession->unlock_delay_time = 0; |
410 | 410 | } |
411 | 411 | hSession->kybdlock = n; |
412 | - status_changed(hSession,LIB3270_STATUS_KYBDLOCK); | |
412 | + status_changed(hSession,LIB3270_MESSAGE_KYBDLOCK); | |
413 | 413 | } |
414 | 414 | } |
415 | 415 | ... | ... |
src/lib3270/screen.c
... | ... | @@ -528,6 +528,42 @@ LIB3270_EXPORT LIB3270_STATUS lib3270_get_program_message(H3270 *session) |
528 | 528 | return session->oia_status; |
529 | 529 | } |
530 | 530 | |
531 | +/** | |
532 | + * Check if the terminal is ready for commands. | |
533 | + * | |
534 | + * @param h Session handle. | |
535 | + * | |
536 | + * @return 0 if the terminal is ready (no message, keyboard unlocked), LIB3270_MESSAGE if not | |
537 | + * | |
538 | + */ | |
539 | +LIB3270_EXPORT int lib3270_lock_status(H3270 *hSession) | |
540 | +{ | |
541 | + CHECK_SESSION_HANDLE(hSession); | |
542 | + | |
543 | + if(hSession->oia_status) | |
544 | + return hSession->oia_status; | |
545 | + | |
546 | + if(hSession->kybdlock) | |
547 | + return LIB3270_MESSAGE_KYBDLOCK; | |
548 | + | |
549 | + return LIB3270_MESSAGE_NONE; | |
550 | + | |
551 | +} | |
552 | + | |
553 | +/** | |
554 | + * Check if terminal is ready for actions. | |
555 | + * | |
556 | + * @param h Session handle. | |
557 | + * | |
558 | + * @return Non zero if terminal is ready for commands. | |
559 | + * | |
560 | + */ | |
561 | +LIB3270_EXPORT int lib3270_is_ready(H3270 *hSession) | |
562 | +{ | |
563 | + return lib3270_lock_status(hSession) == LIB3270_MESSAGE_NONE; | |
564 | +} | |
565 | + | |
566 | + | |
531 | 567 | void status_changed(H3270 *session, LIB3270_STATUS id) |
532 | 568 | { |
533 | 569 | CHECK_SESSION_HANDLE(session); | ... | ... |
src/lib3270/statusc.h
... | ... | @@ -35,7 +35,4 @@ LIB3270_INTERNAL void set_status(H3270 *session, OIA_FLAG id, Boolean on); |
35 | 35 | |
36 | 36 | |
37 | 37 | #define status_typeahead(h,on) set_status(h,OIA_FLAG_TYPEAHEAD,on) |
38 | -// #define status_kybdlock(h) status_changed(h,LIB3270_STATUS_KYBDLOCK) | |
39 | -// #define status_syswait(h) status_changed(h,LIB3270_STATUS_SYSWAIT) | |
40 | -// #define status_minus() status_changed(NULL,LIB3270_STATUS_MINUS) | |
41 | 38 | ... | ... |