Menu

Diff of /trunk/php-java-bridge/init_cfg.c.in [r326] .. [r327]  Maximize  Restore

Switch to side-by-side view

--- a/trunk/php-java-bridge/init_cfg.c.in
+++ b/trunk/php-java-bridge/init_cfg.c.in
@@ -8,6 +8,7 @@
 
 #include "protocol.h"
 #include "php_java.h"
+#include "java_bridge.h"
 
 #ifndef EXTENSION_DIR
 #error EXTENSION_DIR must point to the PHP extension directory
@@ -42,9 +43,12 @@
 
 const char * const EXT_GLOBAL (bridge_version) = BRIDGE_VERSION;
 
+EXT_EXTERN_MODULE_GLOBALS(EXT)
+
+
 #ifndef CFG_JAVA_SOCKET_INET
 #ifdef HAVE_ABSTRACT_NAMESPACE
-static void init_socket() {
+static void init_socket(void) {
   static const char * const bridge="@java-bridge-";
   size_t len = strlen(bridge)+ sizeof(pid_t)*2; //assuming byte=8bit
 
@@ -55,7 +59,7 @@
   EXT_GLOBAL(cfg)->default_sockname = sockname;
 }
 #else 
-static void init_socket() {
+static void init_socket(void) {
 	int n;
 	char*s=SOCKNAME;
 	char *sockname=malloc(strlen(s)+1);
@@ -67,12 +71,12 @@
 }
 #endif
 #else 
-static void init_socket() {
+static void init_socket(void) {
   EXT_GLOBAL(cfg)->default_sockname = strdup(DEFAULT_PORT);
   assert(EXT_GLOBAL(cfg)->default_sockname); if(!EXT_GLOBAL(cfg)->default_sockname) exit(6);
 }
 #endif
-void EXT_GLOBAL (init_cfg) () {
+void EXT_GLOBAL (init_cfg) (TSRMLS_D) {
   init_socket();
   if(!(EXT_GLOBAL (ini_updated) &U_SOCKNAME)) EXT_GLOBAL(cfg)->sockname=strdup(EXT_GLOBAL(cfg)->default_sockname);
   if(!(EXT_GLOBAL (ini_updated) &U_SERVLET)) EXT_GLOBAL(cfg)->servlet=strdup(DEFAULT_SERVLET);
@@ -88,6 +92,10 @@
   if(!(EXT_GLOBAL (ini_updated) &U_LOGFILE)) EXT_GLOBAL(cfg)->logFile=strdup(LOGFILE);
   
   EXT_GLOBAL(ini_set)=~0;
+  EXT_GLOBAL(cfg)->can_fork = 
+	!(EXT_GLOBAL (option_set_by_user) (U_SOCKNAME, EXT_GLOBAL(ini_user))) &&
+	!(EXT_GLOBAL (option_set_by_user) (U_HOSTS, EXT_GLOBAL(ini_user))) &&
+	!(EXT_GLOBAL (option_set_by_user) (U_SERVLET, EXT_GLOBAL(ini_user)));
 }
 
 void EXT_GLOBAL (destroy_cfg) (int EXT_GLOBAL (ini_updated) ) {
@@ -110,10 +118,11 @@
  * return true only if the _user_ has set the option to true (not
  * "off").
  */
-short EXT_GLOBAL(option_set_by_user)(short option) {
+short EXT_GLOBAL(option_set_by_user)(short option, int ini_user) {
+  static const char off[]="Off";
   char *entry = 0;
 
-  if((option & EXT_GLOBAL(ini_user))==0) return 0;
+  if((option & ini_user)==0) return 0;
 
   switch(option) {
   case U_LOGFILE: entry = EXT_GLOBAL(cfg)->logFile; break;
@@ -128,22 +137,22 @@
   default: assert(0);
   }  
 
-  return entry && strlen(entry) && strncasecmp("off", entry, 3);
+  if (!entry || !*entry) return 0;
+  if(!strncasecmp(off, entry, 3)) {
+	*entry=0;
+	return 0;
+  }
+  return 1;
 }
 
-char *EXT_GLOBAL(get_servlet_context)() {
-  if(!EXT_GLOBAL(option_set_by_user)(U_SERVLET)) return 0;
-
-  if(!strncasecmp("on", EXT_GLOBAL(cfg)->servlet, 2) || !strncasecmp("1", EXT_GLOBAL(cfg)->servlet, 1)) return DEFAULT_SERVLET;
-  return EXT_GLOBAL(cfg)->servlet;
+char *EXT_GLOBAL(get_servlet_context)(TSRMLS_D) {
+  if(!EXT_GLOBAL(option_set_by_user)(U_SERVLET, JG(ini_user))) return 0;
+  return JG(servlet);
 }
 
-char *EXT_GLOBAL(get_sockname)() {
-  if(!EXT_GLOBAL(option_set_by_user)(U_SOCKNAME)) return EXT_GLOBAL(cfg)->default_sockname;
-
-  if(!strncasecmp("on", EXT_GLOBAL(cfg)->servlet, 2) || !strncasecmp("1", EXT_GLOBAL(cfg)->servlet, 1))
+char *EXT_GLOBAL(get_sockname)(TSRMLS_D) {
+  if(!EXT_GLOBAL(option_set_by_user)(U_SOCKNAME, EXT_GLOBAL(ini_user)))
 	return EXT_GLOBAL(cfg)->default_sockname;
-
   return EXT_GLOBAL(cfg)->sockname;
 }