Commit 3f46e593bdff429b8de3a27fc57fa08b3104320d
1 parent
229656b1
Exists in
master
and in
3 other branches
Adjustments in the session structure.
Showing
4 changed files
with
64 additions
and
45 deletions
Show diff stats
src/core/host.c
@@ -238,7 +238,7 @@ static void update_host(H3270 *h) | @@ -238,7 +238,7 @@ static void update_host(H3270 *h) | ||
238 | LIB3270_EXPORT int lib3270_set_luname(H3270 *hSession, const char *luname) | 238 | LIB3270_EXPORT int lib3270_set_luname(H3270 *hSession, const char *luname) |
239 | { | 239 | { |
240 | FAIL_IF_ONLINE(hSession); | 240 | FAIL_IF_ONLINE(hSession); |
241 | - strncpy(hSession->luname,luname,LIB3270_LUNAME_LENGTH); | 241 | + strncpy(hSession->lu.name,luname,LIB3270_LUNAME_LENGTH); |
242 | return 0; | 242 | return 0; |
243 | } | 243 | } |
244 | 244 | ||
@@ -422,7 +422,7 @@ LIB3270_EXPORT const char * lib3270_get_host(const H3270 *h) | @@ -422,7 +422,7 @@ LIB3270_EXPORT const char * lib3270_get_host(const H3270 *h) | ||
422 | 422 | ||
423 | LIB3270_EXPORT const char * lib3270_get_luname(const H3270 *h) | 423 | LIB3270_EXPORT const char * lib3270_get_luname(const H3270 *h) |
424 | { | 424 | { |
425 | - return h->connected_lu; | 425 | + return h->lu.connected; |
426 | } | 426 | } |
427 | 427 | ||
428 | LIB3270_EXPORT int lib3270_has_active_script(const H3270 *h) | 428 | LIB3270_EXPORT int lib3270_has_active_script(const H3270 *h) |
src/core/iocalls.c
@@ -161,7 +161,7 @@ static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int | @@ -161,7 +161,7 @@ static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int | ||
161 | #endif /*]*/ | 161 | #endif /*]*/ |
162 | 162 | ||
163 | /* Find where to insert this item. */ | 163 | /* Find where to insert this item. */ |
164 | - for (t = (timeout_t *) session->timeouts.first; t != TN; t = t->next) | 164 | + for (t = (timeout_t *) session->timeouts.first; t != TN; t = (timeout_t *) t->next) |
165 | { | 165 | { |
166 | #if defined(_WIN32) | 166 | #if defined(_WIN32) |
167 | if (t->ts > t_new->ts) | 167 | if (t->ts > t_new->ts) |
@@ -177,20 +177,20 @@ static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int | @@ -177,20 +177,20 @@ static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int | ||
177 | if (prev == TN) | 177 | if (prev == TN) |
178 | { | 178 | { |
179 | // t_new is Front. | 179 | // t_new is Front. |
180 | - t_new->next = (timeout_t *) session->timeouts.first; | ||
181 | - session->timeouts.first = t_new; | 180 | + t_new->next = session->timeouts.first; |
181 | + session->timeouts.first = (struct lib3270_linked_list_node *) t_new; | ||
182 | } | 182 | } |
183 | else if (t == TN) | 183 | else if (t == TN) |
184 | { | 184 | { |
185 | // t_new is Rear. | 185 | // t_new is Rear. |
186 | - t_new->next = TN; | ||
187 | - prev->next = t_new; | ||
188 | - session->timeouts.last = (timeout_t *) t_new; | 186 | + t_new->next = NULL; |
187 | + prev->next = (struct lib3270_linked_list_node *) t_new; | ||
188 | + session->timeouts.last = (struct lib3270_linked_list_node *) t_new; | ||
189 | } | 189 | } |
190 | else | 190 | else |
191 | { // t_new is Middle. | 191 | { // t_new is Middle. |
192 | - t_new->next = t; | ||
193 | - prev->next = t_new; | 192 | + t_new->next = (struct lib3270_linked_list_node *) t; |
193 | + prev->next = (struct lib3270_linked_list_node *) t_new; | ||
194 | } | 194 | } |
195 | 195 | ||
196 | trace("Timer %p added with value %ld",t_new,interval_ms); | 196 | trace("Timer %p added with value %ld",t_new,interval_ms); |
@@ -314,11 +314,11 @@ LIB3270_EXPORT void lib3270_set_poll_state(H3270 *session, void *id, int enabled | @@ -314,11 +314,11 @@ LIB3270_EXPORT void lib3270_set_poll_state(H3270 *session, void *id, int enabled | ||
314 | } | 314 | } |
315 | } | 315 | } |
316 | 316 | ||
317 | -LIB3270_EXPORT void lib3270_remove_poll_fd(H3270 *session, int fd) | 317 | +LIB3270_EXPORT void lib3270_remove_poll_fd(H3270 *session, int fd) |
318 | { | 318 | { |
319 | input_t *ip; | 319 | input_t *ip; |
320 | 320 | ||
321 | - for (ip = (input_t *) session->input.list.first; ip; ip = ip->next) | 321 | + for (ip = (input_t *) session->input.list.first; ip; ip = (input_t *) ip->next) |
322 | { | 322 | { |
323 | if(ip->fd == fd) | 323 | if(ip->fd == fd) |
324 | { | 324 | { |
@@ -331,11 +331,11 @@ LIB3270_EXPORT void lib3270_remove_poll_fd(H3270 *session, int fd) | @@ -331,11 +331,11 @@ LIB3270_EXPORT void lib3270_remove_poll_fd(H3270 *session, int fd) | ||
331 | 331 | ||
332 | } | 332 | } |
333 | 333 | ||
334 | -LIB3270_EXPORT void lib3270_update_poll_fd(H3270 *session, int fd, LIB3270_IO_FLAG flag) | 334 | +LIB3270_EXPORT void lib3270_update_poll_fd(H3270 *session, int fd, LIB3270_IO_FLAG flag) |
335 | { | 335 | { |
336 | input_t *ip; | 336 | input_t *ip; |
337 | 337 | ||
338 | - for (ip = (input_t *) session->input.list.first; ip; ip = ip->next) | 338 | + for (ip = (input_t *) session->input.list.first; ip; ip = (input_t *) ip->next) |
339 | { | 339 | { |
340 | if(ip->fd == fd) | 340 | if(ip->fd == fd) |
341 | { | 341 | { |
src/core/telnet.c
@@ -370,10 +370,10 @@ static void setup_lus(H3270 *hSession) | @@ -370,10 +370,10 @@ static void setup_lus(H3270 *hSession) | ||
370 | int n_lus = 1; | 370 | int n_lus = 1; |
371 | int i; | 371 | int i; |
372 | 372 | ||
373 | - hSession->connected_lu = CN; | 373 | + hSession->lu.connected = CN; |
374 | hSession->connected_type = CN; | 374 | hSession->connected_type = CN; |
375 | 375 | ||
376 | - if (!hSession->luname[0]) | 376 | + if (!hSession->lu.name[0]) |
377 | { | 377 | { |
378 | Replace(hSession->lus, NULL); | 378 | Replace(hSession->lus, NULL); |
379 | hSession->curr_lu = (char **)NULL; | 379 | hSession->curr_lu = (char **)NULL; |
@@ -385,7 +385,7 @@ static void setup_lus(H3270 *hSession) | @@ -385,7 +385,7 @@ static void setup_lus(H3270 *hSession) | ||
385 | * Count the commas in the LU name. That plus one is the | 385 | * Count the commas in the LU name. That plus one is the |
386 | * number of LUs to try. | 386 | * number of LUs to try. |
387 | */ | 387 | */ |
388 | - lu = hSession->luname; | 388 | + lu = hSession->lu.name; |
389 | while ((comma = strchr(lu, ',')) != CN) | 389 | while ((comma = strchr(lu, ',')) != CN) |
390 | { | 390 | { |
391 | n_lus++; | 391 | n_lus++; |
@@ -396,11 +396,11 @@ static void setup_lus(H3270 *hSession) | @@ -396,11 +396,11 @@ static void setup_lus(H3270 *hSession) | ||
396 | * Allocate enough memory to construct an argv[] array for | 396 | * Allocate enough memory to construct an argv[] array for |
397 | * the LUs. | 397 | * the LUs. |
398 | */ | 398 | */ |
399 | - Replace(hSession->lus,(char **)lib3270_malloc((n_lus+1) * sizeof(char *) + strlen(hSession->luname) + 1)); | 399 | + Replace(hSession->lus,(char **)lib3270_malloc((n_lus+1) * sizeof(char *) + strlen(hSession->lu.name) + 1)); |
400 | 400 | ||
401 | /* Copy each LU into the array. */ | 401 | /* Copy each LU into the array. */ |
402 | lu = (char *)(hSession->lus + n_lus + 1); | 402 | lu = (char *)(hSession->lus + n_lus + 1); |
403 | - (void) strcpy(lu, hSession->luname); | 403 | + (void) strcpy(lu, hSession->lu.name); |
404 | 404 | ||
405 | i = 0; | 405 | i = 0; |
406 | do | 406 | do |
@@ -575,7 +575,7 @@ void net_disconnect(H3270 *session) | @@ -575,7 +575,7 @@ void net_disconnect(H3270 *session) | ||
575 | */ | 575 | */ |
576 | 576 | ||
577 | /* We're not connected to an LU any more. */ | 577 | /* We're not connected to an LU any more. */ |
578 | - session->connected_lu = CN; | 578 | + session->lu.connected = CN; |
579 | status_lu(session,CN); | 579 | status_lu(session,CN); |
580 | 580 | ||
581 | } | 581 | } |
@@ -1094,12 +1094,12 @@ static int telnet_fsm(H3270 *hSession, unsigned char c) | @@ -1094,12 +1094,12 @@ static int telnet_fsm(H3270 *hSession, unsigned char c) | ||
1094 | if (hSession->try_lu != CN && *hSession->try_lu) | 1094 | if (hSession->try_lu != CN && *hSession->try_lu) |
1095 | { | 1095 | { |
1096 | tt_len += strlen(hSession->try_lu) + 1; | 1096 | tt_len += strlen(hSession->try_lu) + 1; |
1097 | - hSession->connected_lu = hSession->try_lu; | 1097 | + hSession->lu.connected = hSession->try_lu; |
1098 | } | 1098 | } |
1099 | else | 1099 | else |
1100 | - hSession->connected_lu = CN; | 1100 | + hSession->lu.connected = CN; |
1101 | 1101 | ||
1102 | - status_lu(hSession,hSession->connected_lu); | 1102 | + status_lu(hSession,hSession->lu.connected); |
1103 | 1103 | ||
1104 | tb_len = 4 + tt_len + 2; | 1104 | tb_len = 4 + tt_len + 2; |
1105 | tt_out = lib3270_malloc(tb_len + 1); | 1105 | tt_out = lib3270_malloc(tb_len + 1); |
@@ -1304,10 +1304,10 @@ static int tn3270e_negotiate(H3270 *hSession) | @@ -1304,10 +1304,10 @@ static int tn3270e_negotiate(H3270 *hSession) | ||
1304 | if (snlen) { | 1304 | if (snlen) { |
1305 | if (snlen > LIB3270_LU_MAX) | 1305 | if (snlen > LIB3270_LU_MAX) |
1306 | snlen = LIB3270_LU_MAX; | 1306 | snlen = LIB3270_LU_MAX; |
1307 | - (void)strncpy(hSession->reported_lu,(char *)&hSession->sbbuf[3+tnlen+1], snlen); | ||
1308 | - hSession->reported_lu[snlen] = '\0'; | ||
1309 | - hSession->connected_lu = hSession->reported_lu; | ||
1310 | - status_lu(hSession,hSession->connected_lu); | 1307 | + (void)strncpy(hSession->lu.reported,(char *)&hSession->sbbuf[3+tnlen+1], snlen); |
1308 | + hSession->lu.reported[snlen] = '\0'; | ||
1309 | + hSession->lu.connected = hSession->lu.reported; | ||
1310 | + status_lu(hSession,hSession->lu.connected); | ||
1311 | } | 1311 | } |
1312 | 1312 | ||
1313 | /* Tell them what we can do. */ | 1313 | /* Tell them what we can do. */ |
src/include/lib3270-internals.h
@@ -94,8 +94,6 @@ | @@ -94,8 +94,6 @@ | ||
94 | // | 94 | // |
95 | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) | 95 | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) |
96 | 96 | ||
97 | -// #define unused __attribute__((__unused__)) | ||
98 | - | ||
99 | #define GNUC_UNUSED \ | 97 | #define GNUC_UNUSED \ |
100 | __attribute__((__unused__)) | 98 | __attribute__((__unused__)) |
101 | 99 | ||
@@ -131,7 +129,9 @@ | @@ -131,7 +129,9 @@ | ||
131 | #define RECONNECT_MS 2000 /**< @brief 2 sec before reconnecting to host. */ | 129 | #define RECONNECT_MS 2000 /**< @brief 2 sec before reconnecting to host. */ |
132 | #define RECONNECT_ERR_MS 5000 /**< @brief 5 sec before reconnecting to host when failed */ | 130 | #define RECONNECT_ERR_MS 5000 /**< @brief 5 sec before reconnecting to host when failed */ |
133 | 131 | ||
134 | -/* types of internal actions */ | 132 | +/** |
133 | + * @brief types of internal actions | ||
134 | + */ | ||
135 | enum iaction { | 135 | enum iaction { |
136 | IA_STRING, IA_PASTE, IA_REDRAW, | 136 | IA_STRING, IA_PASTE, IA_REDRAW, |
137 | IA_KEYPAD, IA_DEFAULT, IA_KEY, | 137 | IA_KEYPAD, IA_DEFAULT, IA_KEY, |
@@ -231,7 +231,9 @@ struct toggle_name { | @@ -231,7 +231,9 @@ struct toggle_name { | ||
231 | #define PT_ON_THE_SPOT "OnTheSpot" | 231 | #define PT_ON_THE_SPOT "OnTheSpot" |
232 | #endif /*]*/ | 232 | #endif /*]*/ |
233 | 233 | ||
234 | -/** input key type */ | 234 | +/** |
235 | + * @brief input key type | ||
236 | + */ | ||
235 | enum keytype | 237 | enum keytype |
236 | { | 238 | { |
237 | KT_STD, | 239 | KT_STD, |
@@ -250,7 +252,9 @@ LIB3270_INTERNAL struct _ansictl | @@ -250,7 +252,9 @@ LIB3270_INTERNAL struct _ansictl | ||
250 | char vlnext; | 252 | char vlnext; |
251 | } ansictl; | 253 | } ansictl; |
252 | 254 | ||
253 | -/** @brief Extended attributes */ | 255 | +/** |
256 | + * @brief Extended attributes | ||
257 | + */ | ||
254 | struct lib3270_ea | 258 | struct lib3270_ea |
255 | { | 259 | { |
256 | unsigned char cc; ///< @brief EBCDIC or ASCII character code | 260 | unsigned char cc; ///< @brief EBCDIC or ASCII character code |
@@ -389,9 +393,6 @@ struct _h3270 | @@ -389,9 +393,6 @@ struct _h3270 | ||
389 | 393 | ||
390 | // Network & Termtype | 394 | // Network & Termtype |
391 | char * connected_type; | 395 | char * connected_type; |
392 | - char * connected_lu; | ||
393 | - char luname[LIB3270_LUNAME_LENGTH+1]; | ||
394 | - | ||
395 | char full_model_name[LIB3270_FULL_MODEL_NAME_LENGTH+1]; | 396 | char full_model_name[LIB3270_FULL_MODEL_NAME_LENGTH+1]; |
396 | char * model_name; | 397 | char * model_name; |
397 | unsigned int model_num; | 398 | unsigned int model_num; |
@@ -492,25 +493,39 @@ struct _h3270 | @@ -492,25 +493,39 @@ struct _h3270 | ||
492 | int ns_bsent; | 493 | int ns_bsent; |
493 | int ns_rsent; | 494 | int ns_rsent; |
494 | struct timeval ds_ts; | 495 | struct timeval ds_ts; |
495 | - unsigned long e_funcs; /**< @brief negotiated TN3270E functions */ | ||
496 | unsigned short e_xmit_seq; /**< @brief transmit sequence number */ | 496 | unsigned short e_xmit_seq; /**< @brief transmit sequence number */ |
497 | int response_required; | 497 | int response_required; |
498 | - int tn3270e_bound; | ||
499 | - int tn3270e_negotiated; | ||
500 | int ansi_data; | 498 | int ansi_data; |
501 | int lnext; | 499 | int lnext; |
502 | int backslashed; | 500 | int backslashed; |
503 | char plu_name[LIB3270_BIND_PLU_NAME_MAX+1]; | 501 | char plu_name[LIB3270_BIND_PLU_NAME_MAX+1]; |
504 | - char **lus; | 502 | + |
503 | + /* | ||
504 | + /// @brief Proxy | ||
505 | + struct | ||
506 | + { | ||
507 | + int type; | ||
508 | + char * host; | ||
509 | + char * portname; | ||
510 | + unsigned short port; | ||
511 | + } proxy; | ||
512 | + */ | ||
513 | + | ||
514 | + /// @brief LU | ||
505 | char **curr_lu; | 515 | char **curr_lu; |
506 | char * try_lu; | 516 | char * try_lu; |
507 | - int proxy_type; | ||
508 | - char * proxy_host; | ||
509 | - char * proxy_portname; | ||
510 | - unsigned short proxy_port; | ||
511 | - char reported_lu[LIB3270_LU_MAX+1]; | 517 | + char **lus; ///< @brief Array with the LU names to try. |
518 | + struct | ||
519 | + { | ||
520 | + char reported[LIB3270_LU_MAX+1]; | ||
521 | + char * connected; | ||
522 | + char name[LIB3270_LUNAME_LENGTH+1]; | ||
523 | + | ||
524 | + } lu; | ||
525 | + | ||
512 | char reported_type[LIB3270_LU_MAX+1]; | 526 | char reported_type[LIB3270_LU_MAX+1]; |
513 | 527 | ||
528 | + // TN3270e | ||
514 | enum | 529 | enum |
515 | { | 530 | { |
516 | E_NONE, | 531 | E_NONE, |
@@ -519,10 +534,14 @@ struct _h3270 | @@ -519,10 +534,14 @@ struct _h3270 | ||
519 | E_SSCP | 534 | E_SSCP |
520 | } tn3270e_submode; | 535 | } tn3270e_submode; |
521 | 536 | ||
537 | + unsigned long e_funcs; /**< @brief negotiated TN3270E functions */ | ||
538 | + int tn3270e_bound; | ||
539 | + int tn3270e_negotiated; | ||
540 | + | ||
541 | + // Line mode | ||
522 | unsigned char * lbuf; /**< @brief line-mode input buffer */ | 542 | unsigned char * lbuf; /**< @brief line-mode input buffer */ |
523 | unsigned char * lbptr; | 543 | unsigned char * lbptr; |
524 | 544 | ||
525 | - | ||
526 | // 3270 input buffer | 545 | // 3270 input buffer |
527 | unsigned char * ibptr; | 546 | unsigned char * ibptr; |
528 | 547 |