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 | 238 | LIB3270_EXPORT int lib3270_set_luname(H3270 *hSession, const char *luname) |
239 | 239 | { |
240 | 240 | FAIL_IF_ONLINE(hSession); |
241 | - strncpy(hSession->luname,luname,LIB3270_LUNAME_LENGTH); | |
241 | + strncpy(hSession->lu.name,luname,LIB3270_LUNAME_LENGTH); | |
242 | 242 | return 0; |
243 | 243 | } |
244 | 244 | |
... | ... | @@ -422,7 +422,7 @@ LIB3270_EXPORT const char * lib3270_get_host(const H3270 *h) |
422 | 422 | |
423 | 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 | 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 | 161 | #endif /*]*/ |
162 | 162 | |
163 | 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 | 166 | #if defined(_WIN32) |
167 | 167 | if (t->ts > t_new->ts) |
... | ... | @@ -177,20 +177,20 @@ static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int |
177 | 177 | if (prev == TN) |
178 | 178 | { |
179 | 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 | 183 | else if (t == TN) |
184 | 184 | { |
185 | 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 | 190 | else |
191 | 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 | 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 | 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 | 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 | 323 | if(ip->fd == fd) |
324 | 324 | { |
... | ... | @@ -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 | 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 | 340 | if(ip->fd == fd) |
341 | 341 | { | ... | ... |
src/core/telnet.c
... | ... | @@ -370,10 +370,10 @@ static void setup_lus(H3270 *hSession) |
370 | 370 | int n_lus = 1; |
371 | 371 | int i; |
372 | 372 | |
373 | - hSession->connected_lu = CN; | |
373 | + hSession->lu.connected = CN; | |
374 | 374 | hSession->connected_type = CN; |
375 | 375 | |
376 | - if (!hSession->luname[0]) | |
376 | + if (!hSession->lu.name[0]) | |
377 | 377 | { |
378 | 378 | Replace(hSession->lus, NULL); |
379 | 379 | hSession->curr_lu = (char **)NULL; |
... | ... | @@ -385,7 +385,7 @@ static void setup_lus(H3270 *hSession) |
385 | 385 | * Count the commas in the LU name. That plus one is the |
386 | 386 | * number of LUs to try. |
387 | 387 | */ |
388 | - lu = hSession->luname; | |
388 | + lu = hSession->lu.name; | |
389 | 389 | while ((comma = strchr(lu, ',')) != CN) |
390 | 390 | { |
391 | 391 | n_lus++; |
... | ... | @@ -396,11 +396,11 @@ static void setup_lus(H3270 *hSession) |
396 | 396 | * Allocate enough memory to construct an argv[] array for |
397 | 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 | 401 | /* Copy each LU into the array. */ |
402 | 402 | lu = (char *)(hSession->lus + n_lus + 1); |
403 | - (void) strcpy(lu, hSession->luname); | |
403 | + (void) strcpy(lu, hSession->lu.name); | |
404 | 404 | |
405 | 405 | i = 0; |
406 | 406 | do |
... | ... | @@ -575,7 +575,7 @@ void net_disconnect(H3270 *session) |
575 | 575 | */ |
576 | 576 | |
577 | 577 | /* We're not connected to an LU any more. */ |
578 | - session->connected_lu = CN; | |
578 | + session->lu.connected = CN; | |
579 | 579 | status_lu(session,CN); |
580 | 580 | |
581 | 581 | } |
... | ... | @@ -1094,12 +1094,12 @@ static int telnet_fsm(H3270 *hSession, unsigned char c) |
1094 | 1094 | if (hSession->try_lu != CN && *hSession->try_lu) |
1095 | 1095 | { |
1096 | 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 | 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 | 1104 | tb_len = 4 + tt_len + 2; |
1105 | 1105 | tt_out = lib3270_malloc(tb_len + 1); |
... | ... | @@ -1304,10 +1304,10 @@ static int tn3270e_negotiate(H3270 *hSession) |
1304 | 1304 | if (snlen) { |
1305 | 1305 | if (snlen > LIB3270_LU_MAX) |
1306 | 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 | 1313 | /* Tell them what we can do. */ | ... | ... |
src/include/lib3270-internals.h
... | ... | @@ -94,8 +94,6 @@ |
94 | 94 | // |
95 | 95 | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) |
96 | 96 | |
97 | -// #define unused __attribute__((__unused__)) | |
98 | - | |
99 | 97 | #define GNUC_UNUSED \ |
100 | 98 | __attribute__((__unused__)) |
101 | 99 | |
... | ... | @@ -131,7 +129,9 @@ |
131 | 129 | #define RECONNECT_MS 2000 /**< @brief 2 sec before reconnecting to host. */ |
132 | 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 | 135 | enum iaction { |
136 | 136 | IA_STRING, IA_PASTE, IA_REDRAW, |
137 | 137 | IA_KEYPAD, IA_DEFAULT, IA_KEY, |
... | ... | @@ -231,7 +231,9 @@ struct toggle_name { |
231 | 231 | #define PT_ON_THE_SPOT "OnTheSpot" |
232 | 232 | #endif /*]*/ |
233 | 233 | |
234 | -/** input key type */ | |
234 | +/** | |
235 | + * @brief input key type | |
236 | + */ | |
235 | 237 | enum keytype |
236 | 238 | { |
237 | 239 | KT_STD, |
... | ... | @@ -250,7 +252,9 @@ LIB3270_INTERNAL struct _ansictl |
250 | 252 | char vlnext; |
251 | 253 | } ansictl; |
252 | 254 | |
253 | -/** @brief Extended attributes */ | |
255 | +/** | |
256 | + * @brief Extended attributes | |
257 | + */ | |
254 | 258 | struct lib3270_ea |
255 | 259 | { |
256 | 260 | unsigned char cc; ///< @brief EBCDIC or ASCII character code |
... | ... | @@ -389,9 +393,6 @@ struct _h3270 |
389 | 393 | |
390 | 394 | // Network & Termtype |
391 | 395 | char * connected_type; |
392 | - char * connected_lu; | |
393 | - char luname[LIB3270_LUNAME_LENGTH+1]; | |
394 | - | |
395 | 396 | char full_model_name[LIB3270_FULL_MODEL_NAME_LENGTH+1]; |
396 | 397 | char * model_name; |
397 | 398 | unsigned int model_num; |
... | ... | @@ -492,25 +493,39 @@ struct _h3270 |
492 | 493 | int ns_bsent; |
493 | 494 | int ns_rsent; |
494 | 495 | struct timeval ds_ts; |
495 | - unsigned long e_funcs; /**< @brief negotiated TN3270E functions */ | |
496 | 496 | unsigned short e_xmit_seq; /**< @brief transmit sequence number */ |
497 | 497 | int response_required; |
498 | - int tn3270e_bound; | |
499 | - int tn3270e_negotiated; | |
500 | 498 | int ansi_data; |
501 | 499 | int lnext; |
502 | 500 | int backslashed; |
503 | 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 | 515 | char **curr_lu; |
506 | 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 | 526 | char reported_type[LIB3270_LU_MAX+1]; |
513 | 527 | |
528 | + // TN3270e | |
514 | 529 | enum |
515 | 530 | { |
516 | 531 | E_NONE, |
... | ... | @@ -519,10 +534,14 @@ struct _h3270 |
519 | 534 | E_SSCP |
520 | 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 | 542 | unsigned char * lbuf; /**< @brief line-mode input buffer */ |
523 | 543 | unsigned char * lbptr; |
524 | 544 | |
525 | - | |
526 | 545 | // 3270 input buffer |
527 | 546 | unsigned char * ibptr; |
528 | 547 | ... | ... |