]> granicus.if.org Git - libexpat/commitdiff
Fix example programs to compile under XML_UNICODE_WCHAR_T
authorRhodri James <rhodri@kynesim.co.uk>
Thu, 24 Aug 2017 13:16:16 +0000 (14:16 +0100)
committerSebastian Pipping <sebastian@pipping.org>
Sat, 26 Aug 2017 14:57:36 +0000 (16:57 +0200)
expat/examples/elements.c
expat/examples/outline.c

index e3605f3a5dc5aa130164745ab49c256875dcc7b5..56e5756b75cc85986537697350b6011067d62d21 100644 (file)
 #define XML_FMT_INT_MOD "l"
 #endif
 
+#ifdef XML_UNICODE_WCHAR_T
+#include <wchar.h>
+#define XML_FMT_STR "ls"
+#define xcputs(s) do { fputws((s), stdout); putchar('\n'); } while (0)
+#else
+#define XML_FMT_STR "s"
+#define xcputs(s) puts(s)
+#endif
+
 static void XMLCALL
-startElement(void *userData, const char *name, const char **atts)
+startElement(void *userData, const XML_Char *name, const XML_Char **atts)
 {
   int i;
   int *depthPtr = (int *)userData;
@@ -56,12 +65,12 @@ startElement(void *userData, const char *name, const char **atts)
 
   for (i = 0; i < *depthPtr; i++)
     putchar('\t');
-  puts(name);
+  xcputs(name);
   *depthPtr += 1;
 }
 
 static void XMLCALL
-endElement(void *userData, const char *name)
+endElement(void *userData, const XML_Char *name)
 {
   int *depthPtr = (int *)userData;
   (void)name;
@@ -86,7 +95,7 @@ main(int argc, char *argv[])
     done = len < sizeof(buf);
     if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) {
       fprintf(stderr,
-              "%s at line %" XML_FMT_INT_MOD "u\n",
+              "%" XML_FMT_STR " at line %" XML_FMT_INT_MOD "u\n",
               XML_ErrorString(XML_GetErrorCode(parser)),
               XML_GetCurrentLineNumber(parser));
       return 1;
index 0909b75a2e9314a829b340308f07659596e2465c..fd2535d366b04c22a0b9afba7470eb97ed1d9699 100644 (file)
 #define XML_FMT_INT_MOD "l"
 #endif
 
+#ifdef XML_UNICODE_WCHAR_T
+#define XML_FMT_STR "ls"
+#else
+#define XML_FMT_STR "s"
+#endif
+
 #define BUFFSIZE        8192
 
 char Buff[BUFFSIZE];
@@ -52,7 +58,7 @@ char Buff[BUFFSIZE];
 int Depth;
 
 static void XMLCALL
-start(void *data, const char *el, const char **attr)
+start(void *data, const XML_Char *el, const XML_Char **attr)
 {
   int i;
   (void)data;
@@ -60,10 +66,10 @@ start(void *data, const char *el, const char **attr)
   for (i = 0; i < Depth; i++)
     printf("  ");
 
-  printf("%s", el);
+  printf("%" XML_FMT_STR, el);
 
   for (i = 0; attr[i]; i += 2) {
-    printf(" %s='%s'", attr[i], attr[i + 1]);
+    printf(" %" XML_FMT_STR "='%" XML_FMT_STR "'", attr[i], attr[i + 1]);
   }
 
   printf("\n");
@@ -71,7 +77,7 @@ start(void *data, const char *el, const char **attr)
 }
 
 static void XMLCALL
-end(void *data, const char *el)
+end(void *data, const XML_Char *el)
 {
   (void)data;
   (void)el;
@@ -105,7 +111,8 @@ main(int argc, char *argv[])
     done = feof(stdin);
 
     if (XML_Parse(p, Buff, len, done) == XML_STATUS_ERROR) {
-      fprintf(stderr, "Parse error at line %" XML_FMT_INT_MOD "u:\n%s\n",
+      fprintf(stderr,
+              "Parse error at line %" XML_FMT_INT_MOD "u:\n%" XML_FMT_STR "\n",
               XML_GetCurrentLineNumber(p),
               XML_ErrorString(XML_GetErrorCode(p)));
       exit(-1);