}
/* }}} */
-/* {{{ proto string stream_get_line(resource stream, int maxlen, string ending)
+/* {{{ proto string stream_get_line(resource stream, int maxlen [, string ending])
Read up to maxlen bytes from a stream or until the ending string is found */
PHP_FUNCTION(stream_get_line)
{
- char *str;
+ char *str = NULL;
int str_len;
long max_length;
zval *zstream;
size_t buf_size;
php_stream *stream;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rls", &zstream, &max_length, &str, &str_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|s", &zstream, &max_length, &str, &str_len) == FAILURE) {
RETURN_FALSE;
}
php_stream_fill_read_buffer(stream, maxlen TSRMLS_CC);
- if (delim_len == 0) {
+ if (delim_len == 0 || !delim) {
toread = maxlen;
} else {
if (delim_len == 1) {
*returned_len = php_stream_read(stream, buf, toread);
if (*returned_len >= 0) {
+ buf[*returned_len] = '\0';
return buf;
} else {
efree(buf);