unstack - fix ipcvecs
[minix.git] / usr.bin / gzip / zgrep
blob3a072af1d0299ecd747921b607cddc39a58b146c
1 #!/bin/sh
3 # $NetBSD: zgrep,v 1.7 2008/05/08 15:35:23 wiz Exp $
5 # Copyright (c) 2003 Thomas Klausner.
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
9 # are met:
10 # 1. Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 # 2. Redistributions in binary form must reproduce the above copyright
13 # notice, this list of conditions and the following disclaimer in the
14 # documentation and/or other materials provided with the distribution.
16 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 grep=/usr/bin/grep
28 zcat=/usr/bin/zcat
30 endofopts=0
31 pattern_found=0
32 grep_args=""
33 hyphen=0
34 silent=0
36 prg=$0
38 # handle being called 'zegrep' or 'zfgrep'
39 case ${prg} in
40 *zegrep)
41 grep_args="-E";;
42 *zfgrep)
43 grep_args="-F";;
44 esac
46 # skip all options and pass them on to grep taking care of options
47 # with arguments, and if -e was supplied
49 while [ $# -gt 0 -a ${endofopts} -eq 0 ]
51 case $1 in
52 # from GNU grep-2.5.1 -- keep in sync!
53 -[ABCDXdefm])
54 if [ $# -lt 2 ]
55 then
56 echo "${prg}: missing argument for $1 flag" >&2
57 exit 1
59 case $1 in
60 -e)
61 pattern="$2"
62 pattern_found=1
63 shift 2
64 break
68 esac
69 grep_args="${grep_args} $1 $2"
70 shift 2
72 --)
73 shift
74 endofopts=1
77 hyphen=1
78 shift
80 -h)
81 silent=1
82 shift
84 -*)
85 grep_args="${grep_args} $1"
86 shift
89 # pattern to grep for
90 endofopts=1
92 esac
93 done
95 # if no -e option was found, take next argument as grep-pattern
96 if [ ${pattern_found} -lt 1 ]
97 then
98 if [ $# -ge 1 ]; then
99 pattern="$1"
100 shift
101 elif [ ${hyphen} -gt 0 ]; then
102 pattern="-"
103 else
104 echo "${prg}: missing pattern" >&2
105 exit 1
109 # call grep ...
110 if [ $# -lt 1 ]
111 then
112 # ... on stdin
113 ${zcat} -fq - | ${grep} ${grep_args} -- "${pattern}" -
114 else
115 # ... on all files given on the command line
116 if [ ${silent} -lt 1 ]; then
117 grep_args="-H ${grep_args}"
119 while [ $# -gt 0 ]
121 ${zcat} -fq -- "$1" | ${grep} --label="${1}" ${grep_args} -- "${pattern}" -
122 shift
123 done
126 exit 0