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

Diff for /mandoc/man.c between version 1.108 and 1.113

version 1.108, 2011/07/18 07:46:41 version 1.113, 2011/11/07 01:24:40
Line 320  int
Line 320  int
 man_word_alloc(struct man *m, int line, int pos, const char *word)  man_word_alloc(struct man *m, int line, int pos, const char *word)
 {  {
         struct man_node *n;          struct man_node *n;
         size_t           sv, len;  
   
         len = strlen(word);  
   
         n = man_node_alloc(m, line, pos, MAN_TEXT, MAN_MAX);          n = man_node_alloc(m, line, pos, MAN_TEXT, MAN_MAX);
         n->string = mandoc_malloc(len + 1);          n->string = roff_strdup(m->roff, word);
         sv = strlcpy(n->string, word, len + 1);  
   
         /* Prohibit truncation. */  
         assert(sv < len + 1);  
   
         if ( ! man_node_append(m, n))          if ( ! man_node_append(m, n))
                 return(0);                  return(0);
   
Line 371  man_addeqn(struct man *m, const struct eqn *ep)
Line 364  man_addeqn(struct man *m, const struct eqn *ep)
   
         assert( ! (MAN_HALT & m->flags));          assert( ! (MAN_HALT & m->flags));
   
         n = man_node_alloc(m, ep->line, ep->pos, MAN_EQN, MAN_MAX);          n = man_node_alloc(m, ep->ln, ep->pos, MAN_EQN, MAN_MAX);
         n->eqn = ep;          n->eqn = ep;
   
         if ( ! man_node_append(m, n))          if ( ! man_node_append(m, n))
                 return(0);                  return(0);
   
         m->next = MAN_NEXT_SIBLING;          m->next = MAN_NEXT_SIBLING;
         return(man_descope(m, ep->line, ep->pos));          return(man_descope(m, ep->ln, ep->pos));
 }  }
   
 int  int
Line 550  man_pmacro(struct man *m, int ln, char *buf, int offs)
Line 543  man_pmacro(struct man *m, int ln, char *buf, int offs)
                         n = n->parent;                          n = n->parent;
   
                 mandoc_vmsg(MANDOCERR_LINESCOPE, m->parse, n->line,                  mandoc_vmsg(MANDOCERR_LINESCOPE, m->parse, n->line,
                                 n->pos, "%s", man_macronames[n->tok]);                      n->pos, "%s breaks %s", man_macronames[tok],
                       man_macronames[n->tok]);
   
                 man_node_delete(m, n);                  man_node_delete(m, n);
                 m->flags &= ~MAN_ELINE;                  m->flags &= ~MAN_ELINE;
         }          }
   
         /*          /*
            * Remove prior BLINE macro that is being clobbered.
            */
           if ((m->flags & MAN_BLINE) &&
               (MAN_BSCOPE & man_macros[tok].flags)) {
                   n = m->last;
                   assert(MAN_TEXT != n->type);
   
                   /* Remove element that didn't end BLINE, if any. */
   
                   if ( ! (MAN_BSCOPE & man_macros[n->tok].flags))
                           n = n->parent;
   
                   assert(MAN_HEAD == n->type);
                   n = n->parent;
                   assert(MAN_BLOCK == n->type);
                   assert(MAN_SCOPED & man_macros[n->tok].flags);
   
                   mandoc_vmsg(MANDOCERR_LINESCOPE, m->parse, n->line,
                       n->pos, "%s breaks %s", man_macronames[tok],
                       man_macronames[n->tok]);
   
                   man_node_delete(m, n);
                   m->flags &= ~MAN_BLINE;
           }
   
           /*
          * Save the fact that we're in the next-line for a block.  In           * Save the fact that we're in the next-line for a block.  In
          * this way, embedded roff instructions can "remember" state           * this way, embedded roff instructions can "remember" state
          * when they exit.           * when they exit.
Line 654  man_node_unlink(struct man *m, struct man_node *n)
Line 674  man_node_unlink(struct man *m, struct man_node *n)
   
         if (m && m->first == n)          if (m && m->first == n)
                 m->first = NULL;                  m->first = NULL;
   }
   
   const struct mparse *
   man_mparse(const struct man *m)
   {
   
           assert(m && m->parse);
           return(m->parse);
 }  }

Legend:
Removed from v.1.108  
changed lines
  Added in v.1.113

CVSweb