You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Mongenet Marc <mm...@elca.ch> on 1999/09/08 10:50:44 UTC

RE: mod_cgi/4971: wrong CONTENT_LENGTH due to CRLF->LF conversion

Problem solved, sorry for for inconvenience.
Maybe it should be a FAQ for the Windows port.
Here are some explanations from MS doc:

"The stdin, stdout, and stderr streams always
open in text mode by default;"

"t

Open in text (translated) mode; carriage return-linefeed (CR-LF)
combinations are translated into single linefeed (LF) characters on input;
LF characters are translated to CR-LF combinations on output. Also, CTRL+Z
is interpreted as an end-of-file character on input. In files opened for
reading or for writing and reading with "a+", the run-time library checks
for a CTRL+Z at the end of the file and removes it, if possible. This is
done because using fseek and ftell to move within a file may cause fseek to
behave improperly near the end of the file. The t option is a Microsoft
extension that should not be used where ANSI portability is desired.

b

Open in binary (untranslated) mode; the above translations are suppressed."

"The _setmode function sets to mode the translation mode of the file given
by handle. The mode must be one of two manifest constants, _O_TEXT or
_O_BINARY. _O_TEXT sets text (translated) mode. Carriage return-linefeed
(CR-LF) combinations are translated into a single linefeed character on
input. Linefeed characters are translated into CR-LF combinations on output.
_O_BINARY sets binary (untranslated) mode, in which these translations are
suppressed."

"
#include <stdio.h>
#include <fcntl.h>
#include <io.h>

main()
{
   /* Set "stdin" to have binary mode: */
   _setmode( _fileno( stdin ), _O_BINARY );
}"

Marc Mongenet