javac net/php/reflect.java
@test ! -f reflect.class || mv reflect.class net/php # bug in KJC javac
javac -classpath .:$(SERVLET_CLASSPATH):$(JAVA_CLASSPATH) net/php/servlet.java
+ javac net/php/formatter.java
@test ! -f servlet.class || mv servlet.class net/php # bug in KJC javac
$(JAVA_JAR) phpsrvlt.jar net/php/*.class net/php/*.properties
- @rm net/php/servlet.* net/php/reflect.*
+ @rm net/php/servlet.* net/php/reflect.* net/php/formatter.*
@rmdir net/php
@rmdir net
--- /dev/null
+/*
+ +----------------------------------------------------------------------+
+ | PHP version 4.0 |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 2.0 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available at through the world-wide-web at |
+ | http://www.php.net/license/2_0.txt. |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Author: Sam Ruby (rubys@us.ibm.com) |
+ +----------------------------------------------------------------------+
+*/
+
+package net.php;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+public class formatter extends servlet {
+
+ public void service(HttpServletRequest request,
+ HttpServletResponse response)
+ throws ServletException
+ {
+ display_source_mode = true;
+ super.service(request, response);
+ }
+
+}
void ThrowIOException (JNIEnv *jenv, char *msg) {
jclass iox = (*jenv)->FindClass (jenv, "java/io/IOException");
(*jenv)->ThrowNew (jenv, iox, (msg?msg:"null") );
- printf("IOException: %s\n", msg);
}
void ThrowServletException (JNIEnv *jenv, char *msg) {
jclass sx = (*jenv)->FindClass (jenv, "javax/servlet/ServletException");
(*jenv)->ThrowNew (jenv, sx, msg);
- printf("ServletException: %s\n", msg);
}
/***************************************************************************/
jclass servletClass = (*jenv)->GetObjectClass(jenv, servlet);
jmethodID write = (*jenv)->GetMethodID(jenv, servletClass, "write",
"(Ljava/lang/String;)V");
- jstring arg=(*jenv)->NewStringUTF(jenv, str);
+ char *copy = malloc(str_length+1);
+ jstring arg;
+ memcpy(copy, str, str_length);
+ copy[str_length] = 0;
+ arg=(*jenv)->NewStringUTF(jenv, copy);
+ free(copy);
(*jenv)->CallVoidMethod(jenv, servlet, write, arg);
(*jenv)->DeleteLocalRef(jenv, arg);
return str_length;
(JNIEnv *jenv, jobject self,
jstring requestMethod, jstring queryString,
jstring pathInfo, jstring pathTranslated,
- jstring contentType, jint contentLength, jstring authUser)
+ jstring contentType, jint contentLength,
+ jstring authUser, jboolean display_source_mode)
{
zend_file_handle file_handle;
* Execute the request
*/
Java_net_php_reflect_setEnv(jenv, 0);
- php_execute_script(&file_handle CLS_CC ELS_CC PLS_CC);
+
+ if (display_source_mode) {
+ zend_syntax_highlighter_ini syntax_highlighter_ini;
+
+ if (open_file_for_scanning(&file_handle CLS_CC)==SUCCESS) {
+ php_get_highlight_struct(&syntax_highlighter_ini);
+ sapi_send_headers();
+ zend_highlight(&syntax_highlighter_ini);
+ }
+ } else {
+ php_execute_script(&file_handle CLS_CC ELS_CC PLS_CC);
+ php_header(); /* Make sure headers have been sent */
+ }
/*
* Clean up
*/
- php_header(); /* Make sure headers have been sent */
FREESTRING(SG(request_info).request_method);
FREESTRING(SG(request_info).query_string);
efree(SG(server_context));
SG(server_context)=0;
- php_request_shutdown((void *) 0);
+ if (!display_source_mode) php_request_shutdown((void *) 0);
}
echo library=phpsrvlt>net/php/reflect.properties\r
echo library=phpsrvlt>net/php/servlet.properties\r
$(JAVA_HOME)\bin\javac net\php\servlet.java \r
+ $(JAVA_HOME)\bin\javac net\php\formatter.java \r
$(JAVA_HOME)\bin\jar c0f $(OutDir)\phpsrvlt.jar net\php\*.class net\php\*.properties\r
erase net\php\servlet.* \r
+ erase net\php\formatter.* \r
erase net\php\reflect.* \r
rmdir net\php \r
rmdir net \r
echo library=phpsrvlt>net/php/reflect.properties\r
echo library=phpsrvlt>net/php/servlet.properties\r
$(JAVA_HOME)\bin\javac -g net\php\servlet.java \r
+ $(JAVA_HOME)\bin\javac -g net\php\formatter.java \r
$(JAVA_HOME)\bin\jar c0f $(OutDir)\phpsrvlt.jar net\php\*.class net\php\*.properties\r
erase net\php\servlet.* \r
+ erase net\php\formatter.* \r
erase net\php\reflect.* \r
rmdir net\php \r
rmdir net \r
echo library=phpsrvlt>net/php/reflect.properties\r
echo library=phpsrvlt>net/php/servlet.properties\r
$(JAVA_HOME)\bin\javac -g net\php\servlet.java \r
+ $(JAVA_HOME)\bin\javac -g net\php\formatter.java \r
$(JAVA_HOME)\bin\jar c0f $(OutDir)\phpsrvlt.jar net\php\*.class net\php\*.properties\r
erase net\php\servlet.* \r
+ erase net\php\formatter.* \r
erase net\php\reflect.* \r
rmdir net\php \r
rmdir net \r
echo library=phpsrvlt>net/php/reflect.properties\r
echo library=phpsrvlt>net/php/servlet.properties\r
$(JAVA_HOME)\bin\javac net\php\servlet.java \r
+ $(JAVA_HOME)\bin\javac net\php\formatter.java \r
$(JAVA_HOME)\bin\jar c0f $(OutDir)\phpsrvlt.jar net\php\*.class net\php\*.properties\r
erase net\php\servlet.* \r
+ erase net\php\formatter.* \r
erase net\php\reflect.* \r
rmdir net\php \r
rmdir net \r
--- /dev/null
+Microsoft Developer Studio Workspace File, Format Version 6.00\r
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
+\r
+###############################################################################\r
+\r
+Project: "php4dllts"=..\..\php4dllts.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "php4ts"=..\..\php4ts.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "servlet"=.\servlet.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+ Begin Project Dependency\r
+ Project_Dep_Name php4ts\r
+ End Project Dependency\r
+ Begin Project Dependency\r
+ Project_Dep_Name php4dllts\r
+ End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Global:\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<3>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
HttpServletResponse response;
ServletInputStream stream;
+ static int startup_count = 0;
+
+ protected boolean display_source_mode = false;
+
/******************************************************************/
/* native methods */
/******************************************************************/
native long define(String name);
native void send(String requestMethod, String queryString,
String pathInfo, String pathTranslated,
- String contentType, int contentLength, String authUser);
+ String contentType, int contentLength, String authUser,
+ boolean display_source_mode);
native void shutdown();
/******************************************************************/
void header(String data) {
try {
- if (data.startsWith("Content-Type: ")) {
+ if (data.startsWith("Content-type: ")) {
response.setContentType(data.substring(data.indexOf(" ")+1));
} else if (data.startsWith("Location: ")) {
response.sendRedirect(data.substring(data.indexOf(" ")+1));
/******************************************************************/
public void init(ServletConfig config) throws ServletException {
- super.init(config);
- startup();
+ super.init(config);
+ if (0 == startup_count++) startup();
}
public void service(HttpServletRequest request,
send(request.getMethod(), request.getQueryString(),
request.getPathInfo(), contextPath,
request.getContentType(), request.getContentLength(),
- request.getRemoteUser());
+ request.getRemoteUser(), display_source_mode);
try {
if (stream != null) stream.close();
}
public void destroy() {
- shutdown();
+ if (0 == --startup_count) shutdown();
super.destroy();
}
*.php
</url-pattern>
</servlet-mapping>
+
+ <servlet>
+ <servlet-name>
+ php-formatter
+ </servlet-name>
+ <servlet-class>
+ net.php.formatter
+ </servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>
+ php-formatter
+ </servlet-name>
+ <url-pattern>
+ *.phps
+ </url-pattern>
+ </servlet-mapping>
</web-app>