When Tomcat generates servlet code from JSP, it changes all LF's into
CRLF's. Is there a good reason for this? I intentionally use only
LF's in my JSP files to save bandwidth, especially when they're large
JSP files.
In some cases, Tomcat produces ugly output with mixed LF and CRLF lines.
Example:
<p>Tomcat adds a CR on this line.</p>
<% out.println("Tomcat _doesn't_ add a CR on this line."); %>
Even worse, Tomcat converts only LF's to CRLF's. It completely ignores
CR's. So on a Mac (which uses CR-terminated lines), the whole JSP file
is converted into a single line!
Attached are two patches that I think will fix the problem. Any takers?
-- Si
Index: CharDataGenerator.java
===================================================================
RCS file:
/home/cvspublic/jakarta-tomcat/src/share/org/apache/jasper/compiler/CharDataGenerator.java,v
retrieving revision 1.3
diff -u -r1.3 CharDataGenerator.java
--- CharDataGenerator.java 2000/07/25 02:21:08 1.3
+++ CharDataGenerator.java 2001/06/29 02:42:18
@@ -108,7 +108,8 @@
sb.append("\\\\");
break;
case '\r':
- continue;
+ sb.append("\\r");
+ break;
/*
case '\'':
sb.append('\\');
@@ -116,7 +117,7 @@
break;
*/
case '\n':
- sb.append("\\r\\n");
+ sb.append("\\n");
break;
case '\t':
sb.append("\\t");
Index: MappedCharDataGenerator.java
===================================================================
RCS file:
/home/cvspublic/jakarta-tomcat/src/share/org/apache/jasper/compiler/MappedCharDataGenerator.java,v
retrieving revision 1.2
diff -u -r1.2 MappedCharDataGenerator.java
--- MappedCharDataGenerator.java 2000/03/06 00:33:51 1.2
+++ MappedCharDataGenerator.java 2001/06/29 02:42:30
@@ -93,7 +93,8 @@
sb.append("\\\\");
break;
case '\r':
- continue;
+ sb.append("\\r");
+ break;
/*
case '\'':
sb.append('\\');
@@ -101,7 +102,7 @@
break;
*/
case '\n':
- sb.append("\\r\\n");
+ sb.append("\\n");
writer.print(sb.toString());
writer.print("\");\n");
sb = new StringBuffer();