Author: gonzalo
Date: 2005-03-11 00:46:30 -0500 (Fri, 11 Mar 2005)
New Revision: 41674

Modified:
   trunk/mod_mono/ChangeLog
   trunk/mod_mono/src/mod_mono.c
Log:
2005-03-11 Gonzalo Paniagua Javier <[EMAIL PROTECTED]>

        * src/mod_mono.c: added MonoSetEnv directive. From a patch by Joel
        Reed to 1.0.6.



Modified: trunk/mod_mono/ChangeLog
===================================================================
--- trunk/mod_mono/ChangeLog    2005-03-11 05:06:51 UTC (rev 41673)
+++ trunk/mod_mono/ChangeLog    2005-03-11 05:46:30 UTC (rev 41674)
@@ -1,3 +1,8 @@
+2005-03-11 Gonzalo Paniagua Javier <[EMAIL PROTECTED]>
+
+       * src/mod_mono.c: added MonoSetEnv directive. From a patch by Joel
+       Reed to 1.0.6.
+
 2005-03-05 Gonzalo Paniagua Javier <[EMAIL PROTECTED]>
 
        * src/mod_mono.c: try to connect to mod-mono-server before forking.

Modified: trunk/mod_mono/src/mod_mono.c
===================================================================
--- trunk/mod_mono/src/mod_mono.c       2005-03-11 05:06:51 UTC (rev 41673)
+++ trunk/mod_mono/src/mod_mono.c       2005-03-11 05:46:30 UTC (rev 41674)
@@ -66,6 +66,7 @@
        char *max_cpu_time;
        char *max_memory;
        char *debug;
+       char *env_vars;
        char status; /* One of the FORK_* in the enum above.
                      * Don't care if run_xsp is "false" */
        char is_virtual; /* is the server virtual? */
@@ -144,6 +145,7 @@
        server->max_cpu_time = NULL;
        server->max_memory = NULL;
        server->debug = "False";
+       server->env_vars = NULL;
        server->status = FORK_NONE;
        server->is_virtual = is_virtual;
 
@@ -758,6 +760,35 @@
 #endif
 
 static void
+set_environment_variables (apr_pool_t *pool, char *environment_variables)
+{
+       char *tmp;
+       char *name;
+       char *value;
+
+       /* were any environment_variables specified? */
+       if (environment_variables == NULL)
+               return;
+
+       name = environment_variables;
+       tmp = strchr (environment_variables, '=');
+       while (tmp != NULL) {
+               *tmp = '\0';
+               value = tmp + 1;
+               tmp = strchr (value, ';');
+               if (tmp != NULL)
+                       *tmp = '\0';
+
+               SETENV (pool, name, value);
+               if (tmp == NULL)
+                       break;
+
+               name = tmp + 1;
+               tmp = strchr (name, '=');
+       }
+}
+
+static void
 set_process_limits (int max_cpu_time, int max_memory)
 {
 #ifdef HAVE_SETRLIMIT
@@ -844,6 +875,8 @@
        if (config->max_cpu_time != NULL)
                max_cpu_time = atoi (config->max_cpu_time);
 
+       set_environment_variables (pool, config->env_vars);
+
        pid = fork ();
        if (pid > 0) {
                wait (&status);
@@ -1446,6 +1479,13 @@
        " Default value: False"
        ),
 
+MAKE_CMD12 (MonoSetEnv, env_vars,
+       "A string of name=value pairs separated by semicolons."
+       "For each pair, setenv(name, value) is called before running "
+       "mod-mono-server."
+       " Default value: Default: \"\""
+       ),
+
 MAKE_CMD_ITERATE2 (AddMonoApplications, applications,
        "Appends an application."
        ),

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to