Index: include/easysoap/SOAPParameter.h.orig
diff -Nau include/easysoap/SOAPParameter.h.orig include/easysoap/SOAPParameter.h
--- include/easysoap/SOAPParameter.h.orig	2002-12-10 16:14:57.000000000 +0100
+++ include/easysoap/SOAPParameter.h	2002-12-10 16:15:05.000000000 +0100
@@ -168,7 +168,7 @@
 		Data(const Data&);
 	};
 
-	friend Data;
+	friend class Data;
 
 	Pool			m_pool;
 	SOAPParameter	*m_parent;
Index: src/XMLParser.cpp
diff -Nau src/XMLParser.cpp.orig src/XMLParser.cpp
--- src/XMLParser.cpp.orig	2002-12-10 16:14:57.000000000 +0100
+++ src/XMLParser.cpp	2002-12-10 16:20:11.000000000 +0100
@@ -48,7 +48,7 @@
 {
 	if (m_parser)
 	{
-		XML_ParserFree(m_parser);
+		XML_ParserFree((XML_ParserStruct*)m_parser);
 		m_parser = 0;
 	}
 }
@@ -58,43 +58,43 @@
 {
 	FreeParser();
 	m_parser = XML_ParserCreateNS(encoding, '#');
-	XML_SetElementHandler(m_parser,
+	XML_SetElementHandler((XML_ParserStruct*)m_parser,
 			XMLParser::_startElement,
 			XMLParser::_endElement);
 
-	XML_SetCharacterDataHandler(m_parser,
+	XML_SetCharacterDataHandler((XML_ParserStruct*)m_parser,
 			XMLParser::_characterData);
 
-	XML_SetStartNamespaceDeclHandler(m_parser,
+	XML_SetStartNamespaceDeclHandler((XML_ParserStruct*)m_parser,
 			XMLParser::_startNamespace);
 
-	XML_SetEndNamespaceDeclHandler(m_parser,
+	XML_SetEndNamespaceDeclHandler((XML_ParserStruct*)m_parser,
 			XMLParser::_endNamespace);
 
-	XML_SetUserData(m_parser, this);
+	XML_SetUserData((XML_ParserStruct*)m_parser, this);
 }
 
 void *
 XMLParser::GetParseBuffer(int size)
 {
-	if (m_parser)
-		return XML_GetBuffer(m_parser, size);
+	if ((XML_ParserStruct*)m_parser)
+		return XML_GetBuffer((XML_ParserStruct*)m_parser, size);
 	return 0;
 }
 
 bool
 XMLParser::ParseBuffer(int size)
 {
-	if (m_parser)
-		return XML_ParseBuffer(m_parser, size, size == 0) != 0;
+	if ((XML_ParserStruct*)m_parser)
+		return XML_ParseBuffer((XML_ParserStruct*)m_parser, size, size == 0) != 0;
 	return false;
 }
 
 const char *
 XMLParser::GetErrorMessage()
 {
-	if (m_parser)
-		return XML_ErrorString(XML_GetErrorCode(m_parser));
+	if ((XML_ParserStruct*)m_parser)
+		return XML_ErrorString(XML_GetErrorCode((XML_ParserStruct*)m_parser));
 	return 0;
 }

Index: include/easysoap/SOAPDispatchHandler.h
diff -Naur include/easysoap/SOAPDispatchHandler.h.orig include/easysoap/SOAPDispatchHandler.h
--- include/easysoap/SOAPDispatchHandler.h	Mon Jan 20 19:03:22 2003
+++ include/easysoap/SOAPDispatchHandler.h	Mon Jan 20 18:59:32 2003
@@ -61,7 +61,7 @@
 	bool ExecuteMethod(const SOAPEnvelope& request, SOAPMethod& response)
 	{
 		const SOAPMethod& method = request.GetBody().GetMethod();
-		DispatchMap::Iterator i = m_dispatchMap.Find(method.GetName());
+		typename DispatchMap::Iterator i = m_dispatchMap.Find(method.GetName());
 		if (i)
 		{
 			T *target= GetTarget(request);
@@ -109,7 +109,7 @@
 
 	bool HandleHeader(const SOAPParameter& header, SOAPEnvelope& request, SOAPEnvelope& response)
 	{
-		DispatchMap::Iterator i = m_dispatchMap.Find(header.GetName());
+		typename DispatchMap::Iterator i = m_dispatchMap.Find(header.GetName());
 
 		if (i)
 		{
Index: include/easysoap/SOAPHashMap.h
diff -Nau include/easysoap/SOAPHashMap.h.orig include/easysoap/SOAPHashMap.h
--- include/easysoap/SOAPHashMap.h.orig	Mon Jan 20 19:03:37 2003
+++ include/easysoap/SOAPHashMap.h	Mon Jan 20 18:58:30 2003
@@ -117,13 +117,13 @@
 	{
 	private:
 		const SOAPHashMap		*m_map;
-		Elements::Iterator		m_index;
+		typename Elements::Iterator m_index;
 		HashElement				*m_he;
 		
 		friend class SOAPHashMap<K,I,H,E>;
 
 		// private constuctor that can only be called by SOAPHashMap
-		ForwardHashMapIterator(const SOAPHashMap *map, Elements::Iterator index)
+		ForwardHashMapIterator(const SOAPHashMap *map, typename Elements::Iterator index)
 			: m_map(map), m_index(index), m_he(0)
 		{
 			if (m_map)
@@ -134,7 +134,7 @@
 			}
 		}
 
-		ForwardHashMapIterator(const SOAPHashMap *map, Elements::Iterator index, HashElement *he)
+		ForwardHashMapIterator(const SOAPHashMap *map, typename Elements::Iterator index, HashElement *he)
 			: m_map(map), m_index(index), m_he(he)
 		{
 		}
@@ -366,8 +366,8 @@
 		{
 			Clear();
 			Resize(r.GetNumBuckets());
-			SOAPHashMap<A,B,C,D>::Iterator e = r.End();
-			for (SOAPHashMap<A,B,C,D>::Iterator it = r.Begin(); it != e; ++it)
+			typename SOAPHashMap<A,B,C,D>::Iterator e = r.End();
+			for (typename SOAPHashMap<A,B,C,D>::Iterator it = r.Begin(); it != e; ++it)
 				Add(it.Key(), it.Item());
 		}
 		return *this;
@@ -397,7 +397,7 @@
 	 */
 	Iterator Begin() const
 	{
-		return Iterator(this, (Elements::Iterator)m_elements.Begin());
+		return Iterator(this, (typename Elements::Iterator)m_elements.Begin());
 	}
 
 	/**
@@ -407,7 +407,7 @@
 	 */
 	Iterator End() const
 	{
-		return Iterator(this, (Elements::Iterator)m_elements.End());
+		return Iterator(this, (typename Elements::Iterator)m_elements.End());
 	}
 
 
@@ -491,7 +491,7 @@
 	 */
 	void Clear()
 	{
-		for (Elements::Iterator i = m_elements.Begin(); i != m_elements.End(); ++i)
+		for (typename Elements::Iterator i = m_elements.Begin(); i != m_elements.End(); ++i)
 		{
 			HashElement *he = *i;
 			while (he)
@@ -512,7 +512,7 @@
 	 */
 	void Empty()
 	{
-		Elements::Iterator i;
+		typename Elements::Iterator i;
 		for (i = m_elements.Begin(); i != m_elements.End(); ++i)
 		{
 			HashElement *he = *i;
@@ -588,7 +588,7 @@
 			while (he)
 			{
 				if (he->m_hash == hash && equals(he->m_key, key))
-					return Iterator(this, (Elements::Iterator)m_elements.Begin() + index, he);
+					return Iterator(this, (typename Elements::Iterator)m_elements.Begin() + index, he);
 				he = he->m_next;
 			}
 		}
@@ -603,7 +603,7 @@
 
 		Elements newelements;
 		newelements.Resize(newsize);
-		Elements::Iterator i;
+		typename Elements::Iterator i;
 
 		for (i = newelements.Begin(); i != newelements.End(); ++i)
 			*i = 0;
 
Index: src/SOAPBase64.cpp
diff -Nau src/SOAPBase64.cpp.orig src/SOAPBase64.cpp
--- src/SOAPBase64.cpp.orig	2004-08-17 18:28:29 +0200
+++ src/SOAPBase64.cpp	2004-08-17 18:27:48 +0200
@@ -61,9 +61,9 @@
 	for (i = '0'; i <= '9'; ++i)
 		base64decode[i] = 52 + i - '0';
 
-	base64decode['+'] = 62;
-	base64decode['/'] = 63;
-	base64decode[base64pad] = 0;
+	base64decode[(int)'+'] = 62;
+	base64decode[(int)'/'] = 63;
+	base64decode[(int)base64pad] = 0;
 
 	return 1;
 }
Index: include/easysoap/es_conf.h
diff -Nau include/easysoap/es_conf.h.orig include/easysoap/es_conf.h
--- include/easysoap/es_conf.h.orig	2001-11-21 06:59:53 +0100
+++ include/easysoap/es_conf.h	2004-08-17 18:57:37 +0200
@@ -33,11 +33,17 @@
 // want the typename keyword before a type declaration.
 // Some compilers on the other hand don't like it one
 // bit ....
-#ifdef HAVE_TEMPLATE_KEYWORD_QUALIFIER
+//
+// The OpenPKG easysoap package depends on GCC, which
+// definitely allows (even requires) 'typename'.
+// This even seems specified by ISO 14882 as well.
 #define MEMBER_TYPE(T) typename T
-#else
-#define MEMBER_TYPE(T) T
-#endif
+
+// #ifdef HAVE_TEMPLATE_KEYWORD_QUALIFIER
+// #define MEMBER_TYPE(T) typename T
+// #else
+// #define MEMBER_TYPE(T) T
+// #endif
 
 //
 //  Let's set up a macro for compilers that
