]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdocml.c
*** empty log message ***
[mandoc.git] / mdocml.c
index e27748f0fac7e6050ff6148d4021a95dbb2362bd..a22a1092667b2223d8a74859dc3c516082e14745 100644 (file)
--- a/mdocml.c
+++ b/mdocml.c
@@ -1,4 +1,4 @@
-/* $Id: mdocml.c,v 1.7 2008/11/23 19:10:03 kristaps Exp $ */
+/* $Id: mdocml.c,v 1.13 2008/11/27 17:27:50 kristaps Exp $ */
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
 
 #include "libmdocml.h"
 
-#define        BUFFER_IN_DEF   BUFSIZ
-#define        BUFFER_OUT_DEF  BUFSIZ
+#define        BUFFER_IN_DEF   BUFSIZ   /* See begin_bufs. */
+#define        BUFFER_OUT_DEF  BUFSIZ   /* See begin_bufs. */
 
-static void             usage(void);
-static int              begin_io(const struct md_args *, 
+static void             usage(void);
+
+static int              begin_io(const struct md_args *, 
                                char *, char *);
-static int              leave_io(const struct md_buf *, 
+static int              leave_io(const struct md_buf *, 
                                const struct md_buf *, int);
-static int              begin_bufs(const struct md_args *,
+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);
@@ -54,12 +55,20 @@ main(int argc, char *argv[])
        extern int       optind;
 
        out = in = NULL;
+
+       (void)memset(&args, 0, sizeof(struct md_args));
        
-       while (-1 != (c = getopt(argc, argv, "o:")))
+       while (-1 != (c = getopt(argc, argv, "o:vW")))
                switch (c) {
                case ('o'):
                        out = optarg;
                        break;
+               case ('v'):
+                       args.verbosity++;
+                       break;
+               case ('W'):
+                       args.warnings |= MD_WARN_ALL;
+                       break;
                default:
                        usage();
                        return(1);
@@ -71,13 +80,16 @@ main(int argc, char *argv[])
        if (1 == argc)
                in = *argv++;
 
-       args.type = MD_HTML4_STRICT;
-       args.dbg = MD_DBG_TREE;
+       args.type = MD_DUMMY;
 
        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
 leave_io(const struct md_buf *out, 
                const struct md_buf *in, int c)
@@ -101,6 +113,10 @@ leave_io(const struct md_buf *out,
 }
 
 
+/*
+ * Open file descriptors or assign stdin/stdout, if dictated by the "-"
+ * token instead of a filename.
+ */
 static int
 begin_io(const struct md_args *args, char *out, char *in)
 {
@@ -139,6 +155,9 @@ begin_io(const struct md_args *args, char *out, char *in)
 }
 
 
+/*
+ * Free buffers allocated in begin_bufs.
+ */
 static int
 leave_bufs(const struct md_buf *out, 
                const struct md_buf *in, int c)
@@ -153,6 +172,10 @@ leave_bufs(const struct md_buf *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
 begin_bufs(const struct md_args *args, 
                struct md_buf *out, struct md_buf *in)
@@ -167,6 +190,9 @@ begin_bufs(const struct md_args *args,
        if (-1 == fstat(in->fd, &stin)) {
                warn("%s", in->name);
                return(1);
+       } else if (STDIN_FILENO != in->fd && 0 == stin.st_size) {
+               warnx("%s: empty file", in->name);
+               return(1);
        } else if (-1 == fstat(out->fd, &stout)) {
                warn("%s", out->name);
                return(1);
@@ -193,5 +219,5 @@ usage(void)
 {
        extern char     *__progname;
 
-       (void)printf("usage: %s [-o outfile] [infile]\n", __progname);
+       (void)printf("usage: %s [-vW] [-o outfile] [infile]\n", __progname);
 }