html/xml meta: avoid appending a value that is already present in the string
This commit is contained in:
parent
552510db06
commit
e5af1651fa
@ -264,8 +264,12 @@ bool MimeHandlerExecMultiple::next_document()
|
||||
string nm = stringtolower((const string&)name);
|
||||
trimstring(nm, ":");
|
||||
LOGDEB("MHExecMultiple: got [" << nm << "] -> [" << data << "]\n");
|
||||
auto it = m_metaData.find(nm);
|
||||
if (it == m_metaData.end() ||
|
||||
it->second.find(data) == std::string::npos) {
|
||||
m_metaData[nm] += data;
|
||||
}
|
||||
}
|
||||
if (loop == 200) {
|
||||
// ??
|
||||
LOGERR("MHExecMultiple: handler sent more than 200 attributes\n");
|
||||
@ -339,4 +343,3 @@ bool MimeHandlerExecMultiple::next_document()
|
||||
LOGDEB2("MHExecMultiple: metadata: \n" << metadataAsString());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -171,10 +171,10 @@ bool MimeHandlerHtml::next_document()
|
||||
m_metaData[cstr_dj_keymd] = result.dmtime;
|
||||
m_metaData[cstr_dj_keymt] = cstr_textplain;
|
||||
|
||||
for (map<string,string>::const_iterator it = result.meta.begin();
|
||||
it != result.meta.end(); it++) {
|
||||
if (!it->second.empty())
|
||||
m_metaData[it->first] = it->second;
|
||||
for (const auto& entry : result.meta) {
|
||||
if (!entry.second.empty()) {
|
||||
m_metaData[entry.first] = entry.second;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -389,10 +389,19 @@ MyHtmlParser::opening_tag(const string &tag)
|
||||
ishtml = true;
|
||||
}
|
||||
}
|
||||
if (!meta[name].empty())
|
||||
meta[name] += ' ';
|
||||
decode_entities(content);
|
||||
meta[name] += content;
|
||||
// Set metadata field, avoid appending
|
||||
// multiple identical instances.
|
||||
auto it = meta.find(name);
|
||||
if (it == meta.end() || it->second.find(content) ==
|
||||
string::npos) {
|
||||
if (it != meta.end()) {
|
||||
it->second += ' ';
|
||||
it->second += content;
|
||||
} else {
|
||||
meta[name] = content;
|
||||
}
|
||||
}
|
||||
if (ishtml &&
|
||||
meta[name].compare(0, cstr_fldhtm.size(),
|
||||
cstr_fldhtm)) {
|
||||
@ -412,7 +421,9 @@ MyHtmlParser::opening_tag(const string &tag)
|
||||
charset = k->second;
|
||||
if (!charset.empty() &&
|
||||
!samecharset(charset, fromcharset)) {
|
||||
LOGDEB1("Doc http-equiv charset '" << (charset) << "' differs from dir deflt '" << (fromcharset) << "'\n" );
|
||||
LOGDEB1("Doc http-equiv charset '" << charset <<
|
||||
"' differs from dir deflt '" <<
|
||||
fromcharset << "'\n");
|
||||
throw false;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user