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

Diff for /mandoc/demandoc.c between version 1.4 and 1.9

version 1.4, 2011/09/01 20:55:50 version 1.9, 2014/03/19 22:05:10
Line 76  main(int argc, char *argv[])
Line 76  main(int argc, char *argv[])
         argc -= optind;          argc -= optind;
         argv += optind;          argv += optind;
   
         mp = mparse_alloc(MPARSE_AUTO, MANDOCLEVEL_FATAL, NULL, NULL);          mp = mparse_alloc(MPARSE_SO, MANDOCLEVEL_FATAL, NULL, NULL);
         assert(mp);          assert(mp);
   
         if (0 == argc)          if (0 == argc)
Line 121  pmandoc(struct mparse *mp, int fd, const char *fn, int
Line 121  pmandoc(struct mparse *mp, int fd, const char *fn, int
         else          else
                 return;                  return;
   
         putchar('\n');          if ( ! list)
                   putchar('\n');
 }  }
   
 /*  /*
Line 131  static void
Line 132  static void
 pstring(const char *p, int col, int *colp, int list)  pstring(const char *p, int col, int *colp, int list)
 {  {
         enum mandoc_esc  esc;          enum mandoc_esc  esc;
           const char      *start, *end;
           int              emit;
   
           /*
            * Print as many column spaces til we achieve parity with the
            * input document.
            */
   
   again:
           if (list && '\0' != *p) {
                   while (isspace((unsigned char)*p))
                           p++;
   
                   while ('\'' == *p || '(' == *p || '"' == *p)
                           p++;
   
                   emit = isalpha((unsigned char)p[0]) &&
                           isalpha((unsigned char)p[1]);
   
                   for (start = p; '\0' != *p; p++)
                           if ('\\' == *p) {
                                   p++;
                                   esc = mandoc_escape(&p, NULL, NULL);
                                   if (ESCAPE_ERROR == esc)
                                           return;
                                   emit = 0;
                           } else if (isspace((unsigned char)*p))
                                   break;
   
                   end = p - 1;
   
                   while (end > start)
                           if ('.' == *end || ',' == *end ||
                                           '\'' == *end || '"' == *end ||
                                           ')' == *end || '!' == *end ||
                                           '?' == *end || ':' == *end ||
                                           ';' == *end)
                                   end--;
                           else
                                   break;
   
                   if (emit && end - start >= 1) {
                           for ( ; start <= end; start++)
                                   if (ASCII_HYPH == *start)
                                           putchar('-');
                                   else
                                           putchar((unsigned char)*start);
                           putchar('\n');
                   }
   
                   if (isspace((unsigned char)*p))
                           goto again;
   
                   return;
           }
   
         while (*colp < col) {          while (*colp < col) {
                 putchar(' ');                  putchar(' ');
                 (*colp)++;                  (*colp)++;
         }          }
   
           /*
            * Print the input word, skipping any special characters.
            */
         while ('\0' != *p)          while ('\0' != *p)
                 if ('\\' == *p) {                  if ('\\' == *p) {
                         p++;                          p++;
Line 152  pstring(const char *p, int col, int *colp, int list)
Line 211  pstring(const char *p, int col, int *colp, int list)
 static void  static void
 pline(int line, int *linep, int *col, int list)  pline(int line, int *linep, int *col, int list)
 {  {
   
           if (list)
                   return;
   
           /*
            * Print out as many lines as needed to reach parity with the
            * original input.
            */
   
         while (*linep < line) {          while (*linep < line) {
                 putchar('\n');                  putchar('\n');

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.9

CVSweb