Commit 0cd4a4ece9f79c47408b8b54a2b34da3f52fafda
1 parent
834eada6
Exists in
master
and in
3 other branches
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,6 +492,20 @@ void lib3270_st_changed(H3270 *h, LIB3270_STATE tx, int mode) | ||
| 492 | trace("%s ends",__FUNCTION__); | 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 | LIB3270_EXPORT const char * lib3270_set_host(H3270 *h, const char *n) | 509 | LIB3270_EXPORT const char * lib3270_set_host(H3270 *h, const char *n) |
| 496 | { | 510 | { |
| 497 | CHECK_SESSION_HANDLE(h); | 511 | CHECK_SESSION_HANDLE(h); |
| @@ -558,17 +572,8 @@ LIB3270_EXPORT const char * lib3270_set_host(H3270 *h, const char *n) | @@ -558,17 +572,8 @@ LIB3270_EXPORT const char * lib3270_set_host(H3270 *h, const char *n) | ||
| 558 | 572 | ||
| 559 | Replace(h->host.current,strdup(hostname)); | 573 | Replace(h->host.current,strdup(hostname)); |
| 560 | Replace(h->host.srvc,strdup(srvc)); | 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 | free(str); | 578 | free(str); |
| 574 | } | 579 | } |
| @@ -586,6 +591,13 @@ LIB3270_EXPORT const char * lib3270_get_hostname(H3270 *h) | @@ -586,6 +591,13 @@ LIB3270_EXPORT const char * lib3270_get_hostname(H3270 *h) | ||
| 586 | return ""; | 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 | LIB3270_EXPORT const char * lib3270_get_srvcname(H3270 *h) | 601 | LIB3270_EXPORT const char * lib3270_get_srvcname(H3270 *h) |
| 590 | { | 602 | { |
| 591 | CHECK_SESSION_HANDLE(h); | 603 | CHECK_SESSION_HANDLE(h); |
| @@ -594,6 +606,13 @@ LIB3270_EXPORT const char * lib3270_get_srvcname(H3270 *h) | @@ -594,6 +606,13 @@ LIB3270_EXPORT const char * lib3270_get_srvcname(H3270 *h) | ||
| 594 | return "telnet"; | 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 | LIB3270_EXPORT const char * lib3270_get_host(H3270 *h) | 616 | LIB3270_EXPORT const char * lib3270_get_host(H3270 *h) |
| 598 | { | 617 | { |
| 599 | CHECK_SESSION_HANDLE(h); | 618 | CHECK_SESSION_HANDLE(h); |
options.c
| @@ -134,3 +134,33 @@ LIB3270_EXPORT int lib3270_is_tso(H3270 *hSession) | @@ -134,3 +134,33 @@ LIB3270_EXPORT int lib3270_is_tso(H3270 *hSession) | ||
| 134 | CHECK_SESSION_HANDLE(hSession); | 134 | CHECK_SESSION_HANDLE(hSession); |
| 135 | return (hSession->options & LIB3270_OPTION_TSO) != 0; | 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 | + |