diff options
author | Sebastian Geerken <devnull@localhost> | 2014-04-02 00:23:36 +0200 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2014-04-02 00:23:36 +0200 |
commit | 06bfcf7715899f9ff5e551d4146770b3a7096141 (patch) | |
tree | a860b0f11d858d22797c9d0e4ba633e5148df9d1 /src/cssparser.cc | |
parent | 7563c505fc1d76c69a3a2b369b27465996b5fcf4 (diff) | |
parent | f284ce5c34cdf37854135524814bbacbd2932f25 (diff) |
Merge with main repo.
Diffstat (limited to 'src/cssparser.cc')
-rw-r--r-- | src/cssparser.cc | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/cssparser.cc b/src/cssparser.cc index 04faffa2..f567c333 100644 --- a/src/cssparser.cc +++ b/src/cssparser.cc @@ -447,6 +447,7 @@ static const CssShorthandInfo Css_shorthand_info[] = { * ---------------------------------------------------------------------- */ CssParser::CssParser(CssContext *context, CssOrigin origin, + const DilloUrl *baseUrl, const char *buf, int buflen) { this->context = context; @@ -456,6 +457,7 @@ CssParser::CssParser(CssContext *context, CssOrigin origin, this->bufptr = 0; this->spaceSeparated = false; this->withinBlock = false; + this->baseUrl = baseUrl; nextToken (); } @@ -1570,15 +1572,17 @@ char * CssParser::parseUrl() } if (urlStr) { - char *url = urlStr->str; - dStr_free(urlStr, 0); + DilloUrl *dilloUrl = a_Url_new(urlStr->str, a_Url_str(this->baseUrl)); + char *url = dStrdup(a_Url_str(dilloUrl)); + a_Url_free(dilloUrl); + dStr_free(urlStr, 1); return url; } else { return NULL; } } -void CssParser::parseImport(DilloHtml *html, DilloUrl *baseUrl) +void CssParser::parseImport(DilloHtml *html) { char *urlStr = NULL; bool importSyntaxIsOK = false; @@ -1624,8 +1628,8 @@ void CssParser::parseImport(DilloHtml *html, DilloUrl *baseUrl) if (urlStr) { if (importSyntaxIsOK && mediaIsSelected) { MSG("CssParser::parseImport(): @import %s\n", urlStr); - DilloUrl *url = a_Html_url_new (html, urlStr, a_Url_str(baseUrl), - baseUrl ? 1 : 0); + DilloUrl *url = a_Html_url_new (html, urlStr, a_Url_str(this->baseUrl), + this->baseUrl ? 1 : 0); a_Html_load_stylesheet(html, url); a_Url_free(url); } @@ -1717,11 +1721,12 @@ void CssParser::ignoreStatement() } } -void CssParser::parse(DilloHtml *html, DilloUrl *url, CssContext *context, +void CssParser::parse(DilloHtml *html, const DilloUrl *baseUrl, + CssContext *context, const char *buf, int buflen, CssOrigin origin) { - CssParser parser (context, origin, buf, buflen); + CssParser parser (context, origin, baseUrl, buf, buflen); bool importsAreAllowed = true; while (parser.ttype != CSS_TK_END) { @@ -1732,7 +1737,7 @@ void CssParser::parse(DilloHtml *html, DilloUrl *url, CssContext *context, if (dStrAsciiCasecmp(parser.tval, "import") == 0 && html != NULL && importsAreAllowed) { - parser.parseImport(html, url); + parser.parseImport(html); } else if (dStrAsciiCasecmp(parser.tval, "media") == 0) { parser.parseMedia(); } else { @@ -1748,11 +1753,12 @@ void CssParser::parse(DilloHtml *html, DilloUrl *url, CssContext *context, } } -void CssParser::parseDeclarationBlock(const char *buf, int buflen, +void CssParser::parseDeclarationBlock(const DilloUrl *baseUrl, + const char *buf, int buflen, CssPropertyList *props, CssPropertyList *propsImortant) { - CssParser parser (NULL, CSS_ORIGIN_AUTHOR, buf, buflen); + CssParser parser (NULL, CSS_ORIGIN_AUTHOR, baseUrl, buf, buflen); parser.withinBlock = true; |