Diff for /embedaddon/php/main/streams/streams.c between versions 1.1.1.4 and 1.1.1.5

version 1.1.1.4, 2013/10/14 08:02:43 version 1.1.1.5, 2014/06/15 20:04:01
Line 2 Line 2
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
    | PHP Version 5                                                        |     | PHP Version 5                                                        |
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
   | Copyright (c) 1997-2013 The PHP Group                                |   | Copyright (c) 1997-2014 The PHP Group                                |
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
    | This source file is subject to version 3.01 of the PHP license,      |     | This source file is subject to version 3.01 of the PHP license,      |
    | that is bundled with this package in the file LICENSE, and is        |     | that is bundled with this package in the file LICENSE, and is        |
Line 736  PHPAPI size_t _php_stream_read(php_stream *stream, cha Line 736  PHPAPI size_t _php_stream_read(php_stream *stream, cha
   
                 if (!stream->readfilters.head && (stream->flags & PHP_STREAM_FLAG_NO_BUFFER || stream->chunk_size == 1)) {                  if (!stream->readfilters.head && (stream->flags & PHP_STREAM_FLAG_NO_BUFFER || stream->chunk_size == 1)) {
                         toread = stream->ops->read(stream, buf, size TSRMLS_CC);                          toread = stream->ops->read(stream, buf, size TSRMLS_CC);
                           if (toread == (size_t) -1) {
                                   /* e.g. underlying read(2) returned -1 */
                                   break;
                           }
                 } else {                  } else {
                         php_stream_fill_read_buffer(stream, size TSRMLS_CC);                          php_stream_fill_read_buffer(stream, size TSRMLS_CC);
   
Line 1401  PHPAPI size_t _php_stream_passthru(php_stream * stream Line 1405  PHPAPI size_t _php_stream_passthru(php_stream * stream
                 p = php_stream_mmap_range(stream, php_stream_tell(stream), PHP_STREAM_MMAP_ALL, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped);                  p = php_stream_mmap_range(stream, php_stream_tell(stream), PHP_STREAM_MMAP_ALL, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped);
   
                 if (p) {                  if (p) {
                        PHPWRITE(p, mapped);                        do {
                                 /* output functions return int, so pass in int max */
                                 if (0 < (b = PHPWRITE(p, MIN(mapped - bcount, INT_MAX)))) {
                                         bcount += b;
                                 }
                         } while (b > 0 && mapped > bcount);
   
                         php_stream_mmap_unmap_ex(stream, mapped);                          php_stream_mmap_unmap_ex(stream, mapped);
   
                        return mapped;                        return bcount;
                 }                  }
         }          }
   
Line 1920  PHPAPI int _php_stream_stat_path(char *path, int flags Line 1929  PHPAPI int _php_stream_stat_path(char *path, int flags
         char *path_to_open = path;          char *path_to_open = path;
         int ret;          int ret;
   
        /* Try to hit the cache first */        if (!(flags & PHP_STREAM_URL_STAT_NOCACHE)) {
        if (flags & PHP_STREAM_URL_STAT_LINK) {                /* Try to hit the cache first */
                if (BG(CurrentLStatFile) && strcmp(path, BG(CurrentLStatFile)) == 0) {                if (flags & PHP_STREAM_URL_STAT_LINK) {
                        memcpy(ssb, &BG(lssb), sizeof(php_stream_statbuf));                        if (BG(CurrentLStatFile) && strcmp(path, BG(CurrentLStatFile)) == 0) {
                        return 0;                                memcpy(ssb, &BG(lssb), sizeof(php_stream_statbuf));
                                 return 0;
                         }
                 } else {
                         if (BG(CurrentStatFile) && strcmp(path, BG(CurrentStatFile)) == 0) {
                                 memcpy(ssb, &BG(ssb), sizeof(php_stream_statbuf));
                                 return 0;
                         }
                 }                  }
         } else {  
                 if (BG(CurrentStatFile) && strcmp(path, BG(CurrentStatFile)) == 0) {  
                         memcpy(ssb, &BG(ssb), sizeof(php_stream_statbuf));  
                         return 0;  
                 }  
         }          }
   
         wrapper = php_stream_locate_url_wrapper(path, &path_to_open, 0 TSRMLS_CC);          wrapper = php_stream_locate_url_wrapper(path, &path_to_open, 0 TSRMLS_CC);
         if (wrapper && wrapper->wops->url_stat) {          if (wrapper && wrapper->wops->url_stat) {
                 ret = wrapper->wops->url_stat(wrapper, path_to_open, flags, ssb, context TSRMLS_CC);                  ret = wrapper->wops->url_stat(wrapper, path_to_open, flags, ssb, context TSRMLS_CC);
                 if (ret == 0) {                  if (ret == 0) {
                        /* Drop into cache */                        if (!(flags & PHP_STREAM_URL_STAT_NOCACHE)) {
                        if (flags & PHP_STREAM_URL_STAT_LINK) {                                /* Drop into cache */
                                if (BG(CurrentLStatFile)) {                                if (flags & PHP_STREAM_URL_STAT_LINK) {
                                        efree(BG(CurrentLStatFile));                                        if (BG(CurrentLStatFile)) {
                                                 efree(BG(CurrentLStatFile));
                                         }
                                         BG(CurrentLStatFile) = estrdup(path);
                                         memcpy(&BG(lssb), ssb, sizeof(php_stream_statbuf));
                                 } else {
                                         if (BG(CurrentStatFile)) {
                                                 efree(BG(CurrentStatFile));
                                         }
                                         BG(CurrentStatFile) = estrdup(path);
                                         memcpy(&BG(ssb), ssb, sizeof(php_stream_statbuf));
                                 }                                  }
                                 BG(CurrentLStatFile) = estrdup(path);  
                                 memcpy(&BG(lssb), ssb, sizeof(php_stream_statbuf));  
                         } else {  
                                 if (BG(CurrentStatFile)) {  
                                         efree(BG(CurrentStatFile));  
                                 }  
                                 BG(CurrentStatFile) = estrdup(path);  
                                 memcpy(&BG(ssb), ssb, sizeof(php_stream_statbuf));  
                         }                          }
                 }                  }
                 return ret;                  return ret;

Removed from v.1.1.1.4  
changed lines
  Added in v.1.1.1.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>