summaryrefslogtreecommitdiff
path: root/main/php_ini.c
diff options
context:
space:
mode:
authorSara Golemon <pollita@php.net>2017-06-22 13:13:42 -0400
committerSara Golemon <pollita@php.net>2017-06-22 13:13:45 -0400
commitd09edf7b34ffc2b6b90eb25e75e18070c38aab1d (patch)
tree05712924c9fe8b1ed513c86b973ceb81ecd3e906 /main/php_ini.c
parentfe5c8f2b80e57c6470a56a8d775947fe0ded182e (diff)
downloadphp-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.c27
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);
}