diff --git a/.gitignore b/.gitignore index 58ce8ad..57c6d8d 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ _testmain.go #Misc junk *.swp + +.idea/ +*.iml diff --git a/.travis.yml b/.travis.yml index e810723..cddd1a2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ # Travis build settings for go-commonmark language: go go: - - 1.4 - 1.5 + - 1.6 before_install: - echo "yes" | sudo add-apt-repository ppa:kalakris/cmake - sudo apt-get update -qq diff --git a/blocks.c b/blocks.c index 9f41e1f..f49ad4e 100644 --- a/blocks.c +++ b/blocks.c @@ -1,3 +1,10 @@ +/** + * Block parsing implementation. + * + * For a high-level overview of the block parsing process, + * see http://spec.commonmark.org/0.24/#phase-1-block-structure + */ + #include #include #include @@ -17,12 +24,20 @@ #define CODE_INDENT 4 #define TAB_STOP 4 +#ifndef MIN +#define MIN(x, y) ((x < y) ? x : y) +#endif + #define peek_at(i, n) (i)->data[n] -static inline bool S_is_line_end_char(char c) { +static CMARK_INLINE bool S_is_line_end_char(char c) { return (c == '\n' || c == '\r'); } +static CMARK_INLINE bool S_is_space_or_tab(char c) { + return (c == ' ' || c == '\t'); +} + static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer, size_t len, bool eof); @@ -70,10 +85,12 @@ cmark_parser *cmark_parser_new(int options) { parser->first_nonspace_column = 0; parser->indent = 0; parser->blank = false; + parser->partially_consumed_tab = false; parser->curline = line; parser->last_line_length = 0; parser->linebuf = buf; parser->options = options; + parser->last_buffer_ended_with_cr = false; return parser; } @@ -110,7 +127,7 @@ static bool is_blank(cmark_strbuf *s, bufsize_t offset) { return true; } -static inline bool can_contain(cmark_node_type parent_type, +static CMARK_INLINE bool can_contain(cmark_node_type parent_type, cmark_node_type child_type) { return (parent_type == CMARK_NODE_DOCUMENT || parent_type == CMARK_NODE_BLOCK_QUOTE || @@ -118,15 +135,32 @@ static inline bool can_contain(cmark_node_type parent_type, (parent_type == CMARK_NODE_LIST && child_type == CMARK_NODE_ITEM)); } -static inline bool accepts_lines(cmark_node_type block_type) { +static CMARK_INLINE bool accepts_lines(cmark_node_type block_type) { return (block_type == CMARK_NODE_PARAGRAPH || block_type == CMARK_NODE_HEADING || block_type == CMARK_NODE_CODE_BLOCK); } -static void add_line(cmark_node *node, cmark_chunk *ch, bufsize_t offset) { +static CMARK_INLINE bool contains_inlines(cmark_node_type block_type) { + return (block_type == CMARK_NODE_PARAGRAPH || + block_type == CMARK_NODE_HEADING); +} + +static void add_line(cmark_node *node, cmark_chunk *ch, cmark_parser *parser) { + int chars_to_tab; + int i; assert(node->open); - cmark_strbuf_put(&node->string_content, ch->data + offset, ch->len - offset); + if (parser->partially_consumed_tab) { + parser->offset += 1; // skip over tab + // add space characters: + chars_to_tab = TAB_STOP - (parser->column % TAB_STOP); + for (i = 0; i < chars_to_tab; i++) { + cmark_strbuf_putc(&node->string_content, ' '); + } + } + cmark_strbuf_put(&node->string_content, + ch->data + parser->offset, + ch->len - parser->offset); } static void remove_trailing_blank_lines(cmark_strbuf *ln) { @@ -336,8 +370,7 @@ static void process_inlines(cmark_node *root, cmark_reference_map *refmap, while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) { cur = cmark_iter_get_node(iter); if (ev_type == CMARK_EVENT_ENTER) { - if (cur->type == CMARK_NODE_PARAGRAPH || - cur->type == CMARK_NODE_HEADING) { + if (contains_inlines(cur->type)) { cmark_parse_inlines(cur, refmap, options); } } @@ -474,6 +507,11 @@ static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer, const unsigned char *end = buffer + len; static const uint8_t repl[] = {239, 191, 189}; + if (parser->last_buffer_ended_with_cr && *buffer == '\n') { + // skip NL if last buffer ended with CR ; see #117 + buffer++; + } + parser->last_buffer_ended_with_cr = false; while (buffer < end) { const unsigned char *eol; bufsize_t chunk_len; @@ -514,8 +552,11 @@ static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer, buffer += chunk_len; // skip over line ending characters: - if (buffer < end && *buffer == '\r') + if (buffer < end && *buffer == '\r') { buffer++; + if (buffer == end) + parser->last_buffer_ended_with_cr = true; + } if (buffer < end && *buffer == '\n') buffer++; } @@ -532,13 +573,15 @@ static void chop_trailing_hashtags(cmark_chunk *ch) { n--; // Check for a space before the final #s: - if (n != orig_n && n >= 0 && - (peek_at(ch, n) == ' ' || peek_at(ch, n) == '\t')) { + if (n != orig_n && n >= 0 && S_is_space_or_tab(peek_at(ch, n))) { ch->len = n; cmark_chunk_rtrim(ch); } } +// Find first nonspace character from current offset, setting +// parser->first_nonspace, parser->first_nonspace_column, +// parser->indent, and parser->blank. Does not advance parser->offset. static void S_find_first_nonspace(cmark_parser *parser, cmark_chunk *input) { char c; int chars_to_tab = TAB_STOP - (parser->column % TAB_STOP); @@ -566,17 +609,37 @@ static void S_find_first_nonspace(cmark_parser *parser, cmark_chunk *input) { parser->blank = S_is_line_end_char(peek_at(input, parser->first_nonspace)); } +// Advance parser->offset and parser->column. parser->offset is the +// byte position in input; parser->column is a virtual column number +// that takes into account tabs. (Multibyte characters are not taken +// into account, because the Markdown line prefixes we are interested in +// analyzing are entirely ASCII.) The count parameter indicates +// how far to advance the offset. If columns is true, then count +// indicates a number of columns; otherwise, a number of bytes. +// If advancing a certain number of columns partially consumes +// a tab character, parser->partially_consumed_tab is set to true. static void S_advance_offset(cmark_parser *parser, cmark_chunk *input, bufsize_t count, bool columns) { char c; int chars_to_tab; + int chars_to_advance; while (count > 0 && (c = peek_at(input, parser->offset))) { if (c == '\t') { chars_to_tab = TAB_STOP - (parser->column % TAB_STOP); - parser->column += chars_to_tab; - parser->offset += 1; - count -= (columns ? chars_to_tab : 1); + if (columns) { + parser->partially_consumed_tab = chars_to_tab > count; + chars_to_advance = MIN(count, chars_to_tab); + parser->column += chars_to_advance; + parser->offset += (parser->partially_consumed_tab ? 0 : 1); + count -= chars_to_advance; + } else { + parser->partially_consumed_tab = false; + parser->column += chars_to_tab; + parser->offset += 1; + count -= 1; + } } else { + parser->partially_consumed_tab = false; parser->offset += 1; parser->column += 1; // assume ascii; block starts are ascii count -= 1; @@ -584,263 +647,314 @@ static void S_advance_offset(cmark_parser *parser, cmark_chunk *input, } } -static void S_process_line(cmark_parser *parser, const unsigned char *buffer, - bufsize_t bytes) { - cmark_node *last_matched_container; +static bool S_last_child_is_open(cmark_node *container) { + return container->last_child && container->last_child->open; +} + +static bool parse_block_quote_prefix(cmark_parser *parser, + cmark_chunk *input) +{ + bool res = false; bufsize_t matched = 0; - int lev = 0; - int i; - cmark_list *data = NULL; - bool all_matched = true; - cmark_node *container; - bool indented; - cmark_chunk input; - bool maybe_lazy; - if (parser->options & CMARK_OPT_VALIDATE_UTF8) { - cmark_utf8proc_check(parser->curline, buffer, bytes); - } else { - cmark_strbuf_put(parser->curline, buffer, bytes); - } - // ensure line ends with a newline: - if (bytes == 0 || !S_is_line_end_char(parser->curline->ptr[bytes - 1])) { - cmark_strbuf_putc(parser->curline, '\n'); - } - parser->offset = 0; - parser->column = 0; - parser->blank = false; + matched = + parser->indent <= 3 && peek_at(input, parser->first_nonspace) == '>'; + if (matched) { - input.data = parser->curline->ptr; - input.len = parser->curline->size; + S_advance_offset(parser, input, parser->indent + 1, true); - // container starts at the document root. - container = parser->root; + if (S_is_space_or_tab(peek_at(input, parser->offset))) { + S_advance_offset(parser, input, 1, true); + } - parser->line_number++; + res = true; + } + return res; +} - // for each containing node, try to parse the associated line start. - // bail out on failure: container will point to the last matching node. +static bool parse_node_item_prefix(cmark_parser *parser, + cmark_chunk *input, + cmark_node *container) +{ + bool res = false; + + if (parser->indent >= + container->as.list.marker_offset + container->as.list.padding) { + S_advance_offset(parser, input, container->as.list.marker_offset + + container->as.list.padding, + true); + res = true; + } else if (parser->blank && container->first_child != NULL) { + // if container->first_child is NULL, then the opening line + // of the list item was blank after the list marker; in this + // case, we are done with the list item. + S_advance_offset(parser, input, + parser->first_nonspace - parser->offset, false); + res = true; + } + return res; +} - while (container->last_child && container->last_child->open) { - container = container->last_child; +static bool parse_code_block_prefix(cmark_parser *parser, + cmark_chunk *input, + cmark_node *container, + bool *should_continue) +{ + bool res = false; + + if (!container->as.code.fenced) { // indented + if (parser->indent >= CODE_INDENT) { + S_advance_offset(parser, input, CODE_INDENT, true); + res = true; + } else if (parser->blank) { + S_advance_offset(parser, input, + parser->first_nonspace - parser->offset, false); + res = true; + } + } else { // fenced + bufsize_t matched = 0; - S_find_first_nonspace(parser, &input); + if (parser->indent <= 3 && (peek_at(input, parser->first_nonspace) == + container->as.code.fence_char)) { + matched = scan_close_code_fence(input, parser->first_nonspace); + } - if (container->type == CMARK_NODE_BLOCK_QUOTE) { - matched = - parser->indent <= 3 && peek_at(&input, parser->first_nonspace) == '>'; - if (matched) { - S_advance_offset(parser, &input, parser->indent + 1, true); - if (peek_at(&input, parser->offset) == ' ') - parser->offset++; - } else { - all_matched = false; - } + if (matched >= container->as.code.fence_length) { + // closing fence - and since we're at + // the end of a line, we can stop processing it: + *should_continue = false; + S_advance_offset(parser, input, matched, false); + parser->current = finalize(parser, container); + } else { + // skip opt. spaces of fence parser->offset + int i = container->as.code.fence_offset; - } else if (container->type == CMARK_NODE_ITEM) { - if (parser->indent >= - container->as.list.marker_offset + container->as.list.padding) { - S_advance_offset(parser, &input, container->as.list.marker_offset + - container->as.list.padding, - true); - } else if (parser->blank && container->first_child != NULL) { - // if container->first_child is NULL, then the opening line - // of the list item was blank after the list marker; in this - // case, we are done with the list item. - S_advance_offset(parser, &input, - parser->first_nonspace - parser->offset, false); - } else { - all_matched = false; + while (i > 0 && S_is_space_or_tab(peek_at(input, parser->offset))) { + S_advance_offset(parser, input, 1, true); + i--; } + res = true; + } + } - } else if (container->type == CMARK_NODE_CODE_BLOCK) { + return res; +} - if (!container->as.code.fenced) { // indented - if (parser->indent >= CODE_INDENT) { - S_advance_offset(parser, &input, CODE_INDENT, true); - } else if (parser->blank) { - S_advance_offset(parser, &input, - parser->first_nonspace - parser->offset, false); - } else { - all_matched = false; - } - } else { // fenced - matched = 0; - if (parser->indent <= 3 && (peek_at(&input, parser->first_nonspace) == - container->as.code.fence_char)) { - matched = scan_close_code_fence(&input, parser->first_nonspace); - } - if (matched >= container->as.code.fence_length) { - // closing fence - and since we're at - // the end of a line, we can return: - all_matched = false; - S_advance_offset(parser, &input, matched, false); - parser->current = finalize(parser, container); - goto finished; - } else { - // skip opt. spaces of fence parser->offset - i = container->as.code.fence_offset; - while (i > 0 && peek_at(&input, parser->offset) == ' ') { - S_advance_offset(parser, &input, 1, false); - i--; - } - } - } - } else if (container->type == CMARK_NODE_HEADING) { +static bool parse_html_block_prefix(cmark_parser *parser, + cmark_node *container) +{ + bool res = false; + int html_block_type = container->as.html_block_type; + + assert(html_block_type >= 1 && html_block_type <= 7); + switch (html_block_type) { + case 1: + case 2: + case 3: + case 4: + case 5: + // these types of blocks can accept blanks + res = true; + break; + case 6: + case 7: + res = !parser->blank; + break; + } - // a heading can never contain more than one line - all_matched = false; + return res; +} - } else if (container->type == CMARK_NODE_HTML_BLOCK) { +/** + * For each containing node, try to parse the associated line start. + * + * Will not close unmatched blocks, as we may have a lazy continuation + * line -> http://spec.commonmark.org/0.24/#lazy-continuation-line + * + * Returns: The last matching node, or NULL + */ +static cmark_node *check_open_blocks(cmark_parser *parser, + cmark_chunk *input, + bool *all_matched) +{ + bool should_continue = true; + *all_matched = false; + cmark_node *container = parser->root; + cmark_node_type cont_type; + + while (S_last_child_is_open(container)) { + container = container->last_child; + cont_type = container->type; - switch (container->as.html_block_type) { - case 1: - case 2: - case 3: - case 4: - case 5: - // these types of blocks can accept blanks + S_find_first_nonspace(parser, input); + + switch (cont_type) { + case CMARK_NODE_BLOCK_QUOTE: + if (!parse_block_quote_prefix(parser, input)) + goto done; break; - case 6: - case 7: - if (parser->blank) { - all_matched = false; - } + case CMARK_NODE_ITEM: + if (!parse_node_item_prefix(parser, input, container)) + goto done; + break; + case CMARK_NODE_CODE_BLOCK: + if (!parse_code_block_prefix(parser, input, container, &should_continue)) + goto done; + break; + case CMARK_NODE_HEADING: + // a heading can never contain more than one line + goto done; + case CMARK_NODE_HTML_BLOCK: + if (!parse_html_block_prefix(parser, container)) + goto done; + break; + case CMARK_NODE_PARAGRAPH: + if (parser->blank) + goto done; break; default: - fprintf(stderr, "Error (%s:%d): Unknown HTML block type %d\n", __FILE__, - __LINE__, container->as.html_block_type); - exit(1); - } + break; + } + } - } else if (container->type == CMARK_NODE_PARAGRAPH) { + *all_matched = true; - if (parser->blank) { - all_matched = false; - } - } +done: + if (!*all_matched) { + container = container->parent; // back up to last matching node + } - if (!all_matched) { - container = container->parent; // back up to last matching node - break; - } + if (!should_continue) { + container = NULL; } - last_matched_container = container; + return container; +} - // check to see if we've hit 2nd blank line, break out of list: - if (parser->blank && container->last_line_blank) { - break_out_of_lists(parser, &container); - } +static void open_new_blocks(cmark_parser *parser, + cmark_node **container, + cmark_chunk *input, + bool all_matched) +{ + bool indented; + cmark_list *data = NULL; + bool maybe_lazy = parser->current->type == CMARK_NODE_PARAGRAPH; + cmark_node_type cont_type = (*container)->type; + bufsize_t matched = 0; + int lev = 0; + bool save_partially_consumed_tab; + int save_offset; + int save_column; - maybe_lazy = parser->current->type == CMARK_NODE_PARAGRAPH; - // try new container starts: - while (container->type != CMARK_NODE_CODE_BLOCK && - container->type != CMARK_NODE_HTML_BLOCK) { + while (cont_type != CMARK_NODE_CODE_BLOCK && + cont_type != CMARK_NODE_HTML_BLOCK) { - S_find_first_nonspace(parser, &input); + S_find_first_nonspace(parser, input); indented = parser->indent >= CODE_INDENT; - if (!indented && peek_at(&input, parser->first_nonspace) == '>') { + if (!indented && peek_at(input, parser->first_nonspace) == '>') { - S_advance_offset(parser, &input, + S_advance_offset(parser, input, parser->first_nonspace + 1 - parser->offset, false); // optional following character - if (peek_at(&input, parser->offset) == ' ') - S_advance_offset(parser, &input, 1, false); - container = add_child(parser, container, CMARK_NODE_BLOCK_QUOTE, + if (S_is_space_or_tab(peek_at(input, parser->offset))) { + S_advance_offset(parser, input, 1, true); + } + *container = add_child(parser, *container, CMARK_NODE_BLOCK_QUOTE, parser->offset + 1); } else if (!indented && (matched = scan_atx_heading_start( - &input, parser->first_nonspace))) { + input, parser->first_nonspace))) { + bufsize_t hashpos; + int level = 0; - S_advance_offset(parser, &input, + S_advance_offset(parser, input, parser->first_nonspace + matched - parser->offset, false); - container = - add_child(parser, container, CMARK_NODE_HEADING, parser->offset + 1); + *container = + add_child(parser, *container, CMARK_NODE_HEADING, parser->offset + 1); - bufsize_t hashpos = - cmark_chunk_strchr(&input, '#', parser->first_nonspace); - int level = 0; + hashpos = cmark_chunk_strchr(input, '#', parser->first_nonspace); - while (peek_at(&input, hashpos) == '#') { + while (peek_at(input, hashpos) == '#') { level++; hashpos++; } - container->as.heading.level = level; - container->as.heading.setext = false; - } else if (!indented && (matched = scan_open_code_fence( - &input, parser->first_nonspace))) { + (*container)->as.heading.level = level; + (*container)->as.heading.setext = false; - container = add_child(parser, container, CMARK_NODE_CODE_BLOCK, + } else if (!indented && (matched = scan_open_code_fence( + input, parser->first_nonspace))) { + *container = add_child(parser, *container, CMARK_NODE_CODE_BLOCK, parser->first_nonspace + 1); - container->as.code.fenced = true; - container->as.code.fence_char = peek_at(&input, parser->first_nonspace); - container->as.code.fence_length = matched; - container->as.code.fence_offset = + (*container)->as.code.fenced = true; + (*container)->as.code.fence_char = peek_at(input, parser->first_nonspace); + (*container)->as.code.fence_length = matched; + (*container)->as.code.fence_offset = (int8_t)(parser->first_nonspace - parser->offset); - container->as.code.info = cmark_chunk_literal(""); - S_advance_offset(parser, &input, + (*container)->as.code.info = cmark_chunk_literal(""); + S_advance_offset(parser, input, parser->first_nonspace + matched - parser->offset, false); } else if (!indented && ((matched = scan_html_block_start( - &input, parser->first_nonspace)) || - (container->type != CMARK_NODE_PARAGRAPH && + input, parser->first_nonspace)) || + (cont_type != CMARK_NODE_PARAGRAPH && (matched = scan_html_block_start_7( - &input, parser->first_nonspace))))) { - - container = add_child(parser, container, CMARK_NODE_HTML_BLOCK, + input, parser->first_nonspace))))) { + *container = add_child(parser, *container, CMARK_NODE_HTML_BLOCK, parser->first_nonspace + 1); - container->as.html_block_type = matched; + (*container)->as.html_block_type = matched; // note, we don't adjust parser->offset because the tag is part of the // text - - } else if (!indented && container->type == CMARK_NODE_PARAGRAPH && + } else if (!indented && cont_type == CMARK_NODE_PARAGRAPH && (lev = - scan_setext_heading_line(&input, parser->first_nonspace))) { - - container->type = CMARK_NODE_HEADING; - container->as.heading.level = lev; - container->as.heading.setext = true; - S_advance_offset(parser, &input, input.len - 1 - parser->offset, false); - + scan_setext_heading_line(input, parser->first_nonspace))) { + (*container)->type = CMARK_NODE_HEADING; + (*container)->as.heading.level = lev; + (*container)->as.heading.setext = true; + S_advance_offset(parser, input, input->len - 1 - parser->offset, false); } else if (!indented && - !(container->type == CMARK_NODE_PARAGRAPH && !all_matched) && + !(cont_type == CMARK_NODE_PARAGRAPH && !all_matched) && (matched = - scan_thematic_break(&input, parser->first_nonspace))) { - + scan_thematic_break(input, parser->first_nonspace))) { // it's only now that we know the line is not part of a setext heading: - container = add_child(parser, container, CMARK_NODE_THEMATIC_BREAK, + *container = add_child(parser, *container, CMARK_NODE_THEMATIC_BREAK, parser->first_nonspace + 1); - S_advance_offset(parser, &input, input.len - 1 - parser->offset, false); - + S_advance_offset(parser, input, input->len - 1 - parser->offset, false); } else if ((matched = - parse_list_marker(&input, parser->first_nonspace, &data)) && - (!indented || container->type == CMARK_NODE_LIST)) { + parse_list_marker(input, parser->first_nonspace, &data)) && + (!indented || cont_type == CMARK_NODE_LIST)) { // Note that we can have new list items starting with >= 4 // spaces indent, as long as the list container is still open. + int i = 0; // compute padding: - S_advance_offset(parser, &input, + S_advance_offset(parser, input, parser->first_nonspace + matched - parser->offset, false); - i = 0; - while (i <= 5 && peek_at(&input, parser->offset + i) == ' ') { - i++; + + save_partially_consumed_tab = parser->partially_consumed_tab; + save_offset = parser->offset; + save_column = parser->column; + + while (parser->column - save_column <= 5 && + S_is_space_or_tab(peek_at(input, parser->offset))) { + S_advance_offset(parser, input, 1, true); } - // i = number of spaces after marker, up to 5 - if (i >= 5 || i < 1 || - S_is_line_end_char(peek_at(&input, parser->offset))) { + + i = parser->column - save_column; + if (i >= 5 || i < 1) { data->padding = matched + 1; + parser->offset = save_offset; + parser->column = save_column; + parser->partially_consumed_tab = save_partially_consumed_tab; if (i > 0) { - S_advance_offset(parser, &input, 1, false); + S_advance_offset(parser, input, 1, true); } } else { data->padding = matched + i; - S_advance_offset(parser, &input, i, true); } // check container; if it's a list, see if this list item @@ -848,50 +962,57 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer, data->marker_offset = parser->indent; - if (container->type != CMARK_NODE_LIST || - !lists_match(&container->as.list, data)) { - container = add_child(parser, container, CMARK_NODE_LIST, + if (cont_type != CMARK_NODE_LIST || + !lists_match(&((*container)->as.list), data)) { + *container = add_child(parser, *container, CMARK_NODE_LIST, parser->first_nonspace + 1); - memcpy(&container->as.list, data, sizeof(*data)); + memcpy(&((*container)->as.list), data, sizeof(*data)); } // add the list item - container = add_child(parser, container, CMARK_NODE_ITEM, + *container = add_child(parser, *container, CMARK_NODE_ITEM, parser->first_nonspace + 1); /* TODO: static */ - memcpy(&container->as.list, data, sizeof(*data)); + memcpy(&((*container)->as.list), data, sizeof(*data)); free(data); - } else if (indented && !maybe_lazy && !parser->blank) { - S_advance_offset(parser, &input, CODE_INDENT, true); - container = add_child(parser, container, CMARK_NODE_CODE_BLOCK, + S_advance_offset(parser, input, CODE_INDENT, true); + *container = add_child(parser, *container, CMARK_NODE_CODE_BLOCK, parser->offset + 1); - container->as.code.fenced = false; - container->as.code.fence_char = 0; - container->as.code.fence_length = 0; - container->as.code.fence_offset = 0; - container->as.code.info = cmark_chunk_literal(""); + (*container)->as.code.fenced = false; + (*container)->as.code.fence_char = 0; + (*container)->as.code.fence_length = 0; + (*container)->as.code.fence_offset = 0; + (*container)->as.code.info = cmark_chunk_literal(""); } else { break; } - if (accepts_lines(container->type)) { + if (accepts_lines((*container)->type)) { // if it's a line container, it can't contain other containers break; } + + cont_type = (*container)->type; maybe_lazy = false; } +} +static void add_text_to_container (cmark_parser *parser, + cmark_node *container, + cmark_node *last_matched_container, + cmark_chunk *input) +{ + cmark_node *tmp; // what remains at parser->offset is a text line. add the text to the // appropriate container. - S_find_first_nonspace(parser, &input); + S_find_first_nonspace(parser, input); - if (parser->blank && container->last_child) { + if (parser->blank && container->last_child) container->last_child->last_line_blank = true; - } // block quote lines are never blank as they start with > // and we don't count blanks in fenced code for purposes of tight/loose @@ -906,61 +1027,61 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer, !(container->type == CMARK_NODE_ITEM && container->first_child == NULL && container->start_line == parser->line_number)); - cmark_node *cont = container; - while (cont->parent) { - cont->parent->last_line_blank = false; - cont = cont->parent; + tmp = container; + while (tmp->parent) { + tmp->parent->last_line_blank = false; + tmp = tmp->parent; } + // If the last line processed belonged to a paragraph node, + // and we didn't match all of the line prefixes for the open containers, + // and we didn't start any new containers, + // and the line isn't blank, + // then treat this as a "lazy continuation line" and add it to + // the open paragraph. if (parser->current != last_matched_container && - container == last_matched_container && !parser->blank && - parser->current->type == CMARK_NODE_PARAGRAPH && - cmark_strbuf_len(&parser->current->string_content) > 0) { - - add_line(parser->current, &input, parser->offset); - + container == last_matched_container && + !parser->blank && + parser->current->type == CMARK_NODE_PARAGRAPH) { + add_line(parser->current, input, parser); } else { // not a lazy continuation - - // finalize any blocks that were not matched and set cur to container: + // Finalize any blocks that were not matched and set cur to container: while (parser->current != last_matched_container) { parser->current = finalize(parser, parser->current); assert(parser->current != NULL); } if (container->type == CMARK_NODE_CODE_BLOCK) { - - add_line(container, &input, parser->offset); - + add_line(container, input, parser); } else if (container->type == CMARK_NODE_HTML_BLOCK) { - - add_line(container, &input, parser->offset); + add_line(container, input, parser); int matches_end_condition; switch (container->as.html_block_type) { case 1: // , , matches_end_condition = - scan_html_block_end_1(&input, parser->first_nonspace); + scan_html_block_end_1(input, parser->first_nonspace); break; case 2: // --> matches_end_condition = - scan_html_block_end_2(&input, parser->first_nonspace); + scan_html_block_end_2(input, parser->first_nonspace); break; case 3: // ?> matches_end_condition = - scan_html_block_end_3(&input, parser->first_nonspace); + scan_html_block_end_3(input, parser->first_nonspace); break; case 4: // > matches_end_condition = - scan_html_block_end_4(&input, parser->first_nonspace); + scan_html_block_end_4(input, parser->first_nonspace); break; case 5: // ]]> matches_end_condition = - scan_html_block_end_5(&input, parser->first_nonspace); + scan_html_block_end_5(input, parser->first_nonspace); break; default: matches_end_condition = 0; @@ -971,28 +1092,69 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer, container = finalize(parser, container); assert(parser->current != NULL); } - } else if (parser->blank) { - // ??? do nothing - } else if (accepts_lines(container->type)) { - if (container->type == CMARK_NODE_HEADING && container->as.heading.setext == false) { - chop_trailing_hashtags(&input); + chop_trailing_hashtags(input); } - add_line(container, &input, parser->first_nonspace); - + S_advance_offset(parser, input, parser->first_nonspace - parser->offset, false); + add_line(container, input, parser); } else { // create paragraph container for line container = add_child(parser, container, CMARK_NODE_PARAGRAPH, parser->first_nonspace + 1); - add_line(container, &input, parser->first_nonspace); + S_advance_offset(parser, input, parser->first_nonspace - parser->offset, false); + add_line(container, input, parser); } parser->current = container; } +} + +/* See http://spec.commonmark.org/0.24/#phase-1-block-structure */ +static void S_process_line(cmark_parser *parser, const unsigned char *buffer, + bufsize_t bytes) { + cmark_node *last_matched_container; + bool all_matched = true; + cmark_node *container; + cmark_chunk input; + + if (parser->options & CMARK_OPT_VALIDATE_UTF8) + cmark_utf8proc_check(parser->curline, buffer, bytes); + else + cmark_strbuf_put(parser->curline, buffer, bytes); + + // ensure line ends with a newline: + if (bytes == 0 || !S_is_line_end_char(parser->curline->ptr[bytes - 1])) + cmark_strbuf_putc(parser->curline, '\n'); + + parser->offset = 0; + parser->column = 0; + parser->blank = false; + parser->partially_consumed_tab = false; + + input.data = parser->curline->ptr; + input.len = parser->curline->size; + + parser->line_number++; + + last_matched_container = check_open_blocks(parser, &input, &all_matched); + + if (!last_matched_container) + goto finished; + + container = last_matched_container; + + // check to see if we've hit 2nd blank line, break out of list: + if (parser->blank && container->last_line_blank) + break_out_of_lists(parser, &container); + + open_new_blocks(parser, &container, &input, all_matched); + + add_text_to_container(parser, container, last_matched_container, &input); + finished: parser->last_line_length = input.len; if (parser->last_line_length && diff --git a/buffer.c b/buffer.c index a89c82e..4efa97b 100644 --- a/buffer.c +++ b/buffer.c @@ -33,7 +33,7 @@ void cmark_strbuf_overflow_err() { abort(); } -static inline void S_strbuf_grow_by(cmark_strbuf *buf, size_t add) { +static CMARK_INLINE void S_strbuf_grow_by(cmark_strbuf *buf, size_t add) { size_t target_size = (size_t)buf->size + add; if (target_size < add /* Integer overflow. */ @@ -217,7 +217,8 @@ bufsize_t cmark_strbuf_strrchr(const cmark_strbuf *buf, int c, bufsize_t pos) { if (pos >= buf->size) pos = buf->size - 1; - for (bufsize_t i = pos; i >= 0; i--) { + bufsize_t i; + for (i = pos; i >= 0; i--) { if (buf->ptr[i] == (unsigned char)c) return i; } diff --git a/chunk.h b/chunk.h index 7007492..b25831b 100644 --- a/chunk.h +++ b/chunk.h @@ -48,8 +48,8 @@ static CMARK_INLINE void cmark_chunk_trim(cmark_chunk *c) { cmark_chunk_rtrim(c); } -static CMARK_INLINE bufsize_t - cmark_chunk_strchr(cmark_chunk *ch, int c, bufsize_t offset) { +static CMARK_INLINE bufsize_t cmark_chunk_strchr(cmark_chunk *ch, int c, + bufsize_t offset) { const unsigned char *p = (unsigned char *)memchr(ch->data + offset, c, ch->len - offset); return p ? (bufsize_t)(p - ch->data) : ch->len; @@ -96,8 +96,8 @@ static CMARK_INLINE cmark_chunk cmark_chunk_literal(const char *data) { return c; } -static CMARK_INLINE cmark_chunk - cmark_chunk_dup(const cmark_chunk *ch, bufsize_t pos, bufsize_t len) { +static CMARK_INLINE cmark_chunk cmark_chunk_dup(const cmark_chunk *ch, + bufsize_t pos, bufsize_t len) { cmark_chunk c = {ch->data + pos, len, 0}; return c; } diff --git a/cmark.h b/cmark.h index d0f1953..7deaf31 100644 --- a/cmark.h +++ b/cmark.h @@ -20,7 +20,7 @@ extern "C" { */ /** Convert 'text' (assumed to be a UTF-8 encoded string with length - * 'len' from CommonMark Markdown to HTML, returning a null-terminated, + * 'len') from CommonMark Markdown to HTML, returning a null-terminated, * UTF-8-encoded string. */ CMARK_EXPORT @@ -96,7 +96,7 @@ typedef struct cmark_iter cmark_iter; */ CMARK_EXPORT cmark_node *cmark_node_new(cmark_node_type type); -/** Frees the memory allocated for a node. +/** Frees the memory allocated for a node and any children. */ CMARK_EXPORT void cmark_node_free(cmark_node *node); @@ -418,7 +418,7 @@ CMARK_EXPORT void cmark_consolidate_text_nodes(cmark_node *root); * Streaming interface: * * cmark_parser *parser = cmark_parser_new(CMARK_OPT_DEFAULT); - * FILE *fp = fopen("myfile.md", "r"); + * FILE *fp = fopen("myfile.md", "rb"); * while ((bytes = fread(buffer, 1, sizeof(buffer), fp)) > 0) { * cmark_parser_feed(parser, buffer, bytes); * if (bytes < sizeof(buffer)) { diff --git a/cmark_version.h b/cmark_version.h index a56570f..5e873b2 100644 --- a/cmark_version.h +++ b/cmark_version.h @@ -1,7 +1,7 @@ #ifndef CMARK_VERSION_H #define CMARK_VERSION_H -#define CMARK_VERSION ((0 << 16) | (24 << 8) | 1) -#define CMARK_VERSION_STRING "0.24.1" +#define CMARK_VERSION ((0 << 16) | (25 << 8) | 2) +#define CMARK_VERSION_STRING "0.25.2" #endif diff --git a/commonmark.c b/commonmark.c index 751a5df..f5a352d 100644 --- a/commonmark.c +++ b/commonmark.c @@ -17,15 +17,18 @@ #define LIT(s) renderer->out(renderer, s, false, LITERAL) #define CR() renderer->cr(renderer) #define BLANKLINE() renderer->blankline(renderer) +#define ENCODED_SIZE 20 +#define LISTMARKER_SIZE 20 // Functions to convert cmark_nodes to commonmark strings. -static inline void outc(cmark_renderer *renderer, cmark_escaping escape, +static CMARK_INLINE void outc(cmark_renderer *renderer, cmark_escaping escape, int32_t c, unsigned char nextc) { bool needs_escaping = false; - char encoded[20]; - bool follows_digit = renderer->buffer->size > 0 && - cmark_isdigit(renderer->buffer->ptr[renderer->buffer->size - 1]); + bool follows_digit = + renderer->buffer->size > 0 && + cmark_isdigit(renderer->buffer->ptr[renderer->buffer->size - 1]); + char encoded[ENCODED_SIZE]; needs_escaping = escape != LITERAL && @@ -34,11 +37,11 @@ static inline void outc(cmark_renderer *renderer, cmark_escaping escape, c == '>' || c == '\\' || c == '`' || c == '!' || (c == '&' && isalpha(nextc)) || (c == '!' && nextc == '[') || (renderer->begin_content && (c == '-' || c == '+' || c == '=') && - // begin_content doesn't get set to false til we've passed digits - // at the beginning of line, so... - !follows_digit) || + // begin_content doesn't get set to false til we've passed digits + // at the beginning of line, so... + !follows_digit) || (renderer->begin_content && (c == '.' || c == ')') && follows_digit && - (nextc == 0 || cmark_isspace(nextc))))) || + (nextc == 0 || cmark_isspace(nextc))))) || (escape == URL && (c == '`' || c == '<' || c == '>' || isspace(c) || c == '\\' || c == ')' || c == '(')) || (escape == TITLE && @@ -47,7 +50,7 @@ static inline void outc(cmark_renderer *renderer, cmark_escaping escape, if (needs_escaping) { if (isspace(c)) { // use percent encoding for spaces - sprintf(encoded, "%%%2x", c); + snprintf(encoded, ENCODED_SIZE, "%%%2x", c); cmark_strbuf_puts(renderer->buffer, encoded); renderer->column += 3; } else { @@ -166,7 +169,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, bool entering = (ev_type == CMARK_EVENT_ENTER); const char *info, *code, *title; size_t info_len, code_len; - char listmarker[20]; + char listmarker[LISTMARKER_SIZE]; char *emph_delim; bufsize_t marker_width; @@ -176,7 +179,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, if (!(node->type == CMARK_NODE_ITEM && node->prev == NULL && entering)) { tmp = get_containing_block(node); renderer->in_tight_list_item = - tmp && // tmp might be NULL if there is no containing block + tmp && // tmp might be NULL if there is no containing block ((tmp->type == CMARK_NODE_ITEM && cmark_node_get_list_tight(tmp->parent)) || (tmp && tmp->parent && tmp->parent->type == CMARK_NODE_ITEM && @@ -223,9 +226,9 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, // we ensure a width of at least 4 so // we get nice transition from single digits // to double - sprintf(listmarker, "%d%s%s", list_number, - list_delim == CMARK_PAREN_DELIM ? ")" : ".", - list_number < 10 ? " " : " "); + snprintf(listmarker, LISTMARKER_SIZE, "%d%s%s", list_number, + list_delim == CMARK_PAREN_DELIM ? ")" : ".", + list_number < 10 ? " " : " "); marker_width = safe_strlen(listmarker); } if (entering) { @@ -270,8 +273,8 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, // begin or end with a blank line, and code isn't // first thing in a list item if (info_len == 0 && - (code_len > 2 && !isspace(code[0]) && - !(isspace(code[code_len - 1]) && isspace(code[code_len - 2]))) && + (code_len > 2 && !isspace((unsigned char)code[0]) && + !(isspace((unsigned char)code[code_len - 1]) && isspace((unsigned char)code[code_len - 2]))) && !(node->prev == NULL && node->parent && node->parent->type == CMARK_NODE_ITEM)) { LIT(" "); diff --git a/commonmark_test.go b/commonmark_test.go index 0d649e1..8f112c5 100644 --- a/commonmark_test.go +++ b/commonmark_test.go @@ -171,6 +171,9 @@ func TestCMarkNodeOps(t *testing.T) { root.SetNodeUserData("STRING!") x := root.GetNodeUserData() t.Logf("X: %v", x) + if x != "STRING!"{ + t.Error("NodeUserData is wrong!") + } //header2.Free() root.Free() } diff --git a/config.h b/config.h index 2af3403..d38c7c7 100644 --- a/config.h +++ b/config.h @@ -1,3 +1,10 @@ +#ifndef CMARK_CONFIG_H +#define CMARK_CONFIG_H + +#ifdef __cplusplus +extern "C" { +#endif + #define HAVE_STDBOOL_H #ifdef HAVE_STDBOOL_H @@ -23,3 +30,47 @@ #define CMARK_INLINE inline #endif #endif + +/* snprintf and vsnprintf fallbacks for MSVC before 2015, + due to Valentin Milea http://stackoverflow.com/questions/2915672/ +*/ + +#if defined(_MSC_VER) && _MSC_VER < 1900 + +#include +#include + +#define snprintf c99_snprintf +#define vsnprintf c99_vsnprintf + +CMARK_INLINE int c99_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap) +{ + int count = -1; + + if (size != 0) + count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap); + if (count == -1) + count = _vscprintf(format, ap); + + return count; +} + +CMARK_INLINE int c99_snprintf(char *outBuf, size_t size, const char *format, ...) +{ + int count; + va_list ap; + + va_start(ap, format); + count = c99_vsnprintf(outBuf, size, format, ap); + va_end(ap); + + return count; +} + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/html.c b/html.c index 54f27ba..9ffa08a 100644 --- a/html.c +++ b/html.c @@ -10,6 +10,8 @@ #include "houdini.h" #include "scanners.h" +#define BUFFER_SIZE 100 + // Functions to convert cmark_nodes to HTML strings. static void escape_html(cmark_strbuf *dest, const unsigned char *source, @@ -17,7 +19,7 @@ static void escape_html(cmark_strbuf *dest, const unsigned char *source, houdini_escape_html0(dest, source, length, 0); } -static inline void cr(cmark_strbuf *html) { +static CMARK_INLINE void cr(cmark_strbuf *html) { if (html->size && html->ptr[html->size - 1] != '\n') cmark_strbuf_putc(html, '\n'); } @@ -29,11 +31,11 @@ struct render_state { static void S_render_sourcepos(cmark_node *node, cmark_strbuf *html, int options) { - char buffer[100]; + char buffer[BUFFER_SIZE]; if (CMARK_OPT_SOURCEPOS & options) { - sprintf(buffer, " data-sourcepos=\"%d:%d-%d:%d\"", - cmark_node_get_start_line(node), cmark_node_get_start_column(node), - cmark_node_get_end_line(node), cmark_node_get_end_column(node)); + snprintf(buffer, BUFFER_SIZE, " data-sourcepos=\"%d:%d-%d:%d\"", + cmark_node_get_start_line(node), cmark_node_get_start_column(node), + cmark_node_get_end_line(node), cmark_node_get_end_column(node)); cmark_strbuf_puts(html, buffer); } } @@ -46,7 +48,7 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, char start_heading[] = "\n"); } else { - sprintf(buffer, "
    \n"); diff --git a/inlines.c b/inlines.c index 1199831..8ff8131 100644 --- a/inlines.c +++ b/inlines.c @@ -48,7 +48,7 @@ typedef struct { delimiter *last_delim; } subject; -static inline bool S_is_line_end_char(char c) { +static CMARK_INLINE bool S_is_line_end_char(char c) { return (c == '\n' || c == '\r'); } @@ -62,7 +62,7 @@ static void subject_from_buf(subject *e, cmark_strbuf *buffer, static bufsize_t subject_find_special_char(subject *subj, int options); // Create an inline with a literal string value. -static inline cmark_node *make_literal(cmark_node_type t, cmark_chunk s) { +static CMARK_INLINE cmark_node *make_literal(cmark_node_type t, cmark_chunk s) { cmark_node *e = (cmark_node *)calloc(1, sizeof(*e)); if (e != NULL) { e->type = t; @@ -81,7 +81,7 @@ static inline cmark_node *make_literal(cmark_node_type t, cmark_chunk s) { } // Create an inline with no value. -static inline cmark_node *make_simple(cmark_node_type t) { +static CMARK_INLINE cmark_node *make_simple(cmark_node_type t) { cmark_node *e = (cmark_node *)calloc(1, sizeof(*e)); if (e != NULL) { e->type = t; @@ -141,7 +141,7 @@ static cmark_chunk cmark_clean_autolink(cmark_chunk *url, int is_email) { return cmark_chunk_buf_detach(&buf); } -static inline cmark_node *make_autolink(cmark_chunk url, int is_email) { +static CMARK_INLINE cmark_node *make_autolink(cmark_chunk url, int is_email) { cmark_node *link = make_simple(CMARK_NODE_LINK); link->as.link.url = cmark_clean_autolink(&url, is_email); link->as.link.title = cmark_chunk_literal(""); @@ -159,28 +159,28 @@ static void subject_from_buf(subject *e, cmark_strbuf *buffer, e->last_delim = NULL; } -static inline int isbacktick(int c) { return (c == '`'); } +static CMARK_INLINE int isbacktick(int c) { return (c == '`'); } -static inline unsigned char peek_char(subject *subj) { +static CMARK_INLINE unsigned char peek_char(subject *subj) { // NULL bytes should have been stripped out by now. If they're // present, it's a programming error: assert(!(subj->pos < subj->input.len && subj->input.data[subj->pos] == 0)); return (subj->pos < subj->input.len) ? subj->input.data[subj->pos] : 0; } -static inline unsigned char peek_at(subject *subj, bufsize_t pos) { +static CMARK_INLINE unsigned char peek_at(subject *subj, bufsize_t pos) { return subj->input.data[pos]; } // Return true if there are more characters in the subject. -static inline int is_eof(subject *subj) { +static CMARK_INLINE int is_eof(subject *subj) { return (subj->pos >= subj->input.len); } // Advance the subject. Doesn't check for eof. #define advance(subj) (subj)->pos += 1 -static inline bool skip_spaces(subject *subj) { +static CMARK_INLINE bool skip_spaces(subject *subj) { bool skipped = false; while (peek_char(subj) == ' ' || peek_char(subj) == '\t') { advance(subj); @@ -189,7 +189,7 @@ static inline bool skip_spaces(subject *subj) { return skipped; } -static inline bool skip_line_end(subject *subj) { +static CMARK_INLINE bool skip_line_end(subject *subj) { bool seen_line_end_char = false; if (peek_char(subj) == '\r') { advance(subj); @@ -203,7 +203,7 @@ static inline bool skip_line_end(subject *subj) { } // Take characters while a predicate holds, and return a string. -static inline cmark_chunk take_while(subject *subj, int (*f)(int)) { +static CMARK_INLINE cmark_chunk take_while(subject *subj, int (*f)(int)) { unsigned char c; bufsize_t startpos = subj->pos; bufsize_t len = 0; diff --git a/latex.c b/latex.c index 57d474c..cd2f6f3 100644 --- a/latex.c +++ b/latex.c @@ -17,8 +17,9 @@ #define LIT(s) renderer->out(renderer, s, false, LITERAL) #define CR() renderer->cr(renderer) #define BLANKLINE() renderer->blankline(renderer) +#define LIST_NUMBER_STRING_SIZE 20 -static inline void outc(cmark_renderer *renderer, cmark_escaping escape, +static CMARK_INLINE void outc(cmark_renderer *renderer, cmark_escaping escape, int32_t c, unsigned char nextc) { if (escape == LITERAL) { cmark_render_code_point(renderer, c); @@ -217,7 +218,7 @@ static int S_get_enumlevel(cmark_node *node) { static int S_render_node(cmark_renderer *renderer, cmark_node *node, cmark_event_type ev_type, int options) { int list_number; - char list_number_string[20]; + char list_number_string[LIST_NUMBER_STRING_SIZE]; bool entering = (ev_type == CMARK_EVENT_ENTER); cmark_list_type list_type; const char *roman_numerals[] = {"", "i", "ii", "iii", "iv", "v", @@ -249,7 +250,8 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, CR(); list_number = cmark_node_get_list_start(node); if (list_number > 1) { - sprintf(list_number_string, "%d", list_number); + snprintf(list_number_string, LIST_NUMBER_STRING_SIZE, "%d", + list_number); LIT("\\setcounter{enum"); LIT((char *)roman_numerals[S_get_enumlevel(node)]); LIT("}{"); diff --git a/man.c b/man.c index 99a2803..3d8bc20 100644 --- a/man.c +++ b/man.c @@ -14,6 +14,7 @@ #define LIT(s) renderer->out(renderer, s, false, LITERAL) #define CR() renderer->cr(renderer) #define BLANKLINE() renderer->blankline(renderer) +#define LIST_NUMBER_SIZE 20 // Functions to convert cmark_nodes to groff man strings. static void S_outc(cmark_renderer *renderer, cmark_escaping escape, int32_t c, @@ -110,8 +111,8 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, tmp = tmp->prev; list_number += 1; } - char list_number_s[20]; - sprintf(list_number_s, "\"%d.\" 4", list_number); + char list_number_s[LIST_NUMBER_SIZE]; + snprintf(list_number_s, LIST_NUMBER_SIZE, "\"%d.\" 4", list_number); LIT(list_number_s); } CR(); diff --git a/node.c b/node.c index 26a8e25..00edbb1 100644 --- a/node.c +++ b/node.c @@ -6,7 +6,7 @@ static void S_node_unlink(cmark_node *node); -static inline bool S_is_block(cmark_node *node) { +static CMARK_INLINE bool S_is_block(cmark_node *node) { if (node == NULL) { return false; } @@ -14,7 +14,7 @@ static inline bool S_is_block(cmark_node *node) { node->type <= CMARK_NODE_LAST_BLOCK; } -static inline bool S_is_inline(cmark_node *node) { +static CMARK_INLINE bool S_is_inline(cmark_node *node) { if (node == NULL) { return false; } diff --git a/node.go b/node.go index 2df07cc..a7b05dd 100644 --- a/node.go +++ b/node.go @@ -2,6 +2,7 @@ package commonmark /* #include +#include #include "cmark.h" */ import "C" @@ -182,16 +183,18 @@ func (node *CMarkNode) LastChild() *CMarkNode { //Accessor functions -//Sets arbiturary user data for node -func (node *CMarkNode) SetNodeUserData(userData interface{}) bool { - return success(C.cmark_node_set_user_data(node.node, - unsafe.Pointer(&userData))) +//Sets arbitrary user data for node +func (node *CMarkNode) SetNodeUserData(userData string) bool { + cstr := C.CString(userData) + res := C.cmark_node_set_user_data(node.node, unsafe.Pointer(&cstr)) + return success(res) } //Returns the user data of the node as an //unsafe.Pointer. Hope you know what you're doing. -func (node *CMarkNode) GetNodeUserData() interface{} { - return C.cmark_node_get_user_data(node.node) +func (node *CMarkNode) GetNodeUserData() string { + data := C.cmark_node_get_user_data(node.node) + return C.GoString((*C.char)(*(*unsafe.Pointer)(data))) } //Get the node type diff --git a/parser.h b/parser.h index f359e10..ab21d0f 100644 --- a/parser.h +++ b/parser.h @@ -22,10 +22,12 @@ struct cmark_parser { bufsize_t first_nonspace_column; int indent; bool blank; + bool partially_consumed_tab; cmark_strbuf *curline; bufsize_t last_line_length; cmark_strbuf *linebuf; int options; + bool last_buffer_ended_with_cr; }; #ifdef __cplusplus diff --git a/render.c b/render.c index 2c941bf..50f03e6 100644 --- a/render.c +++ b/render.c @@ -5,13 +5,13 @@ #include "utf8.h" #include "render.h" -static inline void S_cr(cmark_renderer *renderer) { +static CMARK_INLINE void S_cr(cmark_renderer *renderer) { if (renderer->need_cr < 1) { renderer->need_cr = 1; } } -static inline void S_blankline(cmark_renderer *renderer) { +static CMARK_INLINE void S_blankline(cmark_renderer *renderer) { if (renderer->need_cr < 2) { renderer->need_cr = 2; } @@ -64,7 +64,7 @@ static void S_out(cmark_renderer *renderer, const char *source, bool wrap, nextc = source[i + len]; if (c == 32 && wrap) { if (!renderer->begin_line) { - last_nonspace = renderer->buffer->size; + last_nonspace = renderer->buffer->size; cmark_strbuf_putc(renderer->buffer, ' '); renderer->column += 1; renderer->begin_line = false; @@ -73,11 +73,11 @@ static void S_out(cmark_renderer *renderer, const char *source, bool wrap, while (source[i + 1] == ' ') { i++; } - // We don't allow breaks that make a digit the first character - // because this causes problems with commonmark output. - if (!cmark_isdigit(source[i + 1])) { + // We don't allow breaks that make a digit the first character + // because this causes problems with commonmark output. + if (!cmark_isdigit(source[i + 1])) { renderer->last_breakable = last_nonspace; - } + } } } else if (c == 10) { @@ -93,13 +93,13 @@ static void S_out(cmark_renderer *renderer, const char *source, bool wrap, // finished parsing a digit. Reason: in commonmark // we need to escape a potential list marker after // a digit: - renderer->begin_content = renderer->begin_content && - cmark_isdigit(c) == 1; + renderer->begin_content = + renderer->begin_content && cmark_isdigit(c) == 1; } else { (renderer->outc)(renderer, escape, c, nextc); renderer->begin_line = false; - renderer->begin_content = renderer->begin_content && - cmark_isdigit(c) == 1; + renderer->begin_content = + renderer->begin_content && cmark_isdigit(c) == 1; } // If adding the character went beyond width, look for an @@ -153,8 +153,8 @@ char *cmark_render(cmark_node *root, int options, int width, char *result; cmark_iter *iter = cmark_iter_new(root); - cmark_renderer renderer = {&buf, &pref, 0, width, 0, 0, true, - true, false, false, + cmark_renderer renderer = {&buf, &pref, 0, width, 0, + 0, true, true, false, false, outc, S_cr, S_blankline, S_out}; while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) { diff --git a/scanners.c b/scanners.c index 28821ba..712093c 100644 --- a/scanners.c +++ b/scanners.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.14.3 */ +/* Generated by re2c 0.15.3 */ #include #include "chunk.h" #include "scanners.h" @@ -28,7 +28,6 @@ bufsize_t _scan_scheme(const unsigned char *p) { { unsigned char yych; - yych = *(marker = p); if (yych <= 0x7F) { if (yych <= ' ') { @@ -2074,14 +2073,14 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy119; + goto yy120; } else { if (yych <= '/') goto yy107; - if (yych <= '9') - goto yy119; - goto yy107; + if (yych >= ':') + goto yy107; } } else { if (yych <= 'Z') { @@ -2089,48 +2088,26 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy119; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy119; - goto yy107; - } - } - yych = *++p; - if (yych <= '9') { - if (yych == '-') - goto yy247; - if (yych <= '/') - goto yy107; - goto yy248; - } else { - if (yych <= 'Z') { - if (yych <= '@') - goto yy107; - goto yy248; - } else { - if (yych <= '`') + if (yych >= '{') goto yy107; - if (yych <= 'z') - goto yy248; - goto yy107; } } - yy119: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; if (yych <= '-') - goto yy247; + goto yy248; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy248; + goto yy247; goto yy107; } } else { @@ -2139,12 +2116,33 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; + goto yy247; + } else { + if (yych <= '`') + goto yy107; + if (yych <= 'z') + goto yy247; + goto yy107; + } + } + yy119: + yych = *++p; + if (yych <= '9') { + if (yych == '-') goto yy248; + if (yych <= '/') + goto yy107; + goto yy247; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy107; + goto yy247; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy248; + goto yy247; goto yy107; } } @@ -2176,14 +2174,14 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy125; + goto yy120; } else { if (yych <= '/') goto yy107; - if (yych <= '9') - goto yy125; - goto yy107; + if (yych >= ':') + goto yy107; } } else { if (yych <= 'Z') { @@ -2191,50 +2189,27 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy125; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy125; - goto yy107; - } - } - ++p; - yych = *p; - if (yych <= '9') { - if (yych == '-') - goto yy126; - if (yych <= '/') - goto yy107; - goto yy127; - } else { - if (yych <= 'Z') { - if (yych <= '@') - goto yy107; - goto yy127; - } else { - if (yych <= '`') + if (yych >= '{') goto yy107; - if (yych <= 'z') - goto yy127; - goto yy107; } } - yy125: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy127; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy127; + goto yy126; goto yy107; } } else { @@ -2243,51 +2218,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy127; + goto yy126; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy127; + goto yy126; goto yy107; } } - yy126: + yy125: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy128; + goto yy127; if (yych <= '/') goto yy107; - goto yy129; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy129; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy129; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy127: + yy126: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy129; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy129; + goto yy128; goto yy107; } } else { @@ -2296,51 +2269,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy129; + goto yy128; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy129; + goto yy128; goto yy107; } } - yy128: + yy127: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy130; + goto yy129; if (yych <= '/') goto yy107; - goto yy131; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy131; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy131; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy129: + yy128: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy131; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy131; + goto yy130; goto yy107; } } else { @@ -2349,51 +2320,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy131; + goto yy130; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy131; + goto yy130; goto yy107; } } - yy130: + yy129: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy132; + goto yy131; if (yych <= '/') goto yy107; - goto yy133; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy133; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy133; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy131: + yy130: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy133; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy133; + goto yy132; goto yy107; } } else { @@ -2402,51 +2371,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy133; + goto yy132; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy133; + goto yy132; goto yy107; } } - yy132: + yy131: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy134; + goto yy133; if (yych <= '/') goto yy107; - goto yy135; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy135; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy135; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy133: + yy132: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy135; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy135; + goto yy134; goto yy107; } } else { @@ -2455,51 +2422,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy135; + goto yy134; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy135; + goto yy134; goto yy107; } } - yy134: + yy133: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy136; + goto yy135; if (yych <= '/') goto yy107; - goto yy137; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy137; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy137; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy135: + yy134: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy137; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy137; + goto yy136; goto yy107; } } else { @@ -2508,51 +2473,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy137; + goto yy136; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy137; + goto yy136; goto yy107; } } - yy136: + yy135: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy138; + goto yy137; if (yych <= '/') goto yy107; - goto yy139; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy139; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy139; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy137: + yy136: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy139; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy139; + goto yy138; goto yy107; } } else { @@ -2561,51 +2524,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy139; + goto yy138; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy139; + goto yy138; goto yy107; } } - yy138: + yy137: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy140; + goto yy139; if (yych <= '/') goto yy107; - goto yy141; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy141; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy141; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy139: + yy138: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy141; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy141; + goto yy140; goto yy107; } } else { @@ -2614,51 +2575,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy141; + goto yy140; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy141; + goto yy140; goto yy107; } } - yy140: + yy139: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy142; + goto yy141; if (yych <= '/') goto yy107; - goto yy143; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy143; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy143; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy141: + yy140: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy143; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy143; + goto yy142; goto yy107; } } else { @@ -2667,51 +2626,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy143; + goto yy142; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy143; + goto yy142; goto yy107; } } - yy142: + yy141: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy144; + goto yy143; if (yych <= '/') goto yy107; - goto yy145; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy145; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy145; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy143: + yy142: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy145; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy145; + goto yy144; goto yy107; } } else { @@ -2720,51 +2677,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy145; + goto yy144; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy145; + goto yy144; goto yy107; } } - yy144: + yy143: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy146; + goto yy145; if (yych <= '/') goto yy107; - goto yy147; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy147; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy147; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy145: + yy144: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy147; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy147; + goto yy146; goto yy107; } } else { @@ -2773,51 +2728,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy147; + goto yy146; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy147; + goto yy146; goto yy107; } } - yy146: + yy145: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy148; + goto yy147; if (yych <= '/') goto yy107; - goto yy149; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy149; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy149; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy147: + yy146: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy149; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy149; + goto yy148; goto yy107; } } else { @@ -2826,51 +2779,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy149; + goto yy148; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy149; + goto yy148; goto yy107; } } - yy148: + yy147: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy150; + goto yy149; if (yych <= '/') goto yy107; - goto yy151; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy151; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy151; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy149: + yy148: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy151; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy151; + goto yy150; goto yy107; } } else { @@ -2879,51 +2830,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy151; + goto yy150; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy151; + goto yy150; goto yy107; } } - yy150: + yy149: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy152; + goto yy151; if (yych <= '/') goto yy107; - goto yy153; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy153; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy153; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy151: + yy150: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy153; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy153; + goto yy152; goto yy107; } } else { @@ -2932,51 +2881,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy153; + goto yy152; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy153; + goto yy152; goto yy107; } } - yy152: + yy151: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy154; + goto yy153; if (yych <= '/') goto yy107; - goto yy155; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy155; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy155; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy153: + yy152: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy155; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy155; + goto yy154; goto yy107; } } else { @@ -2985,51 +2932,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy155; + goto yy154; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy155; + goto yy154; goto yy107; } } - yy154: + yy153: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy156; + goto yy155; if (yych <= '/') goto yy107; - goto yy157; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy157; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy157; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy155: + yy154: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy157; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy157; + goto yy156; goto yy107; } } else { @@ -3038,51 +2983,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy157; + goto yy156; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy157; + goto yy156; goto yy107; } } - yy156: + yy155: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy158; + goto yy157; if (yych <= '/') goto yy107; - goto yy159; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy159; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy159; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy157: + yy156: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy159; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy159; + goto yy158; goto yy107; } } else { @@ -3091,51 +3034,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy159; + goto yy158; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy159; + goto yy158; goto yy107; } } - yy158: + yy157: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy160; + goto yy159; if (yych <= '/') goto yy107; - goto yy161; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy161; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy161; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy159: + yy158: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy161; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy161; + goto yy160; goto yy107; } } else { @@ -3144,51 +3085,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy161; + goto yy160; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy161; + goto yy160; goto yy107; } } - yy160: + yy159: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy162; + goto yy161; if (yych <= '/') goto yy107; - goto yy163; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy163; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy163; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy161: + yy160: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy163; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy163; + goto yy162; goto yy107; } } else { @@ -3197,51 +3136,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy163; + goto yy162; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy163; + goto yy162; goto yy107; } } - yy162: + yy161: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy164; + goto yy163; if (yych <= '/') goto yy107; - goto yy165; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy165; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy165; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy163: + yy162: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy165; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy165; + goto yy164; goto yy107; } } else { @@ -3250,51 +3187,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy165; + goto yy164; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy165; + goto yy164; goto yy107; } } - yy164: + yy163: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy166; + goto yy165; if (yych <= '/') goto yy107; - goto yy167; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy167; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy167; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy165: + yy164: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy167; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy167; + goto yy166; goto yy107; } } else { @@ -3303,51 +3238,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy167; + goto yy166; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy167; + goto yy166; goto yy107; } } - yy166: + yy165: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy168; + goto yy167; if (yych <= '/') goto yy107; - goto yy169; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy169; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy169; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy167: + yy166: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy169; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy169; + goto yy168; goto yy107; } } else { @@ -3356,51 +3289,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy169; + goto yy168; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy169; + goto yy168; goto yy107; } } - yy168: + yy167: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy170; + goto yy169; if (yych <= '/') goto yy107; - goto yy171; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy171; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy171; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy169: + yy168: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy171; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy171; + goto yy170; goto yy107; } } else { @@ -3409,51 +3340,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy171; + goto yy170; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy171; + goto yy170; goto yy107; } } - yy170: + yy169: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy172; + goto yy171; if (yych <= '/') goto yy107; - goto yy173; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy173; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy173; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy171: + yy170: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy173; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy173; + goto yy172; goto yy107; } } else { @@ -3462,51 +3391,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy173; + goto yy172; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy173; + goto yy172; goto yy107; } } - yy172: + yy171: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy174; + goto yy173; if (yych <= '/') goto yy107; - goto yy175; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy175; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy175; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy173: + yy172: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy175; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy175; + goto yy174; goto yy107; } } else { @@ -3515,51 +3442,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy175; + goto yy174; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy175; + goto yy174; goto yy107; } } - yy174: + yy173: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy176; + goto yy175; if (yych <= '/') goto yy107; - goto yy177; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy177; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy177; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy175: + yy174: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy177; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy177; + goto yy176; goto yy107; } } else { @@ -3568,51 +3493,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy177; + goto yy176; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy177; + goto yy176; goto yy107; } } - yy176: + yy175: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy178; + goto yy177; if (yych <= '/') goto yy107; - goto yy179; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy179; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy179; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy177: + yy176: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy179; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy179; + goto yy178; goto yy107; } } else { @@ -3621,51 +3544,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy179; + goto yy178; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy179; + goto yy178; goto yy107; } } - yy178: + yy177: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy180; + goto yy179; if (yych <= '/') goto yy107; - goto yy181; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy181; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy181; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy179: + yy178: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy181; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy181; + goto yy180; goto yy107; } } else { @@ -3674,51 +3595,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy181; + goto yy180; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy181; + goto yy180; goto yy107; } } - yy180: + yy179: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy182; + goto yy181; if (yych <= '/') goto yy107; - goto yy183; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy183; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy183; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy181: + yy180: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy183; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy183; + goto yy182; goto yy107; } } else { @@ -3727,51 +3646,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy183; + goto yy182; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy183; + goto yy182; goto yy107; } } - yy182: + yy181: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy184; + goto yy183; if (yych <= '/') goto yy107; - goto yy185; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy185; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy185; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy183: + yy182: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy185; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy185; + goto yy184; goto yy107; } } else { @@ -3780,51 +3697,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy185; + goto yy184; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy185; + goto yy184; goto yy107; } } - yy184: + yy183: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy186; + goto yy185; if (yych <= '/') goto yy107; - goto yy187; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy187; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy187; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy185: + yy184: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy187; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy187; + goto yy186; goto yy107; } } else { @@ -3833,51 +3748,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy187; + goto yy186; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy187; + goto yy186; goto yy107; } } - yy186: + yy185: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy188; + goto yy187; if (yych <= '/') goto yy107; - goto yy189; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy189; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy189; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy187: + yy186: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy189; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy189; + goto yy188; goto yy107; } } else { @@ -3886,51 +3799,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy189; + goto yy188; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy189; + goto yy188; goto yy107; } } - yy188: + yy187: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy190; + goto yy189; if (yych <= '/') goto yy107; - goto yy191; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy191; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy191; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy189: + yy188: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy191; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy191; + goto yy190; goto yy107; } } else { @@ -3939,51 +3850,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy191; + goto yy190; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy191; + goto yy190; goto yy107; } } - yy190: + yy189: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy192; + goto yy191; if (yych <= '/') goto yy107; - goto yy193; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy193; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy193; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy191: + yy190: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy193; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy193; + goto yy192; goto yy107; } } else { @@ -3992,51 +3901,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy193; + goto yy192; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy193; + goto yy192; goto yy107; } } - yy192: + yy191: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy194; + goto yy193; if (yych <= '/') goto yy107; - goto yy195; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy195; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy195; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy193: + yy192: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy195; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy195; + goto yy194; goto yy107; } } else { @@ -4045,51 +3952,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy195; + goto yy194; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy195; + goto yy194; goto yy107; } } - yy194: + yy193: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy196; + goto yy195; if (yych <= '/') goto yy107; - goto yy197; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy197; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy197; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy195: + yy194: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy197; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy197; + goto yy196; goto yy107; } } else { @@ -4098,51 +4003,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy197; + goto yy196; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy197; + goto yy196; goto yy107; } } - yy196: + yy195: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy198; + goto yy197; if (yych <= '/') goto yy107; - goto yy199; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy199; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy199; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy197: + yy196: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy199; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy199; + goto yy198; goto yy107; } } else { @@ -4151,51 +4054,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy199; + goto yy198; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy199; + goto yy198; goto yy107; } } - yy198: + yy197: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy200; + goto yy199; if (yych <= '/') goto yy107; - goto yy201; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy201; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy201; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy199: + yy198: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy201; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy201; + goto yy200; goto yy107; } } else { @@ -4204,51 +4105,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy201; + goto yy200; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy201; + goto yy200; goto yy107; } } - yy200: + yy199: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy202; + goto yy201; if (yych <= '/') goto yy107; - goto yy203; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy203; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy203; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy201: + yy200: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy203; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy203; + goto yy202; goto yy107; } } else { @@ -4257,51 +4156,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy203; + goto yy202; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy203; + goto yy202; goto yy107; } } - yy202: + yy201: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy204; + goto yy203; if (yych <= '/') goto yy107; - goto yy205; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy205; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy205; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy203: + yy202: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy205; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy205; + goto yy204; goto yy107; } } else { @@ -4310,51 +4207,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy205; + goto yy204; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy205; + goto yy204; goto yy107; } } - yy204: + yy203: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy206; + goto yy205; if (yych <= '/') goto yy107; - goto yy207; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy207; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy207; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy205: + yy204: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy207; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy207; + goto yy206; goto yy107; } } else { @@ -4363,51 +4258,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy207; + goto yy206; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy207; + goto yy206; goto yy107; } } - yy206: + yy205: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy208; + goto yy207; if (yych <= '/') goto yy107; - goto yy209; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy209; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy209; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy207: + yy206: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy209; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy209; + goto yy208; goto yy107; } } else { @@ -4416,51 +4309,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy209; + goto yy208; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy209; + goto yy208; goto yy107; } } - yy208: + yy207: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy210; + goto yy209; if (yych <= '/') goto yy107; - goto yy211; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy211; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy211; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy209: + yy208: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy211; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy211; + goto yy210; goto yy107; } } else { @@ -4469,51 +4360,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy211; + goto yy210; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy211; + goto yy210; goto yy107; } } - yy210: + yy209: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy212; + goto yy211; if (yych <= '/') goto yy107; - goto yy213; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy213; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy213; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy211: + yy210: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy213; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy213; + goto yy212; goto yy107; } } else { @@ -4522,51 +4411,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy213; + goto yy212; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy213; + goto yy212; goto yy107; } } - yy212: + yy211: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy214; + goto yy213; if (yych <= '/') goto yy107; - goto yy215; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy215; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy215; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy213: + yy212: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy215; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy215; + goto yy214; goto yy107; } } else { @@ -4575,51 +4462,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy215; + goto yy214; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy215; + goto yy214; goto yy107; } } - yy214: + yy213: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy216; + goto yy215; if (yych <= '/') goto yy107; - goto yy217; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy217; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy217; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy215: + yy214: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy217; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy217; + goto yy216; goto yy107; } } else { @@ -4628,51 +4513,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy217; + goto yy216; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy217; + goto yy216; goto yy107; } } - yy216: + yy215: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy218; + goto yy217; if (yych <= '/') goto yy107; - goto yy219; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy219; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy219; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy217: + yy216: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy219; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy219; + goto yy218; goto yy107; } } else { @@ -4681,51 +4564,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy219; + goto yy218; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy219; + goto yy218; goto yy107; } } - yy218: + yy217: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy220; + goto yy219; if (yych <= '/') goto yy107; - goto yy221; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy221; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy221; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy219: + yy218: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy221; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy221; + goto yy220; goto yy107; } } else { @@ -4734,51 +4615,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy221; + goto yy220; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy221; + goto yy220; goto yy107; } } - yy220: + yy219: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy222; + goto yy221; if (yych <= '/') goto yy107; - goto yy223; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy223; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy223; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy221: + yy220: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy223; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy223; + goto yy222; goto yy107; } } else { @@ -4787,51 +4666,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy223; + goto yy222; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy223; + goto yy222; goto yy107; } } - yy222: + yy221: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy224; + goto yy223; if (yych <= '/') goto yy107; - goto yy225; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy225; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy225; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy223: + yy222: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; - } else { - if (yych <= '/') + if (yych <= '-') + goto yy225; + goto yy120; + } else { + if (yych <= '/') goto yy107; if (yych <= '9') - goto yy225; + goto yy224; goto yy107; } } else { @@ -4840,51 +4717,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy225; + goto yy224; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy225; + goto yy224; goto yy107; } } - yy224: + yy223: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy226; + goto yy225; if (yych <= '/') goto yy107; - goto yy227; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy227; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy227; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy225: + yy224: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy227; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy227; + goto yy226; goto yy107; } } else { @@ -4893,51 +4768,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy227; + goto yy226; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy227; + goto yy226; goto yy107; } } - yy226: + yy225: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy228; + goto yy227; if (yych <= '/') goto yy107; - goto yy229; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy229; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy229; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy227: + yy226: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy229; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy229; + goto yy228; goto yy107; } } else { @@ -4946,51 +4819,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy229; + goto yy228; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy229; + goto yy228; goto yy107; } } - yy228: + yy227: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy230; + goto yy229; if (yych <= '/') goto yy107; - goto yy231; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy231; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy231; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy229: + yy228: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy231; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy231; + goto yy230; goto yy107; } } else { @@ -4999,51 +4870,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy231; + goto yy230; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy231; + goto yy230; goto yy107; } } - yy230: + yy229: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy232; + goto yy231; if (yych <= '/') goto yy107; - goto yy233; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy233; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy233; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy231: + yy230: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy233; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy233; + goto yy232; goto yy107; } } else { @@ -5052,51 +4921,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy233; + goto yy232; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy233; + goto yy232; goto yy107; } } - yy232: + yy231: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy234; + goto yy233; if (yych <= '/') goto yy107; - goto yy235; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy235; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy235; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy233: + yy232: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy235; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy235; + goto yy234; goto yy107; } } else { @@ -5105,51 +4972,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy235; + goto yy234; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy235; + goto yy234; goto yy107; } } - yy234: + yy233: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy236; + goto yy235; if (yych <= '/') goto yy107; - goto yy237; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy237; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy237; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy235: + yy234: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy237; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy237; + goto yy236; goto yy107; } } else { @@ -5158,51 +5023,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy237; + goto yy236; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy237; + goto yy236; goto yy107; } } - yy236: + yy235: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy238; + goto yy237; if (yych <= '/') goto yy107; - goto yy239; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy239; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy239; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy237: + yy236: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy239; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy239; + goto yy238; goto yy107; } } else { @@ -5211,51 +5074,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy239; + goto yy238; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy239; + goto yy238; goto yy107; } } - yy238: + yy237: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy240; + goto yy239; if (yych <= '/') goto yy107; - goto yy241; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy241; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy241; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy239: + yy238: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy241; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy241; + goto yy240; goto yy107; } } else { @@ -5264,51 +5125,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy241; + goto yy240; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy241; + goto yy240; goto yy107; } } - yy240: + yy239: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy242; + goto yy241; if (yych <= '/') goto yy107; - goto yy243; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy243; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy243; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy241: + yy240: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy243; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy243; + goto yy242; goto yy107; } } else { @@ -5317,51 +5176,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy243; + goto yy242; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy243; + goto yy242; goto yy107; } } - yy242: + yy241: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy244; + goto yy243; if (yych <= '/') goto yy107; - goto yy245; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy245; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy245; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy243: + yy242: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy245; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy245; + goto yy244; goto yy107; } } else { @@ -5370,34 +5227,35 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy245; + goto yy244; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy245; + goto yy244; goto yy107; } } - yy244: + yy243: ++p; yych = *p; - if (yych <= '@') { + if (yych <= '9') { + if (yych == '-') + goto yy245; if (yych <= '/') goto yy107; - if (yych <= '9') - goto yy246; - goto yy107; } else { - if (yych <= 'Z') - goto yy246; - if (yych <= '`') - goto yy107; - if (yych <= 'z') - goto yy246; - goto yy107; + if (yych <= 'Z') { + if (yych <= '@') + goto yy107; + } else { + if (yych <= '`') + goto yy107; + if (yych >= '{') + goto yy107; + } } - yy245: + yy244: ++p; yych = *p; if (yych <= '=') { @@ -5408,8 +5266,9 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { } else { if (yych <= '/') goto yy107; - if (yych >= ':') - goto yy107; + if (yych <= '9') + goto yy246; + goto yy107; } } else { if (yych <= 'Z') { @@ -5417,13 +5276,31 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; + goto yy246; } else { if (yych <= '`') goto yy107; - if (yych >= '{') - goto yy107; + if (yych <= 'z') + goto yy246; + goto yy107; } } + yy245: + ++p; + yych = *p; + if (yych <= '@') { + if (yych <= '/') + goto yy107; + if (yych >= ':') + goto yy107; + } else { + if (yych <= 'Z') + goto yy246; + if (yych <= '`') + goto yy107; + if (yych >= '{') + goto yy107; + } yy246: ++p; yych = *p; @@ -5433,39 +5310,19 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; goto yy107; yy247: - yych = *++p; - if (yych <= '9') { - if (yych == '-') - goto yy249; - if (yych <= '/') - goto yy107; - goto yy250; - } else { - if (yych <= 'Z') { - if (yych <= '@') - goto yy107; - goto yy250; - } else { - if (yych <= '`') - goto yy107; - if (yych <= 'z') - goto yy250; - goto yy107; - } - } - yy248: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy250; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy250; + goto yy249; goto yy107; } } else { @@ -5474,49 +5331,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy250; + goto yy249; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy250; + goto yy249; goto yy107; } } - yy249: + yy248: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy251; + goto yy250; if (yych <= '/') goto yy107; - goto yy252; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy252; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy252; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy250: + yy249: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy252; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy252; + goto yy251; goto yy107; } } else { @@ -5525,49 +5380,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy252; + goto yy251; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy252; + goto yy251; goto yy107; } } - yy251: + yy250: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy253; + goto yy252; if (yych <= '/') goto yy107; - goto yy254; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy254; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy254; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy252: + yy251: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy254; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy254; + goto yy253; goto yy107; } } else { @@ -5576,49 +5429,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy254; + goto yy253; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy254; + goto yy253; goto yy107; } } - yy253: + yy252: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy255; + goto yy254; if (yych <= '/') goto yy107; - goto yy256; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy256; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy256; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy254: + yy253: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy256; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy256; + goto yy255; goto yy107; } } else { @@ -5627,49 +5478,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy256; + goto yy255; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy256; + goto yy255; goto yy107; } } - yy255: + yy254: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy257; + goto yy256; if (yych <= '/') goto yy107; - goto yy258; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy258; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy258; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy256: + yy255: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy258; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy258; + goto yy257; goto yy107; } } else { @@ -5678,49 +5527,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy258; + goto yy257; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy258; + goto yy257; goto yy107; } } - yy257: + yy256: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy259; + goto yy258; if (yych <= '/') goto yy107; - goto yy260; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy260; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy260; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy258: + yy257: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy260; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy260; + goto yy259; goto yy107; } } else { @@ -5729,49 +5576,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy260; + goto yy259; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy260; + goto yy259; goto yy107; } } - yy259: + yy258: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy261; + goto yy260; if (yych <= '/') goto yy107; - goto yy262; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy262; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy262; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy260: + yy259: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy262; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy262; + goto yy261; goto yy107; } } else { @@ -5780,49 +5625,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy262; + goto yy261; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy262; + goto yy261; goto yy107; } } - yy261: + yy260: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy263; + goto yy262; if (yych <= '/') goto yy107; - goto yy264; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy264; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy264; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy262: + yy261: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy264; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy264; + goto yy263; goto yy107; } } else { @@ -5831,49 +5674,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy264; + goto yy263; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy264; + goto yy263; goto yy107; } } - yy263: + yy262: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy265; + goto yy264; if (yych <= '/') goto yy107; - goto yy266; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy266; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy266; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy264: + yy263: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy266; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy266; + goto yy265; goto yy107; } } else { @@ -5882,49 +5723,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy266; + goto yy265; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy266; + goto yy265; goto yy107; } } - yy265: + yy264: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy267; + goto yy266; if (yych <= '/') goto yy107; - goto yy268; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy268; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy268; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy266: + yy265: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy268; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy268; + goto yy267; goto yy107; } } else { @@ -5933,49 +5772,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy268; + goto yy267; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy268; + goto yy267; goto yy107; } } - yy267: + yy266: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy269; + goto yy268; if (yych <= '/') goto yy107; - goto yy270; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy270; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy270; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy268: + yy267: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy270; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy270; + goto yy269; goto yy107; } } else { @@ -5984,49 +5821,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy270; + goto yy269; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy270; + goto yy269; goto yy107; } } - yy269: + yy268: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy271; + goto yy270; if (yych <= '/') goto yy107; - goto yy272; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy272; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy272; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy270: + yy269: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy272; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy272; + goto yy271; goto yy107; } } else { @@ -6035,49 +5870,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy272; + goto yy271; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy272; + goto yy271; goto yy107; } } - yy271: + yy270: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy273; + goto yy272; if (yych <= '/') goto yy107; - goto yy274; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy274; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy274; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy272: + yy271: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy274; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy274; + goto yy273; goto yy107; } } else { @@ -6086,49 +5919,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy274; + goto yy273; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy274; + goto yy273; goto yy107; } } - yy273: + yy272: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy275; + goto yy274; if (yych <= '/') goto yy107; - goto yy276; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy276; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy276; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy274: + yy273: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy276; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy276; + goto yy275; goto yy107; } } else { @@ -6137,49 +5968,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy276; + goto yy275; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy276; + goto yy275; goto yy107; } } - yy275: + yy274: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy277; + goto yy276; if (yych <= '/') goto yy107; - goto yy278; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy278; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy278; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy276: + yy275: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy278; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy278; + goto yy277; goto yy107; } } else { @@ -6188,49 +6017,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy278; + goto yy277; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy278; + goto yy277; goto yy107; } } - yy277: + yy276: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy279; + goto yy278; if (yych <= '/') goto yy107; - goto yy280; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy280; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy280; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy278: + yy277: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy280; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy280; + goto yy279; goto yy107; } } else { @@ -6239,49 +6066,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy280; + goto yy279; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy280; + goto yy279; goto yy107; } } - yy279: + yy278: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy281; + goto yy280; if (yych <= '/') goto yy107; - goto yy282; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy282; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy282; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy280: + yy279: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy282; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy282; + goto yy281; goto yy107; } } else { @@ -6290,49 +6115,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy282; + goto yy281; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy282; + goto yy281; goto yy107; } } - yy281: + yy280: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy283; + goto yy282; if (yych <= '/') goto yy107; - goto yy284; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy284; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy284; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy282: + yy281: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy284; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy284; + goto yy283; goto yy107; } } else { @@ -6341,49 +6164,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy284; + goto yy283; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy284; + goto yy283; goto yy107; } } - yy283: + yy282: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy285; + goto yy284; if (yych <= '/') goto yy107; - goto yy286; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy286; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy286; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy284: + yy283: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy286; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy286; + goto yy285; goto yy107; } } else { @@ -6392,49 +6213,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy286; + goto yy285; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy286; + goto yy285; goto yy107; } } - yy285: + yy284: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy287; + goto yy286; if (yych <= '/') goto yy107; - goto yy288; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy288; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy288; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy286: + yy285: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy288; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy288; + goto yy287; goto yy107; } } else { @@ -6443,49 +6262,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy288; + goto yy287; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy288; + goto yy287; goto yy107; } } - yy287: + yy286: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy289; + goto yy288; if (yych <= '/') goto yy107; - goto yy290; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy290; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy290; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy288: + yy287: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy290; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy290; + goto yy289; goto yy107; } } else { @@ -6494,49 +6311,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy290; + goto yy289; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy290; + goto yy289; goto yy107; } } - yy289: + yy288: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy291; + goto yy290; if (yych <= '/') goto yy107; - goto yy292; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy292; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy292; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy290: + yy289: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy292; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy292; + goto yy291; goto yy107; } } else { @@ -6545,49 +6360,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy292; + goto yy291; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy292; + goto yy291; goto yy107; } } - yy291: + yy290: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy293; + goto yy292; if (yych <= '/') goto yy107; - goto yy294; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy294; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy294; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy292: + yy291: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy294; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy294; + goto yy293; goto yy107; } } else { @@ -6596,49 +6409,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy294; + goto yy293; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy294; + goto yy293; goto yy107; } } - yy293: + yy292: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy295; + goto yy294; if (yych <= '/') goto yy107; - goto yy296; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy296; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy296; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy294: + yy293: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy296; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy296; + goto yy295; goto yy107; } } else { @@ -6647,49 +6458,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy296; + goto yy295; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy296; + goto yy295; goto yy107; } } - yy295: + yy294: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy297; + goto yy296; if (yych <= '/') goto yy107; - goto yy298; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy298; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy298; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy296: + yy295: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy298; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy298; + goto yy297; goto yy107; } } else { @@ -6698,49 +6507,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy298; + goto yy297; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy298; + goto yy297; goto yy107; } } - yy297: + yy296: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy299; + goto yy298; if (yych <= '/') goto yy107; - goto yy300; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy300; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy300; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy298: + yy297: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy300; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy300; + goto yy299; goto yy107; } } else { @@ -6749,49 +6556,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy300; + goto yy299; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy300; + goto yy299; goto yy107; } } - yy299: + yy298: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy301; + goto yy300; if (yych <= '/') goto yy107; - goto yy302; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy302; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy302; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy300: + yy299: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; - } else { + if (yych <= '-') + goto yy302; + goto yy120; + } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy302; + goto yy301; goto yy107; } } else { @@ -6800,49 +6605,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy302; + goto yy301; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy302; + goto yy301; goto yy107; } } - yy301: + yy300: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy303; + goto yy302; if (yych <= '/') goto yy107; - goto yy304; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy304; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy304; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy302: + yy301: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy304; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy304; + goto yy303; goto yy107; } } else { @@ -6851,49 +6654,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy304; + goto yy303; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy304; + goto yy303; goto yy107; } } - yy303: + yy302: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy305; + goto yy304; if (yych <= '/') goto yy107; - goto yy306; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy306; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy306; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy304: + yy303: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy306; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy306; + goto yy305; goto yy107; } } else { @@ -6902,49 +6703,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy306; + goto yy305; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy306; + goto yy305; goto yy107; } } - yy305: + yy304: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy307; + goto yy306; if (yych <= '/') goto yy107; - goto yy308; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy308; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy308; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy306: + yy305: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy308; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy308; + goto yy307; goto yy107; } } else { @@ -6953,49 +6752,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy308; + goto yy307; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy308; + goto yy307; goto yy107; } } - yy307: + yy306: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy309; + goto yy308; if (yych <= '/') goto yy107; - goto yy310; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy310; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy310; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy308: + yy307: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy310; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy310; + goto yy309; goto yy107; } } else { @@ -7004,49 +6801,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy310; + goto yy309; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy310; + goto yy309; goto yy107; } } - yy309: + yy308: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy311; + goto yy310; if (yych <= '/') goto yy107; - goto yy312; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy312; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy312; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy310: + yy309: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy312; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy312; + goto yy311; goto yy107; } } else { @@ -7055,49 +6850,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy312; + goto yy311; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy312; + goto yy311; goto yy107; } } - yy311: + yy310: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy313; + goto yy312; if (yych <= '/') goto yy107; - goto yy314; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy314; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy314; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy312: + yy311: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy314; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy314; + goto yy313; goto yy107; } } else { @@ -7106,49 +6899,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy314; + goto yy313; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy314; + goto yy313; goto yy107; } } - yy313: + yy312: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy315; + goto yy314; if (yych <= '/') goto yy107; - goto yy316; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy316; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy316; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy314: + yy313: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy316; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy316; + goto yy315; goto yy107; } } else { @@ -7157,49 +6948,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy316; + goto yy315; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy316; + goto yy315; goto yy107; } } - yy315: + yy314: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy317; + goto yy316; if (yych <= '/') goto yy107; - goto yy318; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy318; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy318; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy316: + yy315: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy318; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy318; + goto yy317; goto yy107; } } else { @@ -7208,49 +6997,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy318; + goto yy317; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy318; + goto yy317; goto yy107; } } - yy317: + yy316: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy319; + goto yy318; if (yych <= '/') goto yy107; - goto yy320; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy320; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy320; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy318: + yy317: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy320; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy320; + goto yy319; goto yy107; } } else { @@ -7259,49 +7046,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy320; + goto yy319; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy320; + goto yy319; goto yy107; } } - yy319: + yy318: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy321; + goto yy320; if (yych <= '/') goto yy107; - goto yy322; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy322; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy322; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy320: + yy319: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy322; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy322; + goto yy321; goto yy107; } } else { @@ -7310,49 +7095,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy322; + goto yy321; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy322; + goto yy321; goto yy107; } } - yy321: + yy320: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy323; + goto yy322; if (yych <= '/') goto yy107; - goto yy324; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy324; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy324; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy322: + yy321: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy324; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy324; + goto yy323; goto yy107; } } else { @@ -7361,49 +7144,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy324; + goto yy323; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy324; + goto yy323; goto yy107; } } - yy323: + yy322: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy325; + goto yy324; if (yych <= '/') goto yy107; - goto yy326; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy326; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy326; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy324: + yy323: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy326; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy326; + goto yy325; goto yy107; } } else { @@ -7412,49 +7193,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy326; + goto yy325; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy326; + goto yy325; goto yy107; } } - yy325: + yy324: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy327; + goto yy326; if (yych <= '/') goto yy107; - goto yy328; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy328; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy328; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy326: + yy325: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy328; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy328; + goto yy327; goto yy107; } } else { @@ -7463,49 +7242,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy328; + goto yy327; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy328; + goto yy327; goto yy107; } } - yy327: + yy326: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy329; + goto yy328; if (yych <= '/') goto yy107; - goto yy330; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy330; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy330; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy328: + yy327: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy330; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy330; + goto yy329; goto yy107; } } else { @@ -7514,49 +7291,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy330; + goto yy329; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy330; + goto yy329; goto yy107; } } - yy329: + yy328: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy331; + goto yy330; if (yych <= '/') goto yy107; - goto yy332; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy332; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy332; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy330: + yy329: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy332; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy332; + goto yy331; goto yy107; } } else { @@ -7565,49 +7340,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy332; + goto yy331; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy332; + goto yy331; goto yy107; } } - yy331: + yy330: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy333; + goto yy332; if (yych <= '/') goto yy107; - goto yy334; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy334; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy334; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy332: + yy331: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy334; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy334; + goto yy333; goto yy107; } } else { @@ -7616,49 +7389,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy334; + goto yy333; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy334; + goto yy333; goto yy107; } } - yy333: + yy332: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy335; + goto yy334; if (yych <= '/') goto yy107; - goto yy336; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy336; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy336; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy334: + yy333: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy336; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy336; + goto yy335; goto yy107; } } else { @@ -7667,49 +7438,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy336; + goto yy335; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy336; + goto yy335; goto yy107; } } - yy335: + yy334: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy337; + goto yy336; if (yych <= '/') goto yy107; - goto yy338; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy338; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy338; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy336: + yy335: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy338; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy338; + goto yy337; goto yy107; } } else { @@ -7718,49 +7487,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy338; + goto yy337; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy338; + goto yy337; goto yy107; } } - yy337: + yy336: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy339; + goto yy338; if (yych <= '/') goto yy107; - goto yy340; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy340; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy340; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy338: + yy337: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy340; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy340; + goto yy339; goto yy107; } } else { @@ -7769,49 +7536,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy340; + goto yy339; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy340; + goto yy339; goto yy107; } } - yy339: + yy338: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy341; + goto yy340; if (yych <= '/') goto yy107; - goto yy342; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy342; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy342; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy340: + yy339: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy342; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy342; + goto yy341; goto yy107; } } else { @@ -7820,49 +7585,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy342; + goto yy341; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy342; + goto yy341; goto yy107; } } - yy341: + yy340: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy343; + goto yy342; if (yych <= '/') goto yy107; - goto yy344; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy344; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy344; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy342: + yy341: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy344; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy344; + goto yy343; goto yy107; } } else { @@ -7871,49 +7634,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy344; + goto yy343; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy344; + goto yy343; goto yy107; } } - yy343: + yy342: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy345; + goto yy344; if (yych <= '/') goto yy107; - goto yy346; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy346; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy346; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy344: + yy343: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy346; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy346; + goto yy345; goto yy107; } } else { @@ -7922,49 +7683,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy346; + goto yy345; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy346; + goto yy345; goto yy107; } } - yy345: + yy344: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy347; + goto yy346; if (yych <= '/') goto yy107; - goto yy348; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy348; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy348; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy346: + yy345: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy348; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy348; + goto yy347; goto yy107; } } else { @@ -7973,49 +7732,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy348; + goto yy347; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy348; + goto yy347; goto yy107; } } - yy347: + yy346: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy349; + goto yy348; if (yych <= '/') goto yy107; - goto yy350; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy350; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy350; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy348: + yy347: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy350; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy350; + goto yy349; goto yy107; } } else { @@ -8024,49 +7781,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy350; + goto yy349; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy350; + goto yy349; goto yy107; } } - yy349: + yy348: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy351; + goto yy350; if (yych <= '/') goto yy107; - goto yy352; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy352; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy352; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy350: + yy349: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy352; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy352; + goto yy351; goto yy107; } } else { @@ -8075,49 +7830,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy352; + goto yy351; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy352; + goto yy351; goto yy107; } } - yy351: + yy350: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy353; + goto yy352; if (yych <= '/') goto yy107; - goto yy354; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy354; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy354; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy352: + yy351: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy354; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy354; + goto yy353; goto yy107; } } else { @@ -8126,49 +7879,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy354; + goto yy353; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy354; + goto yy353; goto yy107; } } - yy353: + yy352: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy355; + goto yy354; if (yych <= '/') goto yy107; - goto yy356; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy356; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy356; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy354: + yy353: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy356; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy356; + goto yy355; goto yy107; } } else { @@ -8177,49 +7928,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy356; + goto yy355; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy356; + goto yy355; goto yy107; } } - yy355: + yy354: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy357; + goto yy356; if (yych <= '/') goto yy107; - goto yy358; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy358; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy358; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy356: + yy355: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy358; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy358; + goto yy357; goto yy107; } } else { @@ -8228,49 +7977,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy358; + goto yy357; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy358; + goto yy357; goto yy107; } } - yy357: + yy356: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy359; + goto yy358; if (yych <= '/') goto yy107; - goto yy360; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy360; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy360; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy358: + yy357: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy360; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy360; + goto yy359; goto yy107; } } else { @@ -8279,49 +8026,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy360; + goto yy359; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy360; + goto yy359; goto yy107; } } - yy359: + yy358: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy361; + goto yy360; if (yych <= '/') goto yy107; - goto yy362; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy362; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy362; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy360: + yy359: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy362; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy362; + goto yy361; goto yy107; } } else { @@ -8330,49 +8075,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy362; + goto yy361; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy362; + goto yy361; goto yy107; } } - yy361: + yy360: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy363; + goto yy362; if (yych <= '/') goto yy107; - goto yy364; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy364; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy364; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy362: + yy361: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy364; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy364; + goto yy363; goto yy107; } } else { @@ -8381,49 +8124,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy364; + goto yy363; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy364; + goto yy363; goto yy107; } } - yy363: + yy362: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy365; + goto yy364; if (yych <= '/') goto yy107; - goto yy366; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy366; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy366; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy364: + yy363: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy366; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy366; + goto yy365; goto yy107; } } else { @@ -8432,35 +8173,36 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy366; + goto yy365; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy366; + goto yy365; goto yy107; } } - yy365: + yy364: yych = *++p; - if (yych <= '@') { + if (yych <= '9') { + if (yych == '-') + goto yy366; if (yych <= '/') goto yy107; - if (yych <= '9') - goto yy246; - goto yy107; } else { - if (yych <= 'Z') - goto yy246; - if (yych <= '`') - goto yy107; - if (yych <= 'z') - goto yy246; - goto yy107; + if (yych <= 'Z') { + if (yych <= '@') + goto yy107; + } else { + if (yych <= '`') + goto yy107; + if (yych >= '{') + goto yy107; + } } - yy366: - ++p; - if ((yych = *p) <= '=') { + yy365: + yych = *++p; + if (yych <= '=') { if (yych <= '.') { if (yych <= '-') goto yy107; @@ -8487,6 +8229,23 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy107; } } + yy366: + ++p; + if ((yych = *p) <= '@') { + if (yych <= '/') + goto yy107; + if (yych <= '9') + goto yy246; + goto yy107; + } else { + if (yych <= 'Z') + goto yy246; + if (yych <= '`') + goto yy107; + if (yych <= 'z') + goto yy246; + goto yy107; + } } } @@ -10925,50 +10684,24 @@ bufsize_t _scan_html_block_start(const unsigned char *p) { } yy545: yych = *++p; - if (yych <= 'U') { - if (yych <= 'E') { - if (yych == 'C') - goto yy587; - if (yych <= 'D') - goto yy525; - goto yy590; - } else { - if (yych <= 'O') { - if (yych <= 'N') - goto yy525; - goto yy589; - } else { - if (yych <= 'S') - goto yy525; - if (yych <= 'T') - goto yy586; - goto yy588; - } - } - } else { - if (yych <= 'n') { - if (yych <= 'c') { - if (yych <= 'b') - goto yy525; - goto yy587; - } else { - if (yych == 'e') - goto yy590; - goto yy525; - } - } else { - if (yych <= 's') { - if (yych <= 'o') - goto yy589; - goto yy525; - } else { - if (yych <= 't') - goto yy586; - if (yych <= 'u') - goto yy588; - goto yy525; - } - } + switch (yych) { + case 'C': + case 'c': + goto yy587; + case 'E': + case 'e': + goto yy590; + case 'O': + case 'o': + goto yy589; + case 'T': + case 't': + goto yy586; + case 'U': + case 'u': + goto yy588; + default: + goto yy525; } yy546: yych = *++p; @@ -18923,9 +18656,9 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { { unsigned char yych; static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -18984,16 +18717,16 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { yy1206: yych = *(marker = ++p); if (yych == ' ') - goto yy1238; + goto yy1242; if (yych == '*') - goto yy1240; + goto yy1244; goto yy1205; yy1207: yych = *(marker = ++p); if (yych == ' ') - goto yy1228; - if (yych == '_') goto yy1230; + if (yych == '_') + goto yy1232; goto yy1205; yy1208: yych = *(marker = ++p); @@ -19075,23 +18808,32 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { yy1222: ++p; yych = *p; - if (yybm[0 + yych] & 16) { - goto yy1222; - } - if (yych <= '\n') { - if (yych <= 0x08) - goto yy1211; - if (yych >= '\n') + if (yych <= '\r') { + if (yych <= '\t') { + if (yych <= 0x08) + goto yy1211; + } else { + if (yych <= '\n') + goto yy1226; + if (yych <= '\f') + goto yy1211; goto yy1226; + } } else { - if (yych == '\r') - goto yy1226; - goto yy1211; + if (yych <= ' ') { + if (yych <= 0x1F) + goto yy1211; + goto yy1222; + } else { + if (yych == '-') + goto yy1228; + goto yy1211; + } } yy1224: ++p; yych = *p; - if (yybm[0 + yych] & 32) { + if (yybm[0 + yych] & 16) { goto yy1224; } if (yych <= 0x08) @@ -19106,10 +18848,20 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { yy1228: ++p; yych = *p; - if (yych == ' ') + if (yybm[0 + yych] & 32) { goto yy1228; - if (yych != '_') + } + if (yych <= '\n') { + if (yych <= 0x08) + goto yy1211; + if (yych <= '\t') + goto yy1224; + goto yy1226; + } else { + if (yych == '\r') + goto yy1226; goto yy1211; + } yy1230: ++p; yych = *p; @@ -19120,89 +18872,148 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { yy1232: ++p; yych = *p; - if (yybm[0 + yych] & 64) { + if (yych == ' ') goto yy1232; - } - if (yych <= '\n') { - if (yych <= 0x08) - goto yy1211; - if (yych >= '\n') - goto yy1236; - } else { - if (yych == '\r') - goto yy1236; + if (yych != '_') goto yy1211; - } yy1234: + ++p; + yych = *p; + if (yych <= '\r') { + if (yych <= '\t') { + if (yych <= 0x08) + goto yy1211; + } else { + if (yych <= '\n') + goto yy1238; + if (yych <= '\f') + goto yy1211; + goto yy1238; + } + } else { + if (yych <= ' ') { + if (yych <= 0x1F) + goto yy1211; + goto yy1234; + } else { + if (yych == '_') + goto yy1240; + goto yy1211; + } + } + yy1236: ++p; yych = *p; if (yych <= '\f') { if (yych <= 0x08) goto yy1211; if (yych <= '\t') - goto yy1234; + goto yy1236; if (yych >= '\v') goto yy1211; } else { if (yych <= '\r') - goto yy1236; + goto yy1238; if (yych == ' ') - goto yy1234; + goto yy1236; goto yy1211; } - yy1236: + yy1238: ++p; { return (bufsize_t)(p - start); } - yy1238: + yy1240: ++p; yych = *p; - if (yych == ' ') + if (yybm[0 + yych] & 64) { + goto yy1240; + } + if (yych <= '\n') { + if (yych <= 0x08) + goto yy1211; + if (yych <= '\t') + goto yy1236; goto yy1238; + } else { + if (yych == '\r') + goto yy1238; + goto yy1211; + } + yy1242: + ++p; + yych = *p; + if (yych == ' ') + goto yy1242; if (yych != '*') goto yy1211; - yy1240: + yy1244: ++p; yych = *p; if (yych == ' ') - goto yy1240; + goto yy1244; if (yych != '*') goto yy1211; - yy1242: + yy1246: ++p; yych = *p; - if (yybm[0 + yych] & 128) { - goto yy1242; - } - if (yych <= '\n') { - if (yych <= 0x08) - goto yy1211; - if (yych >= '\n') - goto yy1246; + if (yych <= '\r') { + if (yych <= '\t') { + if (yych <= 0x08) + goto yy1211; + } else { + if (yych <= '\n') + goto yy1250; + if (yych <= '\f') + goto yy1211; + goto yy1250; + } } else { - if (yych == '\r') + if (yych <= ' ') { + if (yych <= 0x1F) + goto yy1211; goto yy1246; - goto yy1211; + } else { + if (yych == '*') + goto yy1252; + goto yy1211; + } } - yy1244: + yy1248: ++p; yych = *p; if (yych <= '\f') { if (yych <= 0x08) goto yy1211; if (yych <= '\t') - goto yy1244; + goto yy1248; if (yych >= '\v') goto yy1211; } else { if (yych <= '\r') - goto yy1246; + goto yy1250; if (yych == ' ') - goto yy1244; + goto yy1248; goto yy1211; } - yy1246: + yy1250: ++p; { return (bufsize_t)(p - start); } + yy1252: + ++p; + yych = *p; + if (yybm[0 + yych] & 128) { + goto yy1252; + } + if (yych <= '\n') { + if (yych <= 0x08) + goto yy1211; + if (yych <= '\t') + goto yy1248; + goto yy1250; + } else { + if (yych == '\r') + goto yy1250; + goto yy1211; + } } } @@ -19238,374 +19049,374 @@ bufsize_t _scan_open_code_fence(const unsigned char *p) { if (yych <= 0xC1) { if (yych <= '`') { if (yych == '\n') - goto yy1250; + goto yy1256; if (yych <= '_') - goto yy1253; - goto yy1251; + goto yy1259; + goto yy1257; } else { if (yych == '~') - goto yy1252; + goto yy1258; if (yych <= 0x7F) - goto yy1253; + goto yy1259; } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy1254; + goto yy1260; if (yych <= 0xE0) - goto yy1256; + goto yy1262; if (yych <= 0xEC) - goto yy1257; - goto yy1261; + goto yy1263; + goto yy1267; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy1257; - goto yy1258; + goto yy1263; + goto yy1264; } else { if (yych <= 0xF3) - goto yy1259; + goto yy1265; if (yych <= 0xF4) - goto yy1260; + goto yy1266; } } } - yy1250 : { return 0; } - yy1251: + yy1256 : { return 0; } + yy1257: yych = *(marker = ++p); if (yych == '`') - goto yy1276; - goto yy1250; - yy1252: + goto yy1282; + goto yy1256; + yy1258: yych = *(marker = ++p); if (yych == '~') - goto yy1262; - goto yy1250; - yy1253: + goto yy1268; + goto yy1256; + yy1259: yych = *++p; - goto yy1250; - yy1254: + goto yy1256; + yy1260: yych = *++p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1253; - yy1255: + goto yy1259; + yy1261: p = marker; - goto yy1250; - yy1256: + goto yy1256; + yy1262: yych = *++p; if (yych <= 0x9F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1254; - goto yy1255; - yy1257: + goto yy1260; + goto yy1261; + yy1263: yych = *++p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1254; - goto yy1255; - yy1258: + goto yy1260; + goto yy1261; + yy1264: yych = *++p; if (yych <= 0x8F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1257; - goto yy1255; - yy1259: + goto yy1263; + goto yy1261; + yy1265: yych = *++p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1257; - goto yy1255; - yy1260: + goto yy1263; + goto yy1261; + yy1266: yych = *++p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0x8F) - goto yy1257; - goto yy1255; - yy1261: + goto yy1263; + goto yy1261; + yy1267: yych = *++p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0x9F) - goto yy1254; - goto yy1255; - yy1262: + goto yy1260; + goto yy1261; + yy1268: yych = *++p; if (yybm[0 + yych] & 16) { - goto yy1263; + goto yy1269; } - goto yy1255; - yy1263: - marker = p + 1; + goto yy1261; + yy1269: ++p; yych = *p; + marker = p; if (yybm[0 + yych] & 32) { - goto yy1265; + goto yy1271; } if (yych <= 0xE0) { if (yych <= '~') { if (yych <= 0x00) - goto yy1255; + goto yy1261; if (yych <= '\r') - goto yy1274; - goto yy1263; + goto yy1280; + goto yy1269; } else { if (yych <= 0xC1) - goto yy1255; + goto yy1261; if (yych <= 0xDF) - goto yy1267; - goto yy1268; + goto yy1273; + goto yy1274; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1273; - goto yy1269; + goto yy1279; + goto yy1275; } else { if (yych <= 0xF0) - goto yy1270; + goto yy1276; if (yych <= 0xF3) - goto yy1271; + goto yy1277; if (yych <= 0xF4) - goto yy1272; - goto yy1255; + goto yy1278; + goto yy1261; } } - yy1265: + yy1271: ++p; yych = *p; if (yybm[0 + yych] & 32) { - goto yy1265; + goto yy1271; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy1255; + goto yy1261; if (yych <= '\r') - goto yy1274; - goto yy1255; + goto yy1280; + goto yy1261; } else { if (yych <= 0xDF) - goto yy1267; + goto yy1273; if (yych <= 0xE0) - goto yy1268; - goto yy1269; + goto yy1274; + goto yy1275; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy1273; + goto yy1279; if (yych <= 0xEF) - goto yy1269; - goto yy1270; + goto yy1275; + goto yy1276; } else { if (yych <= 0xF3) - goto yy1271; + goto yy1277; if (yych <= 0xF4) - goto yy1272; - goto yy1255; + goto yy1278; + goto yy1261; } } - yy1267: + yy1273: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1265; - goto yy1255; - yy1268: + goto yy1271; + goto yy1261; + yy1274: ++p; yych = *p; if (yych <= 0x9F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1267; - goto yy1255; - yy1269: + goto yy1273; + goto yy1261; + yy1275: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1267; - goto yy1255; - yy1270: + goto yy1273; + goto yy1261; + yy1276: ++p; yych = *p; if (yych <= 0x8F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1269; - goto yy1255; - yy1271: + goto yy1275; + goto yy1261; + yy1277: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1269; - goto yy1255; - yy1272: + goto yy1275; + goto yy1261; + yy1278: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0x8F) - goto yy1269; - goto yy1255; - yy1273: + goto yy1275; + goto yy1261; + yy1279: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0x9F) - goto yy1267; - goto yy1255; - yy1274: + goto yy1273; + goto yy1261; + yy1280: ++p; p = marker; { return (bufsize_t)(p - start); } - yy1276: + yy1282: yych = *++p; if (yybm[0 + yych] & 64) { - goto yy1277; + goto yy1283; } - goto yy1255; - yy1277: - marker = p + 1; + goto yy1261; + yy1283: ++p; yych = *p; + marker = p; if (yybm[0 + yych] & 128) { - goto yy1279; + goto yy1285; } if (yych <= 0xE0) { if (yych <= '`') { if (yych <= 0x00) - goto yy1255; + goto yy1261; if (yych <= '\r') - goto yy1288; - goto yy1277; + goto yy1294; + goto yy1283; } else { if (yych <= 0xC1) - goto yy1255; + goto yy1261; if (yych <= 0xDF) - goto yy1281; - goto yy1282; + goto yy1287; + goto yy1288; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1287; - goto yy1283; + goto yy1293; + goto yy1289; } else { if (yych <= 0xF0) - goto yy1284; + goto yy1290; if (yych <= 0xF3) - goto yy1285; + goto yy1291; if (yych <= 0xF4) - goto yy1286; - goto yy1255; + goto yy1292; + goto yy1261; } } - yy1279: + yy1285: ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy1279; + goto yy1285; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy1255; + goto yy1261; if (yych <= '\r') - goto yy1288; - goto yy1255; + goto yy1294; + goto yy1261; } else { if (yych <= 0xDF) - goto yy1281; + goto yy1287; if (yych <= 0xE0) - goto yy1282; - goto yy1283; + goto yy1288; + goto yy1289; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy1287; + goto yy1293; if (yych <= 0xEF) - goto yy1283; - goto yy1284; + goto yy1289; + goto yy1290; } else { if (yych <= 0xF3) - goto yy1285; + goto yy1291; if (yych <= 0xF4) - goto yy1286; - goto yy1255; + goto yy1292; + goto yy1261; } } - yy1281: + yy1287: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1279; - goto yy1255; - yy1282: + goto yy1285; + goto yy1261; + yy1288: ++p; yych = *p; if (yych <= 0x9F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1281; - goto yy1255; - yy1283: + goto yy1287; + goto yy1261; + yy1289: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1281; - goto yy1255; - yy1284: + goto yy1287; + goto yy1261; + yy1290: ++p; yych = *p; if (yych <= 0x8F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1283; - goto yy1255; - yy1285: + goto yy1289; + goto yy1261; + yy1291: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1283; - goto yy1255; - yy1286: + goto yy1289; + goto yy1261; + yy1292: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0x8F) - goto yy1283; - goto yy1255; - yy1287: + goto yy1289; + goto yy1261; + yy1293: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0x9F) - goto yy1281; - goto yy1255; - yy1288: + goto yy1287; + goto yy1261; + yy1294: ++p; p = marker; { return (bufsize_t)(p - start); } @@ -19637,190 +19448,190 @@ bufsize_t _scan_close_code_fence(const unsigned char *p) { if (yych <= 0xC1) { if (yych <= '`') { if (yych == '\n') - goto yy1292; + goto yy1298; if (yych <= '_') - goto yy1295; - goto yy1293; + goto yy1301; + goto yy1299; } else { if (yych == '~') - goto yy1294; + goto yy1300; if (yych <= 0x7F) - goto yy1295; + goto yy1301; } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy1296; + goto yy1302; if (yych <= 0xE0) - goto yy1298; + goto yy1304; if (yych <= 0xEC) - goto yy1299; - goto yy1303; + goto yy1305; + goto yy1309; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy1299; - goto yy1300; + goto yy1305; + goto yy1306; } else { if (yych <= 0xF3) - goto yy1301; + goto yy1307; if (yych <= 0xF4) - goto yy1302; + goto yy1308; } } } - yy1292 : { return 0; } - yy1293: + yy1298 : { return 0; } + yy1299: yych = *(marker = ++p); if (yych == '`') - goto yy1311; - goto yy1292; - yy1294: + goto yy1317; + goto yy1298; + yy1300: yych = *(marker = ++p); if (yych == '~') - goto yy1304; - goto yy1292; - yy1295: + goto yy1310; + goto yy1298; + yy1301: yych = *++p; - goto yy1292; - yy1296: + goto yy1298; + yy1302: yych = *++p; if (yych <= 0x7F) - goto yy1297; + goto yy1303; if (yych <= 0xBF) - goto yy1295; - yy1297: + goto yy1301; + yy1303: p = marker; - goto yy1292; - yy1298: + goto yy1298; + yy1304: yych = *++p; if (yych <= 0x9F) - goto yy1297; + goto yy1303; if (yych <= 0xBF) - goto yy1296; - goto yy1297; - yy1299: + goto yy1302; + goto yy1303; + yy1305: yych = *++p; if (yych <= 0x7F) - goto yy1297; + goto yy1303; if (yych <= 0xBF) - goto yy1296; - goto yy1297; - yy1300: + goto yy1302; + goto yy1303; + yy1306: yych = *++p; if (yych <= 0x8F) - goto yy1297; + goto yy1303; if (yych <= 0xBF) - goto yy1299; - goto yy1297; - yy1301: + goto yy1305; + goto yy1303; + yy1307: yych = *++p; if (yych <= 0x7F) - goto yy1297; + goto yy1303; if (yych <= 0xBF) - goto yy1299; - goto yy1297; - yy1302: + goto yy1305; + goto yy1303; + yy1308: yych = *++p; if (yych <= 0x7F) - goto yy1297; + goto yy1303; if (yych <= 0x8F) - goto yy1299; - goto yy1297; - yy1303: + goto yy1305; + goto yy1303; + yy1309: yych = *++p; if (yych <= 0x7F) - goto yy1297; + goto yy1303; if (yych <= 0x9F) - goto yy1296; - goto yy1297; - yy1304: + goto yy1302; + goto yy1303; + yy1310: yych = *++p; if (yybm[0 + yych] & 32) { - goto yy1305; + goto yy1311; } - goto yy1297; - yy1305: - marker = p + 1; + goto yy1303; + yy1311: ++p; yych = *p; + marker = p; if (yybm[0 + yych] & 64) { - goto yy1307; + goto yy1313; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1297; + goto yy1303; if (yych <= '\n') - goto yy1309; - goto yy1297; + goto yy1315; + goto yy1303; } else { if (yych <= '\r') - goto yy1309; + goto yy1315; if (yych == '~') - goto yy1305; - goto yy1297; + goto yy1311; + goto yy1303; } - yy1307: + yy1313: ++p; yych = *p; if (yybm[0 + yych] & 64) { - goto yy1307; + goto yy1313; } if (yych <= 0x08) - goto yy1297; + goto yy1303; if (yych <= '\n') - goto yy1309; + goto yy1315; if (yych != '\r') - goto yy1297; - yy1309: + goto yy1303; + yy1315: ++p; p = marker; { return (bufsize_t)(p - start); } - yy1311: + yy1317: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy1312; + goto yy1318; } - goto yy1297; - yy1312: - marker = p + 1; + goto yy1303; + yy1318: ++p; yych = *p; + marker = p; if (yybm[0 + yych] & 128) { - goto yy1312; + goto yy1318; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1297; + goto yy1303; if (yych <= '\t') - goto yy1314; + goto yy1320; if (yych <= '\n') - goto yy1316; - goto yy1297; + goto yy1322; + goto yy1303; } else { if (yych <= '\r') - goto yy1316; + goto yy1322; if (yych != ' ') - goto yy1297; + goto yy1303; } - yy1314: + yy1320: ++p; yych = *p; if (yych <= '\f') { if (yych <= 0x08) - goto yy1297; + goto yy1303; if (yych <= '\t') - goto yy1314; + goto yy1320; if (yych >= '\v') - goto yy1297; + goto yy1303; } else { if (yych <= '\r') - goto yy1316; + goto yy1322; if (yych == ' ') - goto yy1314; - goto yy1297; + goto yy1320; + goto yy1303; } - yy1316: + yy1322: ++p; p = marker; { return (bufsize_t)(p - start); } @@ -19839,997 +19650,997 @@ bufsize_t _scan_entity(const unsigned char *p) { if (yych <= 0xDF) { if (yych <= '%') { if (yych != '\n') - goto yy1322; + goto yy1328; } else { if (yych <= '&') - goto yy1321; + goto yy1327; if (yych <= 0x7F) - goto yy1322; + goto yy1328; if (yych >= 0xC2) - goto yy1323; + goto yy1329; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy1325; + goto yy1331; if (yych == 0xED) - goto yy1330; - goto yy1326; + goto yy1336; + goto yy1332; } else { if (yych <= 0xF0) - goto yy1327; + goto yy1333; if (yych <= 0xF3) - goto yy1328; + goto yy1334; if (yych <= 0xF4) - goto yy1329; + goto yy1335; } } - yy1320 : { return 0; } - yy1321: + yy1326 : { return 0; } + yy1327: yych = *(marker = ++p); if (yych <= '@') { if (yych == '#') - goto yy1331; - goto yy1320; + goto yy1337; + goto yy1326; } else { if (yych <= 'Z') - goto yy1332; + goto yy1338; if (yych <= '`') - goto yy1320; + goto yy1326; if (yych <= 'z') - goto yy1332; - goto yy1320; + goto yy1338; + goto yy1326; } - yy1322: + yy1328: yych = *++p; - goto yy1320; - yy1323: + goto yy1326; + yy1329: yych = *++p; if (yych <= 0x7F) - goto yy1324; + goto yy1330; if (yych <= 0xBF) - goto yy1322; - yy1324: + goto yy1328; + yy1330: p = marker; - goto yy1320; - yy1325: + goto yy1326; + yy1331: yych = *++p; if (yych <= 0x9F) - goto yy1324; + goto yy1330; if (yych <= 0xBF) - goto yy1323; - goto yy1324; - yy1326: + goto yy1329; + goto yy1330; + yy1332: yych = *++p; if (yych <= 0x7F) - goto yy1324; + goto yy1330; if (yych <= 0xBF) - goto yy1323; - goto yy1324; - yy1327: + goto yy1329; + goto yy1330; + yy1333: yych = *++p; if (yych <= 0x8F) - goto yy1324; + goto yy1330; if (yych <= 0xBF) - goto yy1326; - goto yy1324; - yy1328: + goto yy1332; + goto yy1330; + yy1334: yych = *++p; if (yych <= 0x7F) - goto yy1324; + goto yy1330; if (yych <= 0xBF) - goto yy1326; - goto yy1324; - yy1329: + goto yy1332; + goto yy1330; + yy1335: yych = *++p; if (yych <= 0x7F) - goto yy1324; + goto yy1330; if (yych <= 0x8F) - goto yy1326; - goto yy1324; - yy1330: + goto yy1332; + goto yy1330; + yy1336: yych = *++p; if (yych <= 0x7F) - goto yy1324; + goto yy1330; if (yych <= 0x9F) - goto yy1323; - goto yy1324; - yy1331: + goto yy1329; + goto yy1330; + yy1337: yych = *++p; if (yych <= 'W') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1367; - goto yy1324; + goto yy1373; + goto yy1330; } else { if (yych <= 'X') - goto yy1366; + goto yy1372; if (yych == 'x') - goto yy1366; - goto yy1324; + goto yy1372; + goto yy1330; } - yy1332: + yy1338: yych = *++p; if (yych <= '@') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych >= ':') - goto yy1324; + goto yy1330; } else { if (yych <= 'Z') - goto yy1333; + goto yy1339; if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } - yy1333: + yy1339: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1336; + goto yy1342; if (yych <= ':') - goto yy1324; + goto yy1330; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; - goto yy1336; + goto yy1330; + goto yy1342; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych <= 'z') - goto yy1336; - goto yy1324; + goto yy1342; + goto yy1330; } } - yy1334: + yy1340: ++p; { return (bufsize_t)(p - start); } - yy1336: + yy1342: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1337; + goto yy1343; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1337: + yy1343: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1338; + goto yy1344; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1338: + yy1344: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1339; + goto yy1345; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1339: + yy1345: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1340; + goto yy1346; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1340: + yy1346: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1341; + goto yy1347; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1341: + yy1347: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1342; + goto yy1348; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1342: + yy1348: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1343; + goto yy1349; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1343: + yy1349: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1344; + goto yy1350; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1344: + yy1350: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1345; + goto yy1351; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1345: + yy1351: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1346; + goto yy1352; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1346: + yy1352: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1347; + goto yy1353; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1347: + yy1353: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1348; + goto yy1354; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1348: + yy1354: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1349; + goto yy1355; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1349: + yy1355: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1350; + goto yy1356; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1350: + yy1356: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1351; + goto yy1357; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1351: + yy1357: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1352; + goto yy1358; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1352: + yy1358: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1353; + goto yy1359; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1353: + yy1359: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1354; + goto yy1360; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1354: + yy1360: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1355; + goto yy1361; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1355: + yy1361: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1356; + goto yy1362; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1356: + yy1362: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1357; + goto yy1363; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1357: + yy1363: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1358; + goto yy1364; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1358: + yy1364: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1359; + goto yy1365; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1359: + yy1365: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1360; + goto yy1366; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1360: + yy1366: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1361; + goto yy1367; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1361: + yy1367: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1362; + goto yy1368; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1362: + yy1368: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1363; + goto yy1369; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1363: + yy1369: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1364; + goto yy1370; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1364: + yy1370: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1365; + goto yy1371; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1365: + yy1371: yych = *++p; if (yych == ';') - goto yy1334; - goto yy1324; - yy1366: + goto yy1340; + goto yy1330; + yy1372: yych = *++p; if (yych <= '@') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1374; - goto yy1324; + goto yy1380; + goto yy1330; } else { if (yych <= 'F') - goto yy1374; + goto yy1380; if (yych <= '`') - goto yy1324; + goto yy1330; if (yych <= 'f') - goto yy1374; - goto yy1324; + goto yy1380; + goto yy1330; } - yy1367: + yy1373: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1368; + goto yy1374; if (yych == ';') - goto yy1334; - goto yy1324; - yy1368: + goto yy1340; + goto yy1330; + yy1374: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1369; + goto yy1375; if (yych == ';') - goto yy1334; - goto yy1324; - yy1369: + goto yy1340; + goto yy1330; + yy1375: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1370; + goto yy1376; if (yych == ';') - goto yy1334; - goto yy1324; - yy1370: + goto yy1340; + goto yy1330; + yy1376: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1371; + goto yy1377; if (yych == ';') - goto yy1334; - goto yy1324; - yy1371: + goto yy1340; + goto yy1330; + yy1377: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1372; + goto yy1378; if (yych == ';') - goto yy1334; - goto yy1324; - yy1372: + goto yy1340; + goto yy1330; + yy1378: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1373; + goto yy1379; if (yych == ';') - goto yy1334; - goto yy1324; - yy1373: + goto yy1340; + goto yy1330; + yy1379: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1365; + goto yy1371; if (yych == ';') - goto yy1334; - goto yy1324; - yy1374: + goto yy1340; + goto yy1330; + yy1380: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1375; + goto yy1381; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= 'g') - goto yy1324; + goto yy1330; } } - yy1375: + yy1381: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1376; + goto yy1382; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= 'g') - goto yy1324; + goto yy1330; } } - yy1376: + yy1382: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1377; + goto yy1383; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= 'g') - goto yy1324; + goto yy1330; } } - yy1377: + yy1383: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1378; + goto yy1384; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= 'g') - goto yy1324; + goto yy1330; } } - yy1378: + yy1384: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1379; + goto yy1385; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= 'g') - goto yy1324; + goto yy1330; } } - yy1379: + yy1385: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1380; + goto yy1386; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= 'g') - goto yy1324; + goto yy1330; } } - yy1380: + yy1386: ++p; if ((yych = *p) <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1365; + goto yy1371; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; - goto yy1365; + goto yy1330; + goto yy1371; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych <= 'f') - goto yy1365; - goto yy1324; + goto yy1371; + goto yy1330; } } } @@ -20849,415 +20660,415 @@ bufsize_t _scan_dangerous_url(const unsigned char *p) { if (yych <= 'I') { if (yych <= 'C') { if (yych != '\n') - goto yy1388; + goto yy1394; } else { if (yych <= 'D') - goto yy1384; + goto yy1390; if (yych == 'F') - goto yy1387; - goto yy1388; + goto yy1393; + goto yy1394; } } else { if (yych <= 'V') { if (yych <= 'J') - goto yy1385; + goto yy1391; if (yych <= 'U') - goto yy1388; - goto yy1386; + goto yy1394; + goto yy1392; } else { if (yych == 'd') - goto yy1384; + goto yy1390; if (yych <= 'e') - goto yy1388; - goto yy1387; + goto yy1394; + goto yy1393; } } } else { if (yych <= 0xDF) { if (yych <= 'u') { if (yych == 'j') - goto yy1385; - goto yy1388; + goto yy1391; + goto yy1394; } else { if (yych <= 'v') - goto yy1386; + goto yy1392; if (yych <= 0x7F) - goto yy1388; + goto yy1394; if (yych >= 0xC2) - goto yy1389; + goto yy1395; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy1391; + goto yy1397; if (yych == 0xED) - goto yy1396; - goto yy1392; + goto yy1402; + goto yy1398; } else { if (yych <= 0xF0) - goto yy1393; + goto yy1399; if (yych <= 0xF3) - goto yy1394; + goto yy1400; if (yych <= 0xF4) - goto yy1395; + goto yy1401; } } } - yy1383 : { return 0; } - yy1384: + yy1389 : { return 0; } + yy1390: yyaccept = 0; yych = *(marker = ++p); if (yych == 'A') - goto yy1418; + goto yy1424; if (yych == 'a') - goto yy1418; - goto yy1383; - yy1385: + goto yy1424; + goto yy1389; + yy1391: yyaccept = 0; yych = *(marker = ++p); if (yych == 'A') - goto yy1409; + goto yy1415; if (yych == 'a') - goto yy1409; - goto yy1383; - yy1386: + goto yy1415; + goto yy1389; + yy1392: yyaccept = 0; yych = *(marker = ++p); if (yych == 'B') - goto yy1402; + goto yy1408; if (yych == 'b') - goto yy1402; - goto yy1383; - yy1387: + goto yy1408; + goto yy1389; + yy1393: yyaccept = 0; yych = *(marker = ++p); if (yych == 'I') - goto yy1397; + goto yy1403; if (yych == 'i') - goto yy1397; - goto yy1383; - yy1388: + goto yy1403; + goto yy1389; + yy1394: yych = *++p; - goto yy1383; - yy1389: + goto yy1389; + yy1395: yych = *++p; if (yych <= 0x7F) - goto yy1390; + goto yy1396; if (yych <= 0xBF) - goto yy1388; - yy1390: + goto yy1394; + yy1396: p = marker; if (yyaccept == 0) { - goto yy1383; + goto yy1389; } else { - goto yy1401; + goto yy1407; } - yy1391: + yy1397: yych = *++p; if (yych <= 0x9F) - goto yy1390; + goto yy1396; if (yych <= 0xBF) - goto yy1389; - goto yy1390; - yy1392: + goto yy1395; + goto yy1396; + yy1398: yych = *++p; if (yych <= 0x7F) - goto yy1390; + goto yy1396; if (yych <= 0xBF) - goto yy1389; - goto yy1390; - yy1393: + goto yy1395; + goto yy1396; + yy1399: yych = *++p; if (yych <= 0x8F) - goto yy1390; + goto yy1396; if (yych <= 0xBF) - goto yy1392; - goto yy1390; - yy1394: + goto yy1398; + goto yy1396; + yy1400: yych = *++p; if (yych <= 0x7F) - goto yy1390; + goto yy1396; if (yych <= 0xBF) - goto yy1392; - goto yy1390; - yy1395: + goto yy1398; + goto yy1396; + yy1401: yych = *++p; if (yych <= 0x7F) - goto yy1390; + goto yy1396; if (yych <= 0x8F) - goto yy1392; - goto yy1390; - yy1396: + goto yy1398; + goto yy1396; + yy1402: yych = *++p; if (yych <= 0x7F) - goto yy1390; + goto yy1396; if (yych <= 0x9F) - goto yy1389; - goto yy1390; - yy1397: + goto yy1395; + goto yy1396; + yy1403: yych = *++p; if (yych == 'L') - goto yy1398; + goto yy1404; if (yych != 'l') - goto yy1390; - yy1398: + goto yy1396; + yy1404: yych = *++p; if (yych == 'E') - goto yy1399; + goto yy1405; if (yych != 'e') - goto yy1390; - yy1399: + goto yy1396; + yy1405: yych = *++p; if (yych != ':') - goto yy1390; - yy1400: + goto yy1396; + yy1406: ++p; - yy1401 : { return (bufsize_t)(p - start); } - yy1402: + yy1407 : { return (bufsize_t)(p - start); } + yy1408: yych = *++p; if (yych == 'S') - goto yy1403; + goto yy1409; if (yych != 's') - goto yy1390; - yy1403: + goto yy1396; + yy1409: yych = *++p; if (yych == 'C') - goto yy1404; + goto yy1410; if (yych != 'c') - goto yy1390; - yy1404: + goto yy1396; + yy1410: yych = *++p; if (yych == 'R') - goto yy1405; + goto yy1411; if (yych != 'r') - goto yy1390; - yy1405: + goto yy1396; + yy1411: yych = *++p; if (yych == 'I') - goto yy1406; + goto yy1412; if (yych != 'i') - goto yy1390; - yy1406: + goto yy1396; + yy1412: yych = *++p; if (yych == 'P') - goto yy1407; + goto yy1413; if (yych != 'p') - goto yy1390; - yy1407: + goto yy1396; + yy1413: yych = *++p; if (yych == 'T') - goto yy1408; + goto yy1414; if (yych != 't') - goto yy1390; - yy1408: + goto yy1396; + yy1414: yych = *++p; if (yych == ':') - goto yy1400; - goto yy1390; - yy1409: + goto yy1406; + goto yy1396; + yy1415: yych = *++p; if (yych == 'V') - goto yy1410; + goto yy1416; if (yych != 'v') - goto yy1390; - yy1410: + goto yy1396; + yy1416: yych = *++p; if (yych == 'A') - goto yy1411; + goto yy1417; if (yych != 'a') - goto yy1390; - yy1411: + goto yy1396; + yy1417: yych = *++p; if (yych == 'S') - goto yy1412; + goto yy1418; if (yych != 's') - goto yy1390; - yy1412: + goto yy1396; + yy1418: yych = *++p; if (yych == 'C') - goto yy1413; + goto yy1419; if (yych != 'c') - goto yy1390; - yy1413: + goto yy1396; + yy1419: yych = *++p; if (yych == 'R') - goto yy1414; + goto yy1420; if (yych != 'r') - goto yy1390; - yy1414: + goto yy1396; + yy1420: yych = *++p; if (yych == 'I') - goto yy1415; + goto yy1421; if (yych != 'i') - goto yy1390; - yy1415: + goto yy1396; + yy1421: yych = *++p; if (yych == 'P') - goto yy1416; + goto yy1422; if (yych != 'p') - goto yy1390; - yy1416: + goto yy1396; + yy1422: yych = *++p; if (yych == 'T') - goto yy1417; + goto yy1423; if (yych != 't') - goto yy1390; - yy1417: + goto yy1396; + yy1423: yych = *++p; if (yych == ':') - goto yy1400; - goto yy1390; - yy1418: + goto yy1406; + goto yy1396; + yy1424: yych = *++p; if (yych == 'T') - goto yy1419; + goto yy1425; if (yych != 't') - goto yy1390; - yy1419: + goto yy1396; + yy1425: yych = *++p; if (yych == 'A') - goto yy1420; + goto yy1426; if (yych != 'a') - goto yy1390; - yy1420: + goto yy1396; + yy1426: yych = *++p; if (yych != ':') - goto yy1390; + goto yy1396; yyaccept = 1; yych = *(marker = ++p); if (yych == 'I') - goto yy1422; + goto yy1428; if (yych != 'i') - goto yy1401; - yy1422: + goto yy1407; + yy1428: yych = *++p; if (yych == 'M') - goto yy1423; + goto yy1429; if (yych != 'm') - goto yy1390; - yy1423: + goto yy1396; + yy1429: yych = *++p; if (yych == 'A') - goto yy1424; + goto yy1430; if (yych != 'a') - goto yy1390; - yy1424: + goto yy1396; + yy1430: yych = *++p; if (yych == 'G') - goto yy1425; + goto yy1431; if (yych != 'g') - goto yy1390; - yy1425: + goto yy1396; + yy1431: yych = *++p; if (yych == 'E') - goto yy1426; + goto yy1432; if (yych != 'e') - goto yy1390; - yy1426: + goto yy1396; + yy1432: yych = *++p; if (yych != '/') - goto yy1390; + goto yy1396; yych = *++p; if (yych <= 'W') { if (yych <= 'J') { if (yych == 'G') - goto yy1429; + goto yy1435; if (yych <= 'I') - goto yy1390; - goto yy1430; + goto yy1396; + goto yy1436; } else { if (yych == 'P') - goto yy1428; + goto yy1434; if (yych <= 'V') - goto yy1390; - goto yy1431; + goto yy1396; + goto yy1437; } } else { if (yych <= 'j') { if (yych == 'g') - goto yy1429; + goto yy1435; if (yych <= 'i') - goto yy1390; - goto yy1430; + goto yy1396; + goto yy1436; } else { if (yych <= 'p') { if (yych <= 'o') - goto yy1390; + goto yy1396; } else { if (yych == 'w') - goto yy1431; - goto yy1390; + goto yy1437; + goto yy1396; } } } - yy1428: + yy1434: yych = *++p; if (yych == 'N') - goto yy1439; + goto yy1445; if (yych == 'n') - goto yy1439; - goto yy1390; - yy1429: + goto yy1445; + goto yy1396; + yy1435: yych = *++p; if (yych == 'I') - goto yy1438; + goto yy1444; if (yych == 'i') - goto yy1438; - goto yy1390; - yy1430: + goto yy1444; + goto yy1396; + yy1436: yych = *++p; if (yych == 'P') - goto yy1436; + goto yy1442; if (yych == 'p') - goto yy1436; - goto yy1390; - yy1431: + goto yy1442; + goto yy1396; + yy1437: yych = *++p; if (yych == 'E') - goto yy1432; + goto yy1438; if (yych != 'e') - goto yy1390; - yy1432: + goto yy1396; + yy1438: yych = *++p; if (yych == 'B') - goto yy1433; + goto yy1439; if (yych != 'b') - goto yy1390; - yy1433: + goto yy1396; + yy1439: yych = *++p; if (yych == 'P') - goto yy1434; + goto yy1440; if (yych != 'p') - goto yy1390; - yy1434: + goto yy1396; + yy1440: ++p; { return 0; } - yy1436: + yy1442: yych = *++p; if (yych == 'E') - goto yy1437; + goto yy1443; if (yych != 'e') - goto yy1390; - yy1437: + goto yy1396; + yy1443: yych = *++p; if (yych == 'G') - goto yy1434; + goto yy1440; if (yych == 'g') - goto yy1434; - goto yy1390; - yy1438: + goto yy1440; + goto yy1396; + yy1444: yych = *++p; if (yych == 'F') - goto yy1434; + goto yy1440; if (yych == 'f') - goto yy1434; - goto yy1390; - yy1439: + goto yy1440; + goto yy1396; + yy1445: ++p; if ((yych = *p) == 'G') - goto yy1434; + goto yy1440; if (yych == 'g') - goto yy1434; - goto yy1390; + goto yy1440; + goto yy1396; } } diff --git a/xml.c b/xml.c index a06cdd3..12bd629 100644 --- a/xml.c +++ b/xml.c @@ -9,6 +9,8 @@ #include "buffer.h" #include "houdini.h" +#define BUFFER_SIZE 100 + // Functions to convert cmark_nodes to XML strings. static void escape_xml(cmark_strbuf *dest, const unsigned char *source, @@ -21,7 +23,7 @@ struct render_state { int indent; }; -static inline void indent(struct render_state *state) { +static CMARK_INLINE void indent(struct render_state *state) { int i; for (i = 0; i < state->indent; i++) { cmark_strbuf_putc(state->xml, ' '); @@ -34,7 +36,7 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, bool literal = false; cmark_delim_type delim; bool entering = (ev_type == CMARK_EVENT_ENTER); - char buffer[100]; + char buffer[BUFFER_SIZE]; if (entering) { indent(state); @@ -42,8 +44,9 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, cmark_strbuf_puts(xml, cmark_node_get_type_string(node)); if (options & CMARK_OPT_SOURCEPOS && node->start_line != 0) { - sprintf(buffer, " sourcepos=\"%d:%d-%d:%d\"", node->start_line, - node->start_column, node->end_line, node->end_column); + snprintf(buffer, BUFFER_SIZE, " sourcepos=\"%d:%d-%d:%d\"", + node->start_line, node->start_column, node->end_line, + node->end_column); cmark_strbuf_puts(xml, buffer); } @@ -67,7 +70,8 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, switch (cmark_node_get_list_type(node)) { case CMARK_ORDERED_LIST: cmark_strbuf_puts(xml, " type=\"ordered\""); - sprintf(buffer, " start=\"%d\"", cmark_node_get_list_start(node)); + snprintf(buffer, BUFFER_SIZE, " start=\"%d\"", + cmark_node_get_list_start(node)); cmark_strbuf_puts(xml, buffer); delim = cmark_node_get_list_delim(node); if (delim == CMARK_PAREN_DELIM) { @@ -82,12 +86,12 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, default: break; } - sprintf(buffer, " tight=\"%s\"", - (cmark_node_get_list_tight(node) ? "true" : "false")); + snprintf(buffer, BUFFER_SIZE, " tight=\"%s\"", + (cmark_node_get_list_tight(node) ? "true" : "false")); cmark_strbuf_puts(xml, buffer); break; case CMARK_NODE_HEADING: - sprintf(buffer, " level=\"%d\"", node->as.heading.level); + snprintf(buffer, BUFFER_SIZE, " level=\"%d\"", node->as.heading.level); cmark_strbuf_puts(xml, buffer); break; case CMARK_NODE_CODE_BLOCK: