[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.68

version 1.61, 2010/05/07 15:49:36 version 1.68, 2010/05/15 15:54:39
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 174  man_free1(struct man *man)
Line 173  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 396  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 461  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 487  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 536  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.68

CVSweb