author | Craig Mohrman <craig.mohrman@oracle.com> |
Fri, 18 Apr 2014 11:03:12 -0700 | |
branch | s11u1-sru |
changeset 3086 | 649b12aa87ce |
parent 846 | fe258446a1ae |
permissions | -rw-r--r-- |
846
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
1 |
--- php-5.3.10/ext/standard/dl.c_orig Sun Jan 1 05:15:04 2012 |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
2 |
+++ php-5.3.10/ext/standard/dl.c Wed Feb 8 11:25:26 2012 |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
3 |
@@ -132,12 +132,30 @@ |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
4 |
} |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
5 |
libpath = estrdup(filename); |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
6 |
} else if (extension_dir && extension_dir[0]) { |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
7 |
- int extension_dir_len = strlen(extension_dir); |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
8 |
+ /* if extension_dir supports multiple paths, then look for the extension in each of them */ |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
9 |
+ static const char path_sep[] = { ZEND_PATHS_SEPARATOR, 0 }; |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
10 |
+ struct stat filetype; |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
11 |
+ char* extdir = NULL; |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
12 |
+ if ((extdir = strtok_r(extension_dir, path_sep, &extension_dir)) != NULL) { |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
13 |
+ do { |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
14 |
+ int extension_dir_len = strlen(extdir); |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
15 |
+ if (IS_SLASH(extdir[extension_dir_len-1])) { |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
16 |
+ spprintf(&libpath, 0, "%s%s", extdir, filename); |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
17 |
+ } else { |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
18 |
+ spprintf(&libpath, 0, "%s%c%s", extdir, DEFAULT_SLASH, filename); |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
19 |
+ } |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
20 |
|
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
21 |
- if (IS_SLASH(extension_dir[extension_dir_len-1])) { |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
22 |
- spprintf(&libpath, 0, "%s%s", extension_dir, filename); /* SAFE */ |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
23 |
+ if (stat(libpath, &filetype) == 0) { |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
24 |
+ break; |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
25 |
+ } |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
26 |
+ } while (extension_dir && (extdir = strtok_r(NULL, path_sep, &extension_dir)) != NULL); |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
27 |
} else { |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
28 |
- spprintf(&libpath, 0, "%s%c%s", extension_dir, DEFAULT_SLASH, filename); /* SAFE */ |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
29 |
+ int extension_dir_len = strlen(extension_dir); |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
30 |
+ if (IS_SLASH(extension_dir[extension_dir_len-1])) { |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
31 |
+ spprintf(&libpath, 0, "%s%s", extension_dir, filename); |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
32 |
+ } else { |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
33 |
+ spprintf(&libpath, 0, "%s%c%s", extension_dir, DEFAULT_SLASH, filename); |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
34 |
+ } |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
35 |
} |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
36 |
} else { |
fe258446a1ae
6714149 integrate PHP 5.3 within OpenSolaris
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff
changeset
|
37 |
return FAILURE; /* Not full path given or extension_dir is not set */ |