]> git.cameronkatri.com Git - mandoc.git/blobdiff - mandoc.c
Re-admit the simple case of `.ig' that works with groff's stranger invocations.
[mandoc.git] / mandoc.c
index 37216da61ef0540408901a1a9576b8e3c62df014..3ade07877ac1153edd0d083c674688bb074f0771 100644 (file)
--- a/mandoc.c
+++ b/mandoc.c
@@ -1,4 +1,4 @@
-/*     $Id: mandoc.c,v 1.13 2010/05/14 14:09:13 kristaps Exp $ */
+/*     $Id: mandoc.c,v 1.15 2010/05/15 07:01:51 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -308,19 +308,35 @@ mandoc_eos(const char *p, size_t sz)
        if (0 == sz)
                return(0);
 
-       switch (p[(int)sz - 1]) {
-       case ('.'):
-               /* Escaped periods. */
-               if (sz > 1 && '\\' == p[(int)sz - 2])
+       /*
+        * End-of-sentence recognition must include situations where
+        * some symbols, such as `)', allow prior EOS punctuation to
+        * propogate outward.
+        */
+
+       for ( ; sz; sz--) {
+               switch (p[(int)sz - 1]) {
+               case ('\"'):
+                       /* FALLTHROUGH */
+               case ('\''):
+                       /* FALLTHROUGH */
+               case (']'):
+                       /* FALLTHROUGH */
+               case (')'):
+                       break;
+               case ('.'):
+                       /* Escaped periods. */
+                       if (sz > 1 && '\\' == p[(int)sz - 2])
+                               return(0);
+                       /* FALLTHROUGH */
+               case ('!'):
+                       /* FALLTHROUGH */
+               case ('?'):
+                       return(1);
+               default:
                        return(0);
-               /* FALLTHROUGH */
-       case ('!'):
-               /* FALLTHROUGH */
-       case ('?'):
-               break;
-       default:
-               return(0);
+               }
        }
 
-       return(1);
+       return(0);
 }