]> git.cameronkatri.com Git - mandoc.git/blobdiff - mmain.c
Strings abstracted into dynamically-created C files.
[mandoc.git] / mmain.c
diff --git a/mmain.c b/mmain.c
index 370d23f8b615d929e33f79339a688cfa5cb27054..0660f2843dd8b96e1ca17f3c530815d59370bd07 100644 (file)
--- a/mmain.c
+++ b/mmain.c
@@ -1,4 +1,4 @@
-       /* $Id: mmain.c,v 1.2 2009/02/23 07:09:13 kristaps Exp $ */
+       /* $Id: mmain.c,v 1.5 2009/03/06 14:13:47 kristaps Exp $ */
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -57,6 +57,8 @@ static        int               msg_warn(void *, int, int,
 
 #ifdef __linux__
 extern int               getsubopt(char **, char *const *, char **);
 
 #ifdef __linux__
 extern int               getsubopt(char **, char *const *, char **);
+extern size_t            strlcpy(char *, const char *, size_t);
+extern size_t            strlcat(char *, const char *, size_t);
 #endif
 
 
 #endif
 
 
@@ -106,9 +108,8 @@ mmain_getopt(struct mmain *p, int argc, char *argv[],
        size_t           sz;
 
        extern int       optind;
        size_t           sz;
 
        extern int       optind;
-       extern int       optreset;
 
 
-       sz = strlcpy(opts, "vW:", 32);
+       sz = strlcpy(opts, "VvW:", 32);
        assert(sz < 32);
 
        if (u) {
        assert(sz < 32);
 
        if (u) {
@@ -116,24 +117,29 @@ mmain_getopt(struct mmain *p, int argc, char *argv[],
                assert(sz < 32);
        }
 
                assert(sz < 32);
        }
 
+       optind = 1;
+
        /* LINTED */
        while (-1 != (c = getopt(argc, argv, opts)))
                switch (c) {
                case ('v'):
                        p->dbg++;
                        break;
        /* LINTED */
        while (-1 != (c = getopt(argc, argv, opts)))
                switch (c) {
                case ('v'):
                        p->dbg++;
                        break;
+               case ('V'):
+                       (void)printf("%s %s\n", __progname, VERSION);
+                       return(0);
                case ('W'):
                        if ( ! getsopts(p, optarg))
                case ('W'):
                        if ( ! getsopts(p, optarg))
-                               return(0);
+                               return(-1);
                        break;
                case ('?'):
                        mmain_usage(help);
                        break;
                case ('?'):
                        mmain_usage(help);
-                       return(0);
+                       return(-1);
                default:
                        assert(getopt_cb);
                        if ((*getopt_cb)(arg, c, optarg))
                                break;
                default:
                        assert(getopt_cb);
                        if ((*getopt_cb)(arg, c, optarg))
                                break;
-                       return(0);
+                       return(-1);
                }
 
        argv += optind;
                }
 
        argv += optind;
@@ -144,8 +150,8 @@ mmain_getopt(struct mmain *p, int argc, char *argv[],
 }
 
 
 }
 
 
-__dead void
-mmain_exit(struct mmain *p, int code)
+dead_pre void
+mmain_exit(struct mmain *p, int code) 
 {
 
        if (p->mdoc)
 {
 
        if (p->mdoc)