From 57d0ad450a34c1a8763c4d779f4fd4e8835cdcd0 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Wed, 14 Nov 2018 11:30:50 +1100 Subject: [PATCH] check that delv -q -m works (cherry picked from commit 77128c867c037b8208da074bd94957e6211e938d) --- bin/delv/delv.c | 16 ++++++++++++++++ bin/tests/system/digdelv/tests.sh | 19 ++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/bin/delv/delv.c b/bin/delv/delv.c index b42027250d..eb5bddfdbc 100644 --- a/bin/delv/delv.c +++ b/bin/delv/delv.c @@ -1179,6 +1179,8 @@ plus_option(char *option) { * options: "46a:b:c:d:himp:q:t:vx:"; */ static const char *single_dash_opts = "46himv"; +static const char *dash_opts = "46abcdhimpqtvx"; + static bool dash_option(char *option, char *next, bool *open_type_class) { char opt, *value; @@ -1404,6 +1406,20 @@ preparse_args(int argc, char **argv) { } option = &option[1]; } + if (strlen(option) == 0U) { + continue; + } + /* Look for dash value option. */ + if (strpbrk(option, dash_opts) != &option[0] || + strlen(option) > 1U) { + /* Error or value in option. */ + continue; + } + /* Dash value is next argument so we need to skip it. */ + argc--, argv++; + /* Handle missing argument */ + if (argc == 0) + break; } } diff --git a/bin/tests/system/digdelv/tests.sh b/bin/tests/system/digdelv/tests.sh index 42dbf8088c..24aa7b3736 100644 --- a/bin/tests/system/digdelv/tests.sh +++ b/bin/tests/system/digdelv/tests.sh @@ -454,7 +454,6 @@ ret=0 grep "Dump of all outstanding memory allocations" dig.out.test$n > /dev/null && ret=1 if [ $ret != 0 ]; then echo_i "failed"; fi status=`expr $status + $ret` - else echo_i "$DIG is needed, so skipping these dig tests" fi @@ -654,6 +653,24 @@ if [ -x ${DELV} ] ; then grep "a.example." < delv.out.test$n > /dev/null || ret=1 if [ $ret != 0 ]; then echo_i "failed"; fi status=`expr $status + $ret` + + n=`expr $n + 1` + echo_i "checking delv H is ignored, and treated like IN ($n)" + ret=0 + $DELV $DELVOPTS @10.53.0.3 -c CH -t a a.example > delv.out.test$n || ret=1 + grep "a.example." < delv.out.test$n > /dev/null || ret=1 + if [ $ret != 0 ]; then echo_i "failed"; fi + status=`expr $status + $ret` + + n=`expr $n + 1` + echo_i "check that delv -q -m works ($n)" + ret=0 + $DELV $DELVOPTS @10.53.0.3 -q -m > delv.out.test$n 2>&1 + grep '^; -m\..*[0-9]*.*IN.*ANY.*;' delv.out.test$n > /dev/null || ret=1 + grep "^add " delv.out.test$n > /dev/null && ret=1 + grep "^del " delv.out.test$n > /dev/null && ret=1 + if [ $ret != 0 ]; then echo_i "failed"; fi + status=`expr $status + $ret` else echo_i "$DELV is needed, so skipping these delv tests" fi