From: Arnaud Le Blanc Date: Fri, 8 May 2009 10:01:40 +0000 (+0000) Subject: Fix default behavior of file() (FILE_TEXT flag is the default) X-Git-Tag: php-5.4.0alpha1~191^2~3723 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bdff89dc4f4a7a39bfe240c400979385deeddb85;p=php Fix default behavior of file() (FILE_TEXT flag is the default) --- diff --git a/ext/standard/file.c b/ext/standard/file.c index 38e18ea9f5..aba764434e 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -779,7 +779,6 @@ PHP_FUNCTION(file_put_contents) /* {{{ proto array file(string filename [, int flags[, resource context]]) U Read entire file into an array */ -/* UTODO: Accept unicode contents */ PHP_FUNCTION(file) { zval **ppfilename; @@ -801,7 +800,7 @@ PHP_FUNCTION(file) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z|lr!", &ppfilename, &flags, &zcontext) == FAILURE) { return; } - if (flags < 0 || flags > (PHP_FILE_USE_INCLUDE_PATH | PHP_FILE_IGNORE_NEW_LINES | PHP_FILE_SKIP_EMPTY_LINES | PHP_FILE_NO_DEFAULT_CONTEXT | PHP_FILE_TEXT)) { + if (flags < 0 || flags > (PHP_FILE_USE_INCLUDE_PATH | PHP_FILE_IGNORE_NEW_LINES | PHP_FILE_SKIP_EMPTY_LINES | PHP_FILE_NO_DEFAULT_CONTEXT | PHP_FILE_TEXT | PHP_FILE_BINARY)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "'%ld' flag is not supported", flags); RETURN_FALSE; } @@ -809,7 +808,7 @@ PHP_FUNCTION(file) use_include_path = flags & PHP_FILE_USE_INCLUDE_PATH; include_new_line = !(flags & PHP_FILE_IGNORE_NEW_LINES); skip_blank_lines = flags & PHP_FILE_SKIP_EMPTY_LINES; - text_mode = flags & PHP_FILE_TEXT; + text_mode = !(flags & PHP_FILE_BINARY); context = php_stream_context_from_zval(zcontext, flags & PHP_FILE_NO_DEFAULT_CONTEXT); if (php_stream_path_param_encode(ppfilename, &filename, &filename_len, REPORT_ERRORS, context) == FAILURE) { diff --git a/ext/standard/tests/file/file_variation10.phpt b/ext/standard/tests/file/file_variation10.phpt new file mode 100644 index 0000000000..87dfb99311 --- /dev/null +++ b/ext/standard/tests/file/file_variation10.phpt @@ -0,0 +1,81 @@ +--TEST-- +file(): FILE_TEXT, FILE_BINARY, and default behavior +--FILE-- + "\\r", "\n" => "\\n")) . "\n"; + var_dump(file($url, FILE_IGNORE_NEW_LINES)); + var_dump(file($url, FILE_IGNORE_NEW_LINES|FILE_TEXT)); + var_dump(file($url, FILE_IGNORE_NEW_LINES|FILE_BINARY)); +} +?> +--EXPECTF-- +data://text/plain,foo\nbar\n +array(2) { + [0]=> + unicode(3) "foo" + [1]=> + unicode(3) "bar" +} +array(2) { + [0]=> + unicode(3) "foo" + [1]=> + unicode(3) "bar" +} +array(2) { + [0]=> + string(3) "foo" + [1]=> + string(3) "bar" +} +data://text/plain,\nfoo\nbar\n +array(3) { + [0]=> + unicode(0) "" + [1]=> + unicode(3) "foo" + [2]=> + unicode(3) "bar" +} +array(3) { + [0]=> + unicode(0) "" + [1]=> + unicode(3) "foo" + [2]=> + unicode(3) "bar" +} +array(3) { + [0]=> + string(0) "" + [1]=> + string(3) "foo" + [2]=> + string(3) "bar" +} +data://text/plain,foo\nbar +array(2) { + [0]=> + unicode(3) "foo" + [1]=> + unicode(3) "bar" +} +array(2) { + [0]=> + unicode(3) "foo" + [1]=> + unicode(3) "bar" +} +array(2) { + [0]=> + string(3) "foo" + [1]=> + string(3) "bar" +}