November 23, 2007
Hi,
I've been working on a CGI web framework and ran into some unexpected behavior from din.readLine when looping through a data stream coming in from a multipart form web request. It seems that it is adding an extra blank line after each expected line. This could be due to bad code splitting the line at the CR and then again at the LF instead of seeing that as one EOL sequence. According to the docs, this doesn't seem like the correct behavior. when I output the data reading in character by character, everything looks correct. Here is the code:

while (!din.eof)
{
    line = din.readLine();
    ...
}

I am running the DMD compiler on fedora core linux using Phobos. Any ideas? Is this how it's supposed to work or is there something I'm doing wrong?

Thanks much for any help,
-Justin
December 05, 2007
Justin Greenwood wrote:
> Hi,
> I've been working on a CGI web framework and ran into some unexpected behavior from din.readLine when looping through a data stream coming in from a multipart form web request. It seems that it is adding an extra blank line after each expected line. This could be due to bad code splitting the line at the CR and then again at the LF instead of seeing that as one EOL sequence. According to the docs, this doesn't seem like the correct behavior. when I output the data reading in character by character, everything looks correct. Here is the code:
> 
> while (!din.eof)
> {
>     line = din.readLine();
>     ...
> }
> 
> I am running the DMD compiler on fedora core linux using Phobos. Any ideas? Is this how it's supposed to work or is there something I'm doing wrong?
> 
> Thanks much for any help,
> -Justin

I'm not sure about your specific problem but I do know that when you read stdin in CGI you should never rely on the EOF marker. Instead use the specified environment variable CONTENT_LENGTH and read nothing more or less from stdin.

Greetings,

Mark Sanders.