Commit 2be8012abe9f2e706593fba960d377ab46cd4a3c

Authored by Perry Werneck
1 parent 545d9579

+ Adding "set_luname" method.

src/include/lib3270.h
... ... @@ -862,7 +862,9 @@
862 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 869 LIB3270_EXPORT int lib3270_has_active_script(H3270 *h);
868 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 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 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 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 333  
327 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 339 else
332 340 {
333 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 637 #endif // DEBUG
638 638  
639 639 LIB3270_INTERNAL int check_online_session(H3270 *hSession);
  640 +LIB3270_INTERNAL int check_offline_session(H3270 *hSession);
640 641  
641 642 /// @brief Returns -1 if the session is invalid or not online (sets errno).
642 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 648 LIB3270_INTERNAL int non_blocking(H3270 *session, Boolean on);
645 649  
646 650 #if defined(HAVE_LIBSSL) /*[*/
... ...
src/lib3270/session.c
... ... @@ -408,6 +408,25 @@ LIB3270_INTERNAL int check_online_session(H3270 *hSession) {
408 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 430 LIB3270_EXPORT H3270 * lib3270_get_default_session_handle(void)
412 431 {
413 432 if(default_session)
... ...