Req #48421 [Opn->Fbk]: stream_get_line() - allow $length to be optional
| From: | levim@php.net | Date: | Wed, 30 Apr 2014 22:48:58 +0000 |
| Subject: | Req #48421 [Opn->Fbk]: stream_get_line() - allow $length to be optional | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-185532@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=48421&edit=1
ID: 48421
Updated by: levim@php.net
Reported by: ryan dot brothers at gmail dot com
Summary: stream_get_line() - allow $length to be optional
-Status: Open
+Status: Feedback
Type: Feature/Change Request
-Package: Feature/Change Request
+Package: Streams related
-Operating System: Linux
+Operating System: Irrelevant
-PHP Version: 5.2.9
+PHP Version: Any
Block user comment: N
Private report: N
New Comment:
Is this something you are still interested in seeing?
Previous Comments:
------------------------------------------------------------------------
[2009-05-28 22:42:24] ryan dot brothers at gmail dot com
Description:
------------
I believe stream_get_line() should allow the $length parameter to be optional by allowing a $length
of -1 that would read the remaining buffer up to either the $ending delimiter or EOF.
Currently if you pass a $length of 0, the $length defaults to PHP_SOCK_CHUNK_SIZE (8192) in
ext/standard/streamsfuncs.c. If you pass a length of -1, a PHP Warning is generated.
Other 'similar' functions that allow length to be optional or -1 are fgets,
stream_get_contents, and file_get_contents.
Also, the manual page for stream_get_line() states that this function is the same fgets() except for
the handling of the delimiter - but another difference, at least right now, is that the $length
parameter is required in stream_get_line(), but optional in fgets().
Reproduce code:
---------------
<?php
$fp = tmpfile();
fwrite($fp, str_repeat('a', 10000));
fseek($fp, 0);
echo strlen(stream_get_line($fp, 0));
fseek($fp, 0);
echo strlen(stream_get_line($fp, -1));
fclose($fp);
Expected result:
----------------
8192
10000
Actual result:
--------------
8192
Warning: stream_get_line(): The maximum allowed length must be greater than or equal to zero
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=48421&edit=1