From 4878192a2519fe751e1ded3d5a7a3bf756c6d368 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Fri, 16 Aug 2019 23:11:41 +0200 Subject: [PATCH] refactor: remove now unused saxparser --- src/dc_saxparser.rs | 1089 ------------------------------------------- src/lib.rs | 1 - tests/stress.rs | 17 - 3 files changed, 1107 deletions(-) delete mode 100644 src/dc_saxparser.rs diff --git a/src/dc_saxparser.rs b/src/dc_saxparser.rs deleted file mode 100644 index 570b56ac9..000000000 --- a/src/dc_saxparser.rs +++ /dev/null @@ -1,1089 +0,0 @@ -use crate::dc_tools::*; -use crate::types::*; -use crate::x::*; - -#[derive(Copy, Clone)] -#[repr(C)] -pub struct dc_saxparser_t { - pub starttag_cb: dc_saxparser_starttag_cb_t, - pub endtag_cb: dc_saxparser_endtag_cb_t, - pub text_cb: dc_saxparser_text_cb_t, - pub userdata: *mut libc::c_void, -} - -/* len is only informational, text is already null-terminated */ -#[allow(non_camel_case_types)] -type dc_saxparser_text_cb_t = - Option ()>; -#[allow(non_camel_case_types)] -type dc_saxparser_endtag_cb_t = - Option ()>; -#[allow(non_camel_case_types)] -type dc_saxparser_starttag_cb_t = Option< - unsafe fn(_: *mut libc::c_void, _: *const libc::c_char, _: *mut *mut libc::c_char) -> (), ->; - -pub unsafe fn dc_saxparser_init(mut saxparser: *mut dc_saxparser_t, userdata: *mut libc::c_void) { - (*saxparser).userdata = userdata; - (*saxparser).starttag_cb = Some(def_starttag_cb); - (*saxparser).endtag_cb = Some(def_endtag_cb); - (*saxparser).text_cb = Some(def_text_cb); -} - -unsafe fn def_text_cb(_userdata: *mut libc::c_void, _text: *const libc::c_char, _len: libc::c_int) { -} - -unsafe fn def_endtag_cb(_userdata: *mut libc::c_void, _tag: *const libc::c_char) {} - -/* ****************************************************************************** - * Tools - ******************************************************************************/ -unsafe fn def_starttag_cb( - _userdata: *mut libc::c_void, - _tag: *const libc::c_char, - _attr: *mut *mut libc::c_char, -) { -} - -pub unsafe fn dc_saxparser_set_tag_handler( - mut saxparser: *mut dc_saxparser_t, - starttag_cb: dc_saxparser_starttag_cb_t, - endtag_cb: dc_saxparser_endtag_cb_t, -) { - if saxparser.is_null() { - return; - } - (*saxparser).starttag_cb = if starttag_cb.is_some() { - starttag_cb - } else { - Some(def_starttag_cb) - }; - (*saxparser).endtag_cb = if endtag_cb.is_some() { - endtag_cb - } else { - Some(def_endtag_cb) - }; -} - -pub unsafe fn dc_saxparser_set_text_handler( - mut saxparser: *mut dc_saxparser_t, - text_cb: dc_saxparser_text_cb_t, -) { - if saxparser.is_null() { - return; - } - (*saxparser).text_cb = if text_cb.is_some() { - text_cb - } else { - Some(def_text_cb) - }; -} - -pub unsafe fn dc_saxparser_parse(saxparser: *mut dc_saxparser_t, buf_start__: *const libc::c_char) { - let mut is_valid = false; - let mut bak: libc::c_char; - let buf_start: *mut libc::c_char; - let mut last_text_start: *mut libc::c_char; - let mut p: *mut libc::c_char; - /* attributes per tag - a fixed border here is a security feature, not a limit */ - /* attributes as key/value pairs, +1 for terminating the list */ - let mut attr: [*mut libc::c_char; 202] = [0 as *mut libc::c_char; 202]; - /* free the value at attr[i*2+1]? */ - let mut free_attr: [libc::c_int; 100] = [0; 100]; - attr[0usize] = 0 as *mut libc::c_char; - if saxparser.is_null() { - return; - } - buf_start = dc_strdup(buf_start__); - last_text_start = buf_start; - p = buf_start; - loop { - if !(0 != *p) { - is_valid = true; - break; - } - if *p as libc::c_int == '<' as i32 { - call_text_cb( - saxparser, - last_text_start, - p.wrapping_offset_from(last_text_start) as size_t, - '&' as i32 as libc::c_char, - ); - p = p.offset(1isize); - if strncmp(p, b"!--\x00" as *const u8 as *const libc::c_char, 3) == 0i32 { - p = strstr(p, b"-->\x00" as *const u8 as *const libc::c_char); - if p.is_null() { - break; - } - p = p.offset(3isize) - } else if strncmp(p, b"![CDATA[\x00" as *const u8 as *const libc::c_char, 8) == 0i32 { - /* process text - **************************************************************/ - let text_beg: *mut libc::c_char = p.offset(8isize); - p = strstr(p, b"]]>\x00" as *const u8 as *const libc::c_char); - if !p.is_null() { - call_text_cb( - saxparser, - text_beg, - p.wrapping_offset_from(text_beg) as size_t, - 'c' as i32 as libc::c_char, - ); - p = p.offset(3isize) - } else { - call_text_cb( - saxparser, - text_beg, - strlen(text_beg), - 'c' as i32 as libc::c_char, - ); - break; - } - } else if strncmp(p, b"!DOCTYPE\x00" as *const u8 as *const libc::c_char, 8) == 0i32 { - while 0 != *p as libc::c_int - && *p as libc::c_int != '[' as i32 - && *p as libc::c_int != '>' as i32 - { - p = p.offset(1isize) - } - if *p as libc::c_int == 0i32 { - /* unclosed doctype */ - break; - } else if *p as libc::c_int == '[' as i32 { - p = strstr(p, b"]>\x00" as *const u8 as *const libc::c_char); - if p.is_null() { - /* unclosed inline doctype */ - break; - } else { - p = p.offset(2isize) - } - } else { - p = p.offset(1isize) - } - } else if *p as libc::c_int == '?' as i32 { - p = strstr(p, b"?>\x00" as *const u8 as *const libc::c_char); - if p.is_null() { - /* unclosed processing instruction */ - break; - } else { - p = p.offset(2isize) - } - } else { - p = p - .offset(strspn(p, b"\t\r\n \x00" as *const u8 as *const libc::c_char) as isize); - if *p as libc::c_int == '/' as i32 { - p = p.offset(1isize); - p = p.offset( - strspn(p, b"\t\r\n \x00" as *const u8 as *const libc::c_char) as isize, - ); - let beg_tag_name: *mut libc::c_char = p; - p = p.offset( - strcspn(p, b"\t\r\n />\x00" as *const u8 as *const libc::c_char) as isize, - ); - if p != beg_tag_name { - bak = *p; - *p = '\u{0}' as i32 as libc::c_char; - dc_strlower_in_place(beg_tag_name); - (*saxparser).endtag_cb.expect("non-null function pointer")( - (*saxparser).userdata, - beg_tag_name, - ); - *p = bak - } - } else { - do_free_attr(attr.as_mut_ptr(), free_attr.as_mut_ptr()); - let beg_tag_name_0: *mut libc::c_char = p; - p = p.offset( - strcspn(p, b"\t\r\n />\x00" as *const u8 as *const libc::c_char) as isize, - ); - if p != beg_tag_name_0 { - let after_tag_name: *mut libc::c_char = p; - let mut attr_index: libc::c_int = 0i32; - while 0 != libc::isspace(*p as libc::c_int) { - p = p.offset(1isize) - } - while 0 != *p as libc::c_int - && *p as libc::c_int != '/' as i32 - && *p as libc::c_int != '>' as i32 - { - let beg_attr_name: *mut libc::c_char = p; - let mut beg_attr_value: *mut libc::c_char = 0 as *mut libc::c_char; - let beg_attr_value_new: *mut libc::c_char; - if '=' as i32 == *beg_attr_name as libc::c_int { - p = p.offset(1isize) - } else { - p = p.offset(strcspn( - p, - b"\t\r\n =/>\x00" as *const u8 as *const libc::c_char, - ) as isize); - if p != beg_attr_name { - let after_attr_name: *mut libc::c_char = p; - p = p.offset(strspn( - p, - b"\t\r\n \x00" as *const u8 as *const libc::c_char, - ) as isize); - if *p as libc::c_int == '=' as i32 { - p = p.offset(strspn( - p, - b"\t\r\n =\x00" as *const u8 as *const libc::c_char, - ) - as isize); - let quote: libc::c_char = *p; - if quote as libc::c_int == '\"' as i32 - || quote as libc::c_int == '\'' as i32 - { - p = p.offset(1isize); - beg_attr_value = p; - while 0 != *p as libc::c_int - && *p as libc::c_int != quote as libc::c_int - { - p = p.offset(1isize) - } - if 0 != *p { - *p = '\u{0}' as i32 as libc::c_char; - p = p.offset(1isize) - } - beg_attr_value_new = xml_decode( - beg_attr_value, - ' ' as i32 as libc::c_char, - ) - } else { - beg_attr_value = p; - p = p.offset(strcspn( - p, - b"\t\r\n />\x00" as *const u8 - as *const libc::c_char, - ) - as isize); - bak = *p; - *p = '\u{0}' as i32 as libc::c_char; - let temp: *mut libc::c_char = dc_strdup(beg_attr_value); - beg_attr_value_new = - xml_decode(temp, ' ' as i32 as libc::c_char); - if beg_attr_value_new != temp { - free(temp as *mut libc::c_void); - } - *p = bak - } - } else { - beg_attr_value_new = dc_strdup(0 as *const libc::c_char) - } - if attr_index < 100i32 { - let mut beg_attr_name_new: *mut libc::c_char = - beg_attr_name; - let mut free_bits: libc::c_int = - if beg_attr_value_new != beg_attr_value { - 0x2i32 - } else { - 0i32 - }; - if after_attr_name == p { - bak = *after_attr_name; - *after_attr_name = '\u{0}' as i32 as libc::c_char; - beg_attr_name_new = dc_strdup(beg_attr_name); - *after_attr_name = bak; - free_bits |= 0x1i32 - } else { - *after_attr_name = '\u{0}' as i32 as libc::c_char - } - dc_strlower_in_place(beg_attr_name_new); - attr[attr_index as usize] = beg_attr_name_new; - attr[(attr_index + 1i32) as usize] = beg_attr_value_new; - attr[(attr_index + 2i32) as usize] = 0 as *mut libc::c_char; - free_attr[(attr_index >> 1i32) as usize] = free_bits; - attr_index += 2i32 - } - } - while 0 != libc::isspace(*p as libc::c_int) { - p = p.offset(1isize) - } - } - } - let bak_0: libc::c_char = *after_tag_name; - *after_tag_name = 0i32 as libc::c_char; - dc_strlower_in_place(beg_tag_name_0); - (*saxparser).starttag_cb.expect("non-null function pointer")( - (*saxparser).userdata, - beg_tag_name_0, - attr.as_mut_ptr(), - ); - *after_tag_name = bak_0; - p = p.offset( - strspn(p, b"\t\r\n \x00" as *const u8 as *const libc::c_char) as isize, - ); - if *p as libc::c_int == '/' as i32 { - p = p.offset(1isize); - *after_tag_name = 0i32 as libc::c_char; - (*saxparser).endtag_cb.expect("non-null function pointer")( - (*saxparser).userdata, - beg_tag_name_0, - ); - } - } - } - p = strchr(p, '>' as i32); - if p.is_null() { - /* unclosed start-tag or end-tag */ - break; - } else { - p = p.offset(1isize) - } - } - last_text_start = p - } else { - p = p.offset(1isize) - } - } - if is_valid { - call_text_cb( - saxparser, - last_text_start, - p.wrapping_offset_from(last_text_start) as size_t, - '&' as i32 as libc::c_char, - ); - } - do_free_attr(attr.as_mut_ptr(), free_attr.as_mut_ptr()); - free(buf_start as *mut libc::c_void); -} - -unsafe fn do_free_attr(attr: *mut *mut libc::c_char, free_attr: *mut libc::c_int) { - /* "attr" are key/value pairs; the function frees the data if the corresponding bit in "free_attr" is set. - (we need this as we try to use the strings from the "main" document instead of allocating small strings) */ - let mut i: libc::c_int = 0i32; - while !(*attr.offset(i as isize)).is_null() { - if 0 != *free_attr.offset((i >> 1i32) as isize) & 0x1i32 - && !(*attr.offset(i as isize)).is_null() - { - free(*attr.offset(i as isize) as *mut libc::c_void); - } - if 0 != *free_attr.offset((i >> 1i32) as isize) & 0x2i32 - && !(*attr.offset((i + 1i32) as isize)).is_null() - { - free(*attr.offset((i + 1i32) as isize) as *mut libc::c_void); - } - i += 2i32 - } - let ref mut fresh0 = *attr.offset(0isize); - *fresh0 = 0 as *mut libc::c_char; -} - -unsafe fn call_text_cb( - saxparser: *mut dc_saxparser_t, - text: *mut libc::c_char, - len: size_t, - type_0: libc::c_char, -) { - if !text.is_null() && 0 != len { - let bak: libc::c_char = *text.offset(len as isize); - let text_new: *mut libc::c_char; - *text.offset(len as isize) = '\u{0}' as i32 as libc::c_char; - text_new = xml_decode(text, type_0); - (*saxparser).text_cb.expect("non-null function pointer")( - (*saxparser).userdata, - text_new, - len as libc::c_int, - ); - if text != text_new { - free(text_new as *mut libc::c_void); - } - *text.offset(len as isize) = bak - }; -} - -/* Convert entities as ä to UTF-8 characters. - -- The first strings MUST NOT start with `&` and MUST end with `;`. -- take care not to miss a comma between the strings. -- It's also possible to specify the destination as a character reference as `"` (they are converted in a second pass without a table). */ -/* basic XML/HTML */ -/* advanced HTML */ -/* MUST be last */ -/* Recursively decodes entity and character references and normalizes new lines. -set "type" to ... -'&' for general entity decoding, -'%' for parameter entity decoding (currently not needed), -'c' for cdata sections, -' ' for attribute normalization, or -'*' for non-cdata attribute normalization (currently not needed). -Returns s, or if the decoded string is longer than s, returns a malloced string -that must be freed. -Function based upon ezxml_decode() from the "ezxml" parser which is -Copyright 2004-2006 Aaron Voisine */ -unsafe fn xml_decode(mut s: *mut libc::c_char, type_0: libc::c_char) -> *mut libc::c_char { - let mut e: *mut libc::c_char = 0 as *mut libc::c_char; - let mut r: *mut libc::c_char = s; - let original_buf: *const libc::c_char = s; - let mut b; - let mut c: isize; - let mut d: isize; - let mut l: isize; - while 0 != *s { - while *s as libc::c_int == '\r' as i32 { - let fresh1 = s; - s = s.offset(1); - *fresh1 = '\n' as i32 as libc::c_char; - if *s as libc::c_int == '\n' as i32 { - memmove( - s as *mut libc::c_void, - s.offset(1isize) as *const libc::c_void, - strlen(s), - ); - } - } - s = s.offset(1isize) - } - s = r; - loop { - while 0 != *s as libc::c_int - && *s as libc::c_int != '&' as i32 - && 0 == libc::isspace(*s as libc::c_int) - { - s = s.offset(1isize) - } - if 0 == *s { - break; - } - if type_0 as libc::c_int != 'c' as i32 - && 0 == strncmp(s, b"&#\x00" as *const u8 as *const libc::c_char, 2) - { - if *s.offset(2isize) as libc::c_int == 'x' as i32 { - c = strtol(s.offset(3isize), &mut e, 16i32) as isize; - } else { - c = strtol(s.offset(2isize), &mut e, 10i32) as isize; - } - if 0 == c || *e as libc::c_int != ';' as i32 { - s = s.offset(1isize); - } else { - /* not a character ref */ - if c < 0x80 { - let fresh2 = s; - s = s.offset(1); - *fresh2 = c as libc::c_char - } else { - b = 0; - d = c; - while 0 != d { - b += 1; - d /= 2; - } - b = (b - 2) / 5; - let fresh3 = s; - s = s.offset(1); - *fresh3 = ((0xff << 7 - b) | c >> 6 * b) as libc::c_char; - while 0 != b { - let fresh4 = s; - s = s.offset(1); - b -= 1; - *fresh4 = (0x80 | c >> 6 * b & 0x3f) as libc::c_char - } - } - memmove( - s as *mut libc::c_void, - strchr(s, ';' as i32).offset(1isize) as *const libc::c_void, - strlen(strchr(s, ';' as i32)), - ); - } - } else if *s as libc::c_int == '&' as i32 - && (type_0 as libc::c_int == '&' as i32 || type_0 as libc::c_int == ' ' as i32) - { - b = 0; - while !S_ENT[b as usize].is_null() - && 0 != strncmp( - s.offset(1isize), - S_ENT[b as usize], - strlen(S_ENT[b as usize]), - ) - { - b += 2; - } - let fresh5 = b; - b = b + 1; - if !S_ENT[fresh5 as usize].is_null() { - c = strlen(S_ENT[b as usize]) as isize; - e = strchr(s, ';' as i32); - if c - 1 > e.wrapping_offset_from(s) as isize { - d = s.wrapping_offset_from(r) as isize; - l = (d + c).wrapping_add(strlen(e) as isize); - if r == original_buf as *mut libc::c_char { - let new_ret = malloc(l as usize) as *mut libc::c_char; - if new_ret.is_null() { - return r; - } - strcpy(new_ret, r); - r = new_ret - } else { - let new_ret_0: *mut libc::c_char = - realloc(r as *mut libc::c_void, l as usize) as *mut libc::c_char; - if new_ret_0.is_null() { - return r; - } - r = new_ret_0 - } - s = r.offset(d as isize); - e = strchr(s, ';' as i32) - } - memmove( - s.offset(c as isize) as *mut libc::c_void, - e.offset(1isize) as *const libc::c_void, - strlen(e), - ); - strncpy(s, S_ENT[b as usize], c as usize); - } else { - s = s.offset(1isize) - } - } else if type_0 as libc::c_int == ' ' as i32 && 0 != libc::isspace(*s as libc::c_int) { - let fresh6 = s; - s = s.offset(1); - *fresh6 = ' ' as i32 as libc::c_char - } else { - s = s.offset(1isize) - } - } - - r -} - -/* dc_saxparser_t parses XML and HTML files that may not be wellformed -and spits out all text and tags found. - -- Attributes are recognized with single, double or no quotes -- Whitespace ignored inside tags -- Self-closing tags are issued as open-tag plus close-tag -- CDATA is supoorted; DTA, comments, processing instruction are - skipped properly -- The parser does not care about hierarchy, if needed this can be - done by the user. -- Input and output strings must be UTF-8 encoded. -- Tag and attribute names are converted to lower case. -- Parsing does not stop on errors; instead errors are recovered. - -NB: SAX = Simple API for XML */ -/* ****************************************************************************** - * Decoding text - ******************************************************************************/ -static mut S_ENT: [*const libc::c_char; 508] = [ - b"lt;\x00" as *const u8 as *const libc::c_char, - b"<\x00" as *const u8 as *const libc::c_char, - b"gt;\x00" as *const u8 as *const libc::c_char, - b">\x00" as *const u8 as *const libc::c_char, - b"quot;\x00" as *const u8 as *const libc::c_char, - b"\"\x00" as *const u8 as *const libc::c_char, - b"apos;\x00" as *const u8 as *const libc::c_char, - b"\'\x00" as *const u8 as *const libc::c_char, - b"amp;\x00" as *const u8 as *const libc::c_char, - b"&\x00" as *const u8 as *const libc::c_char, - b"nbsp;\x00" as *const u8 as *const libc::c_char, - b" \x00" as *const u8 as *const libc::c_char, - b"iexcl;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xa1\x00" as *const u8 as *const libc::c_char, - b"cent;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xa2\x00" as *const u8 as *const libc::c_char, - b"pound;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xa3\x00" as *const u8 as *const libc::c_char, - b"curren;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xa4\x00" as *const u8 as *const libc::c_char, - b"yen;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xa5\x00" as *const u8 as *const libc::c_char, - b"brvbar;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xa6\x00" as *const u8 as *const libc::c_char, - b"sect;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xa7\x00" as *const u8 as *const libc::c_char, - b"uml;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xa8\x00" as *const u8 as *const libc::c_char, - b"copy;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xa9\x00" as *const u8 as *const libc::c_char, - b"ordf;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xaa\x00" as *const u8 as *const libc::c_char, - b"laquo;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xab\x00" as *const u8 as *const libc::c_char, - b"not;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xac\x00" as *const u8 as *const libc::c_char, - b"shy;\x00" as *const u8 as *const libc::c_char, - b"-\x00" as *const u8 as *const libc::c_char, - b"reg;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xae\x00" as *const u8 as *const libc::c_char, - b"macr;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xaf\x00" as *const u8 as *const libc::c_char, - b"deg;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xb0\x00" as *const u8 as *const libc::c_char, - b"plusmn;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xb1\x00" as *const u8 as *const libc::c_char, - b"sup2;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xb2\x00" as *const u8 as *const libc::c_char, - b"sup3;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xb3\x00" as *const u8 as *const libc::c_char, - b"acute;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xb4\x00" as *const u8 as *const libc::c_char, - b"micro;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xb5\x00" as *const u8 as *const libc::c_char, - b"para;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xb6\x00" as *const u8 as *const libc::c_char, - b"middot;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xb7\x00" as *const u8 as *const libc::c_char, - b"cedil;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xb8\x00" as *const u8 as *const libc::c_char, - b"sup1;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xb9\x00" as *const u8 as *const libc::c_char, - b"ordm;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xba\x00" as *const u8 as *const libc::c_char, - b"raquo;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xbb\x00" as *const u8 as *const libc::c_char, - b"frac14;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xbc\x00" as *const u8 as *const libc::c_char, - b"frac12;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xbd\x00" as *const u8 as *const libc::c_char, - b"frac34;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xbe\x00" as *const u8 as *const libc::c_char, - b"iquest;\x00" as *const u8 as *const libc::c_char, - b"\xc2\xbf\x00" as *const u8 as *const libc::c_char, - b"Agrave;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x80\x00" as *const u8 as *const libc::c_char, - b"Aacute;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x81\x00" as *const u8 as *const libc::c_char, - b"Acirc;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x82\x00" as *const u8 as *const libc::c_char, - b"Atilde;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x83\x00" as *const u8 as *const libc::c_char, - b"Auml;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x84\x00" as *const u8 as *const libc::c_char, - b"Aring;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x85\x00" as *const u8 as *const libc::c_char, - b"AElig;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x86\x00" as *const u8 as *const libc::c_char, - b"Ccedil;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x87\x00" as *const u8 as *const libc::c_char, - b"Egrave;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x88\x00" as *const u8 as *const libc::c_char, - b"Eacute;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x89\x00" as *const u8 as *const libc::c_char, - b"Ecirc;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x8a\x00" as *const u8 as *const libc::c_char, - b"Euml;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x8b\x00" as *const u8 as *const libc::c_char, - b"Igrave;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x8c\x00" as *const u8 as *const libc::c_char, - b"Iacute;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x8d\x00" as *const u8 as *const libc::c_char, - b"Icirc;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x8e\x00" as *const u8 as *const libc::c_char, - b"Iuml;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x8f\x00" as *const u8 as *const libc::c_char, - b"ETH;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x90\x00" as *const u8 as *const libc::c_char, - b"Ntilde;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x91\x00" as *const u8 as *const libc::c_char, - b"Ograve;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x92\x00" as *const u8 as *const libc::c_char, - b"Oacute;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x93\x00" as *const u8 as *const libc::c_char, - b"Ocirc;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x94\x00" as *const u8 as *const libc::c_char, - b"Otilde;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x95\x00" as *const u8 as *const libc::c_char, - b"Ouml;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x96\x00" as *const u8 as *const libc::c_char, - b"times;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x97\x00" as *const u8 as *const libc::c_char, - b"Oslash;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x98\x00" as *const u8 as *const libc::c_char, - b"Ugrave;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x99\x00" as *const u8 as *const libc::c_char, - b"Uacute;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x9a\x00" as *const u8 as *const libc::c_char, - b"Ucirc;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x9b\x00" as *const u8 as *const libc::c_char, - b"Uuml;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x9c\x00" as *const u8 as *const libc::c_char, - b"Yacute;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x9d\x00" as *const u8 as *const libc::c_char, - b"THORN;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x9e\x00" as *const u8 as *const libc::c_char, - b"szlig;\x00" as *const u8 as *const libc::c_char, - b"\xc3\x9f\x00" as *const u8 as *const libc::c_char, - b"agrave;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xa0\x00" as *const u8 as *const libc::c_char, - b"aacute;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xa1\x00" as *const u8 as *const libc::c_char, - b"acirc;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xa2\x00" as *const u8 as *const libc::c_char, - b"atilde;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xa3\x00" as *const u8 as *const libc::c_char, - b"auml;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xa4\x00" as *const u8 as *const libc::c_char, - b"aring;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xa5\x00" as *const u8 as *const libc::c_char, - b"aelig;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xa6\x00" as *const u8 as *const libc::c_char, - b"ccedil;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xa7\x00" as *const u8 as *const libc::c_char, - b"egrave;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xa8\x00" as *const u8 as *const libc::c_char, - b"eacute;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xa9\x00" as *const u8 as *const libc::c_char, - b"ecirc;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xaa\x00" as *const u8 as *const libc::c_char, - b"euml;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xab\x00" as *const u8 as *const libc::c_char, - b"igrave;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xac\x00" as *const u8 as *const libc::c_char, - b"iacute;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xad\x00" as *const u8 as *const libc::c_char, - b"icirc;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xae\x00" as *const u8 as *const libc::c_char, - b"iuml;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xaf\x00" as *const u8 as *const libc::c_char, - b"eth;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xb0\x00" as *const u8 as *const libc::c_char, - b"ntilde;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xb1\x00" as *const u8 as *const libc::c_char, - b"ograve;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xb2\x00" as *const u8 as *const libc::c_char, - b"oacute;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xb3\x00" as *const u8 as *const libc::c_char, - b"ocirc;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xb4\x00" as *const u8 as *const libc::c_char, - b"otilde;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xb5\x00" as *const u8 as *const libc::c_char, - b"ouml;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xb6\x00" as *const u8 as *const libc::c_char, - b"divide;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xb7\x00" as *const u8 as *const libc::c_char, - b"oslash;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xb8\x00" as *const u8 as *const libc::c_char, - b"ugrave;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xb9\x00" as *const u8 as *const libc::c_char, - b"uacute;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xba\x00" as *const u8 as *const libc::c_char, - b"ucirc;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xbb\x00" as *const u8 as *const libc::c_char, - b"uuml;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xbc\x00" as *const u8 as *const libc::c_char, - b"yacute;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xbd\x00" as *const u8 as *const libc::c_char, - b"thorn;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xbe\x00" as *const u8 as *const libc::c_char, - b"yuml;\x00" as *const u8 as *const libc::c_char, - b"\xc3\xbf\x00" as *const u8 as *const libc::c_char, - b"OElig;\x00" as *const u8 as *const libc::c_char, - b"\xc5\x92\x00" as *const u8 as *const libc::c_char, - b"oelig;\x00" as *const u8 as *const libc::c_char, - b"\xc5\x93\x00" as *const u8 as *const libc::c_char, - b"Scaron;\x00" as *const u8 as *const libc::c_char, - b"\xc5\xa0\x00" as *const u8 as *const libc::c_char, - b"scaron;\x00" as *const u8 as *const libc::c_char, - b"\xc5\xa1\x00" as *const u8 as *const libc::c_char, - b"Yuml;\x00" as *const u8 as *const libc::c_char, - b"\xc5\xb8\x00" as *const u8 as *const libc::c_char, - b"fnof;\x00" as *const u8 as *const libc::c_char, - b"\xc6\x92\x00" as *const u8 as *const libc::c_char, - b"circ;\x00" as *const u8 as *const libc::c_char, - b"\xcb\x86\x00" as *const u8 as *const libc::c_char, - b"tilde;\x00" as *const u8 as *const libc::c_char, - b"\xcb\x9c\x00" as *const u8 as *const libc::c_char, - b"Alpha;\x00" as *const u8 as *const libc::c_char, - b"\xce\x91\x00" as *const u8 as *const libc::c_char, - b"Beta;\x00" as *const u8 as *const libc::c_char, - b"\xce\x92\x00" as *const u8 as *const libc::c_char, - b"Gamma;\x00" as *const u8 as *const libc::c_char, - b"\xce\x93\x00" as *const u8 as *const libc::c_char, - b"Delta;\x00" as *const u8 as *const libc::c_char, - b"\xce\x94\x00" as *const u8 as *const libc::c_char, - b"Epsilon;\x00" as *const u8 as *const libc::c_char, - b"\xce\x95\x00" as *const u8 as *const libc::c_char, - b"Zeta;\x00" as *const u8 as *const libc::c_char, - b"\xce\x96\x00" as *const u8 as *const libc::c_char, - b"Eta;\x00" as *const u8 as *const libc::c_char, - b"\xce\x97\x00" as *const u8 as *const libc::c_char, - b"Theta;\x00" as *const u8 as *const libc::c_char, - b"\xce\x98\x00" as *const u8 as *const libc::c_char, - b"Iota;\x00" as *const u8 as *const libc::c_char, - b"\xce\x99\x00" as *const u8 as *const libc::c_char, - b"Kappa;\x00" as *const u8 as *const libc::c_char, - b"\xce\x9a\x00" as *const u8 as *const libc::c_char, - b"Lambda;\x00" as *const u8 as *const libc::c_char, - b"\xce\x9b\x00" as *const u8 as *const libc::c_char, - b"Mu;\x00" as *const u8 as *const libc::c_char, - b"\xce\x9c\x00" as *const u8 as *const libc::c_char, - b"Nu;\x00" as *const u8 as *const libc::c_char, - b"\xce\x9d\x00" as *const u8 as *const libc::c_char, - b"Xi;\x00" as *const u8 as *const libc::c_char, - b"\xce\x9e\x00" as *const u8 as *const libc::c_char, - b"Omicron;\x00" as *const u8 as *const libc::c_char, - b"\xce\x9f\x00" as *const u8 as *const libc::c_char, - b"Pi;\x00" as *const u8 as *const libc::c_char, - b"\xce\xa0\x00" as *const u8 as *const libc::c_char, - b"Rho;\x00" as *const u8 as *const libc::c_char, - b"\xce\xa1\x00" as *const u8 as *const libc::c_char, - b"Sigma;\x00" as *const u8 as *const libc::c_char, - b"\xce\xa3\x00" as *const u8 as *const libc::c_char, - b"Tau;\x00" as *const u8 as *const libc::c_char, - b"\xce\xa4\x00" as *const u8 as *const libc::c_char, - b"Upsilon;\x00" as *const u8 as *const libc::c_char, - b"\xce\xa5\x00" as *const u8 as *const libc::c_char, - b"Phi;\x00" as *const u8 as *const libc::c_char, - b"\xce\xa6\x00" as *const u8 as *const libc::c_char, - b"Chi;\x00" as *const u8 as *const libc::c_char, - b"\xce\xa7\x00" as *const u8 as *const libc::c_char, - b"Psi;\x00" as *const u8 as *const libc::c_char, - b"\xce\xa8\x00" as *const u8 as *const libc::c_char, - b"Omega;\x00" as *const u8 as *const libc::c_char, - b"\xce\xa9\x00" as *const u8 as *const libc::c_char, - b"alpha;\x00" as *const u8 as *const libc::c_char, - b"\xce\xb1\x00" as *const u8 as *const libc::c_char, - b"beta;\x00" as *const u8 as *const libc::c_char, - b"\xce\xb2\x00" as *const u8 as *const libc::c_char, - b"gamma;\x00" as *const u8 as *const libc::c_char, - b"\xce\xb3\x00" as *const u8 as *const libc::c_char, - b"delta;\x00" as *const u8 as *const libc::c_char, - b"\xce\xb4\x00" as *const u8 as *const libc::c_char, - b"epsilon;\x00" as *const u8 as *const libc::c_char, - b"\xce\xb5\x00" as *const u8 as *const libc::c_char, - b"zeta;\x00" as *const u8 as *const libc::c_char, - b"\xce\xb6\x00" as *const u8 as *const libc::c_char, - b"eta;\x00" as *const u8 as *const libc::c_char, - b"\xce\xb7\x00" as *const u8 as *const libc::c_char, - b"theta;\x00" as *const u8 as *const libc::c_char, - b"\xce\xb8\x00" as *const u8 as *const libc::c_char, - b"iota;\x00" as *const u8 as *const libc::c_char, - b"\xce\xb9\x00" as *const u8 as *const libc::c_char, - b"kappa;\x00" as *const u8 as *const libc::c_char, - b"\xce\xba\x00" as *const u8 as *const libc::c_char, - b"lambda;\x00" as *const u8 as *const libc::c_char, - b"\xce\xbb\x00" as *const u8 as *const libc::c_char, - b"mu;\x00" as *const u8 as *const libc::c_char, - b"\xce\xbc\x00" as *const u8 as *const libc::c_char, - b"nu;\x00" as *const u8 as *const libc::c_char, - b"\xce\xbd\x00" as *const u8 as *const libc::c_char, - b"xi;\x00" as *const u8 as *const libc::c_char, - b"\xce\xbe\x00" as *const u8 as *const libc::c_char, - b"omicron;\x00" as *const u8 as *const libc::c_char, - b"\xce\xbf\x00" as *const u8 as *const libc::c_char, - b"pi;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x80\x00" as *const u8 as *const libc::c_char, - b"rho;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x81\x00" as *const u8 as *const libc::c_char, - b"sigmaf;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x82\x00" as *const u8 as *const libc::c_char, - b"sigma;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x83\x00" as *const u8 as *const libc::c_char, - b"tau;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x84\x00" as *const u8 as *const libc::c_char, - b"upsilon;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x85\x00" as *const u8 as *const libc::c_char, - b"phi;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x86\x00" as *const u8 as *const libc::c_char, - b"chi;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x87\x00" as *const u8 as *const libc::c_char, - b"psi;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x88\x00" as *const u8 as *const libc::c_char, - b"omega;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x89\x00" as *const u8 as *const libc::c_char, - b"thetasym;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x91\x00" as *const u8 as *const libc::c_char, - b"upsih;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x92\x00" as *const u8 as *const libc::c_char, - b"piv;\x00" as *const u8 as *const libc::c_char, - b"\xcf\x96\x00" as *const u8 as *const libc::c_char, - b"ensp;\x00" as *const u8 as *const libc::c_char, - b" \x00" as *const u8 as *const libc::c_char, - b"emsp;\x00" as *const u8 as *const libc::c_char, - b" \x00" as *const u8 as *const libc::c_char, - b"thinsp;\x00" as *const u8 as *const libc::c_char, - b" \x00" as *const u8 as *const libc::c_char, - b"zwnj;\x00" as *const u8 as *const libc::c_char, - b"\x00" as *const u8 as *const libc::c_char, - b"zwj;\x00" as *const u8 as *const libc::c_char, - b"\x00" as *const u8 as *const libc::c_char, - b"lrm;\x00" as *const u8 as *const libc::c_char, - b"\x00" as *const u8 as *const libc::c_char, - b"rlm;\x00" as *const u8 as *const libc::c_char, - b"\x00" as *const u8 as *const libc::c_char, - b"ndash;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\x93\x00" as *const u8 as *const libc::c_char, - b"mdash;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\x94\x00" as *const u8 as *const libc::c_char, - b"lsquo;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\x98\x00" as *const u8 as *const libc::c_char, - b"rsquo;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\x99\x00" as *const u8 as *const libc::c_char, - b"sbquo;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\x9a\x00" as *const u8 as *const libc::c_char, - b"ldquo;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\x9c\x00" as *const u8 as *const libc::c_char, - b"rdquo;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\x9d\x00" as *const u8 as *const libc::c_char, - b"bdquo;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\x9e\x00" as *const u8 as *const libc::c_char, - b"dagger;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\xa0\x00" as *const u8 as *const libc::c_char, - b"Dagger;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\xa1\x00" as *const u8 as *const libc::c_char, - b"bull;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\xa2\x00" as *const u8 as *const libc::c_char, - b"hellip;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\xa6\x00" as *const u8 as *const libc::c_char, - b"permil;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\xb0\x00" as *const u8 as *const libc::c_char, - b"prime;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\xb2\x00" as *const u8 as *const libc::c_char, - b"Prime;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\xb3\x00" as *const u8 as *const libc::c_char, - b"lsaquo;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\xb9\x00" as *const u8 as *const libc::c_char, - b"rsaquo;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\xba\x00" as *const u8 as *const libc::c_char, - b"oline;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x80\xbe\x00" as *const u8 as *const libc::c_char, - b"frasl;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x81\x84\x00" as *const u8 as *const libc::c_char, - b"euro;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x82\xac\x00" as *const u8 as *const libc::c_char, - b"image;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x84\x91\x00" as *const u8 as *const libc::c_char, - b"weierp;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x84\x98\x00" as *const u8 as *const libc::c_char, - b"real;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x84\x9c\x00" as *const u8 as *const libc::c_char, - b"trade;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x84\xa2\x00" as *const u8 as *const libc::c_char, - b"alefsym;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x84\xb5\x00" as *const u8 as *const libc::c_char, - b"larr;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x86\x90\x00" as *const u8 as *const libc::c_char, - b"uarr;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x86\x91\x00" as *const u8 as *const libc::c_char, - b"rarr;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x86\x92\x00" as *const u8 as *const libc::c_char, - b"darr;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x86\x93\x00" as *const u8 as *const libc::c_char, - b"harr;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x86\x94\x00" as *const u8 as *const libc::c_char, - b"crarr;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x86\xb5\x00" as *const u8 as *const libc::c_char, - b"lArr;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x87\x90\x00" as *const u8 as *const libc::c_char, - b"uArr;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x87\x91\x00" as *const u8 as *const libc::c_char, - b"rArr;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x87\x92\x00" as *const u8 as *const libc::c_char, - b"dArr;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x87\x93\x00" as *const u8 as *const libc::c_char, - b"hArr;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x87\x94\x00" as *const u8 as *const libc::c_char, - b"forall;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x80\x00" as *const u8 as *const libc::c_char, - b"part;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x82\x00" as *const u8 as *const libc::c_char, - b"exist;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x83\x00" as *const u8 as *const libc::c_char, - b"empty;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x85\x00" as *const u8 as *const libc::c_char, - b"nabla;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x87\x00" as *const u8 as *const libc::c_char, - b"isin;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x88\x00" as *const u8 as *const libc::c_char, - b"notin;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x89\x00" as *const u8 as *const libc::c_char, - b"ni;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x8b\x00" as *const u8 as *const libc::c_char, - b"prod;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x8f\x00" as *const u8 as *const libc::c_char, - b"sum;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x91\x00" as *const u8 as *const libc::c_char, - b"minus;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x92\x00" as *const u8 as *const libc::c_char, - b"lowast;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x97\x00" as *const u8 as *const libc::c_char, - b"radic;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x9a\x00" as *const u8 as *const libc::c_char, - b"prop;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x9d\x00" as *const u8 as *const libc::c_char, - b"infin;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\x9e\x00" as *const u8 as *const libc::c_char, - b"ang;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\xa0\x00" as *const u8 as *const libc::c_char, - b"and;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\xa7\x00" as *const u8 as *const libc::c_char, - b"or;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\xa8\x00" as *const u8 as *const libc::c_char, - b"cap;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\xa9\x00" as *const u8 as *const libc::c_char, - b"cup;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\xaa\x00" as *const u8 as *const libc::c_char, - b"int;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\xab\x00" as *const u8 as *const libc::c_char, - b"there4;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\xb4\x00" as *const u8 as *const libc::c_char, - b"sim;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x88\xbc\x00" as *const u8 as *const libc::c_char, - b"cong;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x89\x85\x00" as *const u8 as *const libc::c_char, - b"asymp;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x89\x88\x00" as *const u8 as *const libc::c_char, - b"ne;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x89\xa0\x00" as *const u8 as *const libc::c_char, - b"equiv;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x89\xa1\x00" as *const u8 as *const libc::c_char, - b"le;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x89\xa4\x00" as *const u8 as *const libc::c_char, - b"ge;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x89\xa5\x00" as *const u8 as *const libc::c_char, - b"sub;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8a\x82\x00" as *const u8 as *const libc::c_char, - b"sup;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8a\x83\x00" as *const u8 as *const libc::c_char, - b"nsub;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8a\x84\x00" as *const u8 as *const libc::c_char, - b"sube;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8a\x86\x00" as *const u8 as *const libc::c_char, - b"supe;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8a\x87\x00" as *const u8 as *const libc::c_char, - b"oplus;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8a\x95\x00" as *const u8 as *const libc::c_char, - b"otimes;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8a\x97\x00" as *const u8 as *const libc::c_char, - b"perp;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8a\xa5\x00" as *const u8 as *const libc::c_char, - b"sdot;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8b\x85\x00" as *const u8 as *const libc::c_char, - b"lceil;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8c\x88\x00" as *const u8 as *const libc::c_char, - b"rceil;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8c\x89\x00" as *const u8 as *const libc::c_char, - b"lfloor;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8c\x8a\x00" as *const u8 as *const libc::c_char, - b"rfloor;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x8c\x8b\x00" as *const u8 as *const libc::c_char, - b"lang;\x00" as *const u8 as *const libc::c_char, - b"<\x00" as *const u8 as *const libc::c_char, - b"rang;\x00" as *const u8 as *const libc::c_char, - b">\x00" as *const u8 as *const libc::c_char, - b"loz;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x97\x8a\x00" as *const u8 as *const libc::c_char, - b"spades;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x99\xa0\x00" as *const u8 as *const libc::c_char, - b"clubs;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x99\xa3\x00" as *const u8 as *const libc::c_char, - b"hearts;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x99\xa5\x00" as *const u8 as *const libc::c_char, - b"diams;\x00" as *const u8 as *const libc::c_char, - b"\xe2\x99\xa6\x00" as *const u8 as *const libc::c_char, - 0 as *const libc::c_char, - 0 as *const libc::c_char, -]; - -pub unsafe fn dc_attr_find( - attr: *mut *mut libc::c_char, - key: *const libc::c_char, -) -> *const libc::c_char { - if !attr.is_null() && !key.is_null() { - let mut i: libc::c_int = 0i32; - while !(*attr.offset(i as isize)).is_null() && 0 != strcmp(key, *attr.offset(i as isize)) { - i += 2i32 - } - if !(*attr.offset(i as isize)).is_null() { - return *attr.offset((i + 1i32) as isize); - } - } - - 0 as *const libc::c_char -} diff --git a/src/lib.rs b/src/lib.rs index 76cacfd37..b2d7b4888 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -58,7 +58,6 @@ mod dc_move; pub mod dc_msg; pub mod dc_qr; pub mod dc_receive_imf; -pub mod dc_saxparser; pub mod dc_securejoin; mod dc_simplify; mod dc_strencode; diff --git a/tests/stress.rs b/tests/stress.rs index a3a83c51b..90b93aec6 100644 --- a/tests/stress.rs +++ b/tests/stress.rs @@ -16,7 +16,6 @@ use deltachat::dc_imex::*; use deltachat::dc_lot::*; use deltachat::dc_mimeparser::*; use deltachat::dc_qr::*; -use deltachat::dc_saxparser::*; use deltachat::dc_securejoin::*; use deltachat::dc_tools::*; use deltachat::key::*; @@ -38,22 +37,6 @@ static mut S_EM_SETUPFILE: *const libc::c_char = as *const u8 as *const libc::c_char; unsafe fn stress_functions(context: &Context) { - let mut saxparser: dc_saxparser_t = dc_saxparser_t { - starttag_cb: None, - endtag_cb: None, - text_cb: None, - userdata: 0 as *mut libc::c_void, - }; - dc_saxparser_init(&mut saxparser, 0 as *mut libc::c_void); - dc_saxparser_parse( - &mut saxparser, - b"