Re: Expat 2.0 pre-release
Karl Waclawek <[email protected]>
| Newsgroups | gmane.text.xml.expat.general |
|---|---|
| Message-ID | <[email protected]> |
[email protected] wrote: >I wonder, why I don't see any define for XML_LARGE_SIZE to __int64 >under windows. As far as I know, at least VC++ 6.0 don't know long >long, but has __int64 (you're much more the expert on this plattform, >so please enlighten me, if I miss the obvious). If I'm right (I doubt >it), then XML_LARGE_SIZE support under windows would be only possible >after editing expat_external.h > > Try this patch (against CVS or the pre-release).. It works for MS VC++ 6.0, and takes care (hopefully) of your printf issues: (I mean for everyone to try it, not just Rolf): === begin patch === Index: lib/expat_external.h =================================================================== RCS file: /cvsroot/expat/expat/lib/expat_external.h,v retrieving revision 1.4 diff -u -r1.4 expat_external.h --- lib/expat_external.h 23 Dec 2005 14:45:27 -0000 1.4 +++ lib/expat_external.h 23 Dec 2005 21:41:16 -0000 @@ -95,8 +95,13 @@ #endif /* XML_UNICODE */ #ifdef XML_LARGE_SIZE /* Use large integers for counts and positions. */ +#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 +typedef __int64 XML_Index; +typedef unsigned __int64 XML_Size; +#else typedef long long XML_Index; typedef unsigned long long XML_Size; +#endif #else typedef long XML_Index; typedef unsigned long XML_Size; Index: lib/xmltok_impl.c =================================================================== RCS file: /cvsroot/expat/expat/lib/xmltok_impl.c,v retrieving revision 1.11 diff -u -r1.11 xmltok_impl.c --- lib/xmltok_impl.c 28 Nov 2005 20:02:36 -0000 1.11 +++ lib/xmltok_impl.c 24 Dec 2005 00:18:49 -0000 @@ -1750,7 +1750,7 @@ LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) #undef LEAD_CASE case BT_LF: - pos->columnNumber = (unsigned)-1; + pos->columnNumber = (XML_Size)-1; pos->lineNumber++; ptr += MINBPC(enc); break; @@ -1759,7 +1759,7 @@ ptr += MINBPC(enc); if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF) ptr += MINBPC(enc); - pos->columnNumber = (unsigned)-1; + pos->columnNumber = (XML_Size)-1; break; default: ptr += MINBPC(enc); Index: xmlwf/xmlfile.c =================================================================== RCS file: /cvsroot/expat/expat/xmlwf/xmlfile.c,v retrieving revision 1.14 diff -u -r1.14 xmlfile.c --- xmlwf/xmlfile.c 10 Aug 2004 18:13:47 -0000 1.14 +++ xmlwf/xmlfile.c 24 Dec 2005 00:07:28 -0000 @@ -53,7 +53,7 @@ enum XML_Error code = XML_GetErrorCode(parser); const XML_Char *message = XML_ErrorString(code); if (message) - ftprintf(stdout, T("%s:%d:%d: %s\n"), + ftprintf(stdout, T("%s:%" XML_FMT_INT_MOD "u:%" XML_FMT_INT_MOD "u: %s\n"), filename, XML_GetErrorLineNumber(parser), XML_GetErrorColumnNumber(parser), Index: xmlwf/xmlfile.h =================================================================== RCS file: /cvsroot/expat/expat/xmlwf/xmlfile.h,v retrieving revision 1.7 diff -u -r1.7 xmlfile.h --- xmlwf/xmlfile.h 1 Jul 2002 15:18:34 -0000 1.7 +++ xmlwf/xmlfile.h 23 Dec 2005 22:53:40 -0000 @@ -5,6 +5,16 @@ #define XML_MAP_FILE 01 #define XML_EXTERNAL_ENTITIES 02 +#ifdef XML_LARGE_SIZE +#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 +#define XML_FMT_INT_MOD "I64" +#else +#define XML_FMT_INT_MOD "ll" +#endif +#else +#define XML_FMT_INT_MOD "l" +#endif + extern int XML_ProcessFile(XML_Parser parser, const XML_Char *filename, unsigned flags); Index: xmlwf/xmlwf.c =================================================================== RCS file: /cvsroot/expat/expat/xmlwf/xmlwf.c,v retrieving revision 1.67 diff -u -r1.67 xmlwf.c --- xmlwf/xmlwf.c 10 Aug 2004 18:18:25 -0000 1.67 +++ xmlwf/xmlwf.c 24 Dec 2005 00:10:13 -0000 @@ -7,6 +7,13 @@ #include <stddef.h> #include <string.h> +#ifdef COMPILED_FROM_DSP +#include "winconfig.h" +#else +#ifdef HAVE_EXPAT_CONFIG_H +#include "expat_config.h" +#endif +#endif #include "expat.h" #include "codepage.h" #include "xmlfile.h" @@ -305,7 +312,8 @@ if (uri) ftprintf((FILE *)XML_GetUserData(parser), T(" uri=\"%s\""), uri); ftprintf((FILE *)XML_GetUserData(parser), - T(" byte=\"%ld\" nbytes=\"%d\" line=\"%d\" col=\"%d\""), + T(" byte=\"%" XML_FMT_INT_MOD "d\" nbytes=\"%d\" \ + line=\"%" XML_FMT_INT_MOD "u\" col=\"%" XML_FMT_INT_MOD "u\""), XML_GetCurrentByteIndex(parser), XML_GetCurrentByteCount(parser), XML_GetCurrentLineNumber(parser), === end patch === Karl