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]

Reply via email to