wez Sun Aug 14 09:48:30 2005 EDT
Modified files:
/php-src/main/streams streams.c
Log:
tidy up implicit_mode handling; spotted by Nuno
There's probably a much more efficient way to do this than the current strchr
stuff.
http://cvs.php.net/diff.php/php-src/main/streams/streams.c?r1=1.85&r2=1.86&ty=u
Index: php-src/main/streams/streams.c
diff -u php-src/main/streams/streams.c:1.85 php-src/main/streams/streams.c:1.86
--- php-src/main/streams/streams.c:1.85 Sat Aug 13 15:22:03 2005
+++ php-src/main/streams/streams.c Sun Aug 14 09:48:29 2005
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streams.c,v 1.85 2005/08/13 19:22:03 wez Exp $ */
+/* $Id: streams.c,v 1.86 2005/08/14 13:48:29 wez Exp $ */
#define _GNU_SOURCE
#include "php.h"
@@ -2347,7 +2347,7 @@
char *path_to_open;
int persistent = options & STREAM_OPEN_PERSISTENT;
char *copy_of_path = NULL;
- int implicit_mode[16];
+ char implicit_mode[16];
int modelen = strlen(mode);
if (opened_path) {
@@ -2366,20 +2366,20 @@
return NULL;
}
- memcpy(implicit_mode, mode, modelen);
+ strlcpy(implicit_mode, mode, sizeof(implicit_mode));
if (context && context->default_mode && modelen < 15 && !strchr(mode,
't') && !strchr(mode, 'b')) {
if (context->default_mode & PHP_FILE_BINARY) {
implicit_mode[modelen++] = 'b';
} else if (context->default_mode & PHP_FILE_TEXT) {
implicit_mode[modelen++] = 't';
}
- implicit_mode[modelen] = 0;
+ implicit_mode[modelen] = '\0';
}
if (wrapper) {
stream = wrapper->wops->stream_opener(wrapper,
- path_to_open, (char *)implicit_mode, options ^
REPORT_ERRORS,
+ path_to_open, implicit_mode, options ^
REPORT_ERRORS,
opened_path, context STREAMS_REL_CC TSRMLS_CC);
/* if the caller asked for a persistent stream but the wrapper
did not
@@ -2393,7 +2393,7 @@
if (stream) {
stream->wrapper = wrapper;
- memcpy(stream->mode, implicit_mode, modelen + 1);
+ strlcpy(stream->mode, implicit_mode,
sizeof(stream->mode));
}
}
@@ -2441,7 +2441,7 @@
}
/* Output encoding on text mode streams defaults to utf8 unless
specified in context parameter */
- if (stream && memchr(implicit_mode, 't', modelen) &&
(memchr(implicit_mode, 'w', modelen) || memchr(implicit_mode, 'a', modelen) ||
memchr(implicit_mode, '+', modelen))) {
+ if (stream && strchr(implicit_mode, 't') && (strchr(implicit_mode, 'w')
|| strchr(implicit_mode, 'a') || strchr(implicit_mode, '+'))) {
php_stream_filter *filter;
char *encoding = (context && context->output_encoding) ?
context->output_encoding : "utf8";
char *filtername;
@@ -2460,7 +2460,7 @@
efree(filtername);
}
- if (stream && memchr(implicit_mode, 't', modelen) &&
(memchr(implicit_mode, 'r', modelen) || memchr(implicit_mode, '+', modelen))) {
+ if (stream && strchr(implicit_mode, 't') && (strchr(implicit_mode, 'r')
|| strchr(implicit_mode, '+'))) {
php_stream_filter *filter;
char *filtername;
char *encoding = (context && context->input_encoding) ?
context->input_encoding : "utf8";
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php