From ccba3c9ffdf88c5913b94de1feaf9edb9b030743 Mon Sep 17 00:00:00 2001 From: Mukund Sivaraman Date: Fri, 13 Jun 2014 06:27:43 +0530 Subject: [PATCH] [10686] Add version printing option to various BIND utilites Squashed commit of the following: commit 95effe9b2582a7eb878ccb8cb9ef51dfc5bbfde7 Author: Evan Hunt Date: Tue Jun 10 16:52:45 2014 -0700 [rt10686] move version() to dnssectool.c commit df205b541d1572ea5306a5f671af8b54b9c5c770 Author: Mukund Sivaraman Date: Tue Jun 10 21:38:31 2014 +0530 Rearrange order of cases commit cfd30893f2540bf9d607e1fd37545ea7b441e0d0 Author: Mukund Sivaraman Date: Tue Jun 10 21:38:08 2014 +0530 Add version printer to dnssec-verify commit a625ea338c74ab5e21634033ef87f170ba37fdbe Author: Mukund Sivaraman Date: Tue Jun 10 21:32:19 2014 +0530 Add version printer to dnssec-signzone commit d91e1c0f0697b3304ffa46fccc66af65591040d9 Author: Mukund Sivaraman Date: Tue Jun 10 21:26:01 2014 +0530 Add version printer to dnssec-settime commit 46fc8775da3e13725c31d13e090b406d69b8694f Author: Mukund Sivaraman Date: Tue Jun 10 21:25:48 2014 +0530 Fix docbook commit 8123d2efbd84cdfcbc70403aa9bb27b96921bab2 Author: Mukund Sivaraman Date: Tue Jun 10 21:20:17 2014 +0530 Add version printer to dnssec-revoke commit d0916420317d3e8c69cf1b37d2209ea2d072b913 Author: Mukund Sivaraman Date: Tue Jun 10 21:17:54 2014 +0530 Add version printer to dnssec-keygen commit 93b0bd5ebc043298dc7d8f446ea543cb40eaecf8 Author: Mukund Sivaraman Date: Tue Jun 10 21:14:11 2014 +0530 Add version printer to dnssec-keyfromlabel commit 07001bcd9ae2d7b09dd9e243b0ab35307290d05d Author: Mukund Sivaraman Date: Tue Jun 10 21:13:39 2014 +0530 Update usage help output, docbook commit 85cdd702f41c96fbc767fc689d1ed97fe1f3a926 Author: Mukund Sivaraman Date: Tue Jun 10 21:07:18 2014 +0530 Add version printer to dnssec-importkey commit 9274fc61e38205aad561edf445940b4e73d788dc Author: Mukund Sivaraman Date: Tue Jun 10 21:01:53 2014 +0530 Add version printer to dnssec-dsfromkey commit bf4605ea2d7282e751fd73489627cc8a99f45a90 Author: Mukund Sivaraman Date: Tue Jun 10 20:49:22 2014 +0530 Add -V to nsupdate usage output (cherry picked from commit 42782931073786f98d3d0a617351db40066949a4) --- CHANGES | 3 +++ bin/dnssec/dnssec-dsfromkey.c | 10 +++++++--- bin/dnssec/dnssec-dsfromkey.docbook | 23 +++++++++++++++++++++++ bin/dnssec/dnssec-importkey.c | 8 +++++++- bin/dnssec/dnssec-importkey.docbook | 11 +++++++++++ bin/dnssec/dnssec-keyfromlabel.c | 10 +++++++--- bin/dnssec/dnssec-keyfromlabel.docbook | 10 ++++++++++ bin/dnssec/dnssec-keygen.c | 11 ++++++++--- bin/dnssec/dnssec-keygen.docbook | 10 ++++++++++ bin/dnssec/dnssec-revoke.c | 10 +++++++--- bin/dnssec/dnssec-revoke.docbook | 10 ++++++++++ bin/dnssec/dnssec-settime.c | 10 +++++++--- bin/dnssec/dnssec-settime.docbook | 10 ++++++++++ bin/dnssec/dnssec-signzone.c | 25 ++++++++++++++----------- bin/dnssec/dnssec-signzone.docbook | 10 ++++++++++ bin/dnssec/dnssec-verify.c | 18 ++++++++++-------- bin/dnssec/dnssec-verify.docbook | 10 ++++++++++ bin/dnssec/dnssectool.c | 8 ++++++-- bin/dnssec/dnssectool.h | 3 +++ bin/nsupdate/nsupdate.c | 21 +++++++++++---------- 20 files changed, 184 insertions(+), 47 deletions(-) diff --git a/CHANGES b/CHANGES index 542abb071e..9eaedb5c73 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +3879. [func] Add version printing option to various BIND utilities. + [RT #10686] + 3878. [bug] Using the incorrect filename for a DLZ module caused a segmentation fault on startup. [RT #36286] diff --git a/bin/dnssec/dnssec-dsfromkey.c b/bin/dnssec/dnssec-dsfromkey.c index 01e0a9b4f3..77a5da9f2a 100644 --- a/bin/dnssec/dnssec-dsfromkey.c +++ b/bin/dnssec/dnssec-dsfromkey.c @@ -14,8 +14,6 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-dsfromkey.c,v 1.24.114.1 2012/02/07 00:44:12 each Exp $ */ - /*! \file */ #include @@ -330,6 +328,7 @@ usage(void) { fprintf(stderr, "Version: %s\n", VERSION); fprintf(stderr, "Options:\n"); fprintf(stderr, " -v \n"); + fprintf(stderr, " -V: print version information\n"); fprintf(stderr, " -K : directory in which to find " "key file or keyset file\n"); fprintf(stderr, " -a algorithm: digest algorithm " @@ -382,7 +381,7 @@ main(int argc, char **argv) { isc_commandline_errprint = ISC_FALSE; while ((ch = isc_commandline_parse(argc, argv, - "12Aa:c:d:Ff:K:l:sT:v:h")) != -1) { + "12Aa:c:d:Ff:K:l:sT:v:hV")) != -1) { switch (ch) { case '1': dtype = DNS_DSDIGEST_SHA1; @@ -439,8 +438,13 @@ main(int argc, char **argv) { program, isc_commandline_option); /* FALLTHROUGH */ case 'h': + /* Does not return. */ usage(); + case 'V': + /* Does not return. */ + version(program); + default: fprintf(stderr, "%s: unhandled option -%c\n", program, isc_commandline_option); diff --git a/bin/dnssec/dnssec-dsfromkey.docbook b/bin/dnssec/dnssec-dsfromkey.docbook index 802162474a..9473e4fecf 100644 --- a/bin/dnssec/dnssec-dsfromkey.docbook +++ b/bin/dnssec/dnssec-dsfromkey.docbook @@ -72,6 +72,11 @@ dnsname + + dnssec-dsfromkey + + + @@ -210,6 +215,24 @@ + + + -h + + + Prints usage information. + + + + + + -V + + + Prints version information. + + + diff --git a/bin/dnssec/dnssec-importkey.c b/bin/dnssec/dnssec-importkey.c index ff0d67765c..a6ba566548 100644 --- a/bin/dnssec/dnssec-importkey.c +++ b/bin/dnssec/dnssec-importkey.c @@ -273,6 +273,7 @@ usage(void) { "the key files\n"); fprintf(stderr, " -L ttl: set default key TTL\n"); fprintf(stderr, " -v \n"); + fprintf(stderr, " -V: print version information\n"); fprintf(stderr, " -h: print usage and exit\n"); fprintf(stderr, "Timing options:\n"); fprintf(stderr, " -P date/[+-]offset/none: set/unset key " @@ -313,7 +314,7 @@ main(int argc, char **argv) { isc_commandline_errprint = ISC_FALSE; -#define CMDLINE_FLAGS "D:f:hK:L:P:v:" +#define CMDLINE_FLAGS "D:f:hK:L:P:v:V" while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) { switch (ch) { case 'D': @@ -353,8 +354,13 @@ main(int argc, char **argv) { program, isc_commandline_option); /* FALLTHROUGH */ case 'h': + /* Does not return. */ usage(); + case 'V': + /* Does not return. */ + version(program); + default: fprintf(stderr, "%s: unhandled option -%c\n", program, isc_commandline_option); diff --git a/bin/dnssec/dnssec-importkey.docbook b/bin/dnssec/dnssec-importkey.docbook index 21a98e87f5..c60cca72a2 100644 --- a/bin/dnssec/dnssec-importkey.docbook +++ b/bin/dnssec/dnssec-importkey.docbook @@ -50,6 +50,7 @@ + @@ -61,6 +62,7 @@ + @@ -147,6 +149,15 @@ + + -V + + + Prints version information. + + + + diff --git a/bin/dnssec/dnssec-keyfromlabel.c b/bin/dnssec/dnssec-keyfromlabel.c index c21d54d3d2..a805e5a5b2 100644 --- a/bin/dnssec/dnssec-keyfromlabel.c +++ b/bin/dnssec/dnssec-keyfromlabel.c @@ -14,8 +14,6 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-keyfromlabel.c,v 1.38 2011/11/30 00:48:51 marka Exp $ */ - /*! \file */ #include @@ -103,6 +101,7 @@ usage(void) { "(default: AUTHCONF)\n"); fprintf(stderr, " -y: permit keys that might collide\n"); fprintf(stderr, " -v verbose level\n"); + fprintf(stderr, " -V: print version information\n"); fprintf(stderr, "Date options:\n"); fprintf(stderr, " -P date/[+-]offset: set key publication date\n"); fprintf(stderr, " -A date/[+-]offset: set key activation date\n"); @@ -187,7 +186,7 @@ main(int argc, char **argv) { isc_stdtime_get(&now); -#define CMDLINE_FLAGS "3A:a:Cc:D:E:Ff:GhI:i:kK:L:l:n:P:p:R:S:t:v:y" +#define CMDLINE_FLAGS "3A:a:Cc:D:E:Ff:GhI:i:kK:L:l:n:P:p:R:S:t:v:Vy" while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) { switch (ch) { case '3': @@ -310,8 +309,13 @@ main(int argc, char **argv) { program, isc_commandline_option); /* FALLTHROUGH */ case 'h': + /* Does not return. */ usage(); + case 'V': + /* Does not return. */ + version(program); + default: fprintf(stderr, "%s: unhandled option -%c\n", program, isc_commandline_option); diff --git a/bin/dnssec/dnssec-keyfromlabel.docbook b/bin/dnssec/dnssec-keyfromlabel.docbook index b75737f037..a74074e726 100644 --- a/bin/dnssec/dnssec-keyfromlabel.docbook +++ b/bin/dnssec/dnssec-keyfromlabel.docbook @@ -69,6 +69,7 @@ + name @@ -334,6 +335,15 @@ + + -V + + + Prints version information. + + + + -y diff --git a/bin/dnssec/dnssec-keygen.c b/bin/dnssec/dnssec-keygen.c index 495ed5c438..a46d38218b 100644 --- a/bin/dnssec/dnssec-keygen.c +++ b/bin/dnssec/dnssec-keygen.c @@ -29,8 +29,6 @@ * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-keygen.c,v 1.120 2011/11/30 00:48:51 marka Exp $ */ - /*! \file */ #include @@ -150,6 +148,7 @@ usage(void) { fprintf(stderr, " -m :\n"); fprintf(stderr, " usage | trace | record | size | mctx\n"); fprintf(stderr, " -v : set verbosity level (0 - 10)\n"); + fprintf(stderr, " -V: print version information\n"); fprintf(stderr, "Timing options:\n"); fprintf(stderr, " -P date/[+-]offset/none: set key publication date " "(default: now)\n"); @@ -268,7 +267,8 @@ main(int argc, char **argv) { /* * Process memory debugging argument first. */ -#define CMDLINE_FLAGS "3A:a:b:Cc:D:d:E:eFf:Gg:hI:i:K:kL:m:n:P:p:qR:r:S:s:T:t:v:" +#define CMDLINE_FLAGS "3A:a:b:Cc:D:d:E:eFf:Gg:hI:i:K:kL:m:n:P:p:qR:r:S:s:T:t:" \ + "v:V" while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) { switch (ch) { case 'm': @@ -462,8 +462,13 @@ main(int argc, char **argv) { program, isc_commandline_option); /* FALLTHROUGH */ case 'h': + /* Does not return. */ usage(); + case 'V': + /* Does not return. */ + version(program); + default: fprintf(stderr, "%s: unhandled option -%c\n", program, isc_commandline_option); diff --git a/bin/dnssec/dnssec-keygen.docbook b/bin/dnssec/dnssec-keygen.docbook index 459d0679b0..cab8974874 100644 --- a/bin/dnssec/dnssec-keygen.docbook +++ b/bin/dnssec/dnssec-keygen.docbook @@ -86,6 +86,7 @@ + name @@ -422,6 +423,15 @@ + + -V + + + Prints version information. + + + + diff --git a/bin/dnssec/dnssec-revoke.c b/bin/dnssec/dnssec-revoke.c index 75f0a3d4ad..1d09d9f4bd 100644 --- a/bin/dnssec/dnssec-revoke.c +++ b/bin/dnssec/dnssec-revoke.c @@ -14,8 +14,6 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-revoke.c,v 1.24 2011/10/20 23:46:51 tbox Exp $ */ - /*! \file */ #include @@ -72,6 +70,7 @@ usage(void) { fprintf(stderr, " -r: remove old keyfiles after " "creating revoked version\n"); fprintf(stderr, " -v level: set level of verbosity\n"); + fprintf(stderr, " -V: print version information\n"); fprintf(stderr, "Output:\n"); fprintf(stderr, " K++.key, " "K++.private\n"); @@ -114,7 +113,7 @@ main(int argc, char **argv) { isc_commandline_errprint = ISC_FALSE; - while ((ch = isc_commandline_parse(argc, argv, "E:fK:rRhv:")) != -1) { + while ((ch = isc_commandline_parse(argc, argv, "E:fK:rRhv:V")) != -1) { switch (ch) { case 'E': engine = isc_commandline_argument; @@ -150,8 +149,13 @@ main(int argc, char **argv) { program, isc_commandline_option); /* Falls into */ case 'h': + /* Does not return. */ usage(); + case 'V': + /* Does not return. */ + version(program); + default: fprintf(stderr, "%s: unhandled option -%c\n", program, isc_commandline_option); diff --git a/bin/dnssec/dnssec-revoke.docbook b/bin/dnssec/dnssec-revoke.docbook index 97fd4bce77..64efbd9fee 100644 --- a/bin/dnssec/dnssec-revoke.docbook +++ b/bin/dnssec/dnssec-revoke.docbook @@ -47,6 +47,7 @@ dnssec-revoke + @@ -105,6 +106,15 @@ + + -V + + + Prints version information. + + + + -E engine diff --git a/bin/dnssec/dnssec-settime.c b/bin/dnssec/dnssec-settime.c index 5e8744fd7a..eac54c6638 100644 --- a/bin/dnssec/dnssec-settime.c +++ b/bin/dnssec/dnssec-settime.c @@ -14,8 +14,6 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-settime.c,v 1.32 2011/06/02 20:24:45 each Exp $ */ - /*! \file */ #include @@ -75,6 +73,7 @@ usage(void) { fprintf(stderr, " -K directory: set key file location\n"); fprintf(stderr, " -L ttl: set default key TTL\n"); fprintf(stderr, " -v level: set level of verbosity\n"); + fprintf(stderr, " -V: print version information\n"); fprintf(stderr, " -h: help\n"); fprintf(stderr, "Timing options:\n"); fprintf(stderr, " -P date/[+-]offset/none: set/unset key " @@ -181,7 +180,7 @@ main(int argc, char **argv) { isc_stdtime_get(&now); -#define CMDLINE_FLAGS "A:D:E:fhI:i:K:L:P:p:R:S:uv:" +#define CMDLINE_FLAGS "A:D:E:fhI:i:K:L:P:p:R:S:uv:V" while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) { switch (ch) { case 'E': @@ -311,8 +310,13 @@ main(int argc, char **argv) { program, isc_commandline_option); /* Falls into */ case 'h': + /* Does not return. */ usage(); + case 'V': + /* Does not return. */ + version(program); + default: fprintf(stderr, "%s: unhandled option -%c\n", program, isc_commandline_option); diff --git a/bin/dnssec/dnssec-settime.docbook b/bin/dnssec/dnssec-settime.docbook index 89707da0cd..33a9fd5bd3 100644 --- a/bin/dnssec/dnssec-settime.docbook +++ b/bin/dnssec/dnssec-settime.docbook @@ -55,6 +55,7 @@ + keyfile @@ -140,6 +141,15 @@ + + -V + + + Prints version information. + + + + -v level diff --git a/bin/dnssec/dnssec-signzone.c b/bin/dnssec/dnssec-signzone.c index dfbd7c631f..9aa381aa18 100644 --- a/bin/dnssec/dnssec-signzone.c +++ b/bin/dnssec/dnssec-signzone.c @@ -29,8 +29,6 @@ * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-signzone.c,v 1.285.32.1 2012/02/07 00:44:12 each Exp $ */ - /*! \file */ #include @@ -2967,6 +2965,7 @@ usage(void) { fprintf(stderr, "\t-j jitter:\n"); fprintf(stderr, "\t\trandomize signature end time up to jitter seconds\n"); fprintf(stderr, "\t-v debuglevel (0)\n"); + fprintf(stderr, "\t-V:\tprint version information\n"); fprintf(stderr, "\t-o origin:\n"); fprintf(stderr, "\t\tzone origin (name of zonefile)\n"); fprintf(stderr, "\t-f outfile:\n"); @@ -3025,6 +3024,7 @@ usage(void) { fprintf(stderr, "Signing Keys: "); fprintf(stderr, "(default: all zone keys that have private keys)\n"); fprintf(stderr, "\tkeyfile (Kname+alg+tag)\n"); + exit(0); } @@ -3107,7 +3107,7 @@ main(int argc, char *argv[]) { /* Unused letters: Bb G J q Yy (and F is reserved). */ #define CMDLINE_FLAGS \ - "3:AaCc:Dd:E:e:f:FghH:i:I:j:K:k:L:l:m:M:n:N:o:O:PpQRr:s:ST:tuUv:X:xzZ:" + "3:AaCc:Dd:E:e:f:FghH:i:I:j:K:k:L:l:m:M:n:N:o:O:PpQRr:s:ST:tuUv:VX:xzZ:" /* * Process memory debugging argument first. @@ -3227,10 +3227,6 @@ main(int argc, char *argv[]) { fatal("iterations too big"); break; - case 'h': - usage(); - break; - case 'I': inputformatstr = isc_commandline_argument; break; @@ -3388,17 +3384,24 @@ main(int argc, char *argv[]) { if (isc_commandline_option != '?') fprintf(stderr, "%s: invalid argument -%c\n", program, isc_commandline_option); + /* FALLTHROUGH */ + case 'h': + /* Does not return. */ usage(); + + case 'V': + /* Does not return. */ + version(program); + + case 'Z': /* Undocumented test options */ + if (!strcmp(isc_commandline_argument, "nonsecify")) + nonsecify = ISC_TRUE; break; default: fprintf(stderr, "%s: unhandled option -%c\n", program, isc_commandline_option); exit(1); - case 'Z': /* Undocumented test options */ - if (!strcmp(isc_commandline_argument, "nonsecify")) - nonsecify = ISC_TRUE; - break; } } diff --git a/bin/dnssec/dnssec-signzone.docbook b/bin/dnssec/dnssec-signzone.docbook index 9977fc4b5c..1dc4b8ff50 100644 --- a/bin/dnssec/dnssec-signzone.docbook +++ b/bin/dnssec/dnssec-signzone.docbook @@ -90,6 +90,7 @@ + @@ -337,6 +338,15 @@ + + -V + + + Prints version information. + + + + -i interval diff --git a/bin/dnssec/dnssec-verify.c b/bin/dnssec/dnssec-verify.c index 3e3a523085..6b0dc9fba9 100644 --- a/bin/dnssec/dnssec-verify.c +++ b/bin/dnssec/dnssec-verify.c @@ -14,8 +14,6 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-verify.c,v 1.1.2.1 2011/03/16 06:37:51 each Exp $ */ - /*! \file */ #include @@ -135,6 +133,7 @@ usage(void) { fprintf(stderr, "Options: (default value in parenthesis) \n"); fprintf(stderr, "\t-v debuglevel (0)\n"); + fprintf(stderr, "\t-V:\tprint version information\n"); fprintf(stderr, "\t-o origin:\n"); fprintf(stderr, "\t\tzone origin (name of zonefile)\n"); fprintf(stderr, "\t-I format:\n"); @@ -173,7 +172,7 @@ main(int argc, char *argv[]) { int ch; #define CMDLINE_FLAGS \ - "m:o:I:c:E:v:xz" + "hm:o:I:c:E:v:Vxz" /* * Process memory debugging argument first. @@ -220,10 +219,6 @@ main(int argc, char *argv[]) { engine = isc_commandline_argument; break; - case 'h': - usage(); - break; - case 'I': inputformatstr = isc_commandline_argument; break; @@ -254,8 +249,15 @@ main(int argc, char *argv[]) { if (isc_commandline_option != '?') fprintf(stderr, "%s: invalid argument -%c\n", program, isc_commandline_option); + /* FALLTHROUGH */ + + case 'h': + /* Does not return. */ usage(); - break; + + case 'V': + /* Does not return. */ + version(program); default: fprintf(stderr, "%s: unhandled option -%c\n", diff --git a/bin/dnssec/dnssec-verify.docbook b/bin/dnssec/dnssec-verify.docbook index dfdb0b6509..fddb8ebb05 100644 --- a/bin/dnssec/dnssec-verify.docbook +++ b/bin/dnssec/dnssec-verify.docbook @@ -49,6 +49,7 @@ + zonefile @@ -129,6 +130,15 @@ + + -V + + + Prints version information. + + + + -x diff --git a/bin/dnssec/dnssectool.c b/bin/dnssec/dnssectool.c index a9cf5f8387..b1d1ed664b 100644 --- a/bin/dnssec/dnssectool.c +++ b/bin/dnssec/dnssectool.c @@ -15,8 +15,6 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssectool.c,v 1.63 2011/10/21 03:55:33 marka Exp $ */ - /*! \file */ /*% @@ -121,6 +119,12 @@ vbprintf(int level, const char *fmt, ...) { va_end(ap); } +void +version(const char *program) { + fprintf(stderr, "%s %s\n", program, VERSION); + exit(0); +} + void type_format(const dns_rdatatype_t type, char *cp, unsigned int size) { isc_buffer_t b; diff --git a/bin/dnssec/dnssectool.h b/bin/dnssec/dnssectool.h index adfd747b22..f51bd0001a 100644 --- a/bin/dnssec/dnssectool.h +++ b/bin/dnssec/dnssectool.h @@ -45,6 +45,9 @@ check_result(isc_result_t result, const char *message); void vbprintf(int level, const char *fmt, ...) ISC_FORMAT_PRINTF(2, 3); +void +version(const char *program); + void type_format(const dns_rdatatype_t type, char *cp, unsigned int size); #define TYPE_FORMATSIZE 20 diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c index c7cd28627f..183162487f 100644 --- a/bin/nsupdate/nsupdate.c +++ b/bin/nsupdate/nsupdate.c @@ -962,6 +962,11 @@ get_addresses(char *host, in_port_t port, host, isc_result_totext(result)); } +static void +version(void) { + fputs("nsupdate " VERSION "\n", stderr); +} + #define PARSE_ARGS_FMT "dDML:y:ghlovk:p:Pr:R::t:Tu:V" static void @@ -988,7 +993,7 @@ pre_parse_args(int argc, char **argv) { argv[0], isc_commandline_option); fprintf(stderr, "usage: nsupdate [-dD] [-L level] [-l]" "[-g | -o | -y keyname:secret | -k keyfile] " - "[-v] [filename]\n"); + "[-v] [-V] [filename]\n"); exit(1); case 'P': @@ -1013,6 +1018,11 @@ pre_parse_args(int argc, char **argv) { doexit = ISC_TRUE; break; + case 'V': + version(); + doexit = ISC_TRUE; + break; + default: break; } @@ -1023,11 +1033,6 @@ pre_parse_args(int argc, char **argv) { isc_commandline_index = 1; } -static void -version(void) { - fputs("nsupdate " VERSION "\n", stderr); -} - static void parse_args(int argc, char **argv, isc_mem_t *mctx, isc_entropy_t **ectx) { int ch; @@ -1065,10 +1070,6 @@ parse_args(int argc, char **argv, isc_mem_t *mctx, isc_entropy_t **ectx) { case 'v': usevc = ISC_TRUE; break; - case 'V': - version(); - exit(0); - break; case 'k': keyfile = isc_commandline_argument; break;