[PHP-CVS] cvs: php4 /ext/standard php_fopen_wrapper.c /main php_streams.h /main/streams php_stream_plain_wrapper.h plain_wrapper.c

2003-03-18 Thread Wez Furlong
wez Tue Mar 18 18:37:54 2003 EDT

  Modified files:  
/php4/ext/standard  php_fopen_wrapper.c 
/php4/main  php_streams.h 
/php4/main/streams  php_stream_plain_wrapper.h plain_wrapper.c 
  Log:
  Implement persistent plain file streams.
  
  Usage:
  
  php_stream *stream = php_stream_fopen(/path/to/file, r+b, NULL,
STREAM_OPEN_PERSISTENT | ENFORCE_SAFE_MODE | REPORT_ERRORS);
  
  the filename and mode are combined to form the hash key for the persistent
  list; they must be identical for this same stream to be returned again in the
  next request.
  
  Calling php_stream_close() on a persistent stream *will* close it, as is
  usual with all persistent resources in PHP/ZE.
  
  This is deliberately *not* exposed to user-space PHP at this time.
  
  
Index: php4/ext/standard/php_fopen_wrapper.c
diff -u php4/ext/standard/php_fopen_wrapper.c:1.36 
php4/ext/standard/php_fopen_wrapper.c:1.37
--- php4/ext/standard/php_fopen_wrapper.c:1.36  Tue Mar 18 11:40:28 2003
+++ php4/ext/standard/php_fopen_wrapper.c   Tue Mar 18 18:37:53 2003
@@ -17,7 +17,7 @@
|  Hartmut Holzgraefe [EMAIL PROTECTED]   |
+--+
  */
-/* $Id: php_fopen_wrapper.c,v 1.36 2003/03/18 16:40:28 wez Exp $ */
+/* $Id: php_fopen_wrapper.c,v 1.37 2003/03/18 23:37:53 wez Exp $ */
 
 #include stdio.h
 #include stdlib.h
@@ -218,7 +218,7 @@
return NULL;
}

-   stream = php_stream_fopen_from_fd(fd, mode);
+   stream = php_stream_fopen_from_fd(fd, mode, NULL);
if (stream == NULL) {
close(fd);
}
Index: php4/main/php_streams.h
diff -u php4/main/php_streams.h:1.76 php4/main/php_streams.h:1.77
--- php4/main/php_streams.h:1.76Thu Feb 27 14:10:23 2003
+++ php4/main/php_streams.h Tue Mar 18 18:37:54 2003
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: php_streams.h,v 1.76 2003/02/27 19:10:23 wez Exp $ */
+/* $Id: php_streams.h,v 1.77 2003/03/18 23:37:54 wez Exp $ */
 
 #ifndef PHP_STREAMS_H
 #define PHP_STREAMS_H
@@ -64,7 +64,7 @@
 
 #define php_stream_fopen_with_path_rel(filename, mode, path, opened, options) 
_php_stream_fopen_with_path((filename), (mode), (path), (opened), (options) 
STREAMS_REL_CC TSRMLS_CC)
 
-#define php_stream_fopen_from_fd_rel(fd, mode)  _php_stream_fopen_from_fd((fd), 
(mode) STREAMS_REL_CC TSRMLS_CC)
+#define php_stream_fopen_from_fd_rel(fd, mode, persistent_id)   
_php_stream_fopen_from_fd((fd), (mode), (persistent_id) STREAMS_REL_CC TSRMLS_CC)
 #define php_stream_fopen_from_file_rel(file, mode)  
_php_stream_fopen_from_file((file), (mode) STREAMS_REL_CC TSRMLS_CC)

 #define php_stream_fopen_from_pipe_rel(file, mode)  
_php_stream_fopen_from_pipe((file), (mode) STREAMS_REL_CC TSRMLS_CC)
@@ -436,6 +436,9 @@
 
 /* don't apply open_basedir checks */
 #define STREAM_DISABLE_OPEN_BASEDIR1024
+
+/* get (or create) a persistent version of the stream */
+#define STREAM_OPEN_PERSISTENT 2048
 
 /* Antique - no longer has meaning */
 #define IGNORE_URL_WIN 0
Index: php4/main/streams/php_stream_plain_wrapper.h
diff -u php4/main/streams/php_stream_plain_wrapper.h:1.2 
php4/main/streams/php_stream_plain_wrapper.h:1.3
--- php4/main/streams/php_stream_plain_wrapper.h:1.2Wed Feb 19 03:40:19 2003
+++ php4/main/streams/php_stream_plain_wrapper.hTue Mar 18 18:37:54 2003
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: php_stream_plain_wrapper.h,v 1.2 2003/02/19 08:40:19 sniper Exp $ */
+/* $Id: php_stream_plain_wrapper.h,v 1.3 2003/03/18 23:37:54 wez Exp $ */
 
 /* definitions for the plain files wrapper */
 
