X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fhtml_parser.cpp;h=95db7c7fd41993645193ba617e1d5404993a8307;hb=ed1d79c860c13fb92e5b7eea8de2cd608a6caa0e;hp=abbdeba0d5516eead9302f82347e15284efad105;hpb=55fdfbb42225f71fb791bb8f9ec033ca0fddbe44;p=metaproxy-moved-to-github.git diff --git a/src/html_parser.cpp b/src/html_parser.cpp index abbdeba..95db7c7 100644 --- a/src/html_parser.cpp +++ b/src/html_parser.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2013 Index Data + Copyright (C) Index Data Metaproxy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -166,8 +166,12 @@ int mp::HTMLParser::Rep::tagAttrs(HTMLParserEvent &event, x[0] = tr; x[1] = 0; if (m_verbose) - printf ("------ attr %.*s=%.*s\n", attr_len, attr_name, - val_len, value); + { + printf("------ attr %.*s", attr_len, attr_name); + if (value) + printf("=%.*s", val_len, value); + printf("\n"); + } event.attribute(name, len, attr_name, attr_len, value, val_len, x); } return i; @@ -195,7 +199,7 @@ int mp::HTMLParser::Rep::tagEnd(HTMLParserEvent &event, { if (m_verbose) printf("------ any tag %s %.*s\n", - close_it ? " close" : "end", tag_len, tag); + close_it ? "close" : "end", tag_len, tag); event.anyTagEnd(tag, tag_len, close_it); i++; } @@ -264,20 +268,21 @@ void mp::HTMLParser::Rep::parse_str(HTMLParserEvent &event, const char *cp) else if (*cp == '/' && isAlpha(cp[1])) { int i; - tagText(event, text_start, cp - 1); - + i = skipName(++cp); if (!nest) { if (i == 6 && !yaz_strncasecmp(cp, "script", i)) - nest = true; - else { - text_start = cp - 1; // points to '/' - continue; + int ws = skipSpace(cp + 6); + if (cp[ws + 6] == '>') + nest = true; /* really terminated */ } + if (!nest) + continue; } + tagText(event, text_start, cp - 2); event.closeTag(cp, i); if (m_verbose) printf("------ tag close %.*s\n", i, cp);