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

version 1.61, 2010/05/07 15:49:36 version 1.63, 2010/05/08 08:36:44
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]))                  assert(i > 1);
                   if ('\\' != 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. */
                   assert(i);
                   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);
   
Line 435  static int
Line 449  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 475  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 524  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.63

CVSweb