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,6 +125,7 @@ static void net_connected(H3270 *hSession, int GNUC_UNUSED(fd), LIB3270_IO_FLAG | ||
| 125 | 125 | ||
| 126 | static int background_connect(H3270 *hSession, void *host) | 126 | static int background_connect(H3270 *hSession, void *host) |
| 127 | { | 127 | { |
| 128 | + | ||
| 128 | struct addrinfo hints; | 129 | struct addrinfo hints; |
| 129 | struct addrinfo * result = NULL; | 130 | struct addrinfo * result = NULL; |
| 130 | struct addrinfo * rp = NULL; | 131 | struct addrinfo * rp = NULL; |
| @@ -176,6 +177,7 @@ static void net_connected(H3270 *hSession, int GNUC_UNUSED(fd), LIB3270_IO_FLAG | @@ -176,6 +177,7 @@ static void net_connected(H3270 *hSession, int GNUC_UNUSED(fd), LIB3270_IO_FLAG | ||
| 176 | struct resolver host; | 177 | struct resolver host; |
| 177 | memset(&host,0,sizeof(host)); | 178 | memset(&host,0,sizeof(host)); |
| 178 | 179 | ||
| 180 | + // Connect to host | ||
| 179 | if(lib3270_run_task(hSession, background_connect, &host) || hSession->sock < 0) | 181 | if(lib3270_run_task(hSession, background_connect, &host) || hSession->sock < 0) |
| 180 | { | 182 | { |
| 181 | char buffer[4096]; | 183 | char buffer[4096]; |
src/core/model.c
| @@ -221,14 +221,6 @@ int lib3270_set_model(H3270 *hSession, const char *model) | @@ -221,14 +221,6 @@ int lib3270_set_model(H3270 *hSession, const char *model) | ||
| 221 | 221 | ||
| 222 | trace("Model_number: %d",model_number); | 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 | // Check for oversize | 224 | // Check for oversize |
| 233 | char junk; | 225 | char junk; |
| 234 | int ovc, ovr; | 226 | int ovc, ovr; |
src/core/properties/string.c
| @@ -44,6 +44,16 @@ | @@ -44,6 +44,16 @@ | ||
| 44 | return lib3270_get_revision(); | 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 | LIB3270_EXPORT const LIB3270_STRING_PROPERTY * lib3270_get_string_properties_list(void) | 57 | LIB3270_EXPORT const LIB3270_STRING_PROPERTY * lib3270_get_string_properties_list(void) |
| 48 | { | 58 | { |
| 49 | static const LIB3270_STRING_PROPERTY properties[] = { | 59 | static const LIB3270_STRING_PROPERTY properties[] = { |
| @@ -70,13 +80,27 @@ | @@ -70,13 +80,27 @@ | ||
| 70 | }, | 80 | }, |
| 71 | 81 | ||
| 72 | { | 82 | { |
| 73 | - "host_type", // Property name. | 83 | + "hosttype", // Property name. |
| 74 | N_( "Host type name" ), // Property description. | 84 | N_( "Host type name" ), // Property description. |
| 75 | lib3270_get_host_type_name, // Get value. | 85 | lib3270_get_host_type_name, // Get value. |
| 76 | lib3270_set_host_type_by_name // Set value. | 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 | "host_charset", // Property name. | 104 | "host_charset", // Property name. |
| 81 | N_( "Host charset" ), // Property description. | 105 | N_( "Host charset" ), // Property description. |
| 82 | lib3270_get_host_charset, // Get value. | 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,20 +276,28 @@ LIB3270_EXPORT unsigned int lib3270_get_max_height(const H3270 *h) | ||
| 276 | return h->max.rows; | 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 | return; | 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 | /* Update the model name. */ | 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 | LIB3270_EXPORT int lib3270_get_contents(H3270 *h, int first, int last, unsigned char *chr, unsigned short *attr) | 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,8 +566,10 @@ void net_disconnect(H3270 *session) | ||
| 566 | trace_dsn(session,"SENT disconnect\n"); | 566 | trace_dsn(session,"SENT disconnect\n"); |
| 567 | 567 | ||
| 568 | /* Restore terminal type to its default. */ | 568 | /* Restore terminal type to its default. */ |
| 569 | + /* | ||
| 569 | if (session->termname == CN) | 570 | if (session->termname == CN) |
| 570 | session->termtype = session->full_model_name; | 571 | session->termtype = session->full_model_name; |
| 572 | + */ | ||
| 571 | 573 | ||
| 572 | /* We're not connected to an LU any more. */ | 574 | /* We're not connected to an LU any more. */ |
| 573 | session->connected_lu = CN; | 575 | session->connected_lu = CN; |
| @@ -1193,11 +1195,16 @@ static void tn3270e_request(H3270 *hSession) | @@ -1193,11 +1195,16 @@ static void tn3270e_request(H3270 *hSession) | ||
| 1193 | 1195 | ||
| 1194 | net_rawout(hSession, (unsigned char *)tt_out, tb_len); | 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 | lib3270_free(tt_out); | 1209 | lib3270_free(tt_out); |
| 1203 | } | 1210 | } |
src/include/telnetc.h
| @@ -41,7 +41,7 @@ LIB3270_INTERNAL void net_abort(H3270 *hSession); | @@ -41,7 +41,7 @@ LIB3270_INTERNAL void net_abort(H3270 *hSession); | ||
| 41 | LIB3270_INTERNAL void net_add_eor(unsigned char *buf, int len); | 41 | LIB3270_INTERNAL void net_add_eor(unsigned char *buf, int len); |
| 42 | LIB3270_INTERNAL void net_break(H3270 *hSession); | 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 | LIB3270_INTERNAL int net_reconnect(H3270 *hSession, int seconds); | 45 | LIB3270_INTERNAL int net_reconnect(H3270 *hSession, int seconds); |
| 46 | 46 | ||
| 47 | LIB3270_INTERNAL void net_disconnect(H3270 *session); | 47 | LIB3270_INTERNAL void net_disconnect(H3270 *session); |