Commit 2be8012abe9f2e706593fba960d377ab46cd4a3c

Authored by Perry Werneck
1 parent 545d9579

+ Adding "set_luname" method.

src/include/lib3270.h
@@ -862,7 +862,9 @@ @@ -862,7 +862,9 @@
862 * @return conected LU name or NULL if not connected. 862 * @return conected LU name or NULL if not connected.
863 * 863 *
864 */ 864 */
865 - LIB3270_EXPORT const char * lib3270_get_luname(H3270 *h); 865 + LIB3270_EXPORT const char * lib3270_get_luname(H3270 *hSession);
  866 +
  867 + LIB3270_EXPORT int lib3270_set_luname(H3270 *hSession, const char *luname);
866 868
867 LIB3270_EXPORT int lib3270_has_active_script(H3270 *h); 869 LIB3270_EXPORT int lib3270_has_active_script(H3270 *h);
868 LIB3270_EXPORT int lib3270_get_typeahead(H3270 *h); 870 LIB3270_EXPORT int lib3270_get_typeahead(H3270 *h);
src/lib3270/host.c
@@ -238,9 +238,16 @@ LIB3270_EXPORT const char * lib3270_get_url(H3270 *hSession) @@ -238,9 +238,16 @@ LIB3270_EXPORT const char * lib3270_get_url(H3270 *hSession)
238 return hSession->host.full; 238 return hSession->host.full;
239 } 239 }
240 240
  241 +LIB3270_EXPORT int lib3270_set_luname(H3270 *hSession, const char *luname)
  242 +{
  243 + FAIL_IF_ONLINE(hSession);
  244 + strncpy(hSession->luname,luname,LIB3270_LUNAME_LENGTH);
  245 + return 0;
  246 +}
  247 +
241 LIB3270_EXPORT int lib3270_set_url(H3270 *h, const char *n) 248 LIB3270_EXPORT int lib3270_set_url(H3270 *h, const char *n)
242 { 249 {
243 - CHECK_SESSION_HANDLE(h); 250 + FAIL_IF_ONLINE(h);
244 251
245 if(n && n != h->host.full) 252 if(n && n != h->host.full)
246 { 253 {
@@ -326,14 +333,14 @@ LIB3270_EXPORT int lib3270_set_url(H3270 *h, const char *n) @@ -326,14 +333,14 @@ LIB3270_EXPORT int lib3270_set_url(H3270 *h, const char *n)
326 333
327 if(!(strcasecmp(var,"lu") && strcasecmp(var,"luname"))) 334 if(!(strcasecmp(var,"lu") && strcasecmp(var,"luname")))
328 { 335 {
329 - strncpy(h->luname,val,LIB3270_LUNAME_LENGTH); 336 + lib3270_set_luname(h, val);
  337 + // strncpy(h->luname,val,LIB3270_LUNAME_LENGTH);
330 } 338 }
331 else 339 else
332 { 340 {
333 lib3270_write_log(h,"","Ignoring invalid URL attribute \"%s\"",var); 341 lib3270_write_log(h,"","Ignoring invalid URL attribute \"%s\"",var);
334 } 342 }
335 343
336 -  
337 } 344 }
338 345
339 } 346 }
src/lib3270/private.h
@@ -637,10 +637,14 @@ LIB3270_INTERNAL int lib3270_default_event_dispatcher(H3270 *hSession, int block @@ -637,10 +637,14 @@ LIB3270_INTERNAL int lib3270_default_event_dispatcher(H3270 *hSession, int block
637 #endif // DEBUG 637 #endif // DEBUG
638 638
639 LIB3270_INTERNAL int check_online_session(H3270 *hSession); 639 LIB3270_INTERNAL int check_online_session(H3270 *hSession);
  640 +LIB3270_INTERNAL int check_offline_session(H3270 *hSession);
640 641
641 /// @brief Returns -1 if the session is invalid or not online (sets errno). 642 /// @brief Returns -1 if the session is invalid or not online (sets errno).
642 #define FAIL_IF_NOT_ONLINE(x) if(check_online_session(x)) return -1; 643 #define FAIL_IF_NOT_ONLINE(x) if(check_online_session(x)) return -1;
643 644
  645 +/// @brief Returns -1 if the session is invalid or online (sets errno).
  646 +#define FAIL_IF_ONLINE(x) if(check_offline_session(x)) return -1;
  647 +
644 LIB3270_INTERNAL int non_blocking(H3270 *session, Boolean on); 648 LIB3270_INTERNAL int non_blocking(H3270 *session, Boolean on);
645 649
646 #if defined(HAVE_LIBSSL) /*[*/ 650 #if defined(HAVE_LIBSSL) /*[*/
src/lib3270/session.c
@@ -408,6 +408,25 @@ LIB3270_INTERNAL int check_online_session(H3270 *hSession) { @@ -408,6 +408,25 @@ LIB3270_INTERNAL int check_online_session(H3270 *hSession) {
408 return 0; 408 return 0;
409 } 409 }
410 410
  411 +LIB3270_INTERNAL int check_offline_session(H3270 *hSession) {
  412 +
  413 + // Is the session valid?
  414 + if(!hSession)
  415 + {
  416 + errno = EINVAL;
  417 + return -1;
  418 + }
  419 +
  420 + // Is it connected?
  421 + if((int) hSession->cstate >= (int)LIB3270_CONNECTED_INITIAL)
  422 + {
  423 + errno = EBUSY;
  424 + return -1;
  425 + }
  426 +
  427 + return 0;
  428 +}
  429 +
411 LIB3270_EXPORT H3270 * lib3270_get_default_session_handle(void) 430 LIB3270_EXPORT H3270 * lib3270_get_default_session_handle(void)
412 { 431 {
413 if(default_session) 432 if(default_session)