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
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
simply redundant.
.P
.nf
-.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
notation.
.P
.nf
-.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
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
the given CIDRs.
.P
.nf
-.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.
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.
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)
127.0.0.100
.fi
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 $?
1
.fi
address:
.nf
-.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)
x127.0.0.1x
.fi
name: hath
-version: 0.2.2
+version: 0.2.3
cabal-version: >= 1.8
author: Michael Orlitzky
maintainer: Michael Orlitzky <michael@orlitzky.com>
module Main
where
-import System.Process ( system )
+import System.Process (
+ CreateProcess( env ),
+ createProcess,
+ shell,
+ waitForProcess )
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
exitWith result
module Main
where
-import System.Process ( system )
+import System.Process (
+ CreateProcess( env ),
+ createProcess,
+ shell,
+ waitForProcess )
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
exitWith result
# 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:
# 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.
-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.
-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)
>>>
x127.0.0.1x
>>>= 0
# 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
# 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
# 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
# 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
>>>
10.0.0.0/23
>>>= 0
# 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
# 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