--- /dev/null
+/*================================================================
+** Copyright 2000, Clark Cooper
+** All rights reserved.
+**
+** This is free software. You are permitted to copy, distribute, or modify
+** it under the terms of the MIT/X license (contained in the COPYING file
+** with this distribution.)
+*/
+
+#ifndef OS2CONFIG_H
+#define OS2CONFIG_H
+
+#include <memory.h>
+#include <string.h>
+
+#define XML_NS 1
+#define XML_DTD 1
+#define XML_CONTEXT_BYTES 1024
+
+/* we will assume all OS2 platforms are little endian */
+#define BYTEORDER 1234
+
+/* OS2 has memmove() available. */
+#define HAVE_MEMMOVE
+
+#endif /* ndef OS2CONFIG_H */
 
 #include "winconfig.h"
 #include "expat.h"
 
+#elif defined(OS2_32)
+
+#include "os2config.h"
+#include "expat.h"
+
 #elif defined(MACOS_CLASSIC)
 
 #include "macconfig.h"
   if (type->nDefaultAtts == type->allocDefaultAtts) {
     if (type->allocDefaultAtts == 0) {
       type->allocDefaultAtts = 8;
-      type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts 
+      type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts
                             * sizeof(DEFAULT_ATTRIBUTE));
       if (!type->defaultAtts)
         return 0;
     int blockSize = (pool->end - pool->start)*2;
     pool->blocks = (BLOCK *)
       pool->mem->realloc_fcn(pool->blocks,
-                            (offsetof(BLOCK, s)
-                             + blockSize * sizeof(XML_Char)));
+                             (offsetof(BLOCK, s)
+                             + blockSize * sizeof(XML_Char)));
     if (pool->blocks == NULL)
       return XML_FALSE;
     pool->blocks->size = blockSize;
     else
       blockSize *= 2;
     tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s)
-                                       + blockSize * sizeof(XML_Char));
+                                         + blockSize * sizeof(XML_Char));
     if (!tem)
       return XML_FALSE;
     tem->size = blockSize;
 
 
 #ifdef COMPILED_FROM_DSP
 #include "winconfig.h"
+#elif defined(OS2_32)
+#include "os2config.h"
 #elif defined(MACOS_CLASSIC)
 #include "macconfig.h"
 #else
 ENCODING *
 XmlInitUnknownEncoding(void *mem,
                        int *table,
-                       CONVERTER convert, 
+                       CONVERTER convert,
                        void *userData)
 {
   int i;
 ENCODING *
 XmlInitUnknownEncodingNS(void *mem,
                          int *table,
-                         CONVERTER convert, 
+                         CONVERTER convert,
                          void *userData)
 {
   ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData);