Commit 07217a0d10aaeda999e2a13cf2b7ee5e07a0cdef

Authored by perry.werneck@gmail.com
1 parent eb7b2c5c

Atualizando transferência de arquivos

api.h
... ... @@ -223,18 +223,15 @@
223 223 #define FT_ALLOCATION_UNITS_AVBLOCK 0x3000
224 224 #define FT_ALLOCATION_UNITS_MASK FT_ALLOCATION_UNITS_AVBLOCK
225 225  
226   - enum ft_state
227   - {
228   - FT_NONE, /**< No transfer in progress */
229   - FT_AWAIT_ACK, /**< IND$FILE sent, awaiting acknowledgement message */
230   - FT_RUNNING, /**< Ack received, data flowing */
231   - FT_ABORT_WAIT, /**< Awaiting chance to send an abort */
232   - FT_ABORT_SENT /**< Abort sent; awaiting response */
233   - };
  226 + #define FT_NONE LIB3270_FT_STATE_NONE
  227 + #define FT_AWAIT_ACK LIB3270_FT_STATE_AWAIT_ACK
  228 + #define FT_RUNNING LIB3270_FT_STATE_RUNNING
  229 + #define FT_ABORT_WAIT LIB3270_FT_STATE_ABORT_WAIT
  230 + #define FT_ABORT_SENT LIB3270_FT_STATE_ABORT_SENT
234 231  
235 232 // LOCAL_EXTERN int BeginFileTransfer(unsigned short flags, const char *local, const char *remote, int lrecl, int blksize, int primspace, int secspace, int dft);
236 233 LOCAL_EXTERN int CancelFileTransfer(int force);
237   - LOCAL_EXTERN enum ft_state GetFileTransferState(void);
  234 +// LOCAL_EXTERN enum ft_state GetFileTransferState(void);
