Commit 07217a0d10aaeda999e2a13cf2b7ee5e07a0cdef
1 parent
eb7b2c5c
Exists in
master
and in
3 other branches
Atualizando transferência de arquivos
Showing
9 changed files
with
146 additions
and
79 deletions
Show diff stats
... | ... | @@ -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(); | ... | ... |
... | ... | @@ -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. */ | ... | ... |
... | ... | @@ -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
init.c
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)) { | ... | ... |