@@ -1795,14 +1795,16 @@ PHP_FUNCTION(fputcsv)
17951795 ssize_t ret ;
17961796 char * delimiter_str = NULL , * enclosure_str = NULL , * escape_str = NULL ;
17971797 size_t delimiter_str_len = 0 , enclosure_str_len = 0 , escape_str_len = 0 ;
1798+ zend_string * eol_str = NULL ;
17981799
1799- ZEND_PARSE_PARAMETERS_START (2 , 5 )
1800+ ZEND_PARSE_PARAMETERS_START (2 , 6 )
18001801 Z_PARAM_RESOURCE (fp )
18011802 Z_PARAM_ARRAY (fields )
18021803 Z_PARAM_OPTIONAL
18031804 Z_PARAM_STRING (delimiter_str , delimiter_str_len )
18041805 Z_PARAM_STRING (enclosure_str , enclosure_str_len )
18051806 Z_PARAM_STRING (escape_str , escape_str_len )
1807+ Z_PARAM_STR_OR_NULL (eol_str )
18061808 ZEND_PARSE_PARAMETERS_END ();
18071809
18081810 if (delimiter_str != NULL) {
@@ -1840,16 +1842,16 @@ PHP_FUNCTION(fputcsv)
18401842
18411843 PHP_STREAM_TO_ZVAL (stream , fp );
18421844
1843- ret = php_fputcsv (stream , fields , delimiter , enclosure , escape_char );
1845+ ret = php_fputcsv (stream , fields , delimiter , enclosure , escape_char , eol_str );
18441846 if (ret < 0 ) {
18451847 RETURN_FALSE ;
18461848 }
18471849 RETURN_LONG (ret );
18481850}
18491851/* }}} */
18501852
1851- /* {{{ PHPAPI size_t php_fputcsv(php_stream *stream, zval *fields, char delimiter, char enclosure, int escape_char) */
1852- PHPAPI ssize_t php_fputcsv (php_stream * stream , zval * fields , char delimiter , char enclosure , int escape_char )
1853+ /* {{{ PHPAPI size_t php_fputcsv(php_stream *stream, zval *fields, char delimiter, char enclosure, int escape_char, zend_string *eol_str ) */
1854+ PHPAPI ssize_t php_fputcsv (php_stream * stream , zval * fields , char delimiter , char enclosure , int escape_char , zend_string * eol_str )
18531855{
18541856 int count , i = 0 ;
18551857 size_t ret ;
@@ -1897,8 +1899,12 @@ PHPAPI ssize_t php_fputcsv(php_stream *stream, zval *fields, char delimiter, cha
18971899 }
18981900 zend_tmp_string_release (tmp_field_str );
18991901 } ZEND_HASH_FOREACH_END ();
1900-
1901- smart_str_appendc (& csvline , '\n' );
1902+
1903+ if (eol_str ) {
1904+ smart_str_append (& csvline , eol_str );
1905+ } else {
1906+ smart_str_appendc (& csvline , '\n' );
1907+ }
19021908 smart_str_0 (& csvline );
19031909
19041910 ret = php_stream_write (stream , ZSTR_VAL (csvline .s ), ZSTR_LEN (csvline .s ));
0 commit comments