238 235  
239 236 struct filetransfer_callbacks
240 237 {
... ... @@ -264,7 +261,7 @@
264 261  
265 262 #ifndef LIB3270
266 263  
267   - LOCAL_EXTERN enum ft_state QueryFTstate(void);
  264 +// LOCAL_EXTERN enum ft_state QueryFTstate(void);
268 265  
269 266 #endif
270 267  
... ...
ctlr.c
... ... @@ -2284,10 +2284,10 @@ ps_process(void)
2284 2284  
2285 2285 #if defined(X3270_FT) /*[*/
2286 2286 /* Process file transfers. */
2287   - if (ft_state != FT_NONE && /* transfer in progress */
2288   - h3270.formatted && /* screen is formatted */
2289   - !h3270.screen_alt && /* 24x80 screen */
2290   - !kybdlock && /* keyboard not locked */
  2287 + if (lib3270_get_ft_state(&h3270) != LIB3270_FT_STATE_NONE && /* transfer in progress */
  2288 + h3270.formatted && /* screen is formatted */
  2289 + !h3270.screen_alt && /* 24x80 screen */
  2290 + !kybdlock && /* keyboard not locked */
2291 2291 /* magic field */
2292 2292 h3270.ea_buf[1919].fa && FA_IS_SKIP(h3270.ea_buf[1919].fa)) {
2293 2293 ft_cut_data();
... ...
ft.c
... ... @@ -74,11 +74,11 @@ static void ft_in3270(H3270 *session, int ignored unused, void *unused);
74 74 #define BN (Boolean *)NULL
75 75  
76 76 // Globals.
77   -H3270FT *ftsession = NULL;
  77 +static H3270FT *ftsession = NULL;
78 78  
79 79 #define CHECK_FT_HANDLE(x) if(!x) x = ftsession;
80 80  
81   -enum ft_state ft_state = FT_NONE; // File transfer state
  81 +// enum ft_state ft_state = FT_NONE; // File transfer state
82 82 // char *ft_local_filename; // Local file to transfer to/from
83 83 Boolean ft_last_cr = False; // CR was last char in local file
84 84 Boolean ascii_flag = True; // Convert to ascii
... ... @@ -89,29 +89,39 @@ static Boolean ft_is_cut; // File transfer is CUT-style
89 89  
90 90 static struct timeval starting_time; // Starting time
91 91  
92   -static const struct filetransfer_callbacks *callbacks = NULL; // Callbacks to main application
  92 +// static const struct filetransfer_callbacks *callbacks = NULL; // Callbacks to main application
93 93  
94 94 #define snconcat(x,s,fmt,...) snprintf(x+strlen(x),s-strlen(x),fmt,__VA_ARGS__)
95 95  
96   -#define set_ft_state(x) ft_state = x
  96 +static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state);
  97 +
97 98  
98 99 /*---[ Implement ]-------------------------------------------------------------------------------------------------------*/
99 100  
100   - void ft_init(H3270FT *h)
  101 + static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state)
101 102 {
102   - /* Register for state changes. */
  103 + CHECK_FT_HANDLE(session);
103 104  
104   - CHECK_FT_HANDLE(h);
  105 + if(session->state == state)
  106 + return;
  107 +
  108 + session->state = state;
  109 + session->state_changed(session,state);
105 110  
106   - lib3270_register_schange(h->host, ST_CONNECT, ( void (*)(H3270 *, int, void *)) ft_connected, NULL);
107   - lib3270_register_schange(h->host, ST_3270_MODE, ( void (*)(H3270 *, int, void *)) ft_in3270, NULL);
108 111 }
109 112  
110   - enum ft_state QueryFTstate(void)
  113 + void ft_init(H3270 *session)
111 114 {
112   - return ft_state;
  115 + /* Register for state changes. */
  116 + lib3270_register_schange(session, ST_CONNECT, ( void (*)(H3270 *, int, void *)) ft_connected, NULL);
  117 + lib3270_register_schange(session, ST_3270_MODE, ( void (*)(H3270 *, int, void *)) ft_in3270, NULL);
113 118 }
114 119  
  120 +// enum ft_state QueryFTstate(void)
  121 +// {
  122 +// return ft_state;
  123 +// }
  124 +
115 125 /*
116 126 int RegisterFTCallbacks(const struct filetransfer_callbacks *cbk)
117 127 {
... ... @@ -124,18 +134,19 @@ static const struct filetransfer_callbacks *callbacks = NULL; // Callbacks to m
124 134 }
125 135 */
126 136  
  137 +/*
127 138 enum ft_state GetFileTransferState(void)
128 139 {
129 140 return ft_state;
130 141 }
  142 +*/
131 143  
132 144 LIB3270_EXPORT int lib3270_ft_cancel(H3270FT *ft, int force)
133 145 {
134   - if (ft_state == FT_RUNNING)
  146 + if (ft->state == LIB3270_FT_STATE_RUNNING)
135 147 {
136   - set_ft_state(FT_ABORT_WAIT);
137   - if(callbacks && callbacks->aborting)
138   - callbacks->aborting();
  148 + set_ft_state(ft,LIB3270_FT_STATE_ABORT_WAIT);
  149 + ft->aborting(ft);
139 150 return 0;
140 151 }
141 152  
... ... @@ -143,11 +154,42 @@ static const struct filetransfer_callbacks *callbacks = NULL; // Callbacks to m
143 154 return EBUSY;
144 155  
145 156 // Impatient user or hung host -- just clean up.
146   - ft_complete(ft, _("Cancelled by user") );
  157 + ft_complete(ft, N_("Cancelled by user") );
  158 +
  159 + return 0;
  160 + }
  161 +
  162 + static void def_complete(H3270FT *ft, const char *errmsg,unsigned long length,double kbytes_sec,const char *mode)
  163 + {
  164 +
  165 + }
  166 +
  167 + static void def_setlength(H3270FT *ft, unsigned long length)
  168 + {
  169 +
  170 + }
  171 +
  172 + static void def_update(H3270FT *ft, unsigned long length,double kbytes_sec)
  173 + {
  174 +
  175 + }
  176 +
  177 + static void def_running(H3270FT *ft, int is_cut)
  178 + {
  179 +
  180 + }
  181 +
  182 + static void def_aborting(H3270FT *ft)
  183 + {
147 184  
148   - return ECANCELED;
149 185 }
150 186  
  187 + static void def_state_changed(H3270FT *ft, LIB3270_FT_STATE state)
  188 + {
  189 +
  190 + }
  191 +
  192 +
151 193 LIB3270_EXPORT H3270FT * lib3270_ft_start(H3270 *session, LIB3270_FT_OPTION flags, const char *local, const char *remote, int lrecl, int blksize, int primspace, int secspace, int dft, const char **msg)
152 194 {
153 195 H3270FT * ftHandle = NULL;
... ... @@ -172,6 +214,14 @@ static const struct filetransfer_callbacks *callbacks = NULL; // Callbacks to m
172 214 errno = EBUSY;
173 215 return NULL;
174 216 }
  217 +
  218 + if(session->ft)
  219 + {
  220 + *msg = N_( "File transfer is already active in this session" );
  221 + errno = EBUSY;
  222 + return NULL;
  223 + }
  224 +
175 225 // Check remote file
176 226 if(!*remote)
177 227 {
... ... @@ -279,7 +329,6 @@ static const struct filetransfer_callbacks *callbacks = NULL; // Callbacks to m
279 329 (void) lib3270_emulate_input(NULL, buffer, strlen(buffer), False);
280 330  
281 331 // Get this thing started.
282   - set_ft_state(FT_AWAIT_ACK);
283 332  
284 333 ft_last_cr = False;
285 334 ft_is_cut = False;
... ... @@ -290,6 +339,15 @@ static const struct filetransfer_callbacks *callbacks = NULL; // Callbacks to m
290 339 ftHandle->sz = sizeof(H3270FT);
291 340 ftHandle->host = session;
292 341 ftHandle->ft_local_file = ft_local_file;
  342 + ftHandle->state = LIB3270_FT_STATE_AWAIT_ACK;
  343 + ftHandle->complete = def_complete;
  344 + ftHandle->setlength = def_setlength;
  345 + ftHandle->update = def_update;
  346 + ftHandle->running = def_running;
  347 + ftHandle->aborting = def_aborting;
  348 + ftHandle->state_changed = def_state_changed;
  349 +
  350 + session->ft = ftHandle;
293 351  
294 352 return ftsession = ftHandle;
295 353 }
... ... @@ -322,16 +380,18 @@ void ft_complete(H3270FT *session, const char *errmsg)
322 380 }
323 381  
324 382 // Clean up the state.
325   - set_ft_state(FT_NONE);
  383 + set_ft_state(session,FT_NONE);
