Commit c94e0cc37d042472794f27461ae73062ba638839

Authored by Perry Werneck
1 parent 626582c7

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
ft.c
... ... @@ -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  
... ...