From 183566948f1480e3da856120ca50cd7e85345593 Mon Sep 17 00:00:00 2001 From: dmiller Date: Wed, 29 Oct 2014 14:46:11 +0000 Subject: [PATCH] Update some xml.cc comments and add encoding and standalone declarations Explanatory comments within, but this came from reading the XML 1.0 spec. See some history: http://seclists.org/nmap-dev/2013/q4/48 - Added DOCTYPE http://seclists.org/nmap-dev/2014/q2/82 - broke Zenmap http://seclists.org/nmap-dev/2014/q3/331 - reduced DOCTYPE --- xml.cc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/xml.cc b/xml.cc index d391171c2..84c51cfbb 100644 --- a/xml.cc +++ b/xml.cc @@ -124,12 +124,13 @@ This is a simple library for writing XML. It handles two main things: keeping track of the element stack, and escaping text where necessary. If you wanted to write this XML: - + + these are the functions you would call. Each one is followed by the text it prints enclosed in ||. -xml_start_document() || +xml_start_document("elem") |\n| xml_newline(); |\n| xml_open_start_tag("elem"); |. +xml_start_document Writes \n. xml_depth Returns the size of the element stack. The library makes it harder but not impossible to make non-well-formed @@ -308,7 +309,7 @@ int xml_write_escaped_v(const char *fmt, va_list va) { return 0; } -/* Write the XML declaration: +/* Write the XML declaration: * and the DOCTYPE declaration: */ int xml_start_document(const char *rootnode) { @@ -316,6 +317,15 @@ int xml_start_document(const char *rootnode) { return -1; if (xml_attribute("version", "1.0") < 0) return -1; + /* Practically, Nmap only uses ASCII, but UTF-8 encompasses ASCII and allows + * for future expansion */ + if (xml_attribute("encoding", "UTF-8") < 0) + return -1; + /* This indicates that parsers don't have to go elsewhere for entity + * declarations and so forth. We had trouble with this when we defined a + * PUBLIC doctype. */ + if (xml_attribute("standalone", "yes") < 0) + return -1; if (xml_close_pi() < 0) return -1; if (xml_newline() < 0)