326 384  
327 385 ft_update_length(session);
328 386  
329   - if(callbacks && callbacks->complete)
330   - callbacks->complete(errmsg,ft_length,kbytes_sec,ft_is_cut ? "CUT" : "DFT");
  387 + session->complete(session,errmsg,ft_length,kbytes_sec,ft_is_cut ? "CUT" : "DFT");
331 388  
332 389 if(session == ftsession)
333 390 ftsession = NULL;
334 391  
  392 + if(session->host)
  393 + session->host->ft = NULL;
  394 +
335 395 free(session);
336 396  
337 397 }
... ... @@ -355,8 +415,7 @@ void ft_update_length(H3270FT *session)
355 415  
356 416 Trace("%s",__FUNCTION__);
357 417  
358   - if(callbacks && callbacks->update)
359   - callbacks->update(ft_length,kbytes_sec);
  418 + session->update(session,ft_length,kbytes_sec);
360 419  
361 420 }
362 421  
... ... @@ -372,11 +431,10 @@ void ft_running(H3270FT *h, Boolean is_cut)
372 431  
373 432 (void) gettimeofday(&starting_time, (struct timezone *)NULL);
374 433  
375   - if (ft_state == FT_AWAIT_ACK)
376   - set_ft_state(FT_RUNNING);
  434 + if (h->state == FT_AWAIT_ACK)
  435 + set_ft_state(h,FT_RUNNING);
