iliaa Mon Feb 21 19:24:51 2005 EDT
Modified files: (Branch: PHP_5_0)
/php-src/main php_streams.h
/php-src/main/streams streams.c
/php-src/ext/standard dir.c
/php-src NEWS
Log:
MFH: Fixed bug #31515 (Improve performance of scandir() by factor of 10 or
so).
http://cvs.php.net/diff.php/php-src/main/php_streams.h?r1=1.95.2.1&r2=1.95.2.2&ty=u
Index: php-src/main/php_streams.h
diff -u php-src/main/php_streams.h:1.95.2.1 php-src/main/php_streams.h:1.95.2.2
--- php-src/main/php_streams.h:1.95.2.1 Mon Nov 15 18:44:14 2004
+++ php-src/main/php_streams.h Mon Feb 21 19:24:50 2005
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_streams.h,v 1.95.2.1 2004/11/15 23:44:14 iliaa Exp $ */
+/* $Id: php_streams.h,v 1.95.2.2 2005/02/22 00:24:50 iliaa Exp $ */
#ifndef PHP_STREAMS_H
#define PHP_STREAMS_H
@@ -331,11 +331,11 @@
#define php_stream_closedir(dirstream) php_stream_close((dirstream))
#define php_stream_rewinddir(dirstream) php_stream_rewind((dirstream))
-PHPAPI int php_stream_dirent_alphasort(const php_stream_dirent **a, const
php_stream_dirent **b);
-PHPAPI int php_stream_dirent_alphasortr(const php_stream_dirent **a, const
php_stream_dirent **b);
+PHPAPI int php_stream_dirent_alphasort(const char **a, const char **b);
+PHPAPI int php_stream_dirent_alphasortr(const char **a, const char **b);
-PHPAPI int _php_stream_scandir(char *dirname, php_stream_dirent **namelist[],
int flags, php_stream_context *context,
- int (*compare) (const php_stream_dirent **a, const
php_stream_dirent **b) TSRMLS_DC);
+PHPAPI int _php_stream_scandir(char *dirname, char **namelist[], int flags,
php_stream_context *context,
+ int (*compare) (const char **a, const char **b)
TSRMLS_DC);
#define php_stream_scandir(dirname, namelist, context, compare)
_php_stream_scandir((dirname), (namelist), 0, (context), (compare) TSRMLS_CC)
PHPAPI int _php_stream_set_option(php_stream *stream, int option, int value,
void *ptrparam TSRMLS_DC);
http://cvs.php.net/diff.php/php-src/main/streams/streams.c?r1=1.61.2.5&r2=1.61.2.6&ty=u
Index: php-src/main/streams/streams.c
diff -u php-src/main/streams/streams.c:1.61.2.5
php-src/main/streams/streams.c:1.61.2.6
--- php-src/main/streams/streams.c:1.61.2.5 Mon Nov 15 18:44:14 2004
+++ php-src/main/streams/streams.c Mon Feb 21 19:24:51 2005
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streams.c,v 1.61.2.5 2004/11/15 23:44:14 iliaa Exp $ */
+/* $Id: streams.c,v 1.61.2.6 2005/02/22 00:24:51 iliaa Exp $ */
#define _GNU_SOURCE
#include "php.h"
@@ -1883,28 +1883,28 @@
/* {{{ php_stream_dirent_alphasort
*/
-PHPAPI int php_stream_dirent_alphasort(const php_stream_dirent **a, const
php_stream_dirent **b)
+PHPAPI int php_stream_dirent_alphasort(const char **a, const char **b)
{
- return strcoll((*a)->d_name,(*b)->d_name);
+ return strcoll(*a, *b);
}
/* }}} */
/* {{{ php_stream_dirent_alphasortr
*/
-PHPAPI int php_stream_dirent_alphasortr(const php_stream_dirent **a, const
php_stream_dirent **b)
+PHPAPI int php_stream_dirent_alphasortr(const char **a, const char **b)
{
- return strcoll((*b)->d_name,(*a)->d_name);
+ return strcoll(*b, *a);
}
/* }}} */
/* {{{ php_stream_scandir
*/
-PHPAPI int _php_stream_scandir(char *dirname, php_stream_dirent **namelist[],
int flags, php_stream_context *context,
- int (*compare) (const php_stream_dirent **a, const
php_stream_dirent **b) TSRMLS_DC)
+PHPAPI int _php_stream_scandir(char *dirname, char **namelist[], int flags,
php_stream_context *context,
+ int (*compare) (const char **a, const char **b)
TSRMLS_DC)
{
php_stream *stream;
php_stream_dirent sdp;
- php_stream_dirent **vector = NULL;
+ char **vector = NULL;
int vector_size = 0;
int nfiles = 0;
@@ -1924,11 +1924,10 @@
} else {
vector_size *= 2;
}
- vector = (php_stream_dirent **) erealloc(vector,
vector_size * sizeof(php_stream_dirent *));
+ vector = (char **) erealloc(vector, vector_size *
sizeof(char *));
}
- vector[nfiles] = emalloc(sizeof(php_stream_dirent));
- memcpy(vector[nfiles], &sdp, sizeof(sdp));
+ vector[nfiles] = estrdup(sdp.d_name);
nfiles++;
}
@@ -1937,7 +1936,7 @@
*namelist = vector;
if (compare) {
- qsort(*namelist, nfiles, sizeof(php_stream_dirent *),
(int(*)(const void *, const void *))compare);
+ qsort(*namelist, nfiles, sizeof(char *), (int(*)(const void *,
const void *))compare);
}
return nfiles;
}
http://cvs.php.net/diff.php/php-src/ext/standard/dir.c?r1=1.141&r2=1.141.2.1&ty=u
Index: php-src/ext/standard/dir.c
diff -u php-src/ext/standard/dir.c:1.141 php-src/ext/standard/dir.c:1.141.2.1
--- php-src/ext/standard/dir.c:1.141 Wed Jun 16 19:57:25 2004
+++ php-src/ext/standard/dir.c Mon Feb 21 19:24:51 2005
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dir.c,v 1.141 2004/06/16 23:57:25 abies Exp $ */
+/* $Id: dir.c,v 1.141.2.1 2005/02/22 00:24:51 iliaa Exp $ */
/* {{{ includes/startup/misc */
@@ -488,7 +488,7 @@
array_init(return_value);
for (i = 0; i < n; i++) {
- add_next_index_string(return_value, namelist[i]->d_name, 0);
+ add_next_index_string(return_value, namelist[i], 0);
}
if (n) {
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1760.2.255&r2=1.1760.2.256&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1760.2.255 php-src/NEWS:1.1760.2.256
--- php-src/NEWS:1.1760.2.255 Mon Feb 21 05:20:23 2005
+++ php-src/NEWS Mon Feb 21 19:24:51 2005
@@ -57,6 +57,7 @@
(daniel dot beet at accuratesoftware dot com, Tony)
- Fixed bug #31527 (crash in msg_send() when non-string is stored without
being serialized). (Ilia)
+- Fixed bug #31515 (Improve performance of scandir() by factor of 10 or so).
(Ilia)
- Fixed bug #31514 (open_basedir uses path_translated rather then cwd for .
translation). (Ilia)
- Fixed bug #31480 (Possible infinite loop in imap_mail_compose()). (Ilia)
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php