@@ -33,8 +33,8 @@
 PHPAPI php_stream *_php_stream_fopen_from_file(FILE *file, const char *mode 
STREAMS_DC TSRMLS_DC);
 #define php_stream_fopen_from_file(file, mode) _php_stream_fopen_from_file((file), 
(mode) STREAMS_CC TSRMLS_CC)
 
-PHPAPI php_stream *_php_stream_fopen_from_fd(int fd, const char *mode STREAMS_DC 
TSRMLS_DC);
-#define php_stream_fopen_from_fd(fd, mode) _php_stream_fopen_from_fd((fd), (mode) 
STREAMS_CC TSRMLS_CC)
+PHPAPI php_stream *_php_stream_fopen_from_fd(int fd, const char *mode, const char 
*persistent_id STREAMS_DC TSRMLS_DC);
+#define php_stream_fopen_from_fd(fd, mode, persistent_id)  
_php_stream_fopen_from_fd((fd), (mode), (persistent_id) STREAMS_CC TSRMLS_CC)
 
 PHPAPI php_stream *_php_stream_fopen_from_pipe(FILE *file, const char *mode 
STREAMS_DC TSRMLS_DC);
 #define php_stream_fopen_from_pipe(file, mode) _php_stream_fopen_from_pipe((file), 
(mode) STREAMS_CC TSRMLS_CC)
Index: php4/main/streams/plain_wrapper.c
diff -u php4/main/streams/plain_wrapper.c:1.11 php4/main/streams/plain_wrapper.c:1.12
--- php4/main/streams/plain_wrapper.c:1.11  Tue Mar 18 11:40:29 2003
+++ php4/main/streams/plain_wrapper.c   Tue Mar 18 18:37:54 2003

[PHP-CVS] cvs: php4 /ext/standard php_fopen_wrapper.c

2003-02-28 Thread Ilia Alshanetsky
iliaa   Fri Feb 28 12:26:28 2003 EDT

  Modified files:  
/php4/ext/standard  php_fopen_wrapper.c 
  Log:
  Fixed compiler warnings.
  
  
Index: php4/ext/standard/php_fopen_wrapper.c
diff -u php4/ext/standard/php_fopen_wrapper.c:1.34 
php4/ext/standard/php_fopen_wrapper.c:1.35
--- php4/ext/standard/php_fopen_wrapper.c:1.34  Thu Feb 20 15:05:31 2003
+++ php4/ext/standard/php_fopen_wrapper.c   Fri Feb 28 12:26:28 2003
@@ -17,7 +17,7 @@
|  Hartmut Holzgraefe [EMAIL PROTECTED]   |
+--+
  */
-/* $Id: php_fopen_wrapper.c,v 1.34 2003/02/20 20:05:31 pollita Exp $ */
+/* $Id: php_fopen_wrapper.c,v 1.35 2003/02/28 17:26:28 iliaa Exp $ */
 
 #include stdio.h
 #include stdlib.h