377 436  
378   - if(callbacks && callbacks->running)
379   - callbacks->running(is_cut);
  437 + h->running(h,is_cut);
380 438  
381 439 ft_update_length(h);
382 440  
... ... @@ -385,29 +443,37 @@ void ft_running(H3270FT *h, Boolean is_cut)
385 443 // Process a protocol-generated abort.
386 444 void ft_aborting(H3270FT *h)
387 445 {
388   - Trace("%s",__FUNCTION__);
  446 +// Trace("%s",__FUNCTION__);
389 447  
390 448 CHECK_FT_HANDLE(h);
391 449  
392   - if (ft_state == FT_RUNNING || ft_state == FT_ABORT_WAIT)
393   - set_ft_state(FT_ABORT_SENT);
  450 + if (h->state == FT_RUNNING || h->state == FT_ABORT_WAIT)
  451 + set_ft_state(h,FT_ABORT_SENT);
394 452  
395   - if(callbacks && callbacks->aborting)
396   - callbacks->aborting();
  453 + h->aborting(h);
397 454  
398 455 }
399 456  
400 457 /* Process a disconnect abort. */
401 458 static void ft_connected(H3270 *session, int ignored, void *dunno)
402 459 {
403   - if (!CONNECTED && ft_state != FT_NONE)
404   - ft_complete(ftsession,_("Host disconnected, transfer cancelled"));
  460 + if (!CONNECTED && lib3270_get_ft_state(session) != LIB3270_FT_STATE_NONE)
  461 + ft_complete(session->ft,_("Host disconnected, transfer cancelled"));
405 462 }
406 463  
407 464 /* Process an abort from no longer being in 3270 mode. */
408 465 static void ft_in3270(H3270 *session, int ignored, void *dunno)
409 466 {
410   - if (!IN_3270 && ft_state != FT_NONE)
411   - ft_complete(ftsession,_("Not in 3270 mode, transfer cancelled"));
  467 + if (!IN_3270 && lib3270_get_ft_state(session) != LIB3270_FT_STATE_NONE)
  468 + ft_complete(session->ft,_("Not in 3270 mode, transfer cancelled"));
412 469 }
413 470  
  471 +LIB3270_EXPORT LIB3270_FT_STATE lib3270_get_ft_state(H3270 *session)
  472 +{
  473 + CHECK_SESSION_HANDLE(session);
  474 +
  475 + if(!session->ft)
  476 + return LIB3270_FT_STATE_NONE;
  477 +
  478 + return ((H3270FT *) session->ft)->state;
  479 +}
... ...
ft_cut.c
... ... @@ -332,7 +332,7 @@ cut_control_code(void)
332 332 cut_xfer_in_progress = False;
333 333 cut_ack();
334 334  
335   - if (ft_state == FT_ABORT_SENT && saved_errmsg != CN)
  335 + if (lib3270_get_ft_state(&h3270) == FT_ABORT_SENT && saved_errmsg != CN)
