Commit c94e0cc37d042472794f27461ae73062ba638839
1 parent
626582c7
Exists in
master
and in
3 other branches
Download de arquivos texto precisa de tratamento diferente em windows (CR+LF & 0x1a no final).
Showing
3 changed files
with
21 additions
and
14 deletions
Show diff stats
| ... | ... | @@ -298,6 +298,7 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); |
| 298 | 298 | ftHandle->ascii_flag = (flags & LIB3270_FT_OPTION_ASCII) ? 1 : 0; |
| 299 | 299 | ftHandle->cr_flag = (flags & LIB3270_FT_OPTION_CRLF) ? 1 : 0; |
| 300 | 300 | ftHandle->remap_flag = (flags & LIB3270_FT_OPTION_REMAP) ? 1 : 0; |
| 301 | + ftHandle->unix_text = (flags & LIB3270_FT_OPTION_UNIX) ? 1 : 0; | |
| 301 | 302 | ftHandle->ft_is_cut = 0; |
| 302 | 303 | ftHandle->flags = flags; |
| 303 | 304 | ftHandle->local_file = ft_local_file; |
| ... | ... | @@ -366,11 +367,12 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); |
| 366 | 367 | // Receiving file |
| 367 | 368 | lib3270_write_dstrace( |
| 368 | 369 | ft->host, |
| 369 | - "\nReceiving file %s (%s %s %s)\n", | |
| 370 | + "\nReceiving file %s (%s %s %s %s)\n", | |
| 370 | 371 | ft->local, |
| 371 | - ft->ascii_flag ? "ASCII" : "BINARY", | |
| 372 | - ft->cr_flag ? "CRLF" : "NOCRLF", | |
| 373 | - ft->remap_flag ? "REMAP" : "NOREMAP" | |
| 372 | + ft->ascii_flag ? "ASCII" : "BINARY", | |
| 373 | + ft->cr_flag ? "CRLF" : "NOCRLF", | |
| 374 | + ft->remap_flag ? "REMAP" : "NOREMAP", | |
| 375 | + ft->unix_text ? "LF Only" : "CR/LF" | |
| 374 | 376 | ); |
| 375 | 377 | } |
| 376 | 378 | else |
| ... | ... | @@ -386,12 +388,13 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); |
| 386 | 388 | |
| 387 | 389 | lib3270_write_dstrace( |
| 388 | 390 | ft->host, |
| 389 | - "\nSending file %s (%ld bytes %s %s %s)\n", | |
| 391 | + "\nSending file %s (%ld bytes %s %s %s %s)\n", | |
| 390 | 392 | ft->local, |
| 391 | 393 | ft->length, |
| 392 | - ft->ascii_flag ? "ASCII" : "BINARY", | |
| 393 | - ft->cr_flag ? "CRLF" : "NOCRLF", | |
| 394 | - ft->remap_flag ? "REMAP" : "NOREMAP" | |
| 394 | + ft->ascii_flag ? "ASCII" : "BINARY", | |
| 395 | + ft->cr_flag ? "CRLF" : "NOCRLF", | |
| 396 | + ft->remap_flag ? "REMAP" : "NOREMAP", | |
| 397 | + ft->unix_text ? "LF only" : "CR/LF" | |
| 395 | 398 | ); |
| 396 | 399 | |
| 397 | 400 | rewind(ft->local_file); | ... | ... |
ft_cut.c
| ... | ... | @@ -192,11 +192,12 @@ static int upload_convert(H3270 *hSession, unsigned char *buf, int len) |
| 192 | 192 | /* Map it. */ |
| 193 | 193 | c = conv[ft->quadrant].xlate[ix]; |
| 194 | 194 | |
| 195 | - if (ft->ascii_flag && ft->cr_flag && (c == '\r' || c == 0x1a)) | |
| 195 | +// if (ft->ascii_flag && ft->cr_flag && (c == '\r' || c == 0x1a)) | |
| 196 | + if (ft->unix_text && (c == '\r' || c == 0x1a)) | |
| 196 | 197 | continue; |
| 197 | - | |
| 198 | - if (ft->ascii_flag && ft->remap_flag) | |
| 198 | + else if (ft->ascii_flag && ft->remap_flag) | |
| 199 | 199 | c = ft->charset.ebc2asc[c]; |
| 200 | + | |
| 200 | 201 | *ob++ = c; |
| 201 | 202 | } |
| 202 | 203 | ... | ... |
ft_dft.c
| ... | ... | @@ -294,12 +294,15 @@ static void dft_data_insert(H3270 *hSession, struct data_buffer *data_bufr) |
| 294 | 294 | s++; |
| 295 | 295 | } |
| 296 | 296 | } |
| 297 | - if (ft->ascii_flag && ft->cr_flag) | |
| 297 | + | |
| 298 | +// if (ft->ascii_flag && ft->cr_flag) | |
| 299 | + if (ft->unix_text) | |
| 298 | 300 | { |
| 301 | + /* Delete CRs and ^Zs. */ | |
| 302 | + | |
| 299 | 303 | char *s = (char *)data_bufr->data; |
| 300 | 304 | unsigned len = my_length; |
| 301 | 305 | |
| 302 | - /* Delete CRs and ^Zs. */ | |
| 303 | 306 | while (len) { |
| 304 | 307 | unsigned l = filter_len(s, len); |
| 305 | 308 | |
| ... | ... | @@ -375,7 +378,7 @@ static void dft_get_request(H3270 *hSession) |
| 375 | 378 | |
| 376 | 379 | while (!ft->dft_eof && numbytes) |
| 377 | 380 | { |
| 378 | - if (ft->ascii_flag && ft->cr_flag) | |
| 381 | + if (ft->unix_text) | |
| 379 | 382 | { |
| 380 | 383 | // ASCII text file |
| 381 | 384 | ... | ... |