@@ -129,14 +129,14 @@
p = php_strtok_r(filterlist, |, token);
while (p) {
if (read_chain) {
-   if (temp_filter = php_stream_filter_create(p, , 0, 
php_stream_is_persistent(stream) TSRMLS_CC)) {
+   if ((temp_filter = php_stream_filter_create(p, , 0, 
php_stream_is_persistent(stream) TSRMLS_CC))) {
php_stream_filter_append(stream-readfilters, 
temp_filter);
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, Unable to 
create filter (%s)\n, p);
}
}
if (write_chain) {
-   if (temp_filter = php_stream_filter_create(p, , 0, 
php_stream_is_persistent(stream) TSRMLS_CC)) {
+   if ((temp_filter = php_stream_filter_create(p, , 0, 
php_stream_is_persistent(stream) TSRMLS_CC))) {
php_stream_filter_append(stream-writefilters, 
temp_filter);
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, Unable to 
create filter (%s)\n, p);



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



[PHP-CVS] cvs: php4 /ext/standard php_fopen_wrapper.c

2003-02-17 Thread Sara Golemon
pollita Tue Feb 18 01:10:17 2003 EDT

  Modified files:  
/php4/ext/standard  php_fopen_wrapper.c 
  Log:
  Introduce //filter target to php: wrapper to allow inline application of filters 
during fopen() style opperations
  
  
Index: php4/ext/standard/php_fopen_wrapper.c
diff -u php4/ext/standard/php_fopen_wrapper.c:1.32 
php4/ext/standard/php_fopen_wrapper.c:1.33
--- php4/ext/standard/php_fopen_wrapper.c:1.32  Thu Feb 13 08:43:37 2003
+++ php4/ext/standard/php_fopen_wrapper.c   Tue Feb 18 01:10:14 2003
@@ -17,7 +17,7 @@
|  Hartmut Holzgraefe [EMAIL PROTECTED]   |
+--+
  */
-/* $Id: php_fopen_wrapper.c,v 1.32 2003/02/13 13:43:37 wez Exp $ */
+/* $Id: php_fopen_wrapper.c,v 1.33 2003/02/18 06:10:14 pollita Exp $ */
 
 #include stdio.h
 #include stdlib.h
@@ -122,10 +122,36 @@
NULL  /* set_option */
 };
 
+static void php_stream_apply_filter_list(php_stream *stream, char *filterlist, int 
+read_chain, int write_chain TSRMLS_DC) {
+   char *p, *token;
+   php_stream_filter *temp_filter;
+
+   p = php_strtok_r(filterlist, |, token);
+   while (p) {
+   if (read_chain) {
+   if (temp_filter = php_stream_filter_create(p, , 0, 
+php_stream_is_persistent(stream) TSRMLS_CC)) {
+   php_stream_filter_append(stream-readfilters, 
+temp_filter);
+   } else {
+   php_error_docref(NULL TSRMLS_CC, E_WARNING, Unable to 
+create filter (%s)\n, p);
+   }
+   }
+   if (write_chain) {
+   if (temp_filter = php_stream_filter_create(p, , 0, 
+php_stream_is_persistent(stream) TSRMLS_CC)) {
+   php_stream_filter_append(stream-writefilters, 
+temp_filter);
+   } else {
+   php_error_docref(NULL TSRMLS_CC, E_WARNING, Unable to 
+create filter (%s)\n, p);
+   }
+   }
+   p = php_strtok_r(NULL, |, token);
+   }
+}
+
+
 php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, char 
*mode, int options, char **opened_path, php_stream_context *context STREAMS_DC 
TSRMLS_DC)
 {
int fd = -1;
php_stream * stream = NULL;
+   char *p, *token, *pathdup;
 
if (!strncasecmp(path, php://, 6))
path += 6;
@@ -151,6 +177,36 @@
if (stream == NULL)
close(fd);
}
+
+   if (!strncasecmp(path, filter/, 7)) {
+   pathdup = estrndup(path + 6, strlen(path + 6));
+   p = strstr(pathdup, /resource=);
+   if (!p) {
+   php_error_docref(NULL TSRMLS_CC, E_ERROR, No URL resource 
+specified.);
+   efree(pathdup);
+   return NULL;
+   }
+   if (!(stream = php_stream_open_wrapper(p + 10, mode, options, 
+opened_path))) {
+   efree(pathdup);
+   return NULL;
+   }
+
+   *p = '\0';
+
+   p = php_strtok_r(pathdup + 1, /, token);
+   while (p) {
+   if (!strncasecmp(p, read=, 5)) {
+   php_stream_apply_filter_list(stream, p + 5, 1, 0 
+TSRMLS_CC);
+   } else if (!strncasecmp(p, write=, 6)) {
+   php_stream_apply_filter_list(stream, p + 6, 0, 1 
+TSRMLS_CC);
+   } else {
+   php_stream_apply_filter_list(stream, p, 1, 1 
+TSRMLS_CC);
+   }
+   p = php_strtok_r(NULL, /, token);
+   }
+   efree(pathdup);
+   }
+ 
return stream;
 }
 



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




[PHP-CVS] cvs: php4 /ext/standard php_fopen_wrapper.c

2003-02-13 Thread Wez Furlong
wez Thu Feb 13 08:43:38 2003 EDT

  Modified files:  
/php4/ext/standard  php_fopen_wrapper.c 
  Log:
  Use FILE*-less implementation for php://(stdin|stdout|stderr)
  
  
Index: php4/ext/standard/php_fopen_wrapper.c
diff -u php4/ext/standard/php_fopen_wrapper.c:1.31 
php4/ext/standard/php_fopen_wrapper.c:1.32
--- php4/ext/standard/php_fopen_wrapper.c:1.31  Tue Dec 31 11:07:51 2002
+++ php4/ext/standard/php_fopen_wrapper.c   Thu Feb 13 08:43:37 2003
@@ -17,7 +17,7 @@
|  Hartmut Holzgraefe [EMAIL PROTECTED]   |
+--+
  */
-/* $Id: php_fopen_wrapper.c,v 1.31 2002/12/31 16:07:51 sebastian Exp $ */
+/* $Id: php_fopen_wrapper.c,v 1.32 2003/02/13 13:43:37 wez Exp $ */
 
 #include stdio.h
 #include stdlib.h
@@ -124,7 +124,7 @@
 
 php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, char 
*mode, int options, char **opened_path, php_stream_context *context STREAMS_DC 
TSRMLS_DC)
 {
-   FILE * fp = NULL;
+   int fd = -1;
php_stream * stream = NULL;
 
if (!strncasecmp(path, php://, 6))
@@ -139,17 +139,17 @@
}  

if (!strcasecmp(path, stdin)) {
-   fp = fdopen(dup(STDIN_FILENO), mode);
+   fd = dup(STDIN_FILENO);
} else if (!strcasecmp(path, stdout)) {
-   fp = fdopen(dup(STDOUT_FILENO), mode);
+   fd = dup(STDOUT_FILENO);
} else if (!strcasecmp(path, stderr)) {
-   fp = fdopen(dup(STDERR_FILENO), mode);
+   fd = dup(STDERR_FILENO);
}
 
-   if (fp) {
-   stream = php_stream_fopen_from_file(fp, mode);
+   if (fd) {
+   stream = php_stream_fopen_from_fd(fd, mode);
if (stream == NULL)
-   fclose(fp);
+   close(fd);
}
return stream;
 }



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




[PHP-CVS] cvs: php4 /ext/standard php_fopen_wrapper.c /main SAPI.c

2002-11-21 Thread Hartmut Holzgraefe
hholzgraThu Nov 21 05:29:12 2002 EDT

  Modified files:  
/php4/main  SAPI.c 
/php4/ext/standard  php_fopen_wrapper.c 
  Log:
  the apache 1.x sapi read_posts tests for SG(read_post_bytes) being
  counted up, so lets make it happy although this value is not really
  needed in these cases ... 
  
  
Index: php4/main/SAPI.c
diff -u php4/main/SAPI.c:1.156 php4/main/SAPI.c:1.157
--- php4/main/SAPI.c:1.156  Sun Nov 17 19:59:23 2002
+++ php4/main/SAPI.cThu Nov 21 05:29:11 2002
@@ -18,7 +18,7 @@
+--+
 */
 
-/* $Id: SAPI.c,v 1.156 2002/11/18 00:59:23 gschlossnagle Exp $ */
+/* $Id: SAPI.c,v 1.157 2002/11/21 10:29:11 hholzgra Exp $ */
 
 #include ctype.h
 #include sys/stat.h
@@ -390,8 +390,10 @@
if(sapi_module.read_post) { 
/* make sure we've consumed all request input data */
char dummy[SAPI_POST_BLOCK_SIZE];
-   while(sapi_module.read_post(dummy, sizeof(dummy)-1 TSRMLS_CC) 
 0) {
-   /* empty loop body */
+   int read_bytes;
+
+   while((read_bytes = sapi_module.read_post(dummy, 
+sizeof(dummy)-1 TSRMLS_CC))  0) {
+   SG(read_post_bytes) += read_bytes;
}
}
}
Index: php4/ext/standard/php_fopen_wrapper.c
diff -u php4/ext/standard/php_fopen_wrapper.c:1.29 
php4/ext/standard/php_fopen_wrapper.c:1.30
--- php4/ext/standard/php_fopen_wrapper.c:1.29  Tue Nov 12 13:29:11 2002
+++ php4/ext/standard/php_fopen_wrapper.c   Thu Nov 21 05:29:11 2002
@@ -17,7 +17,7 @@
|  Hartmut Holzgraefe [EMAIL PROTECTED]   |
+--+
  */
-/* $Id: php_fopen_wrapper.c,v 1.29 2002/11/12 18:29:11 hholzgra Exp $ */
+/* $Id: php_fopen_wrapper.c,v 1.30 2002/11/21 10:29:11 hholzgra Exp $ */
 
 #include stdio.h
 #include stdlib.h
@@ -96,6 +96,7 @@
}
}
 
+   SG(read_post_bytes) += read_bytes;
 return read_bytes;
 }
 



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




