Author: rjung Date: Fri Nov 2 16:09:52 2007 New Revision: 591507 URL: http://svn.apache.org/viewvc?rev=591507&view=rev Log: Add utility function to mod_jk.c for merging two tables. Copy an entry from src to dst, if there is no entry for the same key in dst.
Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c?rev=591507&r1=591506&r2=591507&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c (original) +++ tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c Fri Nov 2 16:09:52 2007 @@ -2278,6 +2278,26 @@ } +/* + * Utility - copy items from apr table src to dst, + * for keys that exist in src but not in dst. + */ +static void merge_apr_table(apr_table_t *src, apr_table_t *dst) +{ + int i; + const array_header *arr; + const table_entry *elts; + + arr = ap_table_elts(src); + elts = (const table_entry *)arr->elts; + for (i = 0; i < arr->nelts; ++i) { + if (!ap_table_get(dst, elts[i].key)) { + ap_table_setn(dst, elts[i].key, elts[i].val); + } + } +} + + static void *merge_jk_config(ap_pool * p, void *basev, void *overridesv) { jk_server_conf_t *base = (jk_server_conf_t *) basev; @@ -2314,29 +2334,14 @@ overrides->options |= (base->options & ~base->exclude_options); if (base->envvars_in_use) { - int i; - const array_header *arr; - const table_entry *elts; - arr = ap_table_elts(base->envvars); - if (arr) { + if (ap_table_elts(base->envvars)) { overrides->envvars_in_use = JK_TRUE; - elts = (const table_entry *)arr->elts; - for (i = 0; i < arr->nelts; ++i) { - if (!ap_table_get(overrides->envvars, elts[i].key)) { - ap_table_setn(overrides->envvars, elts[i].key, elts[i].val); - } - } + merge_apr_table(base->envvars, overrides->envvars); } - arr = ap_table_elts(base->envvars_def); - if (arr) { + if (ap_table_elts(base->envvars_def)) { overrides->envvars_in_use = JK_TRUE; - elts = (const table_entry *)arr->elts; - for (i = 0; i < arr->nelts; ++i) { - if (!ap_table_get(overrides->envvars_def, elts[i].key)) { - ap_table_setn(overrides->envvars_def, elts[i].key, elts[i].val); - } - } + merge_apr_table(base->envvars_def, overrides->envvars_def); } } Modified: tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c?rev=591507&r1=591506&r2=591507&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c (original) +++ tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c Fri Nov 2 16:09:52 2007 @@ -2398,6 +2398,26 @@ } +/* + * Utility - copy items from apr table src to dst, + * for keys that exist in src but not in dst. + */ +static void merge_apr_table(apr_table_t *src, apr_table_t *dst) +{ + int i; + const apr_array_header_t *arr; + const apr_table_entry_t *elts; + + arr = apr_table_elts(src); + elts = (const apr_table_entry_t *)arr->elts; + for (i = 0; i < arr->nelts; ++i) { + if (!apr_table_get(dst, elts[i].key)) { + apr_table_setn(dst, elts[i].key, elts[i].val); + } + } +} + + /** Standard apache callback, merge jk options specified in <Directory> context or <Host>. */ @@ -2437,29 +2457,13 @@ overrides->options |= (base->options & ~base->exclude_options); if (base->envvars_in_use) { - int i; - const apr_array_header_t *arr; - const apr_table_entry_t *elts; - - arr = apr_table_elts(base->envvars); - if (arr) { + if (apr_table_elts(base->envvars)) { overrides->envvars_in_use = JK_TRUE; - elts = (const apr_table_entry_t *)arr->elts; - for (i = 0; i < arr->nelts; ++i) { - if (!apr_table_get(overrides->envvars, elts[i].key)) { - apr_table_setn(overrides->envvars, elts[i].key, elts[i].val); - } - } + merge_apr_table(base->envvars, overrides->envvars); } - arr = apr_table_elts(base->envvars_def); - if (arr) { + if (apr_table_elts(base->envvars_def)) { overrides->envvars_in_use = JK_TRUE; - elts = (const apr_table_entry_t *)arr->elts; - for (i = 0; i < arr->nelts; ++i) { - if (!apr_table_get(overrides->envvars_def, elts[i].key)) { - apr_table_setn(overrides->envvars_def, elts[i].key, elts[i].val); - } - } + merge_apr_table(base->envvars_def, overrides->envvars_def); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]