iliaa Sat Jan 25 16:15:41 2003 EDT
Modified files: (Branch: PHP_4_3)
/php4/main php_ini.c
Log:
MFH
Index: php4/main/php_ini.c
diff -u php4/main/php_ini.c:1.106.2.1 php4/main/php_ini.c:1.106.2.2
--- php4/main/php_ini.c:1.106.2.1 Tue Dec 31 11:26:15 2002
+++ php4/main/php_ini.c Sat Jan 25 16:15:41 2003
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_ini.c,v 1.106.2.1 2002/12/31 16:26:15 sebastian Exp $ */
+/* $Id: php_ini.c,v 1.106.2.2 2003/01/25 21:15:41 iliaa Exp $ */
/* Check CWD for php.ini */
#define INI_CHECK_CWD
@@ -31,6 +31,8 @@
#include "SAPI.h"
#include "php_main.h"
+#include "dirent.h"
+
#ifndef S_ISREG
#define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
#endif
@@ -230,8 +232,6 @@
char *open_basedir;
int free_ini_search_path=0;
zend_file_handle fh;
- DIR *dirp = NULL;
- struct dirent *dir_entry;
struct stat sb;
char ini_file[MAXPATHLEN];
char *p;
@@ -397,13 +397,17 @@
/* If the config_file_scan_dir is set at compile-time, go and scan this
directory and
* parse any .ini files found in this directory. */
if(strlen(PHP_CONFIG_FILE_SCAN_DIR)) {
- dirp = VCWD_OPENDIR(PHP_CONFIG_FILE_SCAN_DIR);
- if (dirp) {
- fh.type = ZEND_HANDLE_FP;
- while ((dir_entry = readdir(dirp)) != NULL) {
- /* check for a .ini extension */
- if ((p = strrchr(dir_entry->d_name,'.')) &&
strcmp(p,".ini")) continue;
- snprintf(ini_file, MAXPATHLEN, "%s%c%s",
PHP_CONFIG_FILE_SCAN_DIR, DEFAULT_SLASH, dir_entry->d_name);
+ struct dirent **namelist;
+ int ndir, i;
+
+ if ((ndir = scandir(PHP_CONFIG_FILE_SCAN_DIR, &namelist, 0,
+alphasort)) > 0) {
+ for (i = 0; i < ndir; i++) {
+ /* check for a .ini extension */
+ if (!(p = strrchr(namelist[i]->d_name, '.')) || (p &&
+strcmp(p, ".ini"))) {
+ free(namelist[i]);
+ continue;
+ }
+ snprintf(ini_file, MAXPATHLEN, "%s%c%s",
+PHP_CONFIG_FILE_SCAN_DIR, DEFAULT_SLASH, namelist[i]->d_name);
if (VCWD_STAT(ini_file, &sb) == 0) {
if (S_ISREG(sb.st_mode)) {
if ((fh.handle.fp =
VCWD_FOPEN(ini_file, "r"))) {
@@ -417,8 +421,10 @@
}
}
}
+ free(namelist[i]);
}
- closedir(dirp);
+ free(namelist);
+
/*
* Don't need an extra byte for the \0 in this malloc as the
last
* element will not get a trailing , which gives us the byte
for the \0
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php