summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstanley lieber <stanley.lieber@gmail.com>2014-03-07 11:44:05 -0500
committerstanley lieber <stanley.lieber@gmail.com>2014-03-07 11:44:05 -0500
commit0c005b510506d341e7a8134a4eb2ad48fdbc8168 (patch)
treef842adbfb7d58e606e517d2769b51e4cd97c8376
parentf88d0c372d9e23c82b6b89f85690d26959d83441 (diff)
downloadplan9front-0c005b510506d341e7a8134a4eb2ad48fdbc8168.tar.xz
mothra: handle blank lines inside <pre> tags
-rw-r--r--sys/src/cmd/mothra/rdhtml.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/sys/src/cmd/mothra/rdhtml.c b/sys/src/cmd/mothra/rdhtml.c
index 88bb4f853..cf13c213f 100644
--- a/sys/src/cmd/mothra/rdhtml.c
+++ b/sys/src/cmd/mothra/rdhtml.c
@@ -540,9 +540,9 @@ int pl_gettag(Hglob *g){
return ENDTAG;
}
/*
- * The next token is a tag, an end tag or a sequence of
- * non-white characters.
- * If inside <pre>, newlines are converted to <br> and spaces are preserved.
+ * The next token is a tag, an end tag or a sequence of non-white
+ * characters. If inside <pre>, single newlines are converted to <br>,
+ * double newlines are converted to <p> and spaces are preserved.
* Otherwise, spaces and newlines are noted and discarded.
*/
int pl_gettoken(Hglob *g){
@@ -552,8 +552,15 @@ int pl_gettoken(Hglob *g){
case STAG: return pl_gettag(g);
case EOF: return EOF;
case '\n':
- pl_tagparse(g, "br");
- return TAG;
+ switch(c=pl_nextc(g)){
+ case '\n':
+ pl_tagparse(g, "p");
+ return TAG;
+ default:
+ pl_tagparse(g, "br");
+ pl_putback(g, c);
+ return TAG;
+ }
default:
tokp=g->token;
while(c=='\t'){