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

Diff for /mandoc/demandoc.c between version 1.5 and 1.13

version 1.5, 2011/09/01 22:09:50 version 1.13, 2015/01/15 04:26:39
Line 14 
Line 14 
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */   */
 #ifdef HAVE_CONFIG_H  
 #include "config.h"  #include "config.h"
 #endif  
   
   #include <sys/types.h>
   
 #include <assert.h>  #include <assert.h>
 #include <ctype.h>  #include <ctype.h>
 #include <getopt.h>  #include <getopt.h>
Line 43  int
Line 43  int
 main(int argc, char *argv[])  main(int argc, char *argv[])
 {  {
         struct mparse   *mp;          struct mparse   *mp;
         int              ch, i, list;          struct mchars   *mchars;
           int              ch, fd, i, list;
         extern int       optind;          extern int       optind;
   
         progname = strrchr(argv[0], '/');          progname = strrchr(argv[0], '/');
Line 76  main(int argc, char *argv[])
Line 77  main(int argc, char *argv[])
         argc -= optind;          argc -= optind;
         argv += optind;          argv += optind;
   
         mp = mparse_alloc(MPARSE_AUTO, MANDOCLEVEL_FATAL, NULL, NULL);          mchars = mchars_alloc();
           mp = mparse_alloc(MPARSE_SO, MANDOCLEVEL_BADARG, NULL, mchars, NULL);
         assert(mp);          assert(mp);
   
         if (0 == argc)          if (0 == argc)
Line 84  main(int argc, char *argv[])
Line 86  main(int argc, char *argv[])
   
         for (i = 0; i < argc; i++) {          for (i = 0; i < argc; i++) {
                 mparse_reset(mp);                  mparse_reset(mp);
                 pmandoc(mp, -1, argv[i], list);                  if (mparse_open(mp, &fd, argv[i]) != MANDOCLEVEL_OK) {
                           perror(argv[i]);
                           continue;
                   }
                   pmandoc(mp, fd, argv[i], list);
         }          }
   
         mparse_free(mp);          mparse_free(mp);
           mchars_free(mchars);
         return((int)MANDOCLEVEL_OK);          return((int)MANDOCLEVEL_OK);
 }  }
   
Line 105  pmandoc(struct mparse *mp, int fd, const char *fn, int
Line 112  pmandoc(struct mparse *mp, int fd, const char *fn, int
         struct man      *man;          struct man      *man;
         int              line, col;          int              line, col;
   
         if (mparse_readfd(mp, fd, fn) >= MANDOCLEVEL_FATAL) {          mparse_readfd(mp, fd, fn);
                 fprintf(stderr, "%s: Parse failure\n", fn);          mparse_result(mp, &mdoc, &man, NULL);
                 return;  
         }  
   
         mparse_result(mp, &mdoc, &man);  
         line = 1;          line = 1;
         col = 0;          col = 0;
   
Line 132  static void
Line 135  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;          const char      *start, *end;
         int              emit;          int              emit;
   
         /*          /*
Line 161  again:
Line 164  again:
                         } else if (isspace((unsigned char)*p))                          } else if (isspace((unsigned char)*p))
                                 break;                                  break;
   
                 if (emit && p - start >= 2) {                  end = p - 1;
                         for ( ; start != p; start++)  
                   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)                                  if (ASCII_HYPH == *start)
                                         putchar('-');                                          putchar('-');
                                 else                                  else

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.13

CVSweb