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();

Reply via email to