diff options
author | Daniel Veillard <veillard@src.gnome.org> | 2000-09-19 12:25:59 +0000 |
---|---|---|
committer | Daniel Veillard <veillard@src.gnome.org> | 2000-09-19 12:25:59 +0000 |
commit | 4fb87ee5858178aa040c30b14a16f82f8cb76276 (patch) | |
tree | 046c9f9a1bd80488ae47173dc152b5b44739fcd7 /uri.c | |
parent | d5f97f80774c0557cf74c633cc2786b56c27ccd7 (diff) | |
download | android_external_libxml2-4fb87ee5858178aa040c30b14a16f82f8cb76276.tar.gz android_external_libxml2-4fb87ee5858178aa040c30b14a16f82f8cb76276.tar.bz2 android_external_libxml2-4fb87ee5858178aa040c30b14a16f82f8cb76276.zip |
Various contributed patches:
- uri.c: applied patch for URI escaping from Wayne Davison
<wayned@blorf.net>
- tree.c parserInternals.c HTMLparser.c: memset checks patches
from Denis Barbier <barbier@imacs.polytechnique.fr>
- HTMLparser.c: UTF8 characters in HTML tag-attribute values
patch from Wayne Davison
Daniel
Diffstat (limited to 'uri.c')
-rw-r--r-- | uri.c | 138 |
1 files changed, 24 insertions, 114 deletions
@@ -254,26 +254,11 @@ xmlSaveUri(xmlURIPtr uri) { ((*(p) == '+')) || ((*(p) == '$')) || ((*(p) == ','))) ret[len++] = *p++; else { - int val = *p++; + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; ret[len++] = '%'; - switch (val / 0x10) { - case 0xF: ret[len++] = 'F'; break; - case 0xE: ret[len++] = 'E'; break; - case 0xD: ret[len++] = 'D'; break; - case 0xC: ret[len++] = 'C'; break; - case 0xB: ret[len++] = 'B'; break; - case 0xA: ret[len++] = 'A'; break; - default: ret[len++] = '0' + (val / 0x10); - } - switch (val % 0x10) { - case 0xF: ret[len++] = 'F'; break; - case 0xE: ret[len++] = 'E'; break; - case 0xD: ret[len++] = 'D'; break; - case 0xC: ret[len++] = 'C'; break; - case 0xB: ret[len++] = 'B'; break; - case 0xA: ret[len++] = 'A'; break; - default: ret[len++] = '0' + (val % 0x10); - } + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); } } if (len >= max) { @@ -314,26 +299,11 @@ xmlSaveUri(xmlURIPtr uri) { ((*(p) == ','))) ret[len++] = *p++; else { - int val = *p++; + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; ret[len++] = '%'; - switch (val / 0x10) { - case 0xF: ret[len++] = 'F'; break; - case 0xE: ret[len++] = 'E'; break; - case 0xD: ret[len++] = 'D'; break; - case 0xC: ret[len++] = 'C'; break; - case 0xB: ret[len++] = 'B'; break; - case 0xA: ret[len++] = 'A'; break; - default: ret[len++] = '0' + (val / 0x10); - } - switch (val % 0x10) { - case 0xF: ret[len++] = 'F'; break; - case 0xE: ret[len++] = 'E'; break; - case 0xD: ret[len++] = 'D'; break; - case 0xC: ret[len++] = 'C'; break; - case 0xB: ret[len++] = 'B'; break; - case 0xA: ret[len++] = 'A'; break; - default: ret[len++] = '0' + (val % 0x10); - } + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); } } if (len + 3 >= max) { @@ -396,26 +366,11 @@ xmlSaveUri(xmlURIPtr uri) { ((*(p) == '=')) || ((*(p) == '+'))) ret[len++] = *p++; else { - int val = *p++; + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; ret[len++] = '%'; - switch (val / 0x10) { - case 0xF: ret[len++] = 'F'; break; - case 0xE: ret[len++] = 'E'; break; - case 0xD: ret[len++] = 'D'; break; - case 0xC: ret[len++] = 'C'; break; - case 0xB: ret[len++] = 'B'; break; - case 0xA: ret[len++] = 'A'; break; - default: ret[len++] = '0' + (val / 0x10); - } - switch (val % 0x10) { - case 0xF: ret[len++] = 'F'; break; - case 0xE: ret[len++] = 'E'; break; - case 0xD: ret[len++] = 'D'; break; - case 0xC: ret[len++] = 'C'; break; - case 0xB: ret[len++] = 'B'; break; - case 0xA: ret[len++] = 'A'; break; - default: ret[len++] = '0' + (val % 0x10); - } + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); } } } @@ -436,26 +391,11 @@ xmlSaveUri(xmlURIPtr uri) { ((*(p) == ','))) ret[len++] = *p++; else { - int val = *p++; + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; ret[len++] = '%'; - switch (val / 0x10) { - case 0xF: ret[len++] = 'F'; break; - case 0xE: ret[len++] = 'E'; break; - case 0xD: ret[len++] = 'D'; break; - case 0xC: ret[len++] = 'C'; break; - case 0xB: ret[len++] = 'B'; break; - case 0xA: ret[len++] = 'A'; break; - default: ret[len++] = '0' + (val / 0x10); - } - switch (val % 0x10) { - case 0xF: ret[len++] = 'F'; break; - case 0xE: ret[len++] = 'E'; break; - case 0xD: ret[len++] = 'D'; break; - case 0xC: ret[len++] = 'C'; break; - case 0xB: ret[len++] = 'B'; break; - case 0xA: ret[len++] = 'A'; break; - default: ret[len++] = '0' + (val % 0x10); - } + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); } } } @@ -482,26 +422,11 @@ xmlSaveUri(xmlURIPtr uri) { if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) ret[len++] = *p++; else { - int val = *p++; + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; ret[len++] = '%'; - switch (val / 0x10) { - case 0xF: ret[len++] = 'F'; break; - case 0xE: ret[len++] = 'E'; break; - case 0xD: ret[len++] = 'D'; break; - case 0xC: ret[len++] = 'C'; break; - case 0xB: ret[len++] = 'B'; break; - case 0xA: ret[len++] = 'A'; break; - default: ret[len++] = '0' + (val / 0x10); - } - switch (val % 0x10) { - case 0xF: ret[len++] = 'F'; break; - case 0xE: ret[len++] = 'E'; break; - case 0xD: ret[len++] = 'D'; break; - case 0xC: ret[len++] = 'C'; break; - case 0xB: ret[len++] = 'B'; break; - case 0xA: ret[len++] = 'A'; break; - default: ret[len++] = '0' + (val % 0x10); - } + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); } } } @@ -528,26 +453,11 @@ xmlSaveUri(xmlURIPtr uri) { if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) ret[len++] = *p++; else { - int val = *p++; + int val = *(unsigned char *)p++; + int hi = val / 0x10, lo = val % 0x10; ret[len++] = '%'; - switch (val / 0x10) { - case 0xF: ret[len++] = 'F'; break; - case 0xE: ret[len++] = 'E'; break; - case 0xD: ret[len++] = 'D'; break; - case 0xC: ret[len++] = 'C'; break; - case 0xB: ret[len++] = 'B'; break; - case 0xA: ret[len++] = 'A'; break; - default: ret[len++] = '0' + (val / 0x10); - } - switch (val % 0x10) { - case 0xF: ret[len++] = 'F'; break; - case 0xE: ret[len++] = 'E'; break; - case 0xD: ret[len++] = 'D'; break; - case 0xC: ret[len++] = 'C'; break; - case 0xB: ret[len++] = 'B'; break; - case 0xA: ret[len++] = 'A'; break; - default: ret[len++] = '0' + (val % 0x10); - } + ret[len++] = hi + (hi > 9? 'A'-10 : '0'); + ret[len++] = lo + (lo > 9? 'A'-10 : '0'); } } } |