Commit e0256fd4ebd386113ccf7ab2d87e140b82aeb2d6

Authored by Perry Werneck
1 parent 538f302a

Removing warnings, adding macro for test online mode in API calls.

src/include/lib3270.h
... ... @@ -1035,7 +1035,7 @@
1035 1035 * @param c Pointer to character.
1036 1036 * @param attr Pointer to attribute.
1037 1037 *
1038   - * @return 0 if ok or error code.
  1038 + * @return 0 if ok, -1 if fails (sets errno).
1039 1039 *
1040 1040 */
1041 1041 LIB3270_EXPORT int lib3270_get_element(H3270 *h, int baddr, unsigned char *c, unsigned short *attr);
... ...
src/lib3270/private.h
... ... @@ -633,6 +633,11 @@ LIB3270_INTERNAL int lib3270_default_event_dispatcher(H3270 *hSession, int block
633 633 LIB3270_INTERNAL void check_session_handle(H3270 **hSession);
634 634 #endif // DEBUG
635 635  
  636 +LIB3270_INTERNAL int check_online_session(H3270 *hSession);
  637 +
  638 +/// @brief Returns -1 if the session is invalid or not online (sets errno).
  639 +#define FAIL_IF_NOT_ONLINE(x) if(check_online_session(x)) return -1;
  640 +
636 641 LIB3270_INTERNAL int non_blocking(H3270 *session, Boolean on);
637 642  
638 643 #if defined(HAVE_LIBSSL) /*[*/
... ...
src/lib3270/screen.c
... ... @@ -98,15 +98,18 @@ static void addch(H3270 *session, int baddr, unsigned char c, unsigned short att
98 98 session->cbk.update(session,baddr,c,attr,baddr == session->cursor_addr);
99 99 }
100 100  
101   -LIB3270_EXPORT int lib3270_get_element(H3270 *h, int baddr, unsigned char *c, unsigned short *attr)
  101 +LIB3270_EXPORT int lib3270_get_element(H3270 *hSession, int baddr, unsigned char *c, unsigned short *attr)
102 102 {
103   - CHECK_SESSION_HANDLE(h);
  103 + FAIL_IF_NOT_ONLINE(hSession);
104 104  
105   - if(!h->text || baddr < 0 || baddr > (h->rows*h->cols))
106   - return EINVAL;
  105 + if(!hSession->text || baddr < 0 || baddr > (hSession->rows*hSession->cols))
  106 + {
  107 + errno = EINVAL;
  108 + return -1;
  109 + }
107 110  
108   - *c = h->text[baddr].chr;
109   - *attr = h->text[baddr].attr;
  111 + *c = hSession->text[baddr].chr;
  112 + *attr = hSession->text[baddr].attr;
110 113  
111 114 return 0;
112 115 }
... ... @@ -394,7 +397,7 @@ LIB3270_EXPORT int lib3270_get_cursor_address(H3270 *h)
394 397 */
395 398 LIB3270_EXPORT int lib3270_translate_to_address(H3270 *hSession, int row, int col)
396 399 {
397   - CHECK_SESSION_HANDLE(hSession);
  400 + FAIL_IF_NOT_ONLINE(hSession);
398 401  
399 402 row--;
400 403 col--;
... ... @@ -423,7 +426,7 @@ LIB3270_EXPORT int lib3270_translate_to_address(H3270 *hSession, int row, int co
423 426 */
424 427 LIB3270_EXPORT int lib3270_set_cursor_address(H3270 *hSession, int baddr)
425 428 {
426   - CHECK_SESSION_HANDLE(hSession);
  429 + FAIL_IF_NOT_ONLINE(hSession);
427 430  
428 431 trace("%s(%d)",__FUNCTION__,baddr);
429 432  
... ... @@ -877,10 +880,10 @@ LIB3270_ACTION( testpattern )
877 880  
878 881 static const unsigned char gr[] = { 0, GR_UNDERLINE, GR_BLINK };
879 882  
880   - int row = 0;
  883 + unsigned int row = 0;
881 884 int max;
882 885 int pos = 0;
883   - int grpos = 0;
  886 + unsigned int grpos = 0;
884 887 int f;
885 888 int fg = COLOR_BLUE;
886 889  
... ... @@ -933,10 +936,13 @@ LIB3270_EXPORT int lib3270_is_protected(H3270 *h, unsigned int baddr)
933 936 {
934 937 unsigned char fa;
935 938  
936   - CHECK_SESSION_HANDLE(h);
  939 + FAIL_IF_NOT_ONLINE(h);
937 940  
938 941 if(baddr > (h->rows * h->cols))
  942 + {
  943 + errno = EINVAL;
939 944 return -1;
  945 + }
940 946  
941 947 fa = get_field_attribute(h,baddr);
942 948  
... ...
src/lib3270/session.c
... ... @@ -388,6 +388,25 @@ void check_session_handle(H3270 **hSession)
388 388 #endif // ANDROID
389 389 }
390 390  
  391 +LIB3270_INTERNAL int check_online_session(H3270 *hSession) {
  392 +
  393 + // Is the session valid?
  394 + if(!hSession)
  395 + {
  396 + errno = EINVAL;
  397 + return -1;
  398 + }
  399 +
  400 + // Is it connected?
  401 + if((int) hSession->cstate < (int)LIB3270_CONNECTED_INITIAL)
  402 + {
  403 + errno = ENOTCONN;
  404 + return -1;
  405 + }
  406 +
  407 + return 0;
  408 +}
  409 +
391 410 LIB3270_EXPORT H3270 * lib3270_get_default_session_handle(void)
392 411 {
393 412 if(default_session)
... ...