Re: cvs: php4 /main Makefile.in memory_streams.c php.h php_memory_streams.h
| From: | Jani Taskinen | Date: | Sat, 16 Mar 2002 22:45:24 +0000 |
| Subject: | Re: cvs: php4 /main Makefile.in memory_streams.c php.h php_memory_streams.h | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-10275@lists.php.net to get a copy of this message | ||
Please watch how you write the NEWS entries.
Sentences usually start with capital letter and end with period.
Also, do you really think there needs to be separate news entry?
Streams stuff was just added so just put this under the same
entry.
--Jani
On Sat, 16 Mar 2002, Marcus Börger wrote:
>helly Sat Mar 16 15:11:07 2002 EDT
>
> Added files:
> /php4/main memory_streams.c php_memory_streams.h
>
> Modified files:
> /php4/main Makefile.in php.h
> Log:
> -added memory streams
> @added memory streams (marcus)
>
>Index: php4/main/Makefile.in
>diff -u php4/main/Makefile.in:1.16 php4/main/Makefile.in:1.17
>--- php4/main/Makefile.in:1.16 Sat Jan 19 21:30:18 2002
>+++ php4/main/Makefile.in Sat Mar 16 15:11:06 2002
>@@ -6,7 +6,7 @@
> php_ini.c SAPI.c rfc1867.c php_content_types.c strlcpy.c \
> strlcat.c mergesort.c reentrancy.c php_variables.c php_ticks.c \
> streams.c network.c php_open_temporary_file.c php_logos.c \
>- output.c
>+ output.c memory_stream.c
>
> LTLIBRARY_SOURCES = $(LTLIBRARY_SOURCES_COMMON) internal_functions.c
>
>Index: php4/main/php.h
>diff -u php4/main/php.h:1.164 php4/main/php.h:1.165
>--- php4/main/php.h:1.164 Sat Mar 16 12:54:11 2002
>+++ php4/main/php.h Sat Mar 16 15:11:06 2002
>@@ -17,7 +17,7 @@
> +----------------------------------------------------------------------+
> */
>
>-/* $Id: php.h,v 1.164 2002/03/16 17:54:11 wez Exp $ */
>+/* $Id: php.h,v 1.165 2002/03/16 20:11:06 helly Exp $ */
>
> #ifndef PHP_H
> #define PHP_H
>@@ -172,6 +172,7 @@
> #endif
>
> #include "php_streams.h"
>+#include "php_memory_streams.h"
> #include "fopen_wrappers.h"
>
> #if (REGEX == 1 || REGEX == 0) && !defined(NO_REGEX_EXTRA_H)
>@@ -357,7 +358,7 @@
> #define XtOffsetOf(s_type, field) XtOffset(s_type*, field)
> #endif
> #endif /* !XtOffsetOf */
>-
>+
> PHPAPI PHP_FUNCTION(warn_not_available);
>
> #endif
>
>Index: php4/main/memory_streams.c
>+++ php4/main/memory_streams.c
>/*
> +----------------------------------------------------------------------+
> | PHP Version 4 |
> +----------------------------------------------------------------------+
> | Copyright (c) 1997-2002 The PHP Group |
> +----------------------------------------------------------------------+
> | This source file is subject to version 2.02 of the PHP license, |
> | that is bundled with this package in the file LICENSE, and is |
> | available at through the world-wide-web at |
> | http://www.php.net/license/2_02.txt.
> |
> | If you did not receive a copy of the PHP license and are unable to |
> | obtain it through the world-wide-web, please send a note to |
> | license@php.net so we can mail you a copy immediately. |
> +----------------------------------------------------------------------+
> | Author: |
> | Marcus Boerger <helly@php.net> |
> +----------------------------------------------------------------------+
> */
>
>#define _GNU_SOURCE
>#include "php.h"
>#include "php_streams.h"
>
>/* {{{ ------- MEMORY stream implementation -------*/
>
>typedef struct {
> char *data;
> size_t fpos;
> size_t fsize;
>} php_memory_stream_data;
>
>static size_t php_memory_stream_write(php_stream *stream, const char *buf, size_t count) {/* {{{
>*/
> php_memory_stream_data *ms;
>
> assert(stream != NULL);
> ms = stream->abstract;
> assert(ms != NULL);
> if ( ms->fpos + count > ms->fsize) {
> char *tmp;
>
> if ( !ms->data) {
> tmp = emalloc( ms->fpos + count);
> } else {
> tmp = erealloc( ms->data, ms->fpos + count);
> }
> if ( !tmp) {
> count = ms->fsize - ms->fpos + 1;
> } else {
> ms->data = tmp;
> ms->fsize = ms->fpos + count;
> }
> }
> if ( !ms->data)
> count = 0;
> if ( count) {
> assert(buf!= NULL);
> memcpy( ms->data+ms->fpos, (char*)buf, count);
> ms->fpos += count;
> }
> return count;
>} /* }}} */
>
>static size_t php_memory_stream_read(php_stream *stream, char *buf, size_t count) {/* {{{ */
> php_memory_stream_data *ms;
>
> assert(stream != NULL);
> ms = stream->abstract;
> assert(ms != NULL);
>
> if (buf == NULL && count == 0) {
> /* check for EOF condition */
> if (ms->fpos >= ms->fsize) {
> return EOF;
> }
> return 0;
> }
>
> if ( ms->fpos + count > ms->fsize) {
> count = ms->fsize - ms->fpos;
> }
> if ( count) {
> assert(buf!= NULL);
> memcpy( buf, ms->data+ms->fpos, count);
> ms->fpos += count;
> }
> return count;
>} /* }}} */
>
>
>static int php_memory_stream_close(php_stream *stream, int close_handle) {/* {{{ */
> php_memory_stream_data *ms;
>
> assert(stream != NULL);
> ms = stream->abstract;
> assert(ms != NULL);
> if (ms->data) {
> efree(ms->data);
> }
> ms->data = NULL;
> ms->fsize = 0;
> ms->fpos = 0;
>} /* }}} */
>
>
>static int php_memory_stream_flush(php_stream *stream) {/* {{{ */
> // nothing to do here
> return 0;
>} /* }}} */
>
>
>static int php_memory_stream_seek(php_stream *stream, off_t offset, int whence) {/* {{{ */
> php_memory_stream_data *ms;
>
> assert(stream != NULL);
> ms = stream->abstract;
> assert(ms != NULL);
> if (offset == 0 && whence == SEEK_CUR)
> return ms->fpos;
> switch( whence) {
> case SEEK_CUR:
> if ( offset < 0) {
> if ( ms->fpos < -offset) {
> ms->fpos = 0;
> /*return EINVAL;*/
> } else {
> ms->fpos = ms->fpos + offset;
> }
> } else {
> if ( ms->fpos < offset) {
> ms->fpos = ms->fsize;
> /*return EINVAL;*/
> } else {
> ms->fpos = ms->fpos + offset;
> }
> }
> return 0;
> case SEEK_SET:
> if ( offset > ms->fsize) {
> ms->fpos = ms->fsize;
> /*return EINVAL;*/
> } else {
> ms->fpos = offset;
> }
> return 0;
> case SEEK_END:
> if ( offset > 0) {
> ms->fpos = ms->fsize;
> /*return EINVAL;*/
> } else if ( ms->fpos < -offset) {
> ms->fpos = 0;
> /*return EINVAL;*/
> } else {
> ms->fpos = ms->fsize + offset;
> }
> return 0;
> default:
> return 0;
> return /*EINVAL*/;
> }
>} /* }}} */
>
>php_stream_ops php_stream_memory_ops = {
> php_memory_stream_write, php_memory_stream_read,
> php_memory_stream_close, php_memory_stream_flush,
> php_memory_stream_seek,
> NULL,
> NULL,
> "MEMORY"
>};
>
>PHPAPI php_stream *php_memory_stream_create() {/* {{{ */
> php_memory_stream_data *self;
>
> self = emalloc(sizeof(*self));
> assert( self != NULL);
> self->data = NULL;
> self->fpos = 0;
> self->fsize = 0;
> return php_stream_alloc(&php_stream_memory_ops, self, 0, "rwb");
>} /* }}} */
>
>/*
> * Local variables:
> * tab-width: 4
> * c-basic-offset: 4
> * End:
> * vim600: noet sw=4 ts=4 fdm=marker
> * vim<600: noet sw=4 ts=4
> */
>
>Index: php4/main/php_memory_streams.h
>+++ php4/main/php_memory_streams.h
>/*
> +----------------------------------------------------------------------+
> | PHP Version 4 |
> +----------------------------------------------------------------------+
> | Copyright (c) 1997-2002 The PHP Group |
> +----------------------------------------------------------------------+
> | This source file is subject to version 2.02 of the PHP license, |
> | that is bundled with this package in the file LICENSE, and is |
> | available at through the world-wide-web at |
> | http://www.php.net/license/2_02.txt.
> |
> | If you did not receive a copy of the PHP license and are unable to |
> | obtain it through the world-wide-web, please send a note to |
> | license@php.net so we can mail you a copy immediately. |
> +----------------------------------------------------------------------+
> | Author: Marcus Boerger <helly@php.net> |
> +----------------------------------------------------------------------+
> */
>
>#ifndef PHP_MEMORY_STREAM_H
>#define PHP_MEMORY_STREAM_H
>
>#include "php_streams.h"
>
>PHPAPI php_stream *php_memory_stream_create();
>
>#endif
>
>/*
> * Local variables:
> * tab-width: 4
> * c-basic-offset: 4
> * End:
> * vim600: sw=4 ts=4 fdm=marker
> * vim<600: sw=4 ts=4
> */
>
>
>
>
--