Skip to content

Commit

Permalink
Merge pull request #18 from zelgerj/master
Browse files Browse the repository at this point in the history
added userland function appserver_get_envs()
  • Loading branch information
zelgerj committed Apr 11, 2014
2 parents da091a2 + bac7bd1 commit dd04722
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 2 deletions.
4 changes: 2 additions & 2 deletions build.default.properties
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
# ---- General Settings ---------------------------------------------------------
php.ext.name = appserver

release.version = 0.1.8
release.version = 0.1.9
release.stability = beta
api.version = 0.1.8
api.version = 0.1.9
api.stability = beta

php.version = 5.5.10
Expand Down
3 changes: 3 additions & 0 deletions pecl/package2.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/ta
<file name="tests/appserver_007.phpt" role="test"/>
<file name="tests/appserver_008.phpt" role="test"/>
<file name="tests/appserver_009.phpt" role="test"/>
<file name="tests/appserver_010.phpt" role="test"/>
<file name="tests/appserver_011.phpt" role="test"/>
<file name="tests/appserver_012.phpt" role="test"/>
</dir>
</contents>
<dependencies>
Expand Down
23 changes: 23 additions & 0 deletions src/appserver.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ const zend_function_entry appserver_functions[] = {
PHP_FE(appserver_redefine, NULL)
PHP_FE(appserver_set_raw_post_data, NULL)
PHP_FE(appserver_get_http_response_code, NULL)
PHP_FE(appserver_get_envs, NULL)
PHP_FE_END
};

Expand Down Expand Up @@ -262,6 +263,28 @@ PHP_MINFO_FUNCTION(appserver)
DISPLAY_INI_ENTRIES();
}

/* {{{ proto boolean appserver_get_envs()
Returns an array of all defined environmental variables set by system or using putenv */
PHP_FUNCTION(appserver_get_envs)
{
char **env, *tmp1, *tmp2;

/* init return value as array */
array_init(return_value);
/* iterate all envs and build up array */
for (env=environ; env!=NULL && *env !=NULL; env++) {
tmp1 = estrdup(*env);
if (!(tmp2=strchr(tmp1,'='))) { /* malformed entry? */
efree(tmp1);
continue;
}
*tmp2 = 0;
tmp2++;
add_assoc_string(return_value, tmp1, tmp2, 1);
efree(tmp1);
}
}

/* {{{ proto boolean appserver_get_http_response_code()
gets the http response code if is set in sapi_headers hash table */
PHP_FUNCTION(appserver_get_http_response_code)
Expand Down
1 change: 1 addition & 0 deletions src/php_appserver.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ PHP_FUNCTION(appserver_set_headers_sent);
PHP_FUNCTION(appserver_redefine);
PHP_FUNCTION(appserver_set_raw_post_data);
PHP_FUNCTION(appserver_get_http_response_code);
PHP_FUNCTION(appserver_get_envs);

ZEND_BEGIN_MODULE_GLOBALS(appserver)
appserver_llist *headers;
Expand Down
19 changes: 19 additions & 0 deletions src/tests/appserver_012.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
--TEST--
appserver: call appserver_get_envs and check if correct environmental vars are returned
--CREDITS--
Johann Zelger <jz [at] techdivision [dot] com>
--FILE--
<?php
putenv("APPSERVER_ENV_TEST1=TestValue1");
putenv("APPSERVER_ENV_TEST2=TestValue2");
putenv("APPSERVER_ENV_TEST3=TestValue3");
$envs = appserver_get_envs();
var_dump($envs["APPSERVER_ENV_TEST1"]);
var_dump($envs["APPSERVER_ENV_TEST2"]);
var_dump($envs["APPSERVER_ENV_TEST3"]);
var_dump(isset($envs["PWD"]));
--EXPECT--
string(10) "TestValue1"
string(10) "TestValue2"
string(10) "TestValue3"
bool(true)

0 comments on commit dd04722

Please sign in to comment.