Commit 0cd4a4ece9f79c47408b8b54a2b34da3f52fafda

Authored by perry.werneck@gmail.com
1 parent 834eada6

Implementando novo widget para seleção de servidor

Showing 2 changed files with 60 additions and 11 deletions   Show diff stats
host.c
... ... @@ -492,6 +492,20 @@ void lib3270_st_changed(H3270 *h, LIB3270_STATE tx, int mode)
492 492 trace("%s ends",__FUNCTION__);
493 493 }
494 494  
  495 +static void update_host(H3270 *h)
  496 +{
  497 + Replace(h->host.full,
  498 + lib3270_strdup_printf(
  499 + "%s%s:%s",
  500 + h->options&LIB3270_OPTION_SSL ? "tn3270s://" : "tn3270://",
  501 + h->host.current,
  502 + h->host.srvc
  503 + ));
  504 +
  505 + trace("hosturl=[%s]",h->host.full);
  506 +
  507 +}
  508 +
495 509 LIB3270_EXPORT const char * lib3270_set_host(H3270 *h, const char *n)
496 510 {
497 511 CHECK_SESSION_HANDLE(h);
... ... @@ -558,17 +572,8 @@ LIB3270_EXPORT const char * lib3270_set_host(H3270 *h, const char *n)
558 572  
559 573 Replace(h->host.current,strdup(hostname));
560 574 Replace(h->host.srvc,strdup(srvc));
561   - Replace(h->host.full,
562   - lib3270_strdup_printf(
563   - "%s%s:%s%s%s",
564   - h->options&LIB3270_OPTION_SSL ? "tn3270s://" : "tn3270://",
565   - hostname,
566   - srvc,
567   - *query ? "?" : "",
568   - query
569   - ));
570   -
571   - trace("hosturl=[%s]",h->host.full);
  575 +
  576 + update_host(h);
572 577  
573 578 free(str);
574 579 }
... ... @@ -586,6 +591,13 @@ LIB3270_EXPORT const char * lib3270_get_hostname(H3270 *h)
586 591 return "";
587 592 }
588 593  
  594 +LIB3270_EXPORT void lib3270_set_hostname(H3270 *h, const char *hostname)
  595 +{
  596 + CHECK_SESSION_HANDLE(h);
  597 + Replace(h->host.current,strdup(hostname));
  598 + update_host(h);
  599 +}
  600 +
589 601 LIB3270_EXPORT const char * lib3270_get_srvcname(H3270 *h)
590 602 {
591 603 CHECK_SESSION_HANDLE(h);
... ... @@ -594,6 +606,13 @@ LIB3270_EXPORT const char * lib3270_get_srvcname(H3270 *h)
594 606 return "telnet";
595 607 }
596 608  
  609 +LIB3270_EXPORT void lib3270_set_srvcname(H3270 *h, const char *srvc)
  610 +{
  611 + CHECK_SESSION_HANDLE(h);
  612 + Replace(h->host.srvc,strdup(srvc));
  613 + update_host(h);
  614 +}
  615 +
597 616 LIB3270_EXPORT const char * lib3270_get_host(H3270 *h)
598 617 {
599 618 CHECK_SESSION_HANDLE(h);
... ...
options.c
... ... @@ -134,3 +134,33 @@ LIB3270_EXPORT int lib3270_is_tso(H3270 *hSession)
134 134 CHECK_SESSION_HANDLE(hSession);
135 135 return (hSession->options & LIB3270_OPTION_TSO) != 0;
136 136 }
  137 +
  138 +LIB3270_EXPORT int lib3270_set_host_type(H3270 *hSession, const char *name)
  139 +{
  140 + static const struct _host_type
  141 + {
  142 + const char * name;
  143 + LIB3270_OPTION option;
  144 + } host_type[] =
  145 + {
  146 + { "S390", LIB3270_OPTION_S390 },
  147 + { "AS400", LIB3270_OPTION_AS400 },
  148 + { "TSO", LIB3270_OPTION_TSO },
  149 + { "VM/CMS", 0 }
  150 + };
  151 +
  152 + int f;
  153 +
  154 + for(f=0;f<(sizeof(host_type)/sizeof(host_type[0]));f++)
  155 + {
  156 + if(!strcasecmp(host_type[f].name,name))
  157 + {
  158 + hSession->options &= ~LIB3270_OPTION_HOST_TYPE;
  159 + hSession->options |= host_type[f].option;
  160 + return 0;
  161 + }
  162 + }
  163 +
  164 + return EINVAL;
  165 +}
  166 +
... ...