The examples in the man page used the "<<<" syntax which is specific
to bash. Now "echo 'foo' | hath ..." is used, and that should work in
any shell. The shelltest suite was updated to use the same.
The two ShellTests(Net) modules were also updated to run the
shelltests with an empty environment. This allowed the --color=never
argument to be removed from the tests themselves, since $GREP_OPTIONS
can't be populated.
12 files changed:
the input CIDR blocks. It's the default mode of operation.
.P
.nf
the input CIDR blocks. It's the default mode of operation.
.P
.nf
-.I $ hath <<< \(dq10.0.0.0/29 10.0.0.8/29\(dq
+.I $ echo \(dq10.0.0.0/29 10.0.0.8/29\(dq | hath
((10)\.(0)\.(0)\.(15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0))
.fi
.IP \(bu 2
((10)\.(0)\.(0)\.(15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0))
.fi
.IP \(bu 2
the input, though.
.P
.nf
the input, though.
.P
.nf
-.I $ hath reduced <<< \(dq10.0.0.0/24 10.0.1.0/24\(dq
+.I $ echo \(dq10.0.0.0/24 10.0.1.0/24\(dq | hath reduced
10.0.0.0/23
.fi
.IP \(bu 2
10.0.0.0/23
.fi
.IP \(bu 2
-.I $ hath duped <<< \(dq10.0.0.0/24 10.0.1.0/24\(dq
+.I $ echo \(dq10.0.0.0/24 10.0.1.0/24\(dq | hath duped
10.0.0.0/24
10.0.1.0/24
.fi
10.0.0.0/24
10.0.1.0/24
.fi
-.I $ hath diffed <<< \(dq10.0.0.0/24 10.0.1.0/24\(dq
+.I $ echo \(dq10.0.0.0/24 10.0.1.0/24\(dq | hath diffed
-10.0.0.0/24
-10.0.1.0/24
+10.0.0.0/23
-10.0.0.0/24
-10.0.1.0/24
+10.0.0.0/23
List the IP addresses contained within the given CIDRs.
.P
.nf
List the IP addresses contained within the given CIDRs.
.P
.nf
-.I $ hath listed <<< 192.168.0.240/29
+.I $ echo 192.168.0.240/29 | hath listed
192.168.0.240
192.168.0.241
192.168.0.242
192.168.0.240
192.168.0.241
192.168.0.242
-.I $ hath reversed <<< 198.41.0.4/30
+.I $ echo 198.41.0.4/30 | hath reversed
198.41.0.4: a.root-servers.net.
198.41.0.5:
198.41.0.6: rs.internic.net.
198.41.0.4: a.root-servers.net.
198.41.0.5:
198.41.0.6: rs.internic.net.
25 lookups in parallel:
.P
.nf
25 lookups in parallel:
.P
.nf
-.I $ hath reversed +RTS -N25 <<< 198.41.0.4/24
+.I $ echo 198.41.0.4/24 | hath reversed +RTS -N25
198.41.0.4: a.root-servers.net.
198.41.0.5:
198.41.0.6: rs.internic.net.
198.41.0.4: a.root-servers.net.
198.41.0.5:
198.41.0.6: rs.internic.net.
Without \fB\-\-barriers\fR, you can match things you shouldn't:
.nf
Without \fB\-\-barriers\fR, you can match things you shouldn't:
.nf
-.I $ echo 127.0.0.100 | grep -P $(hath <<< 127.0.0.1/32)
+.I $ echo 127.0.0.100 | grep -P $(echo 127.0.0.1/32 | hath)
Using \fB\-\-barriers\fR can prevent this:
.nf
Using \fB\-\-barriers\fR can prevent this:
.nf
-.I $ echo 127.0.0.100 | grep -P $(hath -b <<< 127.0.0.1/32)
+.I $ echo 127.0.0.100 | grep -P $(echo 127.0.0.1/32 | hath -b)
-.I $ echo x127.0.0.1x | grep -Po $(hath -b <<< 127.0.0.1/32)
+.I $ echo x127.0.0.1x | grep -Po $(echo 127.0.0.1/32 | hath -b)
cabal-version: >= 1.8
author: Michael Orlitzky
maintainer: Michael Orlitzky <michael@orlitzky.com>
cabal-version: >= 1.8
author: Michael Orlitzky
maintainer: Michael Orlitzky <michael@orlitzky.com>
-import System.Process ( system )
+import System.Process (
+ CreateProcess( env ),
+ createProcess,
+ shell,
+ waitForProcess )
import System.Exit ( exitWith )
main :: IO ()
main = do
import System.Exit ( exitWith )
main :: IO ()
main = do
- result <- system "shelltest test/shell/*.test"
+ -- Get a CreateProcess object corresponding to our shell command.
+ let createproc = shell "shelltest test/shell/*.test"
+
+ -- But clear its environment before running the command.
+ let empty_env_createproc = createproc { env = Just [] }
+
+ -- Ignore stdin/stdout/stderr...
+ (_,_,_,hproc) <- createProcess empty_env_createproc
+
+ -- Now run the ProcessHandle and exit with its result.
+ result <- waitForProcess hproc
-import System.Process ( system )
+import System.Process (
+ CreateProcess( env ),
+ createProcess,
+ shell,
+ waitForProcess )
import System.Exit ( exitWith )
main :: IO ()
main = do
import System.Exit ( exitWith )
main :: IO ()
main = do
- result <- system "shelltest test/shell-net/*.test"
+ -- Get a CreateProcess object corresponding to our shell command.
+ let createproc = shell "shelltest test/shell-net/*.test"
+
+ -- But clear its environment before running the command.
+ let empty_env_createproc = createproc { env = Just [] }
+
+ -- Ignore stdin/stdout/stderr...
+ (_,_,_,hproc) <- createProcess empty_env_createproc
+
+ -- Now run the ProcessHandle and exit with its result.
+ result <- waitForProcess hproc
# Test the regexed example from the man page.
# Test the regexed example from the man page.
-dist/build/hath/hath reversed <<< "198.41.0.4/30"
+echo 198.41.0.4/30 | dist/build/hath/hath reversed
>>>
198.41.0.4: a.root-servers.net.
198.41.0.5:
>>>
198.41.0.4: a.root-servers.net.
198.41.0.5:
# Test the --barriers examples from the manpage.
# The first one matches a line it probably shouldn't.
# Test the --barriers examples from the manpage.
# The first one matches a line it probably shouldn't.
-grep -P --color=never $(dist/build/hath/hath <<< 127.0.0.1/32) <<< 127.0.0.100
+echo 127.0.0.100 | grep -P $(echo 127.0.0.1/32 | dist/build/hath/hath)
>>>
127.0.0.100
>>>= 0
# This one uses --barriers, and doesn't match that same line.
>>>
127.0.0.100
>>>= 0
# This one uses --barriers, and doesn't match that same line.
-grep -P $(dist/build/hath/hath -b <<< 127.0.0.1/32) <<< 127.0.0.100
+echo 127.0.0.100 | grep -P $(echo 127.0.0.1/32 | dist/build/hath/hath -b)
>>>
>>>= 1
# But, using barriers makes the regexp match something it shouldn't.
>>>
>>>= 1
# But, using barriers makes the regexp match something it shouldn't.
-grep -Po --color=never $(dist/build/hath/hath -b <<< 127.0.0.1/32) <<< x127.0.0.1x
+echo x127.0.0.1x | grep -Po $(echo 127.0.0.1/32 | dist/build/hath/hath -b)
# Test the regexed example from the man page.
# Test the regexed example from the man page.
-dist/build/hath/hath diffed <<< "10.0.0.0/24 10.0.1.0/24"
+echo "10.0.0.0/24 10.0.1.0/24" | dist/build/hath/hath diffed
>>>
-10.0.0.0/24
-10.0.1.0/24
>>>
-10.0.0.0/24
-10.0.1.0/24
# Test the regexed example from the man page.
# Test the regexed example from the man page.
-dist/build/hath/hath duped <<< "10.0.0.0/24 10.0.1.0/24"
+echo "10.0.0.0/24 10.0.1.0/24" | dist/build/hath/hath duped
>>>
10.0.0.0/24
10.0.1.0/24
>>>
10.0.0.0/24
10.0.1.0/24
# Test the regexed example from the man page.
# Test the regexed example from the man page.
-dist/build/hath/hath listed <<< "192.168.0.240/29"
+echo 192.168.0.240/29 | dist/build/hath/hath listed
>>>
192.168.0.240
192.168.0.241
>>>
192.168.0.240
192.168.0.241
# Test the reduced example from the man page.
# Test the reduced example from the man page.
-dist/build/hath/hath reduced <<< "10.0.0.0/24 10.0.1.0/24"
+echo "10.0.0.0/24 10.0.1.0/24" | dist/build/hath/hath reduced
# Test the regexed example from the man page.
# Test the regexed example from the man page.
-dist/build/hath/hath <<< "10.0.0.0/29 10.0.0.8/29"
+echo "10.0.0.0/29 10.0.0.8/29" | dist/build/hath/hath
>>>
((10)\.(0)\.(0)\.(15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0))
>>>= 0
>>>
((10)\.(0)\.(0)\.(15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0))
>>>= 0
# We should match every address in this class C.
# (input/output generated with `hath listed`)
# We should match every address in this class C.
# (input/output generated with `hath listed`)
-grep -Po --color=never $(dist/build/hath/hath <<< "192.168.0.0/24")
+grep -Po $(echo 192.168.0.0/24 | dist/build/hath/hath)
<<<
192.168.0.0
192.168.0.1
<<<
192.168.0.0
192.168.0.1