Re: [PHP-DEV] Re: [PHP-CVS] cvs: php4 /ext/standard file.c

2003-02-10 Thread Ilia A.
Here is the final revision of the patch.

Ilia
Index: ext/standard/file.c
===
RCS file: /repository/php4/ext/standard/file.c,v
retrieving revision 1.300
diff -u -3 -p -r1.300 file.c
--- ext/standard/file.c 9 Feb 2003 23:11:23 -   1.300
+++ ext/standard/file.c 10 Feb 2003 20:39:47 -
@@ -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("FILE_USE_INCLUDE_PATH", PHP_FILE_USE_INCLUDE_PATH, 
+CONST_CS | CONST_PERSISTENT);
+   REGISTER_LONG_CONSTANT("FILE_IGNORE_NEW_LINES", PHP_FILE_IGNORE_NEW_LINES, 
+CONST_CS | CONST_PERSISTENT);
+   REGISTER_LONG_CONSTANT("FILE_SKIP_EMPTY_LINES", PHP_FILE_SKIP_EMPTY_LINES, 
+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 & PHP_FILE_USE_INCLUDE_PATH;
+   include_new_line = !(flags & PHP_FILE_IGNORE_NEW_LINES);
+   skip_blank_lines = flags & PHP_FILE_SKIP_EMPTY_LINES;
 
-   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;
}
Index: ext/standard/file.h
===
RCS file: /repository/php4/ext/standard/file.h,v
retrieving revision 1.74
diff -u -3 -p -r1.74 file.h
--- ext/standard/file.h 9 Feb 2003 20:43:05 -   1.74
+++ ext/standard/file.h 10 Feb 2003 20:39:47 -
@@ -87,6 +87,10 @@ PHPAPI int php_copy_file(char *src, char
 
 #define META_DEF_BUFSIZE 8192
 
+#define PHP_FILE_USE_INCLUDE_PATH 1
+#define PHP_FILE_IGNORE_NEW_LINES 2
+#define PHP_FILE_SKIP_EMPTY_LINES 4
+
 typedef enum _php_meta_tags_token {
TOK_EOF = 0,
TOK_OPENTAG,


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


Re: [PHP-DEV] Re: [PHP-CVS] cvs: php4 /ext/standard file.c

2003-02-10 Thread Wez Furlong
Hey Ilia,

Lets also have either an enum or some real #define'd constants for the
values used in the C code.

eg:

REGISTER_LONG_CONSTANT() and the code that checks for a number should
both be using a symbolic constant rather than a hard-coded number.

--Wez.

On Mon, 10 Feb 2003, Ilia A. wrote:

> Attached is the proposed solution.
>
> Ilia


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




Re: [PHP-DEV] Re: [PHP-CVS] cvs: php4 /ext/standard file.c

2003-02-10 Thread Ilia A.
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 -   1.299
+++ ext/standard/file.c 10 Feb 2003 15:46:19 -
@@ -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 
To unsubscribe, visit: http://www.php.net/unsub.php


Re: [PHP-DEV] Re: [PHP-CVS] cvs: php4 /ext/standard file.c

2003-02-10 Thread Derick Rethans
On Mon, 10 Feb 2003, Ilia A. wrote:

> > We could turn the existing one into a "flags" parameter:
> >
> > 1 - use include path
> > 2 - include new line
> > 4 - skip_blank_lines
> >
> > This would not break BC and we don't need multiple optional
> > parameters.
> 
> Do we want to create constants for each option or simply accept integer 
> values?

constants please :)

Derick

-- 

-
 Derick Rethans http://derickrethans.nl/ 
 PHP Magazine - PHP Magazine for Professionals   http://php-mag.net/
-


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




Re: [PHP-DEV] Re: [PHP-CVS] cvs: php4 /ext/standard file.c

2003-02-10 Thread Derick Rethans
On Mon, 10 Feb 2003, Markus Fischer wrote:

> On Sun, Feb 09, 2003 at 08:05:14PM -, Ilia Alshanetsky wrote : 
> > 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).
> 
> Can we change this to not have two more optional parameters
> but re-use the existing one?
> 
> We could turn the existing one into a "flags" parameter:
> 
> 1 - use include path
> 2 - include new line
> 4 - skip_blank_lines
> 
> This would not break BC and we don't need multiple optional
> parameters.

+1 on that.

Derick

-- 

-
 Derick Rethans http://derickrethans.nl/ 
 PHP Magazine - PHP Magazine for Professionals   http://php-mag.net/
-


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




Re: Re: [PHP-DEV] Re: [PHP-CVS] cvs: php4 /ext/standard file.c

2001-05-18 Thread usrgre

I agree, though it would be nice to release this soon, however,  it is not worth 
risking the RP. 

-Jason


> 
> From: Andi Gutmans <[EMAIL PROTECTED]>
> Date: 2001/05/18 Fri PM 06:26:49 CDT
> To: "Jason Greene" <[EMAIL PROTECTED]>,<[EMAIL PROTECTED]>
> Subject: Re: [PHP-DEV] Re: [PHP-CVS] cvs: php4 /ext/standard file.c
> 
> At 05:00 PM 5/18/2001 -0500, Jason Greene wrote:
> >I am all for that, but don't forget filestat.c and the macro
> >in php_filestat.h.
> 
> Hmm, that's making me think twice now. Maybe we should just merge Sascha's 
> fixes.
> 
> Andi
> 
> 


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] Re: [PHP-CVS] cvs: php4 /ext/standard file.c

