static void render_rss_item(struct dom_renderer *renderer, struct dom_node *item) { struct rss_renderer *rss = renderer->data; struct dom_string *title = get_rss_text(item, RSS_ELEMENT_TITLE); struct dom_string *link = get_rss_text(item, RSS_ELEMENT_LINK); struct dom_string *author = get_rss_text(item, RSS_ELEMENT_AUTHOR); struct dom_string *date = get_rss_text(item, RSS_ELEMENT_PUBDATE); if (item->data.element.type == RSS_ELEMENT_ITEM) { Y(renderer)++; X(renderer) = 0; } if (title && is_dom_string_set(title)) { if (item->data.element.type == RSS_ELEMENT_CHANNEL) { unsigned char *str; str = convert_string(renderer->convert_table, title->string, title->length, renderer->document->options.cp, CSM_DEFAULT, NULL, NULL, NULL); if (str) renderer->document->title = str; } render_dom_text(renderer, &rss->styles[RSS_STYLE_TITLE], title->string, title->length); } if (link && is_dom_string_set(link)) { X(renderer)++; add_dom_link(renderer, "[link]", 6, link->string, link->length); } /* New line, and indent */ Y(renderer)++; X(renderer) = 0; if (author && is_dom_string_set(author)) { render_dom_text(renderer, &rss->styles[RSS_STYLE_AUTHOR], author->string, author->length); } if (date && is_dom_string_set(date)) { if (author && is_dom_string_set(author)) { render_dom_text(renderer, &rss->styles[RSS_STYLE_AUTHOR_DATE_SEP], " - ", 3); } render_dom_text(renderer, &rss->styles[RSS_STYLE_DATE], date->string, date->length); } if ((author && is_dom_string_set(author)) || (date && is_dom_string_set(date))) { /* New line, and indent */ Y(renderer)++; X(renderer) = 0; } }
enum dom_code render_dom_element_end_source( struct dom_stack *stack, struct dom_node *node, void *data ) { int eax; int ecx; int edx; struct dom_renderer *renderer = &stack->current[0].data[0]; unsigned char *string; if ( assert_failed == 0 ) assert_failed = 0; if ( stack->contexts[0]->info->object_size ) { if ( assert_failed == 0 ) { assert_failed = *(int*)(esi + 4) == 0; if ( !(_Bool)( *(int*)(esi + 4) != 0 ) ) { errfile = "/home/naftali/source/elinks-0.12~pre5/src/dom/stack.h"; errline = 198; elinks_internal( "assertion context->state_objects failed!" ); *ebp_32 = stack->depth; } } } string[0] = *(int*)(eax + 20); if ( assert_failed == 0 ) { if ( node && renderer[0] && renderer->document ) assert_failed = 0; else { assert_failed = 1; errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c"; errline = 578; elinks_internal( "assertion node && renderer && renderer->document failed!" ); string[0] = string[0]; } } if ( esi && string[0] ) { if ( renderer->source <= string[0] && string[ esi ] <= renderer->end ) { render_dom_flush( &renderer[0], &string[0] ); renderer->position = &edi; if ( assert_failed == 0 ) { if ( renderer->position < renderer->source || renderer->end < renderer->position ) { assert_failed = 1; errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c"; errline = 586; elinks_internal( "assertion check_dom_node_source(renderer, renderer->position, 0) failed: renderer[%p : %p] str[%p : %p]" ); } else assert_failed = 0; } } render_dom_text( &renderer[0], &renderer->styles[ node[0].type ] ); } return DOM_CODE_OK; }
void render_dom_flush( struct dom_renderer *renderer, unsigned char *string ) { int ecx; if ( assert_failed == 0 ) { if ( renderer->position < renderer->source || renderer->end < renderer->position ) { assert_failed = 1; errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c"; errline = 457; elinks_internal( renderer->source ); if ( assert_failed == 0 ) { if ( string[0] < renderer->source ) { assert_failed = 1; errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c"; errline = 458; elinks_internal( renderer->source ); } } } else { assert_failed = 0; if ( string[0] < renderer->source ) continue; } if ( renderer->end < string[0] ) continue; else assert_failed = 0; } if ( string - renderer->position >= 1 ) { render_dom_text( &renderer[0], &renderer->styles[3], renderer->position, string - renderer->position ); renderer->position = &string[0]; if ( assert_failed == 0 ) { if ( string[0] < renderer->source || renderer->end < string[0] ) { assert_failed = 1; errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c"; errline = 464; elinks_internal( renderer->source ); string[0] = string[0]; } else { assert_failed = 0; } } } return; }
enum dom_code render_dom_node_source( struct dom_stack *stack, struct dom_node *node, void *data ) { int eax; int ecx; int edx; struct dom_renderer *renderer = &stack->current[0].data[0]; if ( assert_failed == 0 ) { if ( node[0] && renderer[0] && renderer->document ) assert_failed = 0; else { assert_failed = 1; errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c"; errline = 540; elinks_internal( "assertion node && renderer && renderer->document failed!" ); } } if ( node->type == 5 ) { } if ( renderer->source <= node->string.string && node->string.string + node <= renderer->end ) { *(int*)(esi - renderer->position) = node->string.string - renderer->position; if ( assert_failed == 0 ) { if ( renderer->source <= renderer->position && renderer->position <= renderer->end ) assert_failed = 0; else { assert_failed = 1; errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c"; errline = 457; elinks_internal( "assertion check_dom_node_source(renderer, renderer->position, 0) failed: renderer[%p : %p] str[%p : %p]" ); *ebp_40 = node->string.string - renderer->position; if ( assert_failed == 0 ) goto B28; } B28: if ( node->string.string < renderer->source || renderer->end < node->string.string ) { assert_failed = 1; errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c"; errline = 458; elinks_internal( "assertion check_dom_node_source(renderer, string, 0) failed: renderer[%p : %p] str[%p : %p]" ); *ebp_40 = ebp_40; } else assert_failed = 0; } if ( ebp_40 >= 1 ) { render_dom_text( &renderer[0], &renderer->styles[3], renderer->position ); renderer->position = node->string.string; if ( assert_failed == 0 ) { if ( renderer->position < renderer->source || renderer->end < renderer->position ) { assert_failed = 1; errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c"; errline = 464; elinks_internal( "assertion check_dom_node_source(renderer, renderer->position, 0) failed: renderer[%p : %p] str[%p : %p]" ); } else assert_failed = 0; } } renderer->position = node->string.string + node->string.length; if ( assert_failed == 0 ) { if ( renderer->position < renderer->source || renderer->end < renderer->position ) { assert_failed = 1; errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c"; errline = 482; elinks_internal( "assertion check_dom_node_source(renderer, renderer->position, 0) failed: renderer[%p : %p] str[%p : %p]" ); render_dom_text( &renderer[0], &renderer->styles[ node->type ], node->string.string, node->string.length ); return DOM_CODE_OK; } else assert_failed = 0; } } }