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

Diff for /mandoc/Attic/libmdocml.c between version 1.6 and 1.7

version 1.6, 2008/11/23 22:30:53 version 1.7, 2008/11/23 23:12:47
Line 27 
Line 27 
 #include "libmdocml.h"  #include "libmdocml.h"
 #include "private.h"  #include "private.h"
   
 #define BUFFER_LINE      BUFSIZ  #define BUFFER_LINE      BUFSIZ /* Default line-buffer size. */
   
 static  int      md_run_enter(const struct md_args *,  static  int      md_run_enter(const struct md_args *,
                         struct md_mbuf *, struct md_rbuf *, void *);                          struct md_mbuf *, struct md_rbuf *, void *);
 static  int      md_run_leave(const struct md_args *, struct md_mbuf *,  static  int      md_run_leave(const struct md_args *, struct md_mbuf *,
                         struct md_rbuf *, int, void *);                          struct md_rbuf *, int, void *);
   
 static  ssize_t  md_buf_fill(struct md_rbuf *);  static  ssize_t  md_buf_fill(struct md_rbuf *);
 static  int      md_buf_flush(struct md_mbuf *);  static  int      md_buf_flush(struct md_mbuf *);
   
Line 170  md_run_enter(const struct md_args *args, struct md_mbu
Line 171  md_run_enter(const struct md_args *args, struct md_mbu
         case (MD_HTML4_STRICT):          case (MD_HTML4_STRICT):
                 fp = md_line_html4_strict;                  fp = md_line_html4_strict;
                 break;                  break;
         case (MD_DUMMY):          default:
                 fp = md_line_dummy;                  fp = md_line_dummy;
                 break;                  break;
         default:  
                 abort();  
         }          }
   
         /* LINTED */          pos = 0;
         for (pos = 0; ; ) {  
                 if (-1 == (sz = md_buf_fill(rbuf)))  
                         return(md_run_leave(args, mbuf, rbuf, -1, p));  
                 else if (0 == sz)  
                         break;  
   
                 for (i = 0; i < sz; i++) {  again:
                         if ('\n' == rbuf->buf[i]) {          if (-1 == (sz = md_buf_fill(rbuf))) {
                                 if ( ! (*fp)(args, mbuf, rbuf, line, pos, p))                  return(md_run_leave(args, mbuf, rbuf, -1, p));
                                         return(md_run_leave(args, mbuf, rbuf,          } else if (0 == sz && 0 != pos) {
                                                                 -1, p));                  warnx("%s: no newline at end of file", rbuf->name);
                                 rbuf->line++;                  return(md_run_leave(args, mbuf, rbuf, -1, p));
                                 pos = 0;          } else if (0 == sz)
                                 continue;                  return(md_run_leave(args, mbuf, rbuf, 0, p));
                         }  
   
           for (i = 0; i < sz; i++) {
                   if ('\n' != rbuf->buf[i]) {
                         if (pos < BUFFER_LINE) {                          if (pos < BUFFER_LINE) {
                                 /* LINTED */                                  /* LINTED */
                                 line[pos++] = rbuf->buf[i];                                  line[pos++] = rbuf->buf[i];
                                 continue;                                  continue;
                         }                          }
   
                         warnx("%s: line %zu too long",                          warnx("%s: line %zu too long",
                                         rbuf->name, rbuf->line);                                          rbuf->name, rbuf->line);
                         return(md_run_leave(args, mbuf, rbuf, -1, p));                          return(md_run_leave(args, mbuf, rbuf, -1, p));
                 }                  }
   
                   if ( ! (*fp)(args, mbuf, rbuf, line, pos, p))
                           return(md_run_leave(args, mbuf, rbuf, -1, p));
                   rbuf->line++;
                   pos = 0;
         }          }
   
         if (0 != pos && ! (*fp)(args, mbuf, rbuf, line, pos, p))          goto again;
                 return(md_run_leave(args, mbuf, rbuf, -1, p));          /* NOTREACHED */
   
         return(md_run_leave(args, mbuf, rbuf, 0, p));  
 }  }
   
   

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

CVSweb