2001-05-18 Thread Andi Gutmans

At 12:04 AM 5/19/2001 +0200, Sascha Schumann wrote:
>On Fri, 18 May 2001, Andi Gutmans wrote:
>
> > I was just about to do an automatic merge of this fix to the PHP_4_0_6
> > branch when I saw that the merge will also merge the stat() update which
> > creates associative keys too (cvs update -j 1.159 file.c after an update -r
> > PHP_4_0_6).
> > Any objections to me merging that one too? I think it would be good to have
> > it in 4.0.6.
> > If people mind I can just merge this one by hand.
>
> You might want to wait for another bug-fix.  If a client
> interrupts a download, PHPWRITE() won't return, so that we
> have no chance of unmapping the file.  Can someone remind me
> whether RSHUTDOWN functions are called after
> php_handle_aborted_connection()?

Yeah. It's supposed to be called.

Andi


-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] Re: [PHP-CVS] cvs: php4 /ext/standard file.c

2001-05-18 Thread Andi Gutmans

At 05:00 PM 5/18/2001 -0500, Jason Greene wrote:
>I am all for that, but don't forget filestat.c and the macro
>in php_filestat.h.

Hmm, that's making me think twice now. Maybe we should just merge Sascha's 
fixes.

Andi


-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] Re: [PHP-CVS] cvs: php4 /ext/standard file.c

2001-05-18 Thread Jason Greene

I am all for that, but don't forget filestat.c and the macro
in php_filestat.h.

Thanks,
Jason

- Original Message - 
From: "Andi Gutmans" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, May 18, 2001 3:08 PM
Subject: [PHP-DEV] Re: [PHP-CVS] cvs: php4 /ext/standard file.c 


> I was just about to do an automatic merge of this fix to the PHP_4_0_6 
> branch when I saw that the merge will also merge the stat() update which 
> creates associative keys too (cvs update -j 1.159 file.c after an update -r 
> PHP_4_0_6).
> Any objections to me merging that one too? I think it would be good to have 
> it in 4.0.6.
> If people mind I can just merge this one by hand.
> 
> Andi
> 
> At 05:48 PM 5/18/2001 +, Sascha Schumann wrote:
> >sas Fri May 18 10:48:43 2001 EDT
> >
> >   Modified files:
> > /php4/ext/standard  file.c
> >   Log:
> >   Files should be shared among processes.
> >
> >
> >Index: php4/ext/standard/file.c
> >diff -u php4/ext/standard/file.c:1.158 php4/ext/standard/file.c:1.159
> >--- php4/ext/standard/file.c:1.158  Sat May 12 14:48:39 2001
> >+++ php4/ext/standard/file.cFri May 18 10:48:43 2001
> >@@ -21,7 +21,7 @@
> > +--+
> >   */
> >
> >-/* $Id: file.c,v 1.158 2001/05/12 21:48:39 wez Exp $ */
> >+/* $Id: file.c,v 1.159 2001/05/18 17:48:43 sas Exp $ */
> >
> >  /* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
> >
> >@@ -1546,7 +1546,7 @@
> > if (sbuf.st_size > sizeof(buf)) {
> > off = ftell(fp);
> > len = sbuf.st_size - off;
> >-   p = mmap(0, len, PROT_READ, MAP_PRIVATE, fd, off);
> >+   p = mmap(0, len, PROT_READ, MAP_SHARED, fd, off);
> > if (p != (void *) MAP_FAILED) {
> > PHPWRITE(p, len);
> > munmap(p, len);
> >
> >
> >
> >--
> >PHP CVS Mailing List (http://www.php.net/)
> >To unsubscribe, e-mail: [EMAIL PROTECTED]
> >For additional commands, e-mail: [EMAIL PROTECTED]
> >To contact the list administrators, e-mail: [EMAIL PROTECTED]
> 
> 
> -- 
> PHP Development Mailing List 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]
> 
> 


-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] Re: [PHP-CVS] cvs: php4 /ext/standard file.c

2001-05-18 Thread Sascha Schumann

On Fri, 18 May 2001, Andi Gutmans wrote:

> I was just about to do an automatic merge of this fix to the PHP_4_0_6
> branch when I saw that the merge will also merge the stat() update which
> creates associative keys too (cvs update -j 1.159 file.c after an update -r
> PHP_4_0_6).
> Any objections to me merging that one too? I think it would be good to have
> it in 4.0.6.
> If people mind I can just merge this one by hand.

You might want to wait for another bug-fix.  If a client
interrupts a download, PHPWRITE() won't return, so that we
have no chance of unmapping the file.  Can someone remind me
whether RSHUTDOWN functions are called after
php_handle_aborted_connection()?

- Sascha Experience IRCG
  http://schumann.cx/http://schumann.cx/ircg


-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]