| OLD | NEW |
| 1 /* | 1 /* |
| 2 * xmlsave.c: Implemetation of the document serializer | 2 * xmlsave.c: Implemetation of the document serializer |
| 3 * | 3 * |
| 4 * See Copyright for the status of this software. | 4 * See Copyright for the status of this software. |
| 5 * | 5 * |
| 6 * daniel@veillard.com | 6 * daniel@veillard.com |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 #define IN_LIBXML | 9 #define IN_LIBXML |
| 10 #include "libxml.h" | 10 #include "libxml.h" |
| (...skipping 2079 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2090 xmlBufAdd(buf, base, cur - base); | 2090 xmlBufAdd(buf, base, cur - base); |
| 2091 xmlBufAdd(buf, BAD_CAST ">", 4); | 2091 xmlBufAdd(buf, BAD_CAST ">", 4); |
| 2092 cur++; | 2092 cur++; |
| 2093 base = cur; | 2093 base = cur; |
| 2094 } else if (*cur == '&') { | 2094 } else if (*cur == '&') { |
| 2095 if (base != cur) | 2095 if (base != cur) |
| 2096 xmlBufAdd(buf, base, cur - base); | 2096 xmlBufAdd(buf, base, cur - base); |
| 2097 xmlBufAdd(buf, BAD_CAST "&", 5); | 2097 xmlBufAdd(buf, BAD_CAST "&", 5); |
| 2098 cur++; | 2098 cur++; |
| 2099 base = cur; | 2099 base = cur; |
| 2100 } else if ((*cur >= 0x80) && ((doc == NULL) || | 2100 } else if ((*cur >= 0x80) && (cur[1] != 0) && |
| 2101 (doc->encoding == NULL))) { | 2101 » ((doc == NULL) || (doc->encoding == NULL))) { |
| 2102 /* | 2102 /* |
| 2103 * We assume we have UTF-8 content. | 2103 * We assume we have UTF-8 content. |
| 2104 */ | 2104 */ |
| 2105 unsigned char tmp[12]; | 2105 unsigned char tmp[12]; |
| 2106 int val = 0, l = 1; | 2106 int val = 0, l = 1; |
| 2107 | 2107 |
| 2108 if (base != cur) | 2108 if (base != cur) |
| 2109 xmlBufAdd(buf, base, cur - base); | 2109 xmlBufAdd(buf, base, cur - base); |
| 2110 if (*cur < 0xC0) { | 2110 if (*cur < 0xC0) { |
| 2111 xmlSaveErr(XML_SAVE_NOT_UTF8, (xmlNodePtr) attr, NULL); | 2111 xmlSaveErr(XML_SAVE_NOT_UTF8, (xmlNodePtr) attr, NULL); |
| 2112 if (doc != NULL) | 2112 if (doc != NULL) |
| 2113 doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1"); | 2113 doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1"); |
| 2114 xmlSerializeHexCharRef(tmp, *cur); | 2114 xmlSerializeHexCharRef(tmp, *cur); |
| 2115 xmlBufAdd(buf, (xmlChar *) tmp, -1); | 2115 xmlBufAdd(buf, (xmlChar *) tmp, -1); |
| 2116 cur++; | 2116 cur++; |
| 2117 base = cur; | 2117 base = cur; |
| 2118 continue; | 2118 continue; |
| 2119 } else if (*cur < 0xE0) { | 2119 } else if (*cur < 0xE0) { |
| 2120 val = (cur[0]) & 0x1F; | 2120 val = (cur[0]) & 0x1F; |
| 2121 val <<= 6; | 2121 val <<= 6; |
| 2122 val |= (cur[1]) & 0x3F; | 2122 val |= (cur[1]) & 0x3F; |
| 2123 l = 2; | 2123 l = 2; |
| 2124 } else if (*cur < 0xF0) { | 2124 } else if ((*cur < 0xF0) && (cur [2] != 0)) { |
| 2125 val = (cur[0]) & 0x0F; | 2125 val = (cur[0]) & 0x0F; |
| 2126 val <<= 6; | 2126 val <<= 6; |
| 2127 val |= (cur[1]) & 0x3F; | 2127 val |= (cur[1]) & 0x3F; |
| 2128 val <<= 6; | 2128 val <<= 6; |
| 2129 val |= (cur[2]) & 0x3F; | 2129 val |= (cur[2]) & 0x3F; |
| 2130 l = 3; | 2130 l = 3; |
| 2131 } else if (*cur < 0xF8) { | 2131 } else if ((*cur < 0xF8) && (cur [2] != 0) && (cur[3] != 0)) { |
| 2132 val = (cur[0]) & 0x07; | 2132 val = (cur[0]) & 0x07; |
| 2133 val <<= 6; | 2133 val <<= 6; |
| 2134 val |= (cur[1]) & 0x3F; | 2134 val |= (cur[1]) & 0x3F; |
| 2135 val <<= 6; | 2135 val <<= 6; |
| 2136 val |= (cur[2]) & 0x3F; | 2136 val |= (cur[2]) & 0x3F; |
| 2137 val <<= 6; | 2137 val <<= 6; |
| 2138 val |= (cur[3]) & 0x3F; | 2138 val |= (cur[3]) & 0x3F; |
| 2139 l = 4; | 2139 l = 4; |
| 2140 } | 2140 } |
| 2141 if ((l == 1) || (!IS_CHAR(val))) { | 2141 if ((l == 1) || (!IS_CHAR(val))) { |
| (...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2779 */ | 2779 */ |
| 2780 int | 2780 int |
| 2781 xmlSaveFile(const char *filename, xmlDocPtr cur) { | 2781 xmlSaveFile(const char *filename, xmlDocPtr cur) { |
| 2782 return(xmlSaveFormatFileEnc(filename, cur, NULL, 0)); | 2782 return(xmlSaveFormatFileEnc(filename, cur, NULL, 0)); |
| 2783 } | 2783 } |
| 2784 | 2784 |
| 2785 #endif /* LIBXML_OUTPUT_ENABLED */ | 2785 #endif /* LIBXML_OUTPUT_ENABLED */ |
| 2786 | 2786 |
| 2787 #define bottom_xmlsave | 2787 #define bottom_xmlsave |
| 2788 #include "elfgcchack.h" | 2788 #include "elfgcchack.h" |
| OLD | NEW |