iliaa           Sun Feb  9 15:05:14 2003 EDT

  Modified files:              
    /php4/ext/standard  file.c 
  Log:
  Added feature request #14097 (option allowing file() command not to include
  line endings in it's output. As well as another option, which allows blank 
  lines to be excluded from the output).
  
  
Index: php4/ext/standard/file.c
diff -u php4/ext/standard/file.c:1.296 php4/ext/standard/file.c:1.297
--- php4/ext/standard/file.c:1.296      Tue Jan 21 09:53:17 2003
+++ php4/ext/standard/file.c    Sun Feb  9 15:05:13 2003
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: file.c,v 1.296 2003/01/21 14:53:17 iliaa Exp $ */
+/* $Id: file.c,v 1.297 2003/02/09 20:05:13 iliaa Exp $ */
 
 /* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
 
@@ -458,11 +458,13 @@
        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;
        php_stream *stream;
 
        /* Parse arguments */
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|b",
-                                                         &filename, &filename_len, 
&use_include_path) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|bbb",
+                                       &filename, &filename_len, &use_include_path, 
+&include_new_line, &skip_blank_lines) == FAILURE) {
                return;
        }
 
@@ -488,19 +490,39 @@
                if (stream->flags & PHP_STREAM_FLAG_EOL_MAC) {
                        eol_marker = '\r';
                }       
-       
-               do {
-                       p++;
-                       parse_eol:
-                       if (PG(magic_quotes_runtime)) {
-                               /* s is in target_buf which is freed at the end of the 
function */
-                               slashed = php_addslashes(s, (p-s), &len, 0 TSRMLS_CC);
-                               add_index_stringl(return_value, i++, slashed, len, 0);
-                       } else {
-                               add_index_stringl(return_value, i++, estrndup(s, p-s), 
p-s, 0);
-                       }
-                       s = p;
-               } while ((p = memchr(p, eol_marker, (e-p))));
+
+               /* for performance reasons the code is duplicated, so that the if 
+(include_new_line) 
+                * will not need to be done for every single line in the file.
+                */
+               if (include_new_line) { 
+                       do {
+                               p++;
+                               parse_eol:
+                               if (PG(magic_quotes_runtime)) {
+                                       /* s is in target_buf which is freed at the 
+end of the function */
+                                       slashed = php_addslashes(s, (p-s), &len, 0 
+TSRMLS_CC);
+                                       add_index_stringl(return_value, i++, slashed, 
+len, 0);
+                               } else {
+                                       add_index_stringl(return_value, i++, 
+estrndup(s, p-s), p-s, 0);
+                               }
+                               s = p;
+                       } while ((p = memchr(p, eol_marker, (e-p))));
+               } else {
+                       do {
+                               if (skip_blank_lines && !(p-s)) {
+                                       s = ++p;
+                                       continue;
+                               }
+                               if (PG(magic_quotes_runtime)) {
+                                       /* s is in target_buf which is freed at the 
+end of the function */
+                                       slashed = php_addslashes(s, (p-s), &len, 0 
+TSRMLS_CC);
+                                       add_index_stringl(return_value, i++, slashed, 
+len, 0);
+                               } else {
+                                       add_index_stringl(return_value, i++, 
+estrndup(s, p-s), p-s, 0);
+                               }
+                               s = ++p;
+                       } while ((p = memchr(p, eol_marker, (e-p))));
+               }
                
                /* handle any left overs of files without new lines */
                if (s != e) {



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to