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

Diff for /mandoc/man.c between version 1.62 and 1.71

version 1.62, 2010/05/08 07:30:19 version 1.71, 2010/05/16 00:04:46
Line 32 
Line 32 
   
 const   char *const __man_merrnames[WERRMAX] = {  const   char *const __man_merrnames[WERRMAX] = {
         "invalid character", /* WNPRINT */          "invalid character", /* WNPRINT */
         "invalid manual section", /* WMSEC */  
         "invalid date format", /* WDATE */          "invalid date format", /* WDATE */
         "scope of prior line violated", /* WLNSCOPE */          "scope of prior line violated", /* WLNSCOPE */
         "over-zealous prior line scope violation", /* WLNSCOPE2 */          "over-zealous prior line scope violation", /* WLNSCOPE2 */
Line 50  const char *const __man_merrnames[WERRMAX] = {   
Line 49  const char *const __man_merrnames[WERRMAX] = {   
         "no scope context", /* WNOSCOPE */          "no scope context", /* WNOSCOPE */
         "literal context already open", /* WOLITERAL */          "literal context already open", /* WOLITERAL */
         "no literal context open", /* WNLITERAL */          "no literal context open", /* WNLITERAL */
         "invalid nesting of roff declarations", /* WROFFNEST */  
         "scope in roff instructions broken", /* WROFFSCOPE */  
         "document title should be uppercase", /* WTITLECASE */          "document title should be uppercase", /* WTITLECASE */
         "deprecated comment style", /* WBADCOMMENT */          "deprecated comment style", /* WBADCOMMENT */
 };  };
Line 65  const char *const __man_macronames[MAN_MAX] = {   
Line 62  const char *const __man_macronames[MAN_MAX] = {   
         "RI",           "na",           "i",            "sp",          "RI",           "na",           "i",            "sp",
         "nf",           "fi",           "r",            "RE",          "nf",           "fi",           "r",            "RE",
         "RS",           "DT",           "UC",           "PD",          "RS",           "DT",           "UC",           "PD",
         "Sp",           "Vb",           "Ve",           "de",          "Sp",           "Vb",           "Ve",
         "dei",          "am",           "ami",          "ig",  
         ".",  
         };          };
   
 const   char * const *man_macronames = __man_macronames;  const   char * const *man_macronames = __man_macronames;
Line 156  int
Line 151  int
 man_parseln(struct man *m, int ln, char *buf)  man_parseln(struct man *m, int ln, char *buf)
 {  {
   
         return('.' == *buf || '\'' == *buf ?          return(('.' == *buf || '\'' == *buf) ?
                         man_pmacro(m, ln, buf) :                          man_pmacro(m, ln, buf) :
                         man_ptext(m, ln, buf));                          man_ptext(m, ln, buf));
 }  }
Line 174  man_free1(struct man *man)
Line 169  man_free1(struct man *man)
                 free(man->meta.source);                  free(man->meta.source);
         if (man->meta.vol)          if (man->meta.vol)
                 free(man->meta.vol);                  free(man->meta.vol);
           if (man->meta.msec)
                   free(man->meta.msec);
 }  }
   
   
Line 395  man_ptext(struct man *m, int line, char *buf)
Line 392  man_ptext(struct man *m, int line, char *buf)
                 goto descope;                  goto descope;
         }          }
   
         /* Warn if the last un-escaped character is whitespace. */          /*
            * Warn if the last un-escaped character is whitespace. Then
            * strip away the remaining spaces (tabs stay!).
            */
   
         i = (int)strlen(buf);          i = (int)strlen(buf);
         assert(i);          assert(i);
   
         if (' ' == buf[i - 1] || '\t' == buf[i - 1])          if (' ' == buf[i - 1] || '\t' == buf[i - 1]) {
                 if (1 == i || ('\\' != buf[i - 2]))                  if (i > 1 && '\\' != buf[i - 2])
                         if ( ! man_pwarn(m, line, i - 1, WTSPACE))                          if ( ! man_pwarn(m, line, i - 1, WTSPACE))
                                 return(0);                                  return(0);
   
                   for (--i; i && ' ' == buf[i]; i--)
                           /* Spin back to non-space. */ ;
   
                   /* Jump ahead of escaped whitespace. */
                   i += '\\' == buf[i] ? 2 : 1;
   
                   buf[i] = '\0';
           }
   
         if ( ! man_word_alloc(m, line, 0, buf))          if ( ! man_word_alloc(m, line, 0, buf))
                 return(0);                  return(0);
   
           /*
            * End-of-sentence check.  If the last character is an unescaped
            * EOS character, then flag the node as being the end of a
            * sentence.  The front-end will know how to interpret this.
            */
   
           /* FIXME: chain of close delims. */
   
           assert(i);
   
           if (mandoc_eos(buf, (size_t)i))
                   m->last->flags |= MAN_EOS;
   
 descope:  descope:
         /*          /*
          * Co-ordinate what happens with having a next-line scope open:           * Co-ordinate what happens with having a next-line scope open:
Line 523  man_pmacro(struct man *m, int ln, char *buf)
Line 545  man_pmacro(struct man *m, int ln, char *buf)
          * Remove prior ELINE macro, as it's being clobbering by a new           * Remove prior ELINE macro, as it's being clobbering by a new
          * macro.  Note that NSCOPED macros do not close out ELINE           * macro.  Note that NSCOPED macros do not close out ELINE
          * macros---they don't print text---so we let those slip by.           * macros---they don't print text---so we let those slip by.
          * NOTE: we don't allow roff blocks (NOCLOSE) to be embedded  
          * here because that would stipulate blocks as children of  
          * elements!  
          */           */
   
         if ( ! (MAN_NSCOPED & man_macros[tok].flags) &&          if ( ! (MAN_NSCOPED & man_macros[tok].flags) &&

Legend:
Removed from v.1.62  
changed lines
  Added in v.1.71

CVSweb