[PHP-CVS] cvs: php4 /ext/standard php_fopen_wrapper.c /main SAPI.c main.c php_content_types.c php_globals.h

2002-10-21 Thread Hartmut Holzgraefe
hholzgraMon Oct 21 12:41:07 2002 EDT

  Modified files:  
/php4/main  SAPI.c main.c php_content_types.c php_globals.h 
/php4/ext/standard  php_fopen_wrapper.c 
  Log:
  some changes to how request input data (Content-Lenght 0) is handled
  - webdav-specific stuff removed (should be handled using httpd.conf
LIMIT or equivalents)
  - always_populate_raw_post_data now working on any method, not just
POST (and webdav methods with allow_webdav_methods), when 
Content-Length is greater zero
  - raw input data is also available using php://input stream,
this way one doesn't have to care about memory_limit
  - input data is now always consumed (although maybe ignored,
this fixes we had withproblems with keep-alive connections
  @ raw POST data is now available as php://input stream (hartmut)
  
  
Index: php4/main/SAPI.c
diff -u php4/main/SAPI.c:1.150 php4/main/SAPI.c:1.151
--- php4/main/SAPI.c:1.150  Sat Sep  7 21:06:29 2002
+++ php4/main/SAPI.cMon Oct 21 12:41:06 2002
@@ -18,7 +18,7 @@
+--+
 */
 
-/* $Id: SAPI.c,v 1.150 2002/09/08 01:06:29 yohgaki Exp $ */
+/* $Id: SAPI.c,v 1.151 2002/10/21 16:41:06 hholzgra Exp $ */
 
 #include ctype.h
 #include sys/stat.h
@@ -128,7 +128,7 @@
char *content_type = estrndup(SG(request_info).content_type, 
content_type_length);
char *p;
char oldchar=0;
-   void (*post_reader_func)(TSRMLS_D);
+   void (*post_reader_func)(TSRMLS_D) = NULL;
 
 
/* dedicated implementation for increased performance:
@@ -159,7 +159,6 @@
return;
}
SG(request_info).post_entry = NULL;
-   post_reader_func = sapi_module.default_post_reader;
}
if (oldchar) {
*(p-1) = oldchar;
@@ -169,10 +168,10 @@
 
if(post_reader_func) {
post_reader_func(TSRMLS_C);
+   }
 
-   if(PG(always_populate_raw_post_data)  
sapi_module.default_post_reader) {
-   sapi_module.default_post_reader(TSRMLS_C);
-   }
+   if(PG(always_populate_raw_post_data)  sapi_module.default_post_reader) {
+   sapi_module.default_post_reader(TSRMLS_C);
}
 }
 
@@ -282,6 +281,7 @@
 SAPI_API void sapi_activate(TSRMLS_D)
 {
void (*post_reader_func)(TSRMLS_D);
+
zend_llist_init(SG(sapi_headers).headers, sizeof(sapi_header_struct), (void 
(*)(void *)) sapi_free_header, 0);
SG(sapi_headers).send_default_content_type = 1;
 
@@ -306,39 +306,34 @@
}
SG(rfc1867_uploaded_files) = NULL;
 
+   /* handle request mehtod */
if (SG(server_context)) {
-   if ( SG(request_info).request_method 
- (!strcmp(SG(request_info).request_method, POST)
-   || (PG(allow_webdav_methods) 
-(!strcmp(SG(request_info).request_method, 
PROPFIND)
-   || !strcmp(SG(request_info).request_method, 
PROPPATCH)
-   || !strcmp(SG(request_info).request_method, 
MKCOL)
-   || !strcmp(SG(request_info).request_method, 
PUT)
-   || !strcmp(SG(request_info).request_method, 
MOVE)
-   || !strcmp(SG(request_info).request_method, 
COPY)
-   || !strcmp(SG(request_info).request_method, 
LOCK) {
-   if (!SG(request_info).content_type) {
+   if ( SG(request_info).request_method) {
+   if(!strcmp(SG(request_info).request_method, POST)
+   (SG(request_info).content_type)) {
+   /* HTTP POST - may contain form data to be read into 
+variables
+  depending on content type given
+   */
+   sapi_read_post_data(TSRMLS_C);
+   } else {
+   /* any other method with content payload will fill 
+  $HTTP_RAW_POST_DATA if enabled by 
+always_populate_raw_post_data 
+  it is up to the webserver to decide whether to 
+allow a method or not
+   */
SG(request_info).content_type_dup = NULL;
if(PG(always_populate_raw_post_data)) {
-   SG(request_info).post_entry = NULL;
-   post_reader_func = 
sapi_module.default_post_reader;
-
-   if(post_reader_func) {
-   post_reader_func(TSRMLS_C);
-
-