From 64974613c98e9928af7bbccaeb718012b1dc6769 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 23 Dec 2006 04:56:50 +0000
Subject: [PATCH] Suppress various compiler warnings in new xml code.

---
 src/backend/utils/adt/xml.c | 92 ++++++++++++++++++++-----------------
 src/include/utils/xml.h     |  4 +-
 2 files changed, 51 insertions(+), 45 deletions(-)

diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index 8997730fc8d..d765c8657fb 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.1 2006/12/21 16:05:15 petere Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.2 2006/12/23 04:56:50 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -112,12 +112,12 @@ xml_out(PG_FUNCTION_ARGS)
 	xmltype		*s = PG_GETARG_XML_P(0);
 	char		*result;
 	int32		len;
-	
+
 	len = VARSIZE(s) - VARHDRSZ;
 	result = palloc(len + 1);
 	memcpy(result, VARDATA(s), len);
 	result[len] = '\0';
-	
+
 	PG_RETURN_CSTRING(result);
 }
 
@@ -344,7 +344,7 @@ xmlvalidate(PG_FUNCTION_ARGS)
 	ctxt = xmlNewParserCtxt();
 	if (ctxt == NULL)
 		xml_ereport(ERROR, "could not allocate parser context", ctxt);
-	doc = xmlCtxtReadMemory(ctxt, (char *) VARDATA(data), 
+	doc = xmlCtxtReadMemory(ctxt, (char *) VARDATA(data),
 							VARSIZE(data) - VARHDRSZ, PG_XML_DEFAULT_URI, NULL, 0);
 	if (doc == NULL)
 		xml_ereport(ERROR, "could not parse XML data", ctxt);
@@ -371,7 +371,7 @@ xmlvalidate(PG_FUNCTION_ARGS)
 
 	if (xmlValidateDtd(xmlNewValidCtxt(), doc, dtd) == 1)
 		result = TRUE;
-	
+
 #if 0
 	xmlFreeURI(uri);
 	xmlFreeDtd(dtd);
@@ -379,7 +379,7 @@ xmlvalidate(PG_FUNCTION_ARGS)
 	xmlFreeParserCtxt(ctxt);
 	xmlCleanupParser();
 #endif
-	
+
 	if (!result)
 		xml_ereport(NOTICE, "validation against DTD failed", ctxt);
 
@@ -405,15 +405,15 @@ xml_init(void)
 	 * if we can work.
 	 */
 	if (sizeof (char) != sizeof (xmlChar))
-		ereport(ERROR, 
-				(errmsg("cannot initialize XML library"),
-				 errdetail("libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u.", 
-						   sizeof(char), sizeof(xmlChar))));
-	
+		ereport(ERROR,
+				(errmsg("could not initialize XML library"),
+				 errdetail("libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u.",
+						   (int) sizeof(char), (int) sizeof(xmlChar))));
+
 	xmlMemSetup(xml_pfree, xml_palloc, xml_repalloc, xml_pstrdup);
 	xmlInitParser();
 	LIBXML_TEST_VERSION;
-	/* do not flood PG's logfile with libxml error messages - reset error handler*/ 
+	/* do not flood PG's logfile with libxml error messages - reset error handler*/
 	xmlSetGenericErrorFunc(NULL, xml_errorHandler);
 	xml_errmsg = NULL;
 	xml_errbuf = palloc(XML_ERRBUF_SIZE);
@@ -446,20 +446,21 @@ xml_parse(text *data, int opts, bool is_document)
 #endif
 
 	xml_init();
-	
+
 	len = VARSIZE(data) - VARHDRSZ; /* will be useful later */
 	string = xml_text2xmlChar(data);
-	
+
 	ctxt = xmlNewParserCtxt();
 	if (ctxt == NULL)
 		xml_ereport(ERROR, "could not allocate parser context", ctxt);
-	
-	/* first, we try to parse the string as it is XML doc, then, as XML chunk */
+
+	/* first, we try to parse the string as XML doc, then, as XML chunk */
 	ereport(DEBUG3, (errmsg("string to parse: %s", string)));
 	if (len > 4 && CMP5(string, '<', '?', 'x', 'm', 'l'))
 	{
 		/* consider it as DOCUMENT */
-		doc = xmlCtxtReadMemory(ctxt, string, len, PG_XML_DEFAULT_URI, NULL, opts);
+		doc = xmlCtxtReadMemory(ctxt, (char *) string, len,
+								PG_XML_DEFAULT_URI, NULL, opts);
 		if (doc == NULL)
 		{
 			xml_ereport(ERROR, "could not parse XML data", ctxt);
@@ -509,38 +510,38 @@ xml_parse(text *data, int opts, bool is_document)
 			validationFailed = TRUE;
 		}
 	}
-	
+
 	if (validationFailed)
 		xml_ereport(WARNING, "validation against DTD failed", ctxt);
-	
-	/* TODO encoding issues 
+
+	/* TODO encoding issues
 	 * (thoughts:
 	 * 		CASE:
 	 *   		- XML data has explicit encoding attribute in its prolog
 	 *   		- if not, assume that enc. of XML data is the same as client's one
-	 * 
+	 *
 	 * 		The common rule is to accept the XML data only if its encoding
 	 * 		is the same as encoding of the storage (server's). The other possible
 	 * 		option is to accept all the docs, but DO TRANSFORMATION and, if needed,
 	 * 		change the prolog.
-	 * 
-	 * 		I think I'd stick the first way (for the 1st version), 
+	 *
+	 * 		I think I'd stick the first way (for the 1st version),
 	 * 		it's much simplier (less errors...)
 	 * ) */
 	/* ... */
-	
+
 	xmlFreeParserCtxt(ctxt);
 	xmlCleanupParser();
-	
-	ereport(DEBUG3, (errmsg("XML data successfully parsed, encoding: %s", 
+
+	ereport(DEBUG3, (errmsg("XML data successfully parsed, encoding: %s",
 		(char *) doc->encoding)));
-	
+
 	return doc;
 }
 
 
-/* 
- * xmlChar<->text convertions 
+/*
+ * xmlChar<->text convertions
  */
 static xmlChar *
 xml_text2xmlChar(text *in)
@@ -551,13 +552,13 @@ xml_text2xmlChar(text *in)
 	res = palloc(len + 1);
 	memcpy(res, VARDATA(in), len);
 	res[len] = '\0';
-	
+
 	return(res);
 }
 
 
-/* 
- * Wrappers for memory management functions 
+/*
+ * Wrappers for memory management functions
  */
 static void *
 xml_palloc(size_t size)
@@ -588,7 +589,7 @@ xml_pstrdup(const char *string)
 
 
 /*
- * Wrapper for "ereport" function. 
+ * Wrapper for "ereport" function.
  * Adds detail - libxml's native error message, if any.
  */
 static void
@@ -597,16 +598,16 @@ xml_ereport(int level, char *msg, void *ctxt)
 	char *xmlErrDetail;
 	int xmlErrLen, i;
 	xmlErrorPtr libxmlErr = NULL;
-	
+
 	if (xml_errmsg != NULL)
 	{
 		ereport(DEBUG1, (errmsg("%s", xml_errmsg)));
 		pfree(xml_errmsg);
 	}
-	
+
 	if (ctxt != NULL)
 		libxmlErr = xmlCtxtGetLastError(ctxt);
-	
+
 	if (libxmlErr == NULL)
 	{
 		if (level == ERROR)
@@ -645,7 +646,7 @@ static void
 xml_errorHandler(void *ctxt, const char *msg,...)
 {
 	va_list		args;
-	
+
 	va_start(args, msg);
 	vsnprintf(xml_errbuf, XML_ERRBUF_SIZE, msg, args);
 	va_end(args);
@@ -841,13 +842,13 @@ xml_ereport_by_code(int level, char *msg, int code)
             det = "Unregistered error (libxml error code: %d)";
             ereport(DEBUG1, (errmsg("Check out \"libxml/xmlerror.h\" and bring errcode \"%d\" processing to \"xml.c\".", code)));
     }
-    
+
 	if (xml_errmsg != NULL)
 	{
 		ereport(DEBUG1, (errmsg("%s", xml_errmsg)));
 		pfree(xml_errmsg);
 	}
-    
+
 	ereport(level, (errmsg(msg), errdetail(det, code)));
 }
 
@@ -857,11 +858,16 @@ xml_ereport_by_code(int level, char *msg, int code)
  * codepoint.
  */
 static pg_wchar
-sqlchar_to_unicode(unsigned char *s)
+sqlchar_to_unicode(char *s)
 {
 	int save_enc;
 	pg_wchar ret;
-	char *utf8string = pg_do_encoding_conversion(s, pg_mblen(s), GetDatabaseEncoding(), PG_UTF8);
+	char *utf8string;
+
+	utf8string = (char *) pg_do_encoding_conversion((unsigned char *) s,
+													pg_mblen(s),
+													GetDatabaseEncoding(),
+													PG_UTF8);
 
 	save_enc = GetDatabaseEncoding();
 	SetDatabaseEncoding(PG_UTF8);
@@ -898,11 +904,11 @@ is_valid_xml_namechar(pg_wchar c)
  * Map SQL identifier to XML name; see SQL/XML:2003 section 9.1.
  */
 char *
-map_sql_identifier_to_xml_name(unsigned char *ident, bool fully_escaped)
+map_sql_identifier_to_xml_name(char *ident, bool fully_escaped)
 {
 #ifdef USE_LIBXML
 	StringInfoData buf;
-	unsigned char *p;
+	char *p;
 
 	initStringInfo(&buf);
 
diff --git a/src/include/utils/xml.h b/src/include/utils/xml.h
index 89323301d37..a353d8837c9 100644
--- a/src/include/utils/xml.h
+++ b/src/include/utils/xml.h
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/utils/xml.h,v 1.1 2006/12/21 16:05:16 petere Exp $
+ * $PostgreSQL: pgsql/src/include/utils/xml.h,v 1.2 2006/12/23 04:56:50 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -32,6 +32,6 @@ extern Datum xmlpi(PG_FUNCTION_ARGS);
 extern Datum xmlroot(PG_FUNCTION_ARGS);
 extern Datum xmlvalidate(PG_FUNCTION_ARGS);
 
-extern char *map_sql_identifier_to_xml_name(unsigned char *ident, bool fully_escaped);
+extern char *map_sql_identifier_to_xml_name(char *ident, bool fully_escaped);
 
 #endif /* XML_H */
-- 
GitLab