ID:               26427
 Updated by:       [EMAIL PROTECTED]
 Reported By:      phpbug at lapage dot com
-Status:           Assigned
+Status:           Bogus
 Bug Type:         Filesystem function related
 Operating System: Win98
 PHP Version:      4.3.2
 Assigned To:      wez
 New Comment:

I didn't invent DOS, so I'm not the father of this mode ;-)

When you activate text-mode translation, the MS libc will convert \n
into \r\n as you write to the file.

If you save your PHP script using DOS line endings, each line of a
heredoc will end with \r\n characters (as that is what appears in the
file).  If you write that to a file opened in text-mode, \r\n will be
translated into \r\r\n as you have observed.

If you save your PHP script using UNIX line endings, then
each line of the heredoc will end with a single \n, and will be written
to the file using \r\n.

So, what is the solution?
Be explicit; open the file in binary mode (the default now in 4.3.x),
and write the required line endings yourself using \r\n explicitly (or
implicitly by using a heredoc and a PHP script saved using DOS line
endings).

Since this is expected behaviour and not really a bug, I'm marking this
report as Bogus.


Previous Comments:
------------------------------------------------------------------------

[2003-11-27 01:01:01] [EMAIL PROTECTED]

Assigned to the father of this mode..


------------------------------------------------------------------------

[2003-11-26 11:06:28] phpbug at lapage dot com

Description:
------------
Writing in text-mode does not play nicely with heredoc, in Win32.  Line
endings become \r\r\n in the typical situation: php source code with
\r\n endings.

This will break, for example, batch files written for Win98.

Reproduce code:
---------------
$fp= fopen('file.txt', 'wt');
fwrite($fp, <<<ENDTEXT
One line of text
Another line of text
Last line of text\n
ENDTEXT
);
fclose($fp);


Expected result:
----------------
One line of text\r\n
Another line of text\r\n
Last line of text\r\n


Actual result:
--------------
One line of text\r\r\n
Another line of text\r\r\n
Last line of text\r\n


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=26427&edit=1

Reply via email to