From 5b514425904aca70652668a48ed4b950e4cec15e Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Mon, 14 Oct 2013 11:19:38 -0400 Subject: [PATCH] Add tests for the --barriers option. Update the manpage for 0.0.6. --- doc/man1/hath.1 | 46 ++++++++++++++++++++++++-------- test/shell/manpage-barriers.test | 18 +++++++++++++ 2 files changed, 53 insertions(+), 11 deletions(-) create mode 100644 test/shell/manpage-barriers.test diff --git a/doc/man1/hath.1 b/doc/man1/hath.1 index c0d6bc0..57684f5 100644 --- a/doc/man1/hath.1 +++ b/doc/man1/hath.1 @@ -4,12 +4,12 @@ hath \- Manipulate network blocks in CIDR notation .SH SYNOPSIS -\fBhath\fR [\fBregexed|reduced|duped|diffed\fR] [\fB\-h\fR] [\fB-i \fIFILE\fR] \fI\fR +\fBhath\fR [\fBregexed|reduced|duped|diffed|listed|reversed\fR] [\fB\-hb\fR] \fI\fR .SH INPUT .P -The \fIinput\fR (default: stdin) should be a list of CIDR blocks, -separated by whitespace. Empty lines will be ignored, but otherwise, -malformed entries will cause an error to be displayed. +The \fIinput\fR (stdin) should be a list of CIDR blocks, separated by +whitespace. Empty lines will be ignored, but otherwise, malformed +entries will cause an error to be displayed. .SH DESCRIPTION .P Hath is a Haskell program for working with network blocks in CIDR @@ -120,13 +120,37 @@ runtime on the command line; for example, the following will perform 198.41.0.6: rs.internic.net. \(pc\(pc\(pc .fi -.P -Each of the modes also supports a present-tense flavor; the following -are equivalent to their counterparts: \fBregex\fR, \fBreduce\fR, -\fBdupe\fR, \fBdiff\fR, \fBlist\fR, \fBreverse\fR. .SH OPTIONS -.IP \fB\-\-input\fR,\ \fB\-i\fR -Specify the input file containing a list of CIDRs, rather than using -stdin (the default). +.IP \fB\-\-barriers\fR,\ \fB\-b\fR +(regexed mode only) place barriers in front/back of the regex to +prevent e.g. '127.0.0.1' from matching '127.0.0.100'. The downside is +that the resulting regexp will match something that is not an IP +address, and this messes up e.g. \fIgrep -o\fR. + +.P +Without \fB\-\-barriers\fR, you can match things you shouldn't: + +.nf +.I $ echo \(dq127.0.0.100\(dq | grep -P $(hath <<< \(dq127.0.0.1/32\(dq) +127.0.0.100 +.fi + +.P +Using \fB\-\-barriers\fR can prevent this: + +.nf +.I $ echo \(dq127.0.0.100\(dq | grep -P $(hath -b <<< \(dq127.0.0.1/32\(dq) +.I $ echo $? +1 +.fi + +.P +But, this may also cause the regex to match something that isn't an IP +address: + +.nf +.I $ echo \(dqx127.0.0.1x\(dq | grep -Po $(hath -b <<< \(dq127.0.0.1/32\(dq) +x127.0.0.1x +.fi diff --git a/test/shell/manpage-barriers.test b/test/shell/manpage-barriers.test new file mode 100644 index 0000000..4b8c165 --- /dev/null +++ b/test/shell/manpage-barriers.test @@ -0,0 +1,18 @@ +# Test the --barriers examples from the manpage. + +# The first one matches a line it probably shouldn't. +echo "127.0.0.100" | grep -P $(dist/build/hath/hath <<< "127.0.0.1/32") +>>> +127.0.0.100 +>>>= 0 + +# This one uses --barriers, and doesn't match that same line. +echo "127.0.0.100" | grep -P $(dist/build/hath/hath -b <<< "127.0.0.1/32") +>>> +>>>= 1 + +# But, using barriers makes the regexp match something it shouldn't. +echo "x127.0.0.1x" | grep -Po $(dist/build/hath/hath -b <<< "127.0.0.1/32") +>>> +x127.0.0.1x +>>>= 0 -- 2.44.2