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

Diff for /mandoc/roff.c between version 1.280 and 1.285

version 1.280, 2015/10/15 23:35:55 version 1.285, 2017/01/10 13:47:00
Line 991  roff_node_alloc(struct roff_man *man, int line, int po
Line 991  roff_node_alloc(struct roff_man *man, int line, int po
         n->sec = man->lastsec;          n->sec = man->lastsec;
   
         if (man->flags & MDOC_SYNOPSIS)          if (man->flags & MDOC_SYNOPSIS)
                 n->flags |= MDOC_SYNPRETTY;                  n->flags |= NODE_SYNPRETTY;
         else          else
                 n->flags &= ~MDOC_SYNPRETTY;                  n->flags &= ~NODE_SYNPRETTY;
         if (man->flags & MDOC_NEWLINE)          if (man->flags & MDOC_NEWLINE)
                 n->flags |= MDOC_LINE;                  n->flags |= NODE_LINE;
         man->flags &= ~MDOC_NEWLINE;          man->flags &= ~MDOC_NEWLINE;
   
         return n;          return n;
Line 1007  roff_node_append(struct roff_man *man, struct roff_nod
Line 1007  roff_node_append(struct roff_man *man, struct roff_nod
   
         switch (man->next) {          switch (man->next) {
         case ROFF_NEXT_SIBLING:          case ROFF_NEXT_SIBLING:
                   if (man->last->next != NULL) {
                           n->next = man->last->next;
                           man->last->next->prev = n;
                   } else
                           man->last->parent->last = n;
                 man->last->next = n;                  man->last->next = n;
                 n->prev = man->last;                  n->prev = man->last;
                 n->parent = man->last->parent;                  n->parent = man->last->parent;
Line 1014  roff_node_append(struct roff_man *man, struct roff_nod
Line 1019  roff_node_append(struct roff_man *man, struct roff_nod
         case ROFF_NEXT_CHILD:          case ROFF_NEXT_CHILD:
                 man->last->child = n;                  man->last->child = n;
                 n->parent = man->last;                  n->parent = man->last;
                   n->parent->last = n;
                 break;                  break;
         default:          default:
                 abort();                  abort();
         }          }
         n->parent->nchild++;          man->last = n;
         n->parent->last = n;  
   
         /*  
          * Copy over the normalised-data pointer of our parent.  Not  
          * everybody has one, but copying a null pointer is fine.  
          */  
   
         switch (n->type) {          switch (n->type) {
         case ROFFT_BODY:  
                 if (n->end != ENDBODY_NOT)  
                         break;  
                 /* FALLTHROUGH */  
         case ROFFT_TAIL:  
         case ROFFT_HEAD:          case ROFFT_HEAD:
                 n->norm = n->parent->norm;  
                 break;  
         default:  
                 break;  
         }  
   
         if (man->macroset == MACROSET_MDOC)  
                 mdoc_valid_pre(man, n);  
   
         switch (n->type) {  
         case ROFFT_HEAD:  
                 assert(n->parent->type == ROFFT_BLOCK);  
                 n->parent->head = n;                  n->parent->head = n;
                 break;                  break;
         case ROFFT_BODY:          case ROFFT_BODY:
                 if (n->end)                  if (n->end != ENDBODY_NOT)
                         break;                          return;
                 assert(n->parent->type == ROFFT_BLOCK);  
                 n->parent->body = n;                  n->parent->body = n;
                 break;                  break;
         case ROFFT_TAIL:          case ROFFT_TAIL:
                 assert(n->parent->type == ROFFT_BLOCK);  
                 n->parent->tail = n;                  n->parent->tail = n;
                 break;                  break;
         default:          default:
                 break;                  return;
         }          }
         man->last = n;  
           /*
            * Copy over the normalised-data pointer of our parent.  Not
            * everybody has one, but copying a null pointer is fine.
            */
   
           n->norm = n->parent->norm;
           assert(n->parent->type == ROFFT_BLOCK);
 }  }
   
 void  void
Line 1072  roff_word_alloc(struct roff_man *man, int line, int po
Line 1060  roff_word_alloc(struct roff_man *man, int line, int po
         n->string = roff_strdup(man->roff, word);          n->string = roff_strdup(man->roff, word);
         roff_node_append(man, n);          roff_node_append(man, n);
         if (man->macroset == MACROSET_MDOC)          if (man->macroset == MACROSET_MDOC)
                 mdoc_valid_post(man);                  n->flags |= NODE_VALID | NODE_ENDED;
         else          else
                 man_valid_post(man);                  n->flags |= NODE_VALID;
         man->next = ROFF_NEXT_SIBLING;          man->next = ROFF_NEXT_SIBLING;
 }  }
   
Line 1144  roff_addeqn(struct roff_man *man, const struct eqn *eq
Line 1132  roff_addeqn(struct roff_man *man, const struct eqn *eq
         n = roff_node_alloc(man, eqn->ln, eqn->pos, ROFFT_EQN, TOKEN_NONE);          n = roff_node_alloc(man, eqn->ln, eqn->pos, ROFFT_EQN, TOKEN_NONE);
         n->eqn = eqn;          n->eqn = eqn;
         if (eqn->ln > man->last->line)          if (eqn->ln > man->last->line)
                 n->flags |= MDOC_LINE;                  n->flags |= NODE_LINE;
         roff_node_append(man, n);          roff_node_append(man, n);
         man->next = ROFF_NEXT_SIBLING;          man->next = ROFF_NEXT_SIBLING;
 }  }
Line 1160  roff_addtbl(struct roff_man *man, const struct tbl_spa
Line 1148  roff_addtbl(struct roff_man *man, const struct tbl_spa
         n->span = tbl;          n->span = tbl;
         roff_node_append(man, n);          roff_node_append(man, n);
         if (man->macroset == MACROSET_MDOC)          if (man->macroset == MACROSET_MDOC)
                 mdoc_valid_post(man);                  n->flags |= NODE_VALID | NODE_ENDED;
         else          else
                 man_valid_post(man);                  n->flags |= NODE_VALID;
         man->next = ROFF_NEXT_SIBLING;          man->next = ROFF_NEXT_SIBLING;
 }  }
   
Line 1180  roff_node_unlink(struct roff_man *man, struct roff_nod
Line 1168  roff_node_unlink(struct roff_man *man, struct roff_nod
         /* Adjust parent. */          /* Adjust parent. */
   
         if (n->parent != NULL) {          if (n->parent != NULL) {
                 n->parent->nchild--;  
                 if (n->parent->child == n)                  if (n->parent->child == n)
                         n->parent->child = n->next;                          n->parent->child = n->next;
                 if (n->parent->last == n)                  if (n->parent->last == n)
Line 1222  roff_node_delete(struct roff_man *man, struct roff_nod
Line 1209  roff_node_delete(struct roff_man *man, struct roff_nod
   
         while (n->child != NULL)          while (n->child != NULL)
                 roff_node_delete(man, n->child);                  roff_node_delete(man, n->child);
         assert(n->nchild == 0);  
         roff_node_unlink(man, n);          roff_node_unlink(man, n);
         roff_node_free(n);          roff_node_free(n);
 }  }

Legend:
Removed from v.1.280  
changed lines
  Added in v.1.285

CVSweb