Commit 091ee6b8a3bbd7f8f2a7809df7c18feb5ea1aa94
1 parent
866a32b5
Exists in
master
and in
3 other branches
Fixing oversize.
Showing
6 changed files
with
56 additions
and
23 deletions
Show diff stats
src/core/linux/connect.c
| ... | ... | @@ -125,6 +125,7 @@ static void net_connected(H3270 *hSession, int GNUC_UNUSED(fd), LIB3270_IO_FLAG |
| 125 | 125 | |
| 126 | 126 | static int background_connect(H3270 *hSession, void *host) |
| 127 | 127 | { |
| 128 | + | |
| 128 | 129 | struct addrinfo hints; |
| 129 | 130 | struct addrinfo * result = NULL; |
| 130 | 131 | struct addrinfo * rp = NULL; |
| ... | ... | @@ -176,6 +177,7 @@ static void net_connected(H3270 *hSession, int GNUC_UNUSED(fd), LIB3270_IO_FLAG |
| 176 | 177 | struct resolver host; |
| 177 | 178 | memset(&host,0,sizeof(host)); |
| 178 | 179 | |
| 180 | + // Connect to host | |
| 179 | 181 | if(lib3270_run_task(hSession, background_connect, &host) || hSession->sock < 0) |
| 180 | 182 | { |
| 181 | 183 | char buffer[4096]; | ... | ... |
src/core/model.c
| ... | ... | @@ -221,14 +221,6 @@ int lib3270_set_model(H3270 *hSession, const char *model) |
| 221 | 221 | |
| 222 | 222 | trace("Model_number: %d",model_number); |
| 223 | 223 | |
| 224 | - if (hSession->termname != CN) | |
| 225 | - hSession->termtype = hSession->termname; | |
| 226 | - else | |
| 227 | - hSession->termtype = hSession->full_model_name; | |
| 228 | - | |
| 229 | - trace("Termtype: %s",hSession->termtype); | |
| 230 | - | |
| 231 | - | |
| 232 | 224 | // Check for oversize |
| 233 | 225 | char junk; |
| 234 | 226 | int ovc, ovr; | ... | ... |
src/core/properties/string.c
| ... | ... | @@ -44,6 +44,16 @@ |
| 44 | 44 | return lib3270_get_revision(); |
| 45 | 45 | } |
| 46 | 46 | |
| 47 | + static const char * lib3270_get_termtype(const H3270 *hSession) | |
| 48 | + { | |
| 49 | + return hSession->termtype; | |
| 50 | + } | |
| 51 | + | |
| 52 | + static const char * lib3270_get_termname(const H3270 *hSession) | |
| 53 | + { | |
| 54 | + return hSession->termname; | |
| 55 | + } | |
| 56 | + | |
| 47 | 57 | LIB3270_EXPORT const LIB3270_STRING_PROPERTY * lib3270_get_string_properties_list(void) |
| 48 | 58 | { |
| 49 | 59 | static const LIB3270_STRING_PROPERTY properties[] = { |
| ... | ... | @@ -70,13 +80,27 @@ |
| 70 | 80 | }, |
| 71 | 81 | |
| 72 | 82 | { |
| 73 | - "host_type", // Property name. | |
| 83 | + "hosttype", // Property name. | |
| 74 | 84 | N_( "Host type name" ), // Property description. |
| 75 | 85 | lib3270_get_host_type_name, // Get value. |
| 76 | 86 | lib3270_set_host_type_by_name // Set value. |
| 77 | 87 | }, |
| 78 | 88 | |
| 79 | 89 | { |
| 90 | + "termtype", // Property name. | |
| 91 | + N_( "Terminal type" ), // Property description. | |
| 92 | + lib3270_get_termtype, // Get value. | |
| 93 | + NULL // Set value. | |
| 94 | + }, | |
| 95 | + | |
| 96 | + { | |
| 97 | + "termname", // Property name. | |
| 98 | + N_( "Terminal name" ), // Property description. | |
| 99 | + lib3270_get_termname, // Get value. | |
| 100 | + NULL // Set value. | |
| 101 | + }, | |
| 102 | + | |
| 103 | + { | |
| 80 | 104 | "host_charset", // Property name. |
| 81 | 105 | N_( "Host charset" ), // Property description. |
| 82 | 106 | lib3270_get_host_charset, // Get value. | ... | ... |
src/core/screen.c
| ... | ... | @@ -276,20 +276,28 @@ LIB3270_EXPORT unsigned int lib3270_get_max_height(const H3270 *h) |
| 276 | 276 | return h->max.rows; |
| 277 | 277 | } |
| 278 | 278 | |
| 279 | -void update_model_info(H3270 *session, unsigned int model, unsigned int cols, unsigned int rows) | |
| 279 | +void update_model_info(H3270 *hSession, unsigned int model, unsigned int cols, unsigned int rows) | |
| 280 | 280 | { |
| 281 | - if(model == session->model_num && session->max.rows == rows && session->max.cols == cols) | |
| 281 | + if(model == hSession->model_num && hSession->max.rows == rows && hSession->max.cols == cols) | |
| 282 | 282 | return; |
| 283 | 283 | |
| 284 | - session->max.cols = cols; | |
| 285 | - session->max.rows = rows; | |
| 286 | - session->model_num = model; | |
| 284 | + hSession->max.cols = cols; | |
| 285 | + hSession->max.rows = rows; | |
| 286 | + hSession->model_num = model; | |
| 287 | 287 | |
| 288 | 288 | /* Update the model name. */ |
| 289 | - (void) sprintf(session->model_name, "327%c-%d%s",session->m3279 ? '9' : '8',session->model_num,session->extended ? "-E" : ""); | |
| 289 | + (void) sprintf(hSession->model_name, "327%c-%d%s",hSession->m3279 ? '9' : '8',hSession->model_num,hSession->extended ? "-E" : ""); | |
| 290 | 290 | |
| 291 | - trace("%s: %p",__FUNCTION__,session->cbk.update_model); | |
| 292 | - session->cbk.update_model(session, session->model_name,session->model_num,rows,cols); | |
| 291 | + if (hSession->termname != CN) | |
| 292 | + hSession->termtype = hSession->termname; | |
| 293 | + else if(hSession->oversize.rows || hSession->oversize.cols) | |
| 294 | + hSession->termtype = "IBM-DYNAMIC"; | |
| 295 | + else | |
| 296 | + hSession->termtype = hSession->full_model_name; | |
| 297 | + | |
| 298 | + trace("Termtype: %s",hSession->termtype); | |
| 299 | + | |
| 300 | + hSession->cbk.update_model(hSession, hSession->model_name,hSession->model_num,rows,cols); | |
| 293 | 301 | } |
| 294 | 302 | |
| 295 | 303 | LIB3270_EXPORT int lib3270_get_contents(H3270 *h, int first, int last, unsigned char *chr, unsigned short *attr) | ... | ... |
src/core/telnet.c
| ... | ... | @@ -566,8 +566,10 @@ void net_disconnect(H3270 *session) |
| 566 | 566 | trace_dsn(session,"SENT disconnect\n"); |
| 567 | 567 | |
| 568 | 568 | /* Restore terminal type to its default. */ |
| 569 | + /* | |
| 569 | 570 | if (session->termname == CN) |
| 570 | 571 | session->termtype = session->full_model_name; |
| 572 | + */ | |
| 571 | 573 | |
| 572 | 574 | /* We're not connected to an LU any more. */ |
| 573 | 575 | session->connected_lu = CN; |
| ... | ... | @@ -1193,11 +1195,16 @@ static void tn3270e_request(H3270 *hSession) |
| 1193 | 1195 | |
| 1194 | 1196 | net_rawout(hSession, (unsigned char *)tt_out, tb_len); |
| 1195 | 1197 | |
| 1196 | - trace_dsn(hSession,"SENT %s %s DEVICE-TYPE REQUEST %.*s%s%s %s\n", | |
| 1197 | - cmd(SB), opt(TELOPT_TN3270E), (int) strlen(hSession->termtype), tt_out + 5, | |
| 1198 | - (hSession->try_lu != CN && *hSession->try_lu) ? " CONNECT " : "", | |
| 1199 | - (hSession->try_lu != CN && *hSession->try_lu) ? hSession->try_lu : "", | |
| 1200 | - cmd(SE)); | |
| 1198 | + trace_dsn( | |
| 1199 | + hSession,"SENT %s %s DEVICE-TYPE REQUEST %.*s%s%s %s\n", | |
| 1200 | + cmd(SB), | |
| 1201 | + opt(TELOPT_TN3270E), | |
| 1202 | + (int) strlen(hSession->termtype), | |
| 1203 | + tt_out + 5, | |
| 1204 | + (hSession->try_lu != CN && *hSession->try_lu) ? " CONNECT " : "", | |
| 1205 | + (hSession->try_lu != CN && *hSession->try_lu) ? hSession->try_lu : "", | |
| 1206 | + cmd(SE) | |
| 1207 | + ); | |
| 1201 | 1208 | |
| 1202 | 1209 | lib3270_free(tt_out); |
| 1203 | 1210 | } | ... | ... |
src/include/telnetc.h
| ... | ... | @@ -41,7 +41,7 @@ LIB3270_INTERNAL void net_abort(H3270 *hSession); |
| 41 | 41 | LIB3270_INTERNAL void net_add_eor(unsigned char *buf, int len); |
| 42 | 42 | LIB3270_INTERNAL void net_break(H3270 *hSession); |
| 43 | 43 | |
| 44 | -LIB3270_INTERNAL int net_connect(H3270 *session, const char *, char *, Boolean, Boolean *, Boolean *); | |
| 44 | +// LIB3270_INTERNAL int net_connect(H3270 *session, const char *, char *, Boolean, Boolean *, Boolean *); | |
| 45 | 45 | LIB3270_INTERNAL int net_reconnect(H3270 *hSession, int seconds); |
| 46 | 46 | |
| 47 | 47 | LIB3270_INTERNAL void net_disconnect(H3270 *session); | ... | ... |