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

Diff for /mandoc/man.c between version 1.17 and 1.27

version 1.17, 2009/04/12 19:30:45 version 1.27, 2009/07/07 09:35:40
Line 1 
Line 1 
 /* $Id$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@openbsd.org>   * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the   * purpose with or without fee is hereby granted, provided that the above
  * above copyright notice and this permission notice appear in all   * copyright notice and this permission notice appear in all copies.
  * copies.  
  *   *
  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * PERFORMANCE OF THIS SOFTWARE.  
  */   */
 #include <assert.h>  #include <assert.h>
 #include <ctype.h>  #include <ctype.h>
Line 25 
Line 23 
   
 #include "libman.h"  #include "libman.h"
   
   const   char *const __man_merrnames[WERRMAX] = {
           "invalid character", /* WNPRINT */
           "system: malloc error", /* WNMEM */
           "invalid manual section", /* WMSEC */
           "invalid date format", /* WDATE */
           "scope of prior line violated", /* WLNSCOPE */
           "trailing whitespace", /* WTSPACE */
           "unterminated quoted parameter", /* WTQUOTE */
           "document has no body", /* WNODATA */
           "document has no title/section", /* WNOTITLE */
           "invalid escape sequence", /* WESCAPE */
   };
   
 const   char *const __man_macronames[MAN_MAX] = {  const   char *const __man_macronames[MAN_MAX] = {
         "\\\"",         "TH",           "SH",           "SS",          "br",           "TH",           "SH",           "SS",
         "TP",           "LP",           "PP",           "P",          "TP",           "LP",           "PP",           "P",
         "IP",           "HP",           "SM",           "SB",          "IP",           "HP",           "SM",           "SB",
         "BI",           "IB",           "BR",           "RB",          "BI",           "IB",           "BR",           "RB",
         "R",            "B",            "I",            "IR",          "R",            "B",            "I",            "IR",
         "RI",           "br",           "na",           "i"          "RI",           "na",           "i"
         };          };
   
 const   char * const *man_macronames = __man_macronames;  const   char * const *man_macronames = __man_macronames;
Line 184  man_node_append(struct man *man, struct man_node *p)
Line 195  man_node_append(struct man *man, struct man_node *p)
                 abort();                  abort();
                 /* NOTREACHED */                  /* NOTREACHED */
         }          }
   
           p->parent->nchild++;
   
         man->last = p;          man->last = p;
   
Line 252  man_node_free(struct man_node *p)
Line 265  man_node_free(struct man_node *p)
   
         if (p->string)          if (p->string)
                 free(p->string);                  free(p->string);
           if (p->parent)
                   p->parent->nchild--;
         free(p);          free(p);
 }  }
   
Line 265  man_node_freelist(struct man_node *p)
Line 280  man_node_freelist(struct man_node *p)
         if (p->next)          if (p->next)
                 man_node_freelist(p->next);                  man_node_freelist(p->next);
   
           assert(0 == p->nchild);
         man_node_free(p);          man_node_free(p);
 }  }
   
Line 326  man_pmacro(struct man *m, int ln, char *buf)
Line 342  man_pmacro(struct man *m, int ln, char *buf)
   
         ppos = i;          ppos = i;
   
         if (buf[i] && '\\' == buf[i])  
                 if (buf[i + 1] && '\"' == buf[i + 1])  
                         goto out;  
   
         /* Copy the first word into a nil-terminated buffer. */          /* Copy the first word into a nil-terminated buffer. */
   
         for (j = 0; j < 4; j++, i++) {          for (j = 0; j < 4; j++, i++) {
Line 438  man_vwarn(struct man *man, int ln, int pos, const char
Line 450  man_vwarn(struct man *man, int ln, int pos, const char
 }  }
   
   
   int
   man_err(struct man *m, int line, int pos, int iserr, enum merr type)
   {
           const char       *p;
   
           p = __man_merrnames[(int)type];
           assert(p);
   
           if (iserr)
                   return(man_verr(m, line, pos, p));
   
           return(man_vwarn(m, line, pos, p));
   }

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.27

CVSweb