[BACK]Return to mdoc.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/mdoc.c between version 1.266 and 1.267

version 1.266, 2017/06/07 20:58:49 version 1.267, 2017/06/17 13:06:16
Line 179  static int
Line 179  static int
 mdoc_ptext(struct roff_man *mdoc, int line, char *buf, int offs)  mdoc_ptext(struct roff_man *mdoc, int line, char *buf, int offs)
 {  {
         struct roff_node *n;          struct roff_node *n;
           const char       *cp, *sp;
         char             *c, *ws, *end;          char             *c, *ws, *end;
   
         n = mdoc->last;          n = mdoc->last;
Line 244  mdoc_ptext(struct roff_man *mdoc, int line, char *buf,
Line 245  mdoc_ptext(struct roff_man *mdoc, int line, char *buf,
                 mandoc_msg(MANDOCERR_SPACE_EOL, mdoc->parse,                  mandoc_msg(MANDOCERR_SPACE_EOL, mdoc->parse,
                     line, (int)(ws-buf), NULL);                      line, (int)(ws-buf), NULL);
   
           /*
            * Blank lines are allowed in no-fill mode
            * and cancel preceding \c,
            * but add a single vertical space elsewhere.
            */
   
         if (buf[offs] == '\0' && ! (mdoc->flags & MDOC_LITERAL)) {          if (buf[offs] == '\0' && ! (mdoc->flags & MDOC_LITERAL)) {
                   switch (mdoc->last->type) {
                   case ROFFT_TEXT:
                           sp = mdoc->last->string;
                           cp = end = strchr(sp, '\0') - 2;
                           if (cp < sp || cp[0] != '\\' || cp[1] != 'c')
                                   break;
                           while (cp > sp && cp[-1] == '\\')
                                   cp--;
                           if ((end - cp) % 2)
                                   break;
                           *end = '\0';
                           return 1;
                   default:
                           break;
                   }
                 mandoc_msg(MANDOCERR_FI_BLANK, mdoc->parse,                  mandoc_msg(MANDOCERR_FI_BLANK, mdoc->parse,
                     line, (int)(c - buf), NULL);                      line, (int)(c - buf), NULL);
   
                 /*  
                  * Insert a `sp' in the case of a blank line.  Technically,  
                  * blank lines aren't allowed, but enough manuals assume this  
                  * behaviour that we want to work around it.  
                  */  
                 roff_elem_alloc(mdoc, line, offs, ROFF_sp);                  roff_elem_alloc(mdoc, line, offs, ROFF_sp);
                 mdoc->last->flags |= NODE_VALID | NODE_ENDED;                  mdoc->last->flags |= NODE_VALID | NODE_ENDED;
                 mdoc->next = ROFF_NEXT_SIBLING;                  mdoc->next = ROFF_NEXT_SIBLING;

Legend:
Removed from v.1.266  
changed lines
  Added in v.1.267

CVSweb