jani            Fri Nov  9 16:02:50 2007 UTC

  Modified files:              
    /php-src/main       php_ini.c php_ini.h 
    /php-src/sapi/cgi   cgi_main.c 
  Log:
  - Added support for [HOST=www.example.com] sections 
  # Works the same way as PATH, just the SERVER_NAME is matched with these
  
  
http://cvs.php.net/viewvc.cgi/php-src/main/php_ini.c?r1=1.160&r2=1.161&diff_format=u
Index: php-src/main/php_ini.c
diff -u php-src/main/php_ini.c:1.160 php-src/main/php_ini.c:1.161
--- php-src/main/php_ini.c:1.160        Sun Oct  7 05:15:07 2007
+++ php-src/main/php_ini.c      Fri Nov  9 16:02:50 2007
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_ini.c,v 1.160 2007/10/07 05:15:07 davidw Exp $ */
+/* $Id: php_ini.c,v 1.161 2007/11/09 16:02:50 jani Exp $ */
 
 #include "php.h"
 #include "ext/standard/info.h"
@@ -760,6 +760,21 @@
 }
 /* }}} */
 
+/* {{{ php_ini_activate_per_host_config
+ */
+PHPAPI void php_ini_activate_per_host_config(char *host, uint host_len 
TSRMLS_DC)
+{
+       zval *tmp;
+
+       if (host && host_len) {
+               /* Search for source array matching the host from 
configuration_hash */
+               if (zend_hash_find(&configuration_hash, host, host_len, (void 
**) &tmp) == SUCCESS) {
+                       php_ini_activate_config(Z_ARRVAL_P(tmp), 
PHP_INI_SYSTEM, PHP_INI_STAGE_ACTIVATE TSRMLS_CC);
+               }
+       }
+}
+/* }}} */
+
 /* {{{ cfg_get_entry
  */
 PHPAPI zval *cfg_get_entry(char *name, uint name_length)
http://cvs.php.net/viewvc.cgi/php-src/main/php_ini.h?r1=1.53&r2=1.54&diff_format=u
Index: php-src/main/php_ini.h
diff -u php-src/main/php_ini.h:1.53 php-src/main/php_ini.h:1.54
--- php-src/main/php_ini.h:1.53 Fri Sep 28 10:23:14 2007
+++ php-src/main/php_ini.h      Fri Nov  9 16:02:50 2007
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: php_ini.h,v 1.53 2007/09/28 10:23:14 jani Exp $ */
+/* $Id: php_ini.h,v 1.54 2007/11/09 16:02:50 jani Exp $ */
 
 #ifndef PHP_INI_H
 #define PHP_INI_H
@@ -35,6 +35,7 @@
 PHPAPI int php_parse_user_ini_file(char *dirname, char *ini_filename, 
HashTable *target_hash TSRMLS_DC);
 PHPAPI void php_ini_activate_config(HashTable *source_hash, int modify_type, 
int stage TSRMLS_DC);
 PHPAPI void php_ini_activate_per_dir_config(char *path, uint path_len 
TSRMLS_DC);
+PHPAPI void php_ini_activate_per_host_config(char *host, uint host_len 
TSRMLS_DC);
 #if ZEND_DEBUG
 PHPAPI HashTable get_configuration_hash(void);
 #endif
http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/cgi_main.c?r1=1.345&r2=1.346&diff_format=u
Index: php-src/sapi/cgi/cgi_main.c
diff -u php-src/sapi/cgi/cgi_main.c:1.345 php-src/sapi/cgi/cgi_main.c:1.346
--- php-src/sapi/cgi/cgi_main.c:1.345   Thu Nov  1 11:49:27 2007
+++ php-src/sapi/cgi/cgi_main.c Fri Nov  9 16:02:50 2007
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: cgi_main.c,v 1.345 2007/11/01 11:49:27 dmitry Exp $ */
+/* $Id: cgi_main.c,v 1.346 2007/11/09 16:02:50 jani Exp $ */
 
 #include "php.h"
 #include "php_globals.h"
@@ -700,7 +700,7 @@
 
 static int sapi_cgi_activate(TSRMLS_D)
 {
-       char *path, *doc_root;
+       char *path, *doc_root, *server_name;
        uint path_len, doc_root_len;
 
        /* PATH_TRANSLATED should be defined at this stage but better safe than 
sorry :) */
@@ -709,9 +709,10 @@
        }
 
        doc_root = sapi_cgibin_getenv("DOCUMENT_ROOT", sizeof("DOCUMENT_ROOT") 
- 1 TSRMLS_CC);
+       server_name = sapi_cgibin_getenv("SERVER_NAME", sizeof("SERVER_NAME") - 
1 TSRMLS_CC);
 
-       /* DOCUMENT_ROOT should also be defined at this stage..but better check 
it anyway */
-       if (!doc_root) {
+       /* DOCUMENT_ROOT and SERVER_NAME should also be defined at this 
stage..but better check it anyway */
+       if (!doc_root || !server_name) {
                return FAILURE;
        }
        doc_root_len = strlen(doc_root);
@@ -734,6 +735,9 @@
        /* Activate per-dir-system-configuration defined in php.ini and stored 
into configuration_hash during startup */
        php_ini_activate_per_dir_config(path, path_len TSRMLS_CC); /* Note: for 
global settings sake we check from root to path */
 
+       /* Activate per-host-system-configuration defined in php.ini and stored 
into configuration_hash during startup */
+       php_ini_activate_per_host_config(server_name, strlen(server_name) + 1 
TSRMLS_CC);
+
        /* Load and activate user ini files in path starting from DOCUMENT_ROOT 
*/
        if (strlen(PG(user_ini_filename))) {
                php_cgi_ini_activate_user_config(path, path_len, doc_root_len - 
1 TSRMLS_CC);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to