From 96a610c1e5d44105f5ec7b020df323caae3cf7b1 Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Sun, 17 May 2009 05:20:52 +0000 Subject: [PATCH] Ignore (strip) BOMs in UTF-8 input. --- mxml-file.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/mxml-file.c b/mxml-file.c index 3d9f955..4cc9575 100644 --- a/mxml-file.c +++ b/mxml-file.c @@ -842,11 +842,12 @@ mxml_fd_getc(void *p, /* I - File descriptor buffer */ return (EOF); } - if (ch < 0xfeff) - { - mxml_error("Invalid BOM in UTF-8 XML!"); - return (EOF); - } + /* + * Ignore (strip) Byte Order Mark (BOM)... + */ + + if (ch == 0xfeff) + return (mxml_fd_getc(p, encoding)); } else if ((ch & 0xf8) == 0xf0) { @@ -1231,11 +1232,12 @@ mxml_file_getc(void *p, /* I - Pointer to file */ return (EOF); } - if (ch < 0xfeff) - { - mxml_error("Invalid BOM in UTF-8 XML!"); - return (EOF); - } + /* + * Ignore (strip) Byte Order Mark (BOM)... + */ + + if (ch == 0xfeff) + return (mxml_file_getc(p, encoding)); } else if ((ch & 0xf8) == 0xf0) { @@ -2430,11 +2432,12 @@ mxml_string_getc(void *p, /* I - Pointer to file */ return (EOF); } - if (ch < 0xfeff) - { - mxml_error("Invalid BOM in UTF-8 XML!"); - return (EOF); - } + /* + * Ignore (strip) Byte Order Mark (BOM)... + */ + + if (ch == 0xfeff) + return (mxml_string_getc(p, encoding)); #if DEBUG > 1 printf("mxml_string_getc: %c (0x%04x)\n", ch < ' ' ? '.' : ch, ch);