336 336 {
337 337 buf = saved_errmsg;
338 338 saved_errmsg = CN;
... ... @@ -383,8 +383,9 @@ cut_data_request(void)
383 383 unsigned char attr;
384 384  
385 385 trace_ds("< FT DATA_REQUEST %u\n", from6(seq));
386   - if (ft_state == FT_ABORT_WAIT) {
387   - cut_abort(SC_ABORT_FILE,"%s",_("Transfer cancelled by user"));
  386 + if (lib3270_get_ft_state(&h3270) == FT_ABORT_WAIT)
  387 + {
  388 + cut_abort(SC_ABORT_FILE,"%s",N_("Transfer cancelled by user"));
388 389 return;
389 390 }
390 391  
... ... @@ -396,7 +397,7 @@ cut_data_request(void)
396 397 }
397 398  
398 399 /* Check for errors. */
399   - if (ferror(ftsession->ft_local_file)) {
  400 + if (ferror(((H3270FT *) h3270.ft)->ft_local_file)) {
400 401 int j;
401 402  
402 403 /* Clean out any data we may have written. */
... ... @@ -409,7 +410,7 @@ cut_data_request(void)
409 410 }
410 411  
411 412 /* Send special data for EOF. */
412   - if (!count && feof(ftsession->ft_local_file)) {
  413 + if (!count && feof(((H3270FT *) h3270.ft)->ft_local_file)) {
413 414 ctlr_add(O_UP_DATA, EOF_DATA1, 0);
414 415 ctlr_add(O_UP_DATA+1, EOF_DATA2, 0);
415 416 count = 2;
... ... @@ -474,7 +475,8 @@ cut_data(void)
474 475 register int i;
475 476  
476 477 trace_ds("< FT DATA\n");
477   - if (ft_state == FT_ABORT_WAIT) {
  478 + if (((H3270FT *) h3270.ft)->state == LIB3270_FT_STATE_ABORT_WAIT)
  479 + {
478 480 cut_abort(SC_ABORT_FILE,"%s",_("Transfer cancelled by user"));
479 481 return;
480 482 }
... ... @@ -499,7 +501,7 @@ cut_data(void)
499 501 return;
500 502  
501 503 /* Write it to the file. */
502   - if (fwrite((char *)cvbuf, conv_length, 1, ftsession->ft_local_file) == 0) {
  504 + if (fwrite((char *)cvbuf, conv_length, 1, ((H3270FT *) h3270.ft)->ft_local_file) == 0) {
503 505 cut_abort(SC_ABORT_FILE,_( "Error \"%s\" writing to local file (rc=%d)" ),strerror(errno),errno);
504 506 } else {
505 507 ft_length += conv_length;
... ... @@ -567,7 +569,7 @@ xlate_getc(void)
567 569 }
568 570  
569 571 /* Get the next byte from the file. */
570   - c = fgetc(ftsession->ft_local_file);
  572 + c = fgetc(((H3270FT *) h3270.ft)->ft_local_file);
571 573 if (c == EOF)
572 574 return c;
573 575 ft_length++;
... ...
ft_dft.c
... ... @@ -106,7 +106,8 @@ ft_dft_data(unsigned char *data, int length unused)
106 106 unsigned short data_length, data_type;
107 107 unsigned char *cp;
108 108  
109   - if (ft_state == FT_NONE) {
  109 + if (lib3270_get_ft_state(&h3270) == FT_NONE)
  110 + {
110 111 trace_ds(" (no transfer in progress)\n");
111 112 return;
112 113 }
... ... @@ -215,7 +216,7 @@ dft_data_insert(struct data_buffer *data_bufr)
215 216 int my_length;
216 217 unsigned char *cp;
217 218  
218   - if (!message_flag && ft_state == FT_ABORT_WAIT)
  219 + if(!message_flag && lib3270_get_ft_state(&h3270) == FT_ABORT_WAIT)
219 220 {
220 221 dft_abort(TR_DATA_INSERT, "%s", _("Transfer cancelled by user") );
221 222 return;
... ... @@ -257,7 +258,7 @@ dft_data_insert(struct data_buffer *data_bufr)
257 258 if (memcmp(msgp, END_TRANSFER, strlen(END_TRANSFER)) == 0) {
258 259 Free(msgp);
259 260 ft_complete(NULL,NULL);
260   - } else if (ft_state == FT_ABORT_SENT && abort_string != CN) {
  261 + } else if (lib3270_get_ft_state(&h3270) == FT_ABORT_SENT && abort_string != CN) {
261 262 Free(msgp);
262 263 ft_complete(NULL,abort_string);
263 264 Replace(abort_string, CN);
... ... @@ -289,7 +290,7 @@ dft_data_insert(struct data_buffer *data_bufr)
289 290  
290 291 if (l)
291 292 {
292   - rv = fwrite(s, l, (size_t)1,ftsession->ft_local_file);
  293 + rv = fwrite(s, l, (size_t)1,((H3270FT *) h3270.ft)->ft_local_file);
293 294 if (rv == 0)
294 295 break;
295 296 ft_length += l;
... ... @@ -300,7 +301,7 @@ dft_data_insert(struct data_buffer *data_bufr)
300 301 len -= l;
301 302 }
302 303 } else {
303   - rv = fwrite((char *)data_bufr->data, my_length,(size_t)1, ftsession->ft_local_file);
  304 + rv = fwrite((char *)data_bufr->data, my_length,(size_t)1, ((H3270FT *) h3270.ft)->ft_local_file);
304 305 ft_length += my_length;
305 306 }
306 307  
... ... @@ -310,7 +311,7 @@ dft_data_insert(struct data_buffer *data_bufr)
310 311 }
311 312  
312 313 /* Add up amount transferred. */
313   - ft_update_length(ftsession);
  314 + ft_update_length((H3270FT *) h3270.ft);
314 315 }
315 316  
316 317 /* Send an acknowledgement frame back. */
... ... @@ -346,7 +347,7 @@ dft_get_request(void)
346 347  
347 348 trace_ds(" Get\n");
348 349  
349   - if (!message_flag && ft_state == FT_ABORT_WAIT) {
  350 + if (!message_flag && lib3270_get_ft_state(&h3270) == FT_ABORT_WAIT) {
350 351 dft_abort(TR_GET_REQ, _( "Transfer cancelled by user" ) );
351 352 return;
352 353 }
... ... @@ -361,7 +362,7 @@ dft_get_request(void)
361 362 int c;
362 363  
363 364 /* Read one byte and do CR/LF translation. */
364   - c = fgetc(ftsession->ft_local_file);
  365 + c = fgetc(((H3270FT *) h3270.ft)->ft_local_file);
365 366 if (c == EOF) {
366 367 break;
367 368 }
... ... @@ -371,7 +372,7 @@ dft_get_request(void)
371 372 * Not enough room to expand NL to
372 373 * CR/LF.
373 374 */
374   - ungetc(c, ftsession->ft_local_file);
  375 + ungetc(c, ((H3270FT *) h3270.ft)->ft_local_file);
375 376 break;
376 377 }
377 378 *bufptr++ = '\r';
... ... @@ -384,7 +385,7 @@ dft_get_request(void)
384 385 total_read++;
385 386 } else {
386 387 /* Binary read. */
387   - numread = fread(bufptr, 1, numbytes, ftsession->ft_local_file);
  388 + numread = fread(bufptr, 1, numbytes, ((H3270FT *) h3270.ft)->ft_local_file);
388 389 if (numread <= 0) {
389 390 break;
390 391 }
... ... @@ -402,13 +403,13 @@ dft_get_request(void)
402 403 numbytes -= numread;
403 404 total_read += numread;
404 405 }
405   - if (feof(ftsession->ft_local_file) || ferror(ftsession->ft_local_file)) {
  406 + if (feof(((H3270FT *) h3270.ft)->ft_local_file) || ferror(((H3270FT *) h3270.ft)->ft_local_file)) {
406 407 break;
407 408 }
408 409 }
409 410  
410 411 /* Check for read error. */
411   - if (ferror(ftsession->ft_local_file))
  412 + if (ferror(((H3270FT *) h3270.ft)->ft_local_file))
412 413 {
413 414 dft_abort(TR_GET_REQ, _( "Error \"%s\" reading from local file (rc=%d)" ), strerror(errno), errno);
414 415 return;
... ... @@ -434,7 +435,7 @@ dft_get_request(void)
434 435  
435 436 ft_length += total_read;
436 437  
437   - if (feof(ftsession->ft_local_file))
  438 + if (feof(((H3270FT *) h3270.ft)->ft_local_file))
438 439 {
439 440 dft_eof = True;
440 441 }
... ... @@ -464,7 +465,7 @@ dft_get_request(void)
464 465  
465 466 /* Write the data. */
466 467 net_output();
467   - ft_update_length(ftsession);
  468 + ft_update_length((H3270FT *) h3270.ft);
468 469 }
469 470  
470 471 /* Process a Close request. */
... ... @@ -512,7 +513,7 @@ static void dft_abort(unsigned short code, const char *fmt, ...)
512 513 net_output();
513 514  
514 515 /* Update the pop-up and state. */
515   - ft_aborting(ftsession);
  516 + ft_aborting((H3270FT *) h3270.ft);
516 517 }
517 518  
518 519 /* Returns the number of bytes in s, limited by len, that aren't CRs or ^Zs. */
... ...
ftc.h
... ... @@ -26,7 +26,7 @@ LIB3270_INTERNAL Boolean ascii_flag;
26 26 LIB3270_INTERNAL Boolean cr_flag;
27 27 LIB3270_INTERNAL unsigned long ft_length;
28 28  
29   -LIB3270_INTERNAL H3270FT * ftsession;
  29 +// LIB3270_INTERNAL H3270FT * ftsession;
30 30  
31 31 // LIB3270_INTERNAL FILE *ft_local_file;
32 32 // extern char *ft_local_filename;
... ... @@ -34,7 +34,8 @@ LIB3270_INTERNAL H3270FT * ftsession;
34 34 LIB3270_INTERNAL Boolean ft_last_cr;
35 35 LIB3270_INTERNAL Boolean remap_flag;
36 36  
37   -LIB3270_INTERNAL void ft_init(H3270FT *h);
  37 +LIB3270_INTERNAL void ft_init(H3270 *session);
  38 +
38 39 LIB3270_INTERNAL void ft_aborting(H3270FT *h);
39 40 LIB3270_INTERNAL void ft_complete(H3270FT *h, const char *errmsg);
40 41 LIB3270_INTERNAL void ft_running(H3270FT *h, Boolean is_cut);
... ...
globals.h
... ... @@ -262,7 +262,7 @@ LIB3270_INTERNAL int *xtra_width;
262 262 */
263 263  
264 264 /* Connection state */
265   -LIB3270_INTERNAL enum ft_state ft_state;
  265 +// LIB3270_INTERNAL enum ft_state ft_state;
266 266  
267 267 /*
268 268 LIB3270_INTERNAL enum cstate cstate;
... ...
init.c
... ... @@ -229,7 +229,7 @@ H3270 * lib3270_session_new(const char *model)
229 229 ansi_init();
230 230  
231 231 #if defined(X3270_FT)
232   - ft_init();
  232 + ft_init(hSession);
233 233 #endif
234 234  
235 235 /*
... ...
kybd.c
... ... @@ -1464,7 +1464,7 @@ do_reset(Boolean explicit)
1464 1464  
1465 1465 if (explicit
1466 1466 #if defined(X3270_FT) /*[*/
1467   - || ft_state != FT_NONE
  1467 + || lib3270_get_ft_state(&h3270) != LIB3270_FT_STATE_NONE
1468 1468 #endif /*]*/
1469 1469 ) {
1470 1470 Boolean half_reset = False;
... ... @@ -1503,7 +1503,7 @@ do_reset(Boolean explicit)
1503 1503 */
1504 1504 if (explicit
1505 1505 #if defined(X3270_FT) /*[*/
1506   - || ft_state != FT_NONE
  1506 + || lib3270_get_ft_state(&h3270) != LIB3270_FT_STATE_NONE
1507 1507 #endif /*]*/
1508 1508 || (!appres.unlock_delay) // && !sms_in_macro())
1509 1509 || (unlock_delay_time != 0 && (time(NULL) - unlock_delay_time) > 1)) {
... ...