]> git.cameronkatri.com Git - mandoc.git/blobdiff - read.c
Don't silently skip non-ASCII characters, but replace them with ``?''.
[mandoc.git] / read.c
diff --git a/read.c b/read.c
index 2e66757b9543ba85c102ab1e59a8176664d08108..6dab8e0a849d98db5ba44554bc5f629fe6e1746a 100644 (file)
--- a/read.c
+++ b/read.c
@@ -1,4 +1,4 @@
-/*     $Id: read.c,v 1.26 2011/11/07 01:24:40 schwarze Exp $ */
+/*     $Id: read.c,v 1.27 2012/02/05 16:46:15 joerg Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org>
@@ -325,9 +325,9 @@ mparse_buf_r(struct mparse *curp, struct buf blk, int start)
                         * Warn about bogus characters.  If you're using
                         * non-ASCII encoding, you're screwing your
                         * readers.  Since I'd rather this not happen,
-                        * I'll be helpful and drop these characters so
-                        * we don't display gibberish.  Note to manual
-                        * writers: use special characters.
+                        * I'll be helpful and replace these characters
+                        * with "?", so we don't display gibberish.
+                        * Note to manual writers: use special characters.
                         */
 
                        c = (unsigned char) blk.buf[i];
@@ -335,8 +335,11 @@ mparse_buf_r(struct mparse *curp, struct buf blk, int start)
                        if ( ! (isascii(c) && 
                                        (isgraph(c) || isblank(c)))) {
                                mandoc_msg(MANDOCERR_BADCHAR, curp,
-                                               curp->line, pos, "ignoring byte");
+                                               curp->line, pos, NULL);
                                i++;
+                               if (pos >= (int)ln.sz)
+                                       resize_buf(&ln, 256);
+                               ln.buf[pos++] = '?';
                                continue;
                        }