Attached is the proposed solution.

Ilia
Index: ext/standard/file.c
===================================================================
RCS file: /repository/php4/ext/standard/file.c,v
retrieving revision 1.299
diff -u -3 -p -r1.299 file.c
--- ext/standard/file.c 9 Feb 2003 20:43:05 -0000       1.299
+++ ext/standard/file.c 10 Feb 2003 15:46:19 -0000
@@ -180,6 +180,10 @@ PHP_MINIT_FUNCTION(file)
        REGISTER_LONG_CONSTANT("STREAM_NOTIFY_SEVERITY_INFO",   
PHP_STREAM_NOTIFY_SEVERITY_INFO, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("STREAM_NOTIFY_SEVERITY_WARN",   
PHP_STREAM_NOTIFY_SEVERITY_WARN, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("STREAM_NOTIFY_SEVERITY_ERR",    
PHP_STREAM_NOTIFY_SEVERITY_ERR,  CONST_CS | CONST_PERSISTENT);
+
+       REGISTER_LONG_CONSTANT("STREAM_USE_INCLUDE_PATH",       1,  CONST_CS | 
+CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("STREAM_IGNORE_NEW_LINES",       2,  CONST_CS | 
+CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("STREAM_SKIP_EMPTY_LINES",       4,  CONST_CS | 
+CONST_PERSISTENT);
        
 #ifdef HAVE_FNMATCH
        REGISTER_LONG_CONSTANT("FNM_NOESCAPE", FNM_NOESCAPE, CONST_CS | 
CONST_PERSISTENT);
@@ -444,7 +448,7 @@ PHP_FUNCTION(file_get_contents)
 }
 /* }}} */
 
-/* {{{ proto array file(string filename [, bool use_include_path [, bool 
include_new_line [, bool skip_blank_lines]]])
+/* {{{ proto array file(string filename [, int flags])
    Read entire file into an array */
 
 #define PHP_FILE_BUF_SIZE      80
@@ -457,20 +461,26 @@ PHP_FUNCTION(file)
        register int i = 0;
        int target_len, len;
        char eol_marker = '\n';
-       zend_bool use_include_path = 0;
-       zend_bool include_new_line = 1;
-       zend_bool skip_blank_lines = 0;
+       long flags = 0;
+       zend_bool use_include_path;
+       zend_bool include_new_line;
+       zend_bool skip_blank_lines;
        php_stream *stream;
 
        /* Parse arguments */
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|bbb",
-                                       &filename, &filename_len, &use_include_path, 
&include_new_line, &skip_blank_lines) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &filename, 
+&filename_len, &flags) == FAILURE) {
                return;
        }
+       if (flags < 0 || flags > 7) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "'%d' flag is not 
+supported.", flags);
+               RETURN_FALSE;
+       }
+       
+       use_include_path = flags & 1;
+       include_new_line = flags & 2;
+       skip_blank_lines = flags & 4;
 
-       stream = php_stream_open_wrapper(filename, "rb", 
-                       (use_include_path ? USE_PATH : 0) | ENFORCE_SAFE_MODE | 
REPORT_ERRORS,
-                       NULL);
+       stream = php_stream_open_wrapper(filename, "rb", (use_include_path ? USE_PATH 
+: 0) | ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL);
        if (!stream) {
                RETURN_FALSE;
        }

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to