--- entities.c 2016-05-23 12:01:08.000000000 +0200 +++ entities-fix.c 2016-07-21 11:05:12.000000000 +0200 @@ -6,6 +6,8 @@ * daniel veillard com */ +/* To avoid EBCDIC trouble when parsing on zOS */ +#if defined(__MVS__) +#pragma convert("ISO8859-1") +#endif #define IN_LIBXML #include "libxml.h" --- parser.c 2016-07-18 16:13:29.000000000 +0200 +++ parser-fix.c 2016-07-21 11:04:33.000000000 +0200 @@ -30,6 +30,8 @@ * daniel veillard com */ +/* To avoid EBCDIC trouble when parsing on zOS */ +#if defined(__MVS__) +#pragma convert("ISO8859-1") +#endif #define IN_LIBXML #include "libxml.h" --- relaxng.c 2016-05-23 12:01:08.000000000 +0200 +++ relaxng-fix.c 2016-07-21 11:06:28.000000000 +0200 @@ -2088,6 +2088,7 @@ const xmlChar * arg2) { char msg[1000]; + xmlChar *result; if (arg1 == NULL) arg1 = BAD_CAST ""; @@ -2215,7 +2216,7 @@ snprintf(msg, 1000, "Unknown error code %d\n", err); } msg[1000 - 1] = 0; - xmlChar *result = xmlCharStrdup(msg); + result = xmlCharStrdup(msg); return (xmlEscapeFormatString(&result)); } --- tree.c 2016-07-21 11:05:19.000000000 +0200 +++ tree-fix.c 2016-07-21 11:02:10.000000000 +0200 @@ -10,8 +10,6 @@ * */ +/* To avoid EBCDIC trouble when parsing on zOS */ +#pragma convert("ISO8859-1") +#endif #define IN_LIBXML #include "libxml.h" --- xmlIO.c 2016-07-15 13:42:07.000000000 +0200 +++ xmlIO-fix.c 2017-03-07 07:33:52.000000000 +0100 @@ -926,8 +926,11 @@ #endif } - if (!xmlCheckFilename(path)) + /* Do not check DDNAME on zOS ! */ + if(!__MVS__) { + if (!xmlCheckFilename(path)) return(NULL); + } #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) fd = xmlWrapOpen(path, 0); @@ -1004,6 +1007,8 @@ #if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) fd = xmlWrapOpen(path, 1); +#elif(__MVS__) + fd = fopen(path, "w"); #else fd = fopen(path, "wb"); #endif /* WIN32 */ --- xmlmodule.c 2016-05-06 18:28:04.000000000 +0200 +++ xmlmodule-fix.c 2016-07-21 11:08:24.000000000 +0200 @@ -8,6 +8,9 @@ * http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html */ +/* In order RTLD_GLOBAL and RTLD_NOW to be defined on zOS */ +#define _UNIX03_SOURCE + #define IN_LIBXML #include "libxml.h" --- xmlschemas.c 2016-05-23 12:01:08.000000000 +0200 +++ xmlschemas-fix.c 2016-07-21 11:05:49.000000000 +0200 @@ -44,6 +44,9 @@ * but is done here due to performance. Move it to an other layer * is schema construction via an API is implemented. */ + +/* To avoid EBCDIC trouble when parsing on zOS */ +#if defined(__MVS__) +#pragma convert("ISO8859-1") +#endif #define IN_LIBXML #include "libxml.h" @@ -3168,8 +3171,8 @@ "valid."); } if (expected) { - msg = xmlStrcat(msg, BAD_CAST " Expected is '"); xmlChar *expectedEscaped = xmlCharStrdup(expected); + msg = xmlStrcat(msg, BAD_CAST " Expected is '"); msg = xmlStrcat(msg, xmlEscapeFormatString(&expectedEscaped)); FREE_AND_NULL(expectedEscaped); msg = xmlStrcat(msg, BAD_CAST "'.\n"); --- xmlschemastypes.c 2016-05-06 18:28:04.000000000 +0200 +++ xmlschemastypes-fix.c 2016-07-21 11:05:00.000000000 +0200 @@ -7,6 +7,8 @@ * Daniel Veillard */ +/* To avoid EBCDIC trouble when parsing on zOS */ +#if defined(__MVS__) +#pragma convert("ISO8859-1") +#endif #define IN_LIBXML #include "libxml.h" --- xpath.c 2017-07-27 13:12:01.000000000 +0200 +++ xpath-fix.c 2017-07-27 14:13:44.000000000 +0200 @@ -14,6 +14,10 @@ * */ +#if defined(__MVS__) +#pragma convert("ISO8859-1") +#endif + #define IN_LIBXML #include "libxml.h" --- xpointer.c 2016-05-23 12:01:08.000000000 +0200 +++ xpointer-fix.c 2017-07-27 14:17:04.000000000 +0200 @@ -14,6 +14,10 @@ * daniel veillard com */ +#if defined(__MVS__) +#pragma convert("ISO8859-1") +#endif + #define IN_LIBXML #include "libxml.h"