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

Diff for /mandoc/Attic/mdocml.c between version 1.4 and 1.9

version 1.4, 2008/11/22 18:34:06 version 1.9, 2008/11/23 23:12:47
Line 30 
Line 30 
   
 #include "libmdocml.h"  #include "libmdocml.h"
   
 #define BUFFER_IN_DEF   BUFSIZ  #define BUFFER_IN_DEF   BUFSIZ   /* See begin_bufs. */
 #define BUFFER_OUT_DEF  BUFSIZ  #define BUFFER_OUT_DEF  BUFSIZ   /* See begin_bufs. */
   
 static void              usage(void);  static  void             usage(void);
 static int               begin_io(const char *, const char *);  
 static int               leave_io(const struct md_mbuf *,  
                                 const struct md_rbuf *, int);  
 static int               begin_bufs(struct md_mbuf *, struct md_rbuf *);  
 static int               leave_bufs(const struct md_mbuf *,  
                                 const struct md_rbuf *, int);  
   
   static  int              begin_io(const struct md_args *,
                                   char *, char *);
   static  int              leave_io(const struct md_buf *,
                                   const struct md_buf *, int);
   static  int              begin_bufs(const struct md_args *,
                                   struct md_buf *, struct md_buf *);
   static int               leave_bufs(const struct md_buf *,
                                   const struct md_buf *, int);
   
 int  int
 main(int argc, char *argv[])  main(int argc, char *argv[])
 {  {
         int              c;          int              c;
         char            *out, *in;          char            *out, *in;
           struct md_args   args;
   
         extern char     *optarg;          extern char     *optarg;
         extern int       optind;          extern int       optind;
   
         out = in = NULL;          out = in = NULL;
   
         while (-1 != (c = getopt(argc, argv, "o:")))          while (-1 != (c = getopt(argc, argv, "vo:")))
                 switch (c) {                  switch (c) {
                 case ('o'):                  case ('o'):
                         out = optarg;                          out = optarg;
                         break;                          break;
                   case ('v'):
                           args.dbg++;
                           break;
                 default:                  default:
                         usage();                          usage();
                         return(1);                          return(1);
Line 68  main(int argc, char *argv[])
Line 75  main(int argc, char *argv[])
         if (1 == argc)          if (1 == argc)
                 in = *argv++;                  in = *argv++;
   
         return(begin_io(out ? out : "-", in ? in : "-"));          args.type = MD_HTML4_STRICT;
   
           return(begin_io(&args, out ? out : "-", in ? in : "-"));
 }  }
   
   
   /*
    * Close out file descriptors opened in begin_io.  If the descriptor
    * refers to stdin/stdout, then do nothing.
    */
 static int  static int
 leave_io(const struct md_mbuf *out,  leave_io(const struct md_buf *out,
                 const struct md_rbuf *in, int c)                  const struct md_buf *in, int c)
 {  {
         assert(out);          assert(out);
         assert(in);          assert(in);
Line 95  leave_io(const struct md_mbuf *out, 
Line 108  leave_io(const struct md_mbuf *out, 
 }  }
   
   
   /*
    * Open file descriptors or assign stdin/stdout, if dictated by the "-"
    * token instead of a filename.
    */
 static int  static int
 begin_io(const char *out, const char *in)  begin_io(const struct md_args *args, char *out, char *in)
 {  {
         struct md_rbuf   fi;          struct md_buf    fi;
         struct md_mbuf   fo;          struct md_buf    fo;
   
 #define FI_FL   O_RDONLY  #define FI_FL   O_RDONLY
 #define FO_FL   O_WRONLY|O_CREAT|O_TRUNC  #define FO_FL   O_WRONLY|O_CREAT|O_TRUNC
   
           assert(args);
         assert(out);          assert(out);
         assert(in);          assert(in);
   
         bzero(&fi, sizeof(struct md_rbuf));          bzero(&fi, sizeof(struct md_buf));
         bzero(&fo, sizeof(struct md_mbuf));          bzero(&fo, sizeof(struct md_buf));
   
         fi.fd = STDIN_FILENO;          fi.fd = STDIN_FILENO;
         fo.fd = STDOUT_FILENO;          fo.fd = STDOUT_FILENO;
Line 128  begin_io(const char *out, const char *in)
Line 146  begin_io(const char *out, const char *in)
                         return(leave_io(&fo, &fi, 1));                          return(leave_io(&fo, &fi, 1));
                 }                  }
   
         return(leave_io(&fo, &fi, begin_bufs(&fo, &fi)));          return(leave_io(&fo, &fi, begin_bufs(args, &fo, &fi)));
 }  }
   
   
   /*
    * Free buffers allocated in begin_bufs.
    */
 static int  static int
 leave_bufs(const struct md_mbuf *out,  leave_bufs(const struct md_buf *out,
                 const struct md_rbuf *in, int c)                  const struct md_buf *in, int c)
 {  {
         assert(out);          assert(out);
         assert(in);          assert(in);
Line 146  leave_bufs(const struct md_mbuf *out, 
Line 167  leave_bufs(const struct md_mbuf *out, 
 }  }
   
   
   /*
    * Allocate buffers to the maximum of either the input file's blocksize
    * or BUFFER_IN_DEF/BUFFER_OUT_DEF, which should be around BUFSIZE.
    */
 static int  static int
 begin_bufs(struct md_mbuf *out, struct md_rbuf *in)  begin_bufs(const struct md_args *args,
                   struct md_buf *out, struct md_buf *in)
 {  {
         struct stat      stin, stout;          struct stat      stin, stout;
           int              c;
   
           assert(args);
         assert(in);          assert(in);
         assert(out);          assert(out);
   
         if (-1 == fstat(in->fd, &stin)) {          if (-1 == fstat(in->fd, &stin)) {
                 warn("%s", in->name);                  warn("%s", in->name);
                 return(1);                  return(1);
           } else if (0 == stin.st_size) {
                   warnx("%s: empty file", in->name);
                   return(1);
         } else if (-1 == fstat(out->fd, &stout)) {          } else if (-1 == fstat(out->fd, &stout)) {
                 warn("%s", out->name);                  warn("%s", out->name);
                 return(1);                  return(1);
Line 173  begin_bufs(struct md_mbuf *out, struct md_rbuf *in)
Line 204  begin_bufs(struct md_mbuf *out, struct md_rbuf *in)
                 return(leave_bufs(out, in, 1));                  return(leave_bufs(out, in, 1));
         }          }
   
         return(leave_bufs(out, in, md_run(MD_DUMMY, out, in)));          c = md_run(args, out, in);
           return(leave_bufs(out, in, -1 == c ? 1 : 0));
 }  }
   
   
Line 182  usage(void)
Line 214  usage(void)
 {  {
         extern char     *__progname;          extern char     *__progname;
   
         (void)printf("usage: %s [-o outfile] [infile]\n", __progname);          (void)printf("usage: %s [-v] [-o outfile] [infile]\n",
                           __progname);
 }  }

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

CVSweb