Reported-by: наб <nabijaczleweli@nabijaczleweli.xyz>
Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
# Defaults:
git='no';
ext='\.[ch]$';
+FILES='.';
grepc_usage()
{
- echo "Usage: $0 [OPTION ...] IDENTIFIER";
+ echo "Usage: $0 [OPTION ...] IDENTIFIER [FILE ...]";
}
done;
shift $(($OPTIND-1));
- if [ $# -ne 1 ]; then
+ if [ $# -lt 1 ]; then
grepc_usage >&2;
exit 1;
fi;
identifier=$1;
+ shift;
+
+ if [ $# -gt 0 ]; then
+ FILES=$@;
+ fi;
}
files="$(mktemp -t 'grepc.XXXXXX')";
if [ "$git" = 'yes' ]; then
- git ls-files .;
+ git ls-files $FILES;
else
- find . -type f;
+ find $FILES -type f;
fi \
| grep -P "$ext" \
| xargs grep -lPI "$1\b" \
.B grepc
.RI [ option " ...]"
.I identifier
+.RI [ file " ...]"
.SH DESCRIPTION
.MR grepc 1
-searches for all C declarations and definitions of
+searches for C declarations and definitions of
.I identifier
-in all .c and .h files under the current working directory.
+in each
+.IR file .
+.PP
.I identifier
is normally a C identifier,
but it is actually a PCRE pattern,
so it can be used to find complex patterns.
+.PP
+If
+.I file
+is a directory,
+the search is recursive within that directory.
+If
+.I file
+doesn't match a certain extension, it is skipped
+(see
+.B \-x
+in OPTIONS).
+If no
+.I file
+is given,
+the working directory is searched.
.SH OPTIONS
.TP
.B \-g