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

Diff for /mandoc/eqn.c between version 1.68 and 1.70

version 1.68, 2017/06/23 00:30:38 version 1.70, 2017/06/26 11:04:47
Line 1 
Line 1 
 /*      $Id$  /*      $Id$ */
 /*  /*
  * Copyright (c) 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
Line 722  static enum rofferr
Line 722  static enum rofferr
 eqn_parse(struct eqn_node *ep, struct eqn_box *parent)  eqn_parse(struct eqn_node *ep, struct eqn_box *parent)
 {  {
         char             sym[64];          char             sym[64];
         struct eqn_box  *cur, *nbox;          struct eqn_box  *cur, *nbox, *split;
         const char      *cp, *cpn, *start;          const char      *cp, *cpn, *start;
         char            *p;          char            *p;
         size_t           sz;          size_t           sz;
Line 1118  this_tok:
Line 1118  this_tok:
                                 break;                                  break;
                         cpn = p - 1;                          cpn = p - 1;
                         ccln = CCL_LET;                          ccln = CCL_LET;
                           split = NULL;
                         for (;;) {                          for (;;) {
                                 /* Advance to next character. */                                  /* Advance to next character. */
                                 cp = cpn++;                                  cp = cpn++;
Line 1139  this_tok:
Line 1140  this_tok:
                                         break;                                          break;
                                 if (ccln == ccl)                                  if (ccln == ccl)
                                         continue;                                          continue;
                                 /* Boundary found, add a new box. */                                  /* Boundary found, split the text. */
                                   if (parent->args == parent->expectargs) {
                                           /* Remove the text from the tree. */
                                           if (cur->prev == NULL)
                                                   parent->first = cur->next;
                                           else
                                                   cur->prev->next = NULL;
                                           parent->last = cur->prev;
                                           parent->args--;
                                           /* Set up a list instead. */
                                           split = eqn_box_alloc(ep, parent);
                                           split->type = EQN_LIST;
                                           /* Insert the word into the list. */
                                           split->first = split->last = cur;
                                           cur->parent = split;
                                           cur->prev = NULL;
                                           parent = split;
                                   }
                                   /* Append a new text box. */
                                 nbox = eqn_box_alloc(ep, parent);                                  nbox = eqn_box_alloc(ep, parent);
                                 nbox->type = EQN_TEXT;                                  nbox->type = EQN_TEXT;
                                 nbox->text = mandoc_strdup(cpn);                                  nbox->text = mandoc_strdup(cpn);
Line 1154  this_tok:
Line 1173  this_tok:
                                 cpn = p - 1;                                  cpn = p - 1;
                                 ccln = CCL_LET;                                  ccln = CCL_LET;
                         }                          }
                           if (split != NULL)
                                   parent = split->parent;
                         break;                          break;
                 }                  }
                 /*                  /*

Legend:
Removed from v.1.68  
changed lines
  Added in v.1.70

CVSweb