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

Diff for /mandoc/man.c between version 1.61 and 1.69

version 1.61, 2010/05/07 15:49:36 version 1.69, 2010/05/15 20:51:40
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 66  const char *const __man_macronames[MAN_MAX] = {   
Line 65  const char *const __man_macronames[MAN_MAX] = {   
         "nf",           "fi",           "r",            "RE",          "nf",           "fi",           "r",            "RE",
         "RS",           "DT",           "UC",           "PD",          "RS",           "DT",           "UC",           "PD",
         "Sp",           "Vb",           "Ve",           "de",          "Sp",           "Vb",           "Ve",           "de",
         "dei",          "am",           "ami",          "ig",          "dei",          "am",           "ami",          ".",
         ".",  
         };          };
   
 const   char * const *man_macronames = __man_macronames;  const   char * const *man_macronames = __man_macronames;
Line 174  man_free1(struct man *man)
Line 172  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 395  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 435  static int
Line 460  static int
 macrowarn(struct man *m, int ln, const char *buf)  macrowarn(struct man *m, int ln, const char *buf)
 {  {
         if ( ! (MAN_IGN_MACRO & m->pflags))          if ( ! (MAN_IGN_MACRO & m->pflags))
                 return(man_verr(m, ln, 0,                  return(man_verr(m, ln, 0, "unknown macro: %s%s",
                                 "unknown macro: %s%s",  
                                 buf, strlen(buf) > 3 ? "..." : ""));                                  buf, strlen(buf) > 3 ? "..." : ""));
         return(man_vwarn(m, ln, 0, "unknown macro: %s%s",          return(man_vwarn(m, ln, 0, "unknown macro: %s%s",
                                 buf, strlen(buf) > 3 ? "..." : ""));                                  buf, strlen(buf) > 3 ? "..." : ""));
Line 462  man_pmacro(struct man *m, int ln, char *buf)
Line 486  man_pmacro(struct man *m, int ln, char *buf)
          * Skip whitespace between the control character and initial           * Skip whitespace between the control character and initial
          * text.  "Whitespace" is both spaces and tabs.           * text.  "Whitespace" is both spaces and tabs.
          */           */
   
         if (' ' == buf[i] || '\t' == buf[i]) {          if (' ' == buf[i] || '\t' == buf[i]) {
                 i++;                  i++;
                 while (buf[i] && (' ' == buf[i] || '\t' == buf[i]))                  while (buf[i] && (' ' == buf[i] || '\t' == buf[i]))
Line 510  man_pmacro(struct man *m, int ln, char *buf)
Line 535  man_pmacro(struct man *m, int ln, char *buf)
         while (buf[i] && ' ' == buf[i])          while (buf[i] && ' ' == buf[i])
                 i++;                  i++;
   
         /* Trailing whitespace? */          /*
            * Trailing whitespace.  Note that tabs are allowed to be passed
            * into the parser as "text", so we only warn about spaces here.
            */
   
         if ('\0' == buf[i] && ' ' == buf[i - 1])          if ('\0' == buf[i] && ' ' == buf[i - 1])
                 if ( ! man_pwarn(m, ln, i - 1, WTSPACE))                  if ( ! man_pwarn(m, ln, i - 1, WTSPACE))

Legend:
Removed from v.1.61  
changed lines
  Added in v.1.69

CVSweb