mirror of
https://github.com/rkd77/elinks.git
synced 2024-09-27 02:56:18 -04:00
[meson] compilation fixes related to CSS
This commit is contained in:
parent
ba3af06b40
commit
d5b27592a1
@ -44,7 +44,7 @@ conf_data.set('CONFIG_TRUE_COLOR', get_option('true-color'))
|
|||||||
conf_data.set('CONFIG_EXMODE', get_option('exmode'))
|
conf_data.set('CONFIG_EXMODE', get_option('exmode'))
|
||||||
conf_data.set('CONFIG_LEDS', get_option('leds'))
|
conf_data.set('CONFIG_LEDS', get_option('leds'))
|
||||||
conf_data.set('CONFIG_MARKS', get_option('marks'))
|
conf_data.set('CONFIG_MARKS', get_option('marks'))
|
||||||
conf_data.set10('CONFIG_CSS', get_option('css'))
|
conf_data.set('CONFIG_CSS', get_option('css'))
|
||||||
conf_data.set('CONFIG_DOM', get_option('html-highlight'))
|
conf_data.set('CONFIG_DOM', get_option('html-highlight'))
|
||||||
|
|
||||||
conf_data.set('CONFIG_BACKTRACE', get_option('backtrace'))
|
conf_data.set('CONFIG_BACKTRACE', get_option('backtrace'))
|
||||||
@ -112,7 +112,6 @@ conf_data.set('CONFIG_SCRIPTING', true)
|
|||||||
#CONFIG_SCRIPTING_SPIDERMONKEY', false)
|
#CONFIG_SCRIPTING_SPIDERMONKEY', false)
|
||||||
#CONFIG_LEDS', true)
|
#CONFIG_LEDS', true)
|
||||||
#CONFIG_EXMODE', false)
|
#CONFIG_EXMODE', false)
|
||||||
#CONFIG_CSS', true)
|
|
||||||
#CONFIG_BROTLI', true)
|
#CONFIG_BROTLI', true)
|
||||||
#CONFIG_BZIP2', true)
|
#CONFIG_BZIP2', true)
|
||||||
#CONFIG_GZIP', true)
|
#CONFIG_GZIP', true)
|
||||||
|
@ -300,7 +300,7 @@ find_tag(struct document *document, char *name, int namelen)
|
|||||||
/* ECMAScript doesn't like anything like CSS since it doesn't modify the
|
/* ECMAScript doesn't like anything like CSS since it doesn't modify the
|
||||||
* formatted document (yet). */
|
* formatted document (yet). */
|
||||||
|
|
||||||
#if CONFIG_CSS
|
#ifdef CONFIG_CSS
|
||||||
unsigned long
|
unsigned long
|
||||||
get_document_css_magic(struct document *document)
|
get_document_css_magic(struct document *document)
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
if conf_data.get('CONFIG_CSS') == 1
|
if conf_data.get('CONFIG_CSS')
|
||||||
subdir('css')
|
subdir('css')
|
||||||
endif
|
endif
|
||||||
if conf_data.get('CONFIG_DOM')
|
if conf_data.get('CONFIG_DOM')
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "document/renderer.h"
|
#include "document/renderer.h"
|
||||||
#include "document/view.h"
|
#include "document/view.h"
|
||||||
#include "ecmascript/ecmascript.h"
|
#include "ecmascript/ecmascript.h"
|
||||||
|
#include "ecmascript/spidermonkey/document.h"
|
||||||
#include "encoding/encoding.h"
|
#include "encoding/encoding.h"
|
||||||
#include "intl/charsets.h"
|
#include "intl/charsets.h"
|
||||||
#include "main/main.h"
|
#include "main/main.h"
|
||||||
@ -282,8 +283,7 @@ render_encoded_document(struct cache_entry *cached, struct document *document)
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_XML
|
#ifdef CONFIG_XML
|
||||||
if (document->dom)
|
if (true) render_xhtml_document(cached, document, NULL);
|
||||||
render_xhtml_document(cached, document, &buffer);
|
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
render_html_document(cached, document, &buffer);
|
render_html_document(cached, document, &buffer);
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "document/renderer.h"
|
#include "document/renderer.h"
|
||||||
#include "document/xml/renderer2.h"
|
#include "document/xml/renderer2.h"
|
||||||
#include "document/xml/tags.h"
|
#include "document/xml/tags.h"
|
||||||
|
#include "ecmascript/spidermonkey/document.h"
|
||||||
#include "globhist/globhist.h"
|
#include "globhist/globhist.h"
|
||||||
#include "intl/charsets.h"
|
#include "intl/charsets.h"
|
||||||
#include "protocol/protocol.h"
|
#include "protocol/protocol.h"
|
||||||
@ -61,38 +62,9 @@ dump_text(struct source_renderer *renderer, unsigned char *html, int length)
|
|||||||
int noupdate = 0;
|
int noupdate = 0;
|
||||||
|
|
||||||
main_loop:
|
main_loop:
|
||||||
if (!html_is_preformatted()) {
|
|
||||||
unsigned char *buffer = fmem_alloc(length+1);
|
|
||||||
unsigned char *dst;
|
|
||||||
html_context->part = renderer->part;
|
|
||||||
html_context->eoff = eof;
|
|
||||||
|
|
||||||
if (!buffer) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dst = buffer;
|
|
||||||
*dst = *html;
|
|
||||||
|
|
||||||
for (html++; html <= eof; html++) {
|
|
||||||
if (isspace(*html)) {
|
|
||||||
if (*dst != ' ') {
|
|
||||||
*(++dst) = ' ';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
*(++dst) = *html;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dst - buffer > 1) {
|
|
||||||
if (*buffer == ' ') {
|
|
||||||
html_context->putsp = HTML_SPACE_ADD;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
put_chrs(html_context, buffer, dst - buffer);
|
|
||||||
fmem_free(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
while (html < eof) {
|
while (html < eof) {
|
||||||
|
char *name, *attr, *end;
|
||||||
|
int namelen, endingtag;
|
||||||
int dotcounter = 0;
|
int dotcounter = 0;
|
||||||
|
|
||||||
if (!noupdate) {
|
if (!noupdate) {
|
||||||
@ -102,27 +74,60 @@ main_loop:
|
|||||||
} else {
|
} else {
|
||||||
noupdate = 0;
|
noupdate = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isspace(*html) && !html_is_preformatted()) {
|
||||||
|
char *h = html;
|
||||||
|
|
||||||
|
while (h < eof && isspace(*h))
|
||||||
|
h++;
|
||||||
|
if (h + 1 < eof && h[0] == '<' && h[1] == '/') {
|
||||||
|
if (!parse_element(h, eof, &name, &namelen, &attr, &end)) {
|
||||||
|
put_chrs(html_context, base_pos, html - base_pos);
|
||||||
|
base_pos = html = h;
|
||||||
|
html_context->putsp = HTML_SPACE_ADD;
|
||||||
|
goto element;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
html++;
|
||||||
|
if (!(html_context->position + (html - base_pos - 1)))
|
||||||
|
goto skip_w; /* ??? */
|
||||||
|
if (*(html - 1) == ' ') { /* Do not replace with isspace() ! --Zas */
|
||||||
|
/* BIG performance win; not sure if it doesn't cause any bug */
|
||||||
|
if (html < eof && !isspace(*html)) {
|
||||||
|
noupdate = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
put_chrs(html_context, base_pos, html - base_pos);
|
||||||
|
} else {
|
||||||
|
put_chrs(html_context, base_pos, html - base_pos - 1);
|
||||||
|
put_chrs(html_context, " ", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
skip_w:
|
||||||
|
while (html < eof && isspace(*html))
|
||||||
|
html++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (html_is_preformatted()) {
|
if (html_is_preformatted()) {
|
||||||
html_context->putsp = HTML_SPACE_NORMAL;
|
html_context->putsp = HTML_SPACE_NORMAL;
|
||||||
if (*html == ASCII_TAB) {
|
if (*html == ASCII_TAB) {
|
||||||
put_chrs(html_context, base_pos, html - base_pos);
|
put_chrs(html_context, base_pos, html - base_pos);
|
||||||
put_chrs(html_context, " ",
|
put_chrs(html_context, " ",
|
||||||
8 - (html_context->position % 8));
|
8 - (html_context->position % 8));
|
||||||
html++;
|
html++;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
} else if (*html == ASCII_CR || *html == ASCII_LF) {
|
} else if (*html == ASCII_CR || *html == ASCII_LF) {
|
||||||
put_chrs(html_context, base_pos, html - base_pos);
|
put_chrs(html_context, base_pos, html - base_pos);
|
||||||
if (html - base_pos == 0 && html_context->line_breax > 0) {
|
if (html - base_pos == 0 && html_context->line_breax > 0)
|
||||||
html_context->line_breax--;
|
html_context->line_breax--;
|
||||||
}
|
|
||||||
next_break:
|
next_break:
|
||||||
if (*html == ASCII_CR && html < eof - 1 && html[1] == ASCII_LF) {
|
if (*html == ASCII_CR && html < eof - 1
|
||||||
|
&& html[1] == ASCII_LF)
|
||||||
html++;
|
html++;
|
||||||
}
|
|
||||||
ln_break(html_context, 1);
|
ln_break(html_context, 1);
|
||||||
html++;
|
html++;
|
||||||
|
|
||||||
if (*html == ASCII_CR || *html == ASCII_LF) {
|
if (*html == ASCII_CR || *html == ASCII_LF) {
|
||||||
html_context->line_breax = 0;
|
html_context->line_breax = 0;
|
||||||
goto next_break;
|
goto next_break;
|
||||||
@ -140,7 +145,7 @@ next_break:
|
|||||||
int length = html - base_pos;
|
int length = html - base_pos;
|
||||||
int newlines;
|
int newlines;
|
||||||
|
|
||||||
html = (unsigned char *) count_newline_entities(html, eof, &newlines);
|
html = (char *) count_newline_entities(html, eof, &newlines);
|
||||||
if (newlines) {
|
if (newlines) {
|
||||||
put_chrs(html_context, base_pos, length);
|
put_chrs(html_context, base_pos, length);
|
||||||
ln_break(html_context, newlines);
|
ln_break(html_context, newlines);
|
||||||
@ -149,15 +154,14 @@ next_break:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (*html < ' ') {
|
while ((unsigned char)*html < ' ') {
|
||||||
if (html - base_pos) {
|
if (html - base_pos)
|
||||||
put_chrs(html_context, base_pos, html - base_pos);
|
put_chrs(html_context, base_pos, html - base_pos);
|
||||||
}
|
|
||||||
|
|
||||||
dotcounter++;
|
dotcounter++;
|
||||||
base_pos = ++html;
|
base_pos = ++html;
|
||||||
if (*html >= ' ' || isspace(*html) || html >= eof) {
|
if (*html >= ' ' || isspace(*html) || html >= eof) {
|
||||||
unsigned char *dots = fmem_alloc(dotcounter);
|
char *dots = fmem_alloc(dotcounter);
|
||||||
|
|
||||||
if (dots) {
|
if (dots) {
|
||||||
memset(dots, '.', dotcounter);
|
memset(dots, '.', dotcounter);
|
||||||
@ -167,7 +171,49 @@ next_break:
|
|||||||
goto main_loop;
|
goto main_loop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (html + 2 <= eof && html[0] == '<' && (html[1] == '!' || html[1] == '?')
|
||||||
|
&& !(html_context->was_xmp || html_context->was_style)) {
|
||||||
|
put_chrs(html_context, base_pos, html - base_pos);
|
||||||
|
html = skip_comment(html, eof);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*html != '<' || parse_element(html, eof, &name, &namelen, &attr, &end)) {
|
||||||
|
html++;
|
||||||
|
noupdate = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
element:
|
||||||
|
endingtag = *name == '/'; name += endingtag; namelen -= endingtag;
|
||||||
|
if (!endingtag && html_context->putsp == HTML_SPACE_ADD && !html_top->invisible)
|
||||||
|
put_chrs(html_context, " ", 1);
|
||||||
|
put_chrs(html_context, base_pos, html - base_pos);
|
||||||
|
if (!html_is_preformatted() && !endingtag && html_context->putsp == HTML_SPACE_NORMAL) {
|
||||||
|
char *ee = end;
|
||||||
|
char *nm;
|
||||||
|
|
||||||
|
/// while (!parse_element(ee, eof, &nm, NULL, NULL, &ee))
|
||||||
|
/// if (*nm == '/')
|
||||||
|
/// goto ng;
|
||||||
|
if (ee < eof && isspace(*ee)) {
|
||||||
|
put_chrs(html_context, " ", 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//ng:
|
||||||
|
// html = process_element(name, namelen, endingtag, end, html, eof, attr, html_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (noupdate) put_chrs(html_context, base_pos, html - base_pos);
|
||||||
|
ln_break(html_context, 1);
|
||||||
|
/* Restore the part in case the html_context was trashed in the last
|
||||||
|
* iteration so that when destroying the stack in the caller we still
|
||||||
|
* get the right part pointer. */
|
||||||
|
html_context->part = renderer->part;
|
||||||
|
html_context->putsp = HTML_SPACE_SUPPRESS;
|
||||||
|
html_context->position = 0;
|
||||||
|
html_context->was_br = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define HTML_MAX_DOM_STRUCTURE_DEPTH 1024
|
#define HTML_MAX_DOM_STRUCTURE_DEPTH 1024
|
||||||
@ -218,10 +264,24 @@ render_xhtml_document(struct cache_entry *cached, struct document *document, str
|
|||||||
{
|
{
|
||||||
struct html_context *html_context;
|
struct html_context *html_context;
|
||||||
struct part *part = NULL;
|
struct part *part = NULL;
|
||||||
|
|
||||||
|
part = mem_calloc(1, sizeof(*part));
|
||||||
|
if (!part) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
part->document = document;
|
||||||
|
part->box.x = 0;
|
||||||
|
part->box.y = 0;
|
||||||
|
part->cx = -1;
|
||||||
|
part->cy = 0;
|
||||||
|
part->link_num = 0;
|
||||||
|
|
||||||
char *start;
|
char *start;
|
||||||
char *end;
|
char *end;
|
||||||
struct string title;
|
struct string title;
|
||||||
struct string head;
|
struct string head;
|
||||||
|
struct string tt;
|
||||||
|
|
||||||
struct source_renderer renderer;
|
struct source_renderer renderer;
|
||||||
|
|
||||||
@ -232,6 +292,17 @@ render_xhtml_document(struct cache_entry *cached, struct document *document, str
|
|||||||
|
|
||||||
if (cached->head) add_to_string(&head, cached->head);
|
if (cached->head) add_to_string(&head, cached->head);
|
||||||
|
|
||||||
|
if (!document->dom) {
|
||||||
|
document->dom = document_parse(document);
|
||||||
|
}
|
||||||
|
xmlpp::Document *doc = document->dom;
|
||||||
|
|
||||||
|
if (!buffer) {
|
||||||
|
std::string text = doc->write_to_string_formatted();
|
||||||
|
init_string(&tt);
|
||||||
|
add_bytes_to_string(&tt, text.c_str(), text.size());
|
||||||
|
buffer = &tt;
|
||||||
|
}
|
||||||
start = buffer->source;
|
start = buffer->source;
|
||||||
end = buffer->source + buffer->length;
|
end = buffer->source + buffer->length;
|
||||||
|
|
||||||
@ -274,7 +345,6 @@ render_xhtml_document(struct cache_entry *cached, struct document *document, str
|
|||||||
}
|
}
|
||||||
done_string(&title);
|
done_string(&title);
|
||||||
|
|
||||||
xmlpp::Document *doc = document->dom;
|
|
||||||
xmlpp::Element *root = doc->get_root_node();
|
xmlpp::Element *root = doc->get_root_node();
|
||||||
renderer.html_context = html_context;
|
renderer.html_context = html_context;
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "dialogs/status.h"
|
#include "dialogs/status.h"
|
||||||
#include "document/html/frames.h"
|
#include "document/html/frames.h"
|
||||||
#include "document/xml/renderer.h"
|
#include "document/xml/renderer.h"
|
||||||
|
#include "document/xml/renderer2.h"
|
||||||
#include "document/document.h"
|
#include "document/document.h"
|
||||||
#include "document/forms.h"
|
#include "document/forms.h"
|
||||||
#include "document/renderer.h"
|
#include "document/renderer.h"
|
||||||
@ -444,7 +445,7 @@ delayed_reload(void *data)
|
|||||||
struct delayed_rel *rel = data;
|
struct delayed_rel *rel = data;
|
||||||
|
|
||||||
assert(rel);
|
assert(rel);
|
||||||
render_source_document_cxx(rel->cached, rel->document, NULL);
|
render_xhtml_document(rel->cached, rel->document, NULL);
|
||||||
mem_free(rel);
|
mem_free(rel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ OBJS-unless$(CONFIG_OPENSSL) += md5.o
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_BITTORRENT),yes)
|
ifeq ($(CONFIG_BITTORRENT),yes)
|
||||||
|
OBJS-$(CONFIG_BITTORRENT) += scanner.o
|
||||||
# BitTorrent is the only user. Compile in SHA1 if testing libc or
|
# BitTorrent is the only user. Compile in SHA1 if testing libc or
|
||||||
# there is no OpenSSL. The GNUTLS OpenSSL wrappers doesn't have it.
|
# there is no OpenSSL. The GNUTLS OpenSSL wrappers doesn't have it.
|
||||||
OBJS-$(CONFIG_OWN_LIBC) += sha1.o
|
OBJS-$(CONFIG_OWN_LIBC) += sha1.o
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
if not conf_data.get('CONFIG_SMALL')
|
if not conf_data.get('CONFIG_SMALL')
|
||||||
srcs += files('fastfind.c')
|
srcs += files('fastfind.c')
|
||||||
endif
|
endif
|
||||||
if conf_data.get('CONFIG_CSS') == 1
|
if conf_data.get('CONFIG_CSS') or conf_data.get('CONFIG_BITTORRENT')
|
||||||
srcs += files('scanner.c')
|
srcs += files('scanner.c')
|
||||||
endif
|
endif
|
||||||
if conf_data.get('CONFIG_DEBUG')
|
if conf_data.get('CONFIG_DEBUG')
|
||||||
|
Loading…
Reference in New Issue
Block a user