Menu

Diff of /trunk/php-java-bridge/protocol.c [r338] .. [r339]  Maximize  Restore

Switch to side-by-side view

--- a/trunk/php-java-bridge/protocol.c
+++ b/trunk/php-java-bridge/protocol.c
@@ -8,6 +8,7 @@
 #include "protocol.h"
 #include "php_java.h"
 #include "java_bridge.h"
+#include "php_java_snprintf.h"
 
 #define SLEN 256 // initial length of the parser string
 #define SEND_SIZE 8192 // initial size of the send buffer
@@ -15,18 +16,6 @@
 #define ILEN 40 // integer, double representation.
 #define PRECISION "14" /* 15 .. 17 digits - 1 */
 #define FLEN 160 // the max len of the following format strings
-
-#ifndef ZEND_ENGINE_2
-extern int EXT_GLOBAL(snprintf) (char *buf, size_t len, const char *format,...);
-#else
-# if EXTENSION == JAVA
-#  define java_ap_php_snprintf ap_php_snprintf 
-# elif EXTENSION == MONO
-#  define mono_ap_php_snprintf ap_php_snprintf 
-# else
-#  error unknown EXTENSION
-# endif
-#endif
 
 #define GROW(size) { \
   flen = size; \
@@ -77,7 +66,7 @@
 	ssize_t n;
 
 	assert(!(*env)->peer_redirected || ((*env)->peer_redirected && (*env)->peer0));
-	header_length=EXT_GLOBAL(snprintf) (header, sizeof(header), "PUT %s HTTP/1.1\r\nHost: localhost\r\nConnection: Keep-Alive\r\nContent-Type: text/html\r\nContent-Length: %ld\r\nX_JAVABRIDGE_CONTEXT: %s\r\n\r\n%c", servlet_context, size+1, getSessionFactory(env), mode);
+	header_length=EXT_GLOBAL(snprintf) (header, sizeof(header), "PUT %s HTTP/1.1\r\nHost: localhost\r\nConnection: Keep-Alive\r\nContent-Type: text/html\r\nContent-Length: %lu\r\nX_JAVABRIDGE_CONTEXT: %s\r\n\r\n%c", servlet_context, (unsigned long)(size+1), getSessionFactory(env), mode);
 
 	n=send((*env)->peer, header, header_length, 0);
 	assert(n==header_length);
@@ -128,7 +117,7 @@
   (*env)->finish=end;
   
   assert(!(*env)->peer_redirected || ((*env)->peer_redirected && (*env)->peer0));
-  header_length=EXT_GLOBAL(snprintf) (header, sizeof(header), "PUT %s HTTP/1.1\r\nHost: localhost\r\nConnection: Keep-Alive\r\nContent-Type: text/html\r\nContent-Length: %ld\r\nX_JAVABRIDGE_REDIRECT: %d\r\n%sX_JAVABRIDGE_CONTEXT: %s\r\n\r\n%c", (*env)->servlet_context_string, size+1, override_redirect, get_cookies(&val, env), getSessionFactory(env), mode);
+  header_length=EXT_GLOBAL(snprintf) (header, sizeof(header), "PUT %s HTTP/1.1\r\nHost: localhost\r\nConnection: Keep-Alive\r\nContent-Type: text/html\r\nContent-Length: %lu\r\nX_JAVABRIDGE_REDIRECT: %d\r\n%sX_JAVABRIDGE_CONTEXT: %s\r\n\r\n%c", (*env)->servlet_context_string, (unsigned long)(size+1), override_redirect, get_cookies(&val, env), getSessionFactory(env), mode);
   n=send(peer, header, header_length, 0);
   assert(n==header_length);
   n=0;
@@ -192,19 +181,21 @@
 }
 
 void EXT_GLOBAL(setResultWith_context) (char*key, char*val, char*path) {
-  static char empty[] = "/";
-  static char cmd[] = "\
-$path=trim('%s');\
-setcookie('%s', '%s', 0, strncmp($_SERVER['PHP_SELF'], $path, strlen($path))?'/':$path);\
+  static const char empty[] = "/";
+  static const char name[] = "setResultWith_cookie";
+  static const char cmd[] = "\n\
+$path=trim('%s');\n\
+if($path[0]!='/') $path='/'.$path;\n\
+setcookie('%s', '%s', 0, $path);\n\
 ";
   char buf[1024];
   int ret;
 
   TSRMLS_FETCH();
 
-  if(!path) path = empty;
-  EXT_GLOBAL(snprintf)(buf, sizeof(buf), cmd, path, key, val);
-  ret = zend_eval_string(buf, 0, "setResultWith_cookie" TSRMLS_CC);
+  if(!path) path = (char*)empty;
+  EXT_GLOBAL(snprintf)(buf, sizeof(buf), (char*)cmd, path, key, val);
+  ret = zend_eval_string((char*)buf, 0, (char*)name TSRMLS_CC);
   assert(SUCCESS==ret);
 }