Skip to content

Commit dd04722

Browse files
committed
Merge pull request #18 from zelgerj/master
added userland function appserver_get_envs()
2 parents da091a2 + bac7bd1 commit dd04722

File tree

5 files changed

+48
-2
lines changed

5 files changed

+48
-2
lines changed

build.default.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
# ---- General Settings ---------------------------------------------------------
1111
php.ext.name = appserver
1212

13-
release.version = 0.1.8
13+
release.version = 0.1.9
1414
release.stability = beta
15-
api.version = 0.1.8
15+
api.version = 0.1.9
1616
api.stability = beta
1717

1818
php.version = 5.5.10

pecl/package2.xml

+3
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/ta
4646
<file name="tests/appserver_007.phpt" role="test"/>
4747
<file name="tests/appserver_008.phpt" role="test"/>
4848
<file name="tests/appserver_009.phpt" role="test"/>
49+
<file name="tests/appserver_010.phpt" role="test"/>
50+
<file name="tests/appserver_011.phpt" role="test"/>
51+
<file name="tests/appserver_012.phpt" role="test"/>
4952
</dir>
5053
</contents>
5154
<dependencies>

src/appserver.c

+23
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ const zend_function_entry appserver_functions[] = {
5656
PHP_FE(appserver_redefine, NULL)
5757
PHP_FE(appserver_set_raw_post_data, NULL)
5858
PHP_FE(appserver_get_http_response_code, NULL)
59+
PHP_FE(appserver_get_envs, NULL)
5960
PHP_FE_END
6061
};
6162

@@ -262,6 +263,28 @@ PHP_MINFO_FUNCTION(appserver)
262263
DISPLAY_INI_ENTRIES();
263264
}
264265

266+
/* {{{ proto boolean appserver_get_envs()
267+
Returns an array of all defined environmental variables set by system or using putenv */
268+
PHP_FUNCTION(appserver_get_envs)
269+
{
270+
char **env, *tmp1, *tmp2;
271+
272+
/* init return value as array */
273+
array_init(return_value);
274+
/* iterate all envs and build up array */
275+
for (env=environ; env!=NULL && *env !=NULL; env++) {
276+
tmp1 = estrdup(*env);
277+
if (!(tmp2=strchr(tmp1,'='))) { /* malformed entry? */
278+
efree(tmp1);
279+
continue;
280+
}
281+
*tmp2 = 0;
282+
tmp2++;
283+
add_assoc_string(return_value, tmp1, tmp2, 1);
284+
efree(tmp1);
285+
}
286+
}
287+
265288
/* {{{ proto boolean appserver_get_http_response_code()
266289
gets the http response code if is set in sapi_headers hash table */
267290
PHP_FUNCTION(appserver_get_http_response_code)

src/php_appserver.h

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ PHP_FUNCTION(appserver_set_headers_sent);
7373
PHP_FUNCTION(appserver_redefine);
7474
PHP_FUNCTION(appserver_set_raw_post_data);
7575
PHP_FUNCTION(appserver_get_http_response_code);
76+
PHP_FUNCTION(appserver_get_envs);
7677

7778
ZEND_BEGIN_MODULE_GLOBALS(appserver)
7879
appserver_llist *headers;

src/tests/appserver_012.phpt

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
--TEST--
2+
appserver: call appserver_get_envs and check if correct environmental vars are returned
3+
--CREDITS--
4+
Johann Zelger <jz [at] techdivision [dot] com>
5+
--FILE--
6+
<?php
7+
putenv("APPSERVER_ENV_TEST1=TestValue1");
8+
putenv("APPSERVER_ENV_TEST2=TestValue2");
9+
putenv("APPSERVER_ENV_TEST3=TestValue3");
10+
$envs = appserver_get_envs();
11+
var_dump($envs["APPSERVER_ENV_TEST1"]);
12+
var_dump($envs["APPSERVER_ENV_TEST2"]);
13+
var_dump($envs["APPSERVER_ENV_TEST3"]);
14+
var_dump(isset($envs["PWD"]));
15+
--EXPECT--
16+
string(10) "TestValue1"
17+
string(10) "TestValue2"
18+
string(10) "TestValue3"
19+
bool(true)

0 commit comments

Comments
 (0)