sandygao    2002/09/04 08:54:04

  Modified:    java/src/org/apache/xerces/impl XMLEntityManager.java
  Log:
  Escaping more ASCII characters that are not allowed in URI.
  
  Revision  Changes    Path
  1.39      +17 -21    xml-xerces/java/src/org/apache/xerces/impl/XMLEntityManager.java
  
  Index: XMLEntityManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLEntityManager.java,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- XMLEntityManager.java     4 Sep 2002 01:32:50 -0000       1.38
  +++ XMLEntityManager.java     4 Sep 2002 15:54:03 -0000       1.39
  @@ -1156,24 +1156,16 @@
           gNeedEscaping[0x7f] = true;
           gAfterEscaping1[0x7f] = '7';
           gAfterEscaping2[0x7f] = 'F';
  -        gNeedEscaping[' '] = true;
  -        gAfterEscaping1[' '] = hexChs[' '/16];
  -        gAfterEscaping2[' '] = hexChs[' '%16];
  -        gNeedEscaping['<'] = true;
  -        gAfterEscaping1['<'] = hexChs['<'/16];
  -        gAfterEscaping2['<'] = hexChs['<'%16];
  -        gNeedEscaping['>'] = true;
  -        gAfterEscaping1['>'] = hexChs['>'/16];
  -        gAfterEscaping2['>'] = hexChs['>'%16];
  -        gNeedEscaping['#'] = true;
  -        gAfterEscaping1['#'] = hexChs['#'/16];
  -        gAfterEscaping2['#'] = hexChs['#'%16];
  -        gNeedEscaping['%'] = true;
  -        gAfterEscaping1['%'] = hexChs['%'/16];
  -        gAfterEscaping2['%'] = hexChs['%'%16];
  -        gNeedEscaping['"'] = true;
  -        gAfterEscaping1['"'] = hexChs['"'/16];
  -        gAfterEscaping2['"'] = hexChs['"'%16];
  +        char[] escChs = {' ', '<', '>', '#', '%', '"', '"', '}',
  +                         '|', '\\', '^', '~', '[', ']', '`'};
  +        int len = escChs.length;
  +        char ch;
  +        for (int i = 0; i < len; i++) {
  +            ch = escChs[i];
  +            gNeedEscaping[ch] = true;
  +            gAfterEscaping1[ch] = hexChs[ch/16];
  +            gAfterEscaping2[ch] = hexChs[ch%16];
  +        }
       }
       // To escape the "user.dir" system property, by using %HH to represent
       // special ASCII characters: 0x00~0x1F, 0x7F, ' ', '<', '>', '#', '%'
  @@ -1197,13 +1189,17 @@
               gUserDir = userDir;
               int len = userDir.length();
               StringBuffer buffer = new StringBuffer(len*3);
  -            char ch;
  +            char ch, separator = java.io.File.separatorChar;
               boolean escaped = false;
               // for each character in the property value, check whether it
               // needs escaping.
               for (int i = 0; i < len; i++) {
                   ch = userDir.charAt(i);
  -                if (ch < 128 && gNeedEscaping[ch]) {
  +                if (ch == separator && ch != '/') {
  +                    buffer.append('/');
  +                    escaped = true;
  +                }
  +                else if (ch < 128 && gNeedEscaping[ch]) {
                       buffer.append('%');
                       buffer.append(gAfterEscaping1[ch]);
                       buffer.append(gAfterEscaping2[ch]);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to