diff options
author | Sara Golemon <pollita@php.net> | 2017-06-22 13:13:42 -0400 |
---|---|---|
committer | Sara Golemon <pollita@php.net> | 2017-06-22 13:13:45 -0400 |
commit | d09edf7b34ffc2b6b90eb25e75e18070c38aab1d (patch) | |
tree | 05712924c9fe8b1ed513c86b973ceb81ecd3e906 /main/php_ini.c | |
parent | fe5c8f2b80e57c6470a56a8d775947fe0ded182e (diff) | |
download | php-git-d09edf7b34ffc2b6b90eb25e75e18070c38aab1d.tar.gz |
Minor refactor of load extension by name impl
Minimize the #ifdef surface area
Localize orig_libpath to retry scope
Send errors to php_error() rathern than stderr
Diffstat (limited to 'main/php_ini.c')
-rw-r--r-- | main/php_ini.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/main/php_ini.c b/main/php_ini.c index a378ce1926..8b53f30441 100644 --- a/main/php_ini.c +++ b/main/php_ini.c @@ -362,7 +362,7 @@ static void php_load_zend_extension_cb(void *arg) if (IS_ABSOLUTE_PATH(filename, length)) { zend_load_extension(filename); } else { - char *libpath, *orig_libpath; + char *libpath; char *extension_dir = INI_STR("extension_dir"); int extension_dir_len = (int)strlen(extension_dir); int slash_suffix = IS_SLASH(extension_dir[extension_dir_len-1]); @@ -372,30 +372,29 @@ static void php_load_zend_extension_cb(void *arg) } else { spprintf(&libpath, 0, "%s%c%s", extension_dir, DEFAULT_SLASH, filename); /* SAFE */ } + if (VCWD_ACCESS(libpath, F_OK)) { /* If file does not exist, consider as extension name and build file name */ - orig_libpath = libpath; + const char *libpath_prefix = ""; + char *orig_libpath = libpath; #if PHP_WIN32 + libpath_prefix = "php_"; +#endif + if (slash_suffix) { - spprintf(&libpath, 0, "%sphp_%s." PHP_SHLIB_SUFFIX, extension_dir, filename); /* SAFE */ - } else { - spprintf(&libpath, 0, "%s%cphp_%s." PHP_SHLIB_SUFFIX, extension_dir, DEFAULT_SLASH, filename); /* SAFE */ - } -#else - if (slash_suffix) { - spprintf(&libpath, 0, "%s%s." PHP_SHLIB_SUFFIX, extension_dir, filename); /* SAFE */ + spprintf(&libpath, 0, "%s%s%s." PHP_SHLIB_SUFFIX, extension_dir, libpath_prefix, filename); /* SAFE */ } else { - spprintf(&libpath, 0, "%s%c%s." PHP_SHLIB_SUFFIX, extension_dir, DEFAULT_SLASH, filename); /* SAFE */ + spprintf(&libpath, 0, "%s%c%s%s." PHP_SHLIB_SUFFIX, extension_dir, DEFAULT_SLASH, libpath_prefix, filename); /* SAFE */ } -#endif + if (VCWD_ACCESS(libpath, F_OK)) { - fprintf(stderr, "Cannot access Zend extension %s (Tried: %s, %s)\n", filename, orig_libpath, libpath); - /* See http://support.microsoft.com/kb/190351 */ - fflush(stderr); + php_error(E_CORE_WARNING, "Cannot access Zend extension %s (Tried: %s, %s)\n", + filename, orig_libpath, libpath); efree(orig_libpath); efree(libpath); return; } + efree(orig